Di kariyera bernameya min de xeletiyên herî şermok (heta nuha)

Di kariyera bernameya min de xeletiyên herî şermok (heta nuha)
Wekî ku ew dibêjin, heke hûn ji koda xweya kevn şerm nakin, wê hingê hûn wekî bernamenûs mezin nabin - û ez bi vê ramanê re dipejirînim. Min 40 sal berê ji bo kêfê dest bi bernamekirinê kir, û 30 sal berê bi profesyonelî dest bi bernamekirinê kir, ji ber vê yekê gelek xeletiyên min hene. pir zêde. Wekî profesorek zanistiya kompîturê, ez xwendekarên xwe fêrî xeletiyan dikim - yên wan, yên min û yên din. Ez difikirim ku dem hatiye ku ez qala xeletiyên xwe bikim da ku nefsbiçûkiya xwe winda nekim. Ez hêvî dikim ku ew ê ji bo kesek kêrhatî bin.

Cihê sêyemîn - Berhevkarê Microsoft C

Mamosteyê min ê dibistanê bawer kir ku Romeo û Juliet nikare wekî trajediyek were hesibandin ji ber ku karakteran sûcê trajîk tune - ew bi tenê bi ehmeqî tevdigerin, wekî ku ciwan divê. Wê demê ez bi wî re ne razî bûm, lê niha ez di nerîna wî de, bi taybetî di pêwendiya bernamesaziyê de gewrikek rasyoneliyê dibînim.

Wexta ku min sala duyemîn li MÎT'ê qedand, hem di jiyanê de hem jî di warê bernamesaziyê de ez ciwan û bê tecrube bûm. Di havînê de, min li Microsoft-ê, li ser tîmê berhevkerê C-yê interned kir. Di destpêkê de, min tiştên rûtîn ên mîna piştgirîya profîlan kir, û dûv re jî ji min re hat spartin ku li ser beşa herî xweş (wek ku min difikirî) bixebitim - optimîzasyona backend. Bi taybetî, min neçar ma ku ji bo daxuyaniyên şaxê koda x86 çêtir bikim.

Min biryar da ku ji bo her bûyerek gengaz koda makîneya çêtirîn binivîsim, min xwe bi serê xwe avêt hewzê. Ger tîrêjiya belavkirina nirxan zêde bû, min ew ket nav wan tabloya derbasbûnê. Ger dabeşkerek wan a hevpar hebûya, min ew bikar anî da ku sifrê tengtir bikim (lê tenê heke dabeşkirin bi kar were kirin bit guhertin). Gava ku hemî nirx hêza du bûn, min xweşbîniyek din kir. Ger komek nirx şertên min têr nekir, min ew li çend rewşên xweşbînbar veqetand û koda jixwe xweşbînkirî bikar anî.

Ew kabûsek bû. Gelek sal şûnda ji min re hat gotin ku bernameçêkerê ku koda min mîras girtiye ji min nefret dike.

Di kariyera bernameya min de xeletiyên herî şermok (heta nuha)

Dersa fêrbûn

Wekî ku David Patterson û John Hennessy di Mîmariya Computer û Sêwirana Pergalên Computer de dinivîsin, yek ji prensîbên sereke yên mîmarî û sêwiranê ev e ku bi gelemperî tiştan bi lez û bez bixebitin.

Lezkirina dozên hevpar dê performansê ji xweşbînkirina dozên kêm bi bandortir çêtir bike. Bi awayekî îronîkî, dozên hevpar bi gelemperî ji yên kêm kêm hêsan in. Ev şîreta mentiqî texmîn dike ku hûn dizanin ka kîjan doz hevpar tê hesibandin - û ev tenê bi pêvajoyek ceribandin û pîvandina baldar gengaz e.

Di parêznameya xwe de, min hewl da ku fêhm bikim ka daxuyaniyên şaxan di pratîkê de çawa xuya dikin (wek mînak çend şax hebûn û çendîn domdar çawa hatin belavkirin), lê di sala 1988-an de ev agahdarî tune bû. Lêbelê, gava ku berhevkarê heyî nikarîbû koda çêtirîn ji bo mînaka çêkirî ya ku min jê re peyda kir, min dozên taybetî lê zêde nekira.

Min hewce kir ku gazî pêşdebirek bi ezmûn bikim û bi wî re, bifikirim ka dozên hevpar çi ne û bi taybetî bi wan re mijûl bibin. Ez ê kêm kod binivîsim, lê ew tiştek baş e. Wekî ku damezrînerê Stack Overflow Jeff Atwood nivîsî, dijminê herî xirab ê bernamenûs bernamenûs bixwe ye:

Ez dizanim ku hûn niyeta herî baş in, wekî me hemîyan. Em bernameyan diafirînin û ji nivîsandina kodê hez dikin. Em wisa hatine çêkirin. Em difikirîn ku her pirsgirêk dikare bi tape, kelekek malê û piçek kodê were çareser kirin. Bi qasî ku ji kodkeran bipejirînin, koda çêtirîn koda ku tune ye. Her xêzek nû pêdivî bi debugging û piştgirî heye, pêdivî ye ku ew were fam kirin. Dema ku hûn koda nû lê zêde dikin, divê hûn wiya bi dilxwazî ​​û nefret bikin ji ber ku hemî vebijarkên din qediyane. Gelek bernamenûs pir zêde kodê dinivîsin, ku wê dikin dijminê me.

Ger min kodek hêsantir nivîsanda ku dozên gelemperî vedigire, heke hewce bike dê nûvekirina wê pir hêsantir bûya. Min tevliheviyek ku tu kesî nedixwest pê re mijûl bibe li dû xwe hişt.

Di kariyera bernameya min de xeletiyên herî şermok (heta nuha)

Cihê duyemîn: reklama li ser torên civakî

Dema ku ez li Google-ê li ser reklama medya civakî dixebitim (Myspace tê bîra min?), min di C++ de tiştek weha nivîsand:

for (int i = 0; i < user->interests->length(); i++) {
  for (int j = 0; j < user->interests(i)->keywords.length(); j++) {
      keywords->add(user->interests(i)->keywords(i)) {
  }
}

Bernamesaz dikarin yekser xeletiyê bibînin: divê argumana dawîn j be, ne i. Testkirina yekîneyê xeletî eşkere nekir, û ne jî lêkolînerê min. Destpêkirin pêk hat, û şevekê koda min çû serverê û hemî komputerên navenda daneyê têk çû.

Tiştekî xerab çênebû. Tiştek ji kesî re şikest, ji ber ku berî destpêkirina gerdûnî kod di nav yek navendek daneyê de hate ceribandin. Heya ku endezyarên SRE ji bo demekê dev ji lîstina bîlardoyê bernedin û piçekî paşde vegerînin. Serê sibê min e-nameyek bi xeletiyek qezayê wergirt, kod rast kir û ceribandinên yekîneyê zêde kir ku dê xeletiyê bigire. Ji ber ku min protokolê şopand - wekî din dê koda min bi hêsanî têk neçe - ti pirsgirêkên din tune bûn.

Di kariyera bernameya min de xeletiyên herî şermok (heta nuha)

Dersa fêrbûn

Pir kes pê bawer in ku xeletiyek wusa mezin dê bê guman lêçûna betalkirina sûcdar bike, lê ne wusa ye: yekem, hemî bernamenûs xeletiyan dikin, û ya duyemîn jî, ew kêm caran heman xeletiyê du caran dikin.

Bi rastî, hevalek min bernamesaz heye ku endezyarek jêhatî bû û ji ber xeletiyek yekane hat avêtin. Piştî wê, ew li Google hate kar kirin (û di demek kurt de hate pêşve xistin) - wî bi dilsozî li ser xeletiya ku wî di hevpeyivînekê de kir axivî, û ew ne kujer hate hesibandin.

Ew çi ye gotin li ser Thomas Watson, serokê efsanewî yê IBM:

Fermana hikûmetê ya bi qasî milyonek dolar hat ragihandin. IBM Corporation - an bêtir, Thomas Watson Sr. bixwe - bi rastî dixwest ku wê bigire. Mixabin, nûnerê firotanê nekaribû vê yekê bike û IBM pêşnuma winda kir. Roja din, ev karmend hat nivîsgeha birêz Watson û zerfek danî ser maseya wî. Birêz Watson tewra nehişt ku lê binêre - ew li benda karmendek bû û dizanibû ku ew nameyek îstifakirinê ye.

Watson pirsî ka çi xelet bû.

Nûnerê firoştinê bi berfirehî behsa pêşketina îhaleyê kir. Wî navên xeletiyên ku dikaribûn ji holê rabin bi nav kir. Di dawiyê de, wî got, "Birêz Watson, spas ji bo ku ez rave bikim. Ez dizanim ku me çiqas hewcedarê vê fermanê bû. Ez dizanim ew çiqas girîng bû, "û amade bû ku biçe.

Watson li ber derî nêzîkî wî bû, li çavên wî nerî û zerf bi van gotinan vegerand: “Ez çawa dikarim te berdim? Min tenê mîlyonek dolar di perwerdehiya we de veberhênan.

T-shirtek min heye ku dibêje: "Heke hûn bi rastî ji xeletiyan fêr bibin, wê hingê ez jixwe master im." Bi rastî, dema ku dor tê ser xeletiyan, ez doktorek zanistî me.

Cihê yekem: App Inventor API

Çewtiyên bi rastî tirsnak bandorê li hejmareke mezin ji bikarhêneran dikin, dibin zanîna gelemperî, rastkirina demek dirêj digire, û ji hêla kesên ku nikaribûn wan çêbikin têne çêkirin. Xeletiya min a herî mezin li gorî van hemû pîvanan e.

Çi qas xerabtir be

Min xwend gotara Richard Gabriel di derbarê vê nêzîkatiyê de di salên nodî de wekî xwendekarek mezûn, û ez jê hez dikim ku ez ji xwendekarên xwe dipirsim. Ger baş neyê bîra te, hafiza xwe nû bike, hindik e. Ev gotar bi gelek awayan, di nav de sadebûn, xwesteka "rast bigire" û nêzîkatiya "xirabtir çêtir e" berevajî dike.

Divê çawa be: sêwirandin divê di pêkanîn û pêwendiyê de hêsan be. Sadebûna navberê ji sadebûna pêkanînê girîngtir e.

Ya xirabtir, ew çêtir: sêwirandin divê di pêkanîn û pêwendiyê de hêsan be. Sadebûna pêkanînê ji sadebûna navberê girîngtir e.

Werin em vê yekê deqeyekê ji bîr bikin. Mixabin, min ew bi salan ji bîr kir.

App Dahênerê

Dema ku li Google-ê dixebitî, ez beşek tîmê bûm App Dahênerê, hawîrdorek pêşkeftina serhêl kaş bikin û bavêjin ji bo pêşdebirên Android-ê dilxwaz. Sala 2009-an bû, û me lez dikir ku em guhertoya alfayê di wextê xwe de derxin da ku di havînê de em karibin ji bo mamosteyên ku di payîzê de ders didin jîngehê bikar bînin dersên masterê li dar bixin. Ez bi dilxwazî ​​ji bo cîbicîkirina sprites, nostaljîk ji bo ku çawa min bi kar nivîsandina games li ser TI-99/4. Ji bo kesên ku nizanin, sprite tiştek grafîkî ya du-dimensî ye ku dikare bi hêmanên nermalava din re tevbigere û bikeve têkiliyê. Nimûneyên sprîtan keştiyên fezayê, asteroîd, mermer û raket hene.

Me App Inventor-a-object-oriented li Java-yê bicîh kir, ji ber vê yekê li wir tenê komek tişt hene. Ji ber ku top û sprite pir bi heman rengî tevdigerin, min çînek sprite ya razber bi taybetmendiyên (qavên) X, Y, Leza (lez) û Serî (rêveber) afirand. Wan heman rêbazên ji bo tespîtkirina pevçûnan, avêtina ji qiraxa ekranê, hwd.

Cûdahiya sereke di navbera topek û sprite de ew e ku bi rastî çi tê xêzkirin - çemberek dagirtî an raster. Ji ber ku min pêşî sprites bicîh kir, mentiqî bû ku koordînatên x- û y-ya goşeyê çepê yê jorîn ê cihê ku wêne lê lê ye diyar bikim.

Di kariyera bernameya min de xeletiyên herî şermok (heta nuha)
Dema ku sprites dixebitîn, min biryar da ku ez dikarim tiştên topê bi kodek pir hindik bicîh bikim. Pirsgirêk tenê ev bû ku min riya herî hêsan girt (ji nihêrîna cîbecîkar), koordînatên x- û y-ê yên goşeyê çepê yê jorîn ê konturê ku topê vedihewîne destnîşan kir.

Di kariyera bernameya min de xeletiyên herî şermok (heta nuha)
Di rastiyê de, pêdivî bû ku koordînatên x- û y-ya navenda çemberê, wekî ku di her pirtûkek matematîkê de û her çavkaniyek din a ku behsa derdoran dike de hatî hîn kirin, were destnîşan kirin.

Di kariyera bernameya min de xeletiyên herî şermok (heta nuha)
Berevajî xeletiyên min ên paşîn, ev yek ne tenê hevkarên min, lê di heman demê de bi mîlyonan bikarhênerên App Inventor jî bandor kir. Gelek ji wan zarok bûn an jî bi tevahî nû di bernamekirinê de bûn. Dema ku li ser her serîlêdana ku tê de top amade bû dixebitin, neçar bûn ku gelek gavên nehewce bikin. Ger ez şaşiyên xwe yên din bi ken bibîr bînim, wê hingê ev yek îro jî min dike ter.

Min di dawiyê de ev xeletî tenê vê dawiyê, deh sal şûnda, paqij kir. "Patched", ne "serastkirî", ji ber ku wekî Joshua Bloch dibêje, API herheyî ne. Nekarîn guheztinên ku bandorê li bernameyên heyî bikin, me taybetmendiya OriginAtCenter bi nirxa derewîn di bernameyên kevn de û di hemî yên pêşerojê de rast lê zêde kir. Bikarhêner dikarin pirsek mentiqî bipirsin: kê jî difikirî ku xala destpêkê li cîhek din ji navendê bi cîh bike. Ji kê re? Ji yek bernameçêker re ku deh sal berê pir tembel bû ku API-yek normal biafirîne.

Dersên hînbûyî

Dema ku li ser API-yê dixebitin (ku hema hema her bernamenûs carinan neçar e ku bike), divê hûn şîreta çêtirîn ku di vîdyoya Joshua Bloch de hatî destnîşan kirin bişopînin "Meriv çawa API-yek baş biafirîne û çima ew qas girîng e"an di vê lîsteya kurt de:

  • API dikare hem feydeyek mezin û hem jî zirarek mezin ji we re bîne.. API-ya baş xerîdarên dubare diafirîne. Ya xerab dibe kabûsa te ya herheyî.
  • API-yên gelemperî, mîna elmasan, herheyî dimînin. Hemî xwe bidin: Dê tu carî şansek din nebe ku hûn her tiştî rast bikin.
  • Divê rêzikên API kurt bin - rûpelek bi îmze û danasînên çîn û rêbazê, ku ji rêzek bêtir nagire. Ev ê dihêle hûn bi hêsanî API-ê ji nû ve ava bikin ger ew yekem car bêkêmasî dernekeve.
  • Bûyerên karanîna rave bikinberî ku API-ê bicîh bikin an jî li ser taybetmendiya wê bixebitin. Bi vî rengî hûn ê ji pêkanîn û diyarkirina API-yek bi tevahî ne-fonksîyonel dûr bixin.

Ger min kurtenivîsek jî bi senaryoyeke çêkirî binivîsanda, bi îhtîmaleke mezin min ê xeletî tesbît bikira û rast bikira. Heke ne, wê hingê yek ji hevkarên min dê bê guman wiya bike. Her biryarek ku encamên wê yên dûr hene, divê bi kêmî ve rojek were fikirîn (ev ne tenê ji bo bernamekirinê derbas dibe).

Sernavê gotara Richard Gabriel, "Xirabtir e çêtir e", behsa avantajê dike ku dibe yekem li bazarê -tevî ku hilberek bêkêmasî be jî - dema ku kesek din heyamekê li dû ya kamil derbas dike. Dema ku ez li ser koda sprite difikire, ez fêm dikim ku ne hewce bû ku ez bêtir kod binivîsim da ku wê rast bi dest bixim. Mirov çi bêje bila bibêje, ez pir şaş bûm.

encamê

Bernamesaz her roj xeletiyan dikin, ka ew koda xelet dinivîsin an naxwazin tiştek biceribînin ku dê jêhatîbûn û hilberîna wan baştir bike. Bê guman, hûn dikarin bibin bernamenûs bêyî ku wekî min xeletiyên wusa giran bikin. Lê bêyî naskirina xeletiyên xwe û fêrbûna ji wan ne mimkûn e ku meriv bibe bernamenûsek baş.

Ez bi berdewamî rastî xwendekarên ku hîs dikin ku ew pir xeletiyan dikin û ji ber vê yekê ji bernamekirinê qut nabin re rû bi rû dimînin. Ez dizanim di IT-ê de sendroma impostor çiqas hevpar e. Ez hêvî dikim ku hûn ê dersên ku min rêz kirine fêr bibin - lê ya sereke ji bîr mekin: her yek ji me xeletiyan dike - şerm, dilşewat, tirsnak. Ez ê şaş û xemgîn bibim ku di pêşerojê de materyalek min têra berdewamkirina gotarê nebe.

Source: www.habr.com

Add a comment