Awọn aṣiṣe didamu pupọ julọ ninu iṣẹ siseto mi (titi di isisiyi)

Awọn aṣiṣe didamu pupọ julọ ninu iṣẹ siseto mi (titi di isisiyi)
Bi wọn ṣe sọ, ti o ko ba tiju koodu atijọ rẹ, lẹhinna o ko dagba bi olutọpa - ati pe Mo gba pẹlu ero yii. Mo bẹrẹ siseto fun igbadun diẹ sii ju 40 ọdun sẹyin, ati agbejoro 30 ọdun sẹyin, nitorinaa Mo ni ọpọlọpọ awọn aṣiṣe. opo yanturu. Gẹ́gẹ́ bí ọ̀jọ̀gbọ́n sáyẹ́ǹsì kọ̀ǹpútà, mo kọ́ àwọn akẹ́kọ̀ọ́ mi láti kẹ́kọ̀ọ́ látinú àṣìṣe—tiwọn, tèmi, àti àwọn mìíràn’. Mo rò pé ó tó àkókò láti sọ̀rọ̀ nípa àwọn àṣìṣe mi kí n má bàa pàdánù ìmẹ̀tọ́mọ̀wà mi. Mo nireti pe wọn yoo wulo fun ẹnikan.

Ibi kẹta - Microsoft C alakojo

Olukọni ile-iwe mi gbagbọ pe Romeo ati Juliet ko le ṣe akiyesi ajalu nitori awọn ohun kikọ ko ni ẹbi ti o buruju - wọn kan huwa aṣiwere, gẹgẹ bi awọn ọdọ yẹ. Emi ko gba pẹlu rẹ lẹhinna, ṣugbọn nisisiyi Mo rii ọkà ti ọgbọn ninu ero rẹ, paapaa ni asopọ pẹlu siseto.

Ni akoko ti mo pari ọdun keji mi ni MIT, Mo jẹ ọdọ ati ailagbara, mejeeji ni igbesi aye ati ni siseto. Ni akoko ooru, Mo gbaṣẹ ni Microsoft, lori ẹgbẹ olupilẹṣẹ C. Ni akọkọ Mo ṣe awọn nkan igbagbogbo bii atilẹyin profaili, ati lẹhinna Mo ti fi le mi lọwọ lati ṣiṣẹ ni apakan igbadun julọ ti akopọ (bii Mo ro) - iṣapeye backend. Ni pataki, Mo ni lati ni ilọsiwaju koodu x86 fun awọn alaye ẹka.

Ti pinnu lati kọ koodu ẹrọ ti o dara julọ fun gbogbo ọran ti o ṣeeṣe, Mo ju ara mi sinu adagun-odo ni ori gigun. Ti iwuwo pinpin ti awọn iye ga, Mo wọ wọn sinu tabili orilede. Ti wọn ba ni ipin ti o wọpọ, Mo lo lati jẹ ki tabili naa pọ si (ṣugbọn nikan ti pipin ba le ṣee ṣe ni lilo bit naficula). Nigbati gbogbo awọn iye jẹ awọn agbara ti meji, Mo ṣe iṣapeye miiran. Ti ṣeto awọn iye ko ba ni itẹlọrun awọn ipo mi, Mo pin si ọpọlọpọ awọn ọran iṣapeye ati lo koodu iṣapeye tẹlẹ.

Alaburuku ni. Ọ̀pọ̀ ọdún lẹ́yìn náà ni wọ́n sọ fún mi pé òṣìṣẹ́ ètò tó jogún koodu mi kórìíra mi.

Awọn aṣiṣe didamu pupọ julọ ninu iṣẹ siseto mi (titi di isisiyi)

Ẹkọ ti a kọ

Gẹgẹbi David Patterson ati John Hennessy ti kọ ni Kọmputa Architecture ati Kọmputa Systems Design, ọkan ninu awọn ipilẹ akọkọ ti faaji ati apẹrẹ ni lati jẹ ki awọn nkan ṣiṣẹ ni yarayara bi o ti ṣee.

Iyara awọn ọran ti o wọpọ yoo mu iṣẹ ṣiṣe ni imunadoko diẹ sii ju iṣapeye awọn ọran toje. Ni iyalẹnu, awọn ọran ti o wọpọ nigbagbogbo rọrun ju awọn ti o ṣọwọn lọ. Imọran ọgbọn yii dawọle pe o mọ ọran wo ni a ka pe o wọpọ - ati pe eyi ṣee ṣe nikan nipasẹ ilana ti idanwo iṣọra ati wiwọn.

Nínú ìgbèjà mi, mo gbìyànjú láti mọ bí àwọn gbólóhùn ẹ̀ka ṣe rí nínú ìṣe (gẹ́gẹ́ bí ẹ̀ka mélòó kan tí wọ́n wà àti báwo ni wọ́n ṣe pínpín ọ̀pọ̀ ìgbà), ṣùgbọ́n ní 1988 ìsọfúnni yìí kò sí. Bibẹẹkọ, Emi ko yẹ ki n ṣafikun awọn ọran pataki nigbakugba ti olupilẹṣẹ lọwọlọwọ ko le ṣe agbekalẹ koodu to dara julọ fun apẹẹrẹ atọwọda ti Mo wa pẹlu.

Mo nilo lati pe olupilẹṣẹ ti o ni iriri ati, papọ pẹlu rẹ, ronu nipa kini awọn ọran ti o wọpọ jẹ ati ṣe pẹlu wọn ni pataki. Emi yoo kọ kere koodu, sugbon ti o ni kan ti o dara. Gẹgẹbi oludasile Stack Overflow Jeff Atwood kowe, ọta ti o buruju ti olupilẹṣẹ ni olupilẹṣẹ funrararẹ:

Mo mọ pe o ni awọn ero ti o dara julọ, gẹgẹ bi gbogbo wa ṣe. A ṣẹda awọn eto ati ifẹ lati kọ koodu. Bi a ṣe ṣe wa niyẹn. A ro wipe eyikeyi isoro le wa ni re pẹlu duct teepu, a ti ibilẹ crutch ati ki o kan fun pọ ti koodu. Bi o ṣe jẹ pe o ni irora awọn koodu koodu lati gba, koodu ti o dara julọ ni koodu ti ko si. Laini tuntun kọọkan nilo n ṣatunṣe aṣiṣe ati atilẹyin, o nilo lati ni oye. Nigbati o ba ṣafikun koodu titun, o yẹ ki o ṣe bẹ pẹlu aifẹ ati ikorira nitori gbogbo awọn aṣayan miiran ti pari. Ọpọlọpọ awọn pirogirama kọ koodu pupọ ju, ṣiṣe ni ọta wa.

Ti MO ba ti kọ koodu ti o rọrun ti o bo awọn ọran ti o wọpọ, yoo ti rọrun pupọ lati ṣe imudojuiwọn ti o ba jẹ dandan. Mo ti fi sile a idotin ti ko si ọkan fe lati koju.

Awọn aṣiṣe didamu pupọ julọ ninu iṣẹ siseto mi (titi di isisiyi)

Ibi keji: ipolowo lori awọn nẹtiwọọki awujọ

Nigbati Mo n ṣiṣẹ ni Google lori ipolowo awujọ awujọ (ranti Myspace?), Mo ko nkan bii eyi ni C++:

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)) {
  }
}

Awọn olupilẹṣẹ le rii aṣiṣe lẹsẹkẹsẹ: ariyanjiyan ti o kẹhin yẹ ki o jẹ j, kii ṣe i. Idanwo apakan ko ṣe afihan aṣiṣe naa, ati bẹ naa oluyẹwo mi ko ṣe afihan. Ifilọlẹ naa ti ṣe, ati ni alẹ ọjọ kan koodu mi lọ si olupin naa o si kọlu gbogbo awọn kọnputa ni ile-iṣẹ data.

Ko si ohun buburu ṣẹlẹ. Ko si ohun ti o fọ fun ẹnikẹni, nitori ṣaaju ifilọlẹ agbaye koodu ti ni idanwo laarin ile-iṣẹ data kan. Ayafi ti SRE Enginners duro ti ndun billiards fun a nigba ti o si ṣe kekere kan rollback. Ni owurọ owurọ Mo gba imeeli kan pẹlu idalẹnu jamba, ṣe atunṣe koodu ati ṣafikun awọn idanwo ẹyọkan ti yoo mu aṣiṣe naa. Niwọn igba ti Mo tẹle ilana naa - bibẹẹkọ koodu mi yoo kuna lati ṣiṣẹ - ko si awọn iṣoro miiran.

Awọn aṣiṣe didamu pupọ julọ ninu iṣẹ siseto mi (titi di isisiyi)

Ẹkọ ti a kọ

Ọpọlọpọ ni o ni idaniloju pe iru aṣiṣe nla bẹ yoo jẹ idiyele ifasilẹ ti o jẹbi, ṣugbọn eyi kii ṣe bẹ: ni akọkọ, gbogbo awọn olutọpa ṣe awọn aṣiṣe, ati keji, wọn kii ṣe aṣiṣe kanna ni igba meji.

Ni otitọ, Mo ni ọrẹ pirogirama kan ti o jẹ ẹlẹrọ ti o wuyi ati pe o ti le kuro lenu ise fun ṣiṣe aṣiṣe kan. Lẹhinna, o ti gba ni Google (ati laipe ni igbega) - o sọ otitọ nipa aṣiṣe ti o ṣe ni ijomitoro kan, ati pe a ko kà a si iku.

Ohun ti o jẹ so fun nipa Thomas Watson, olori arosọ ti IBM:

Aṣẹ ijọba kan ti o to bii miliọnu kan dọla ni a kede. IBM Corporation - tabi dipo, Thomas Watson Sr. tikalararẹ - fẹ gaan lati gba. Laanu, aṣoju tita ko lagbara lati ṣe eyi ati pe IBM padanu idu naa. Ni ọjọ keji, oṣiṣẹ yii wa sinu ọfiisi Ọgbẹni Watson o si gbe apoowe kan sori tabili rẹ. Ogbeni Watson ko paapaa ni wahala lati wo o - o n duro de oṣiṣẹ kan ati pe o mọ pe lẹta ikọsilẹ ni.

Watson beere ohun ti lọ ti ko tọ.

Aṣoju tita naa sọ ni alaye nipa ilọsiwaju ti tutu naa. Ó dárúkọ àwọn àṣìṣe tí a bá ti yẹra fún. Nikẹhin, o sọ pe, “Ọgbẹni Watson, o ṣeun fun jijẹ ki n ṣalaye. Mo mọ iye ti a nilo aṣẹ yii. Mo mọ bó ṣe ṣe pàtàkì tó,” mo sì múra láti lọ.

Watson sún mọ́ ọn lẹ́nu ọ̀nà, ó wo ojú rẹ̀, ó sì dá àpòòwé náà padà pẹ̀lú àwọn ọ̀rọ̀ náà: “Báwo ni mo ṣe lè jẹ́ kó o lọ? Mo kan nawo milionu kan dọla ninu eto-ẹkọ rẹ.

Mo ni T-shirt kan ti o sọ pe: "Ti o ba kọ ẹkọ lati awọn aṣiṣe, lẹhinna Mo ti jẹ oluwa tẹlẹ." Ni otitọ, nigbati o ba de si awọn aṣiṣe, Emi jẹ dokita ti imọ-jinlẹ.

Ibi akọkọ: App onihumọ API

Lootọ awọn aṣiṣe ẹru kan ni ipa lori nọmba nla ti awọn olumulo, di imọ gbangba, gba akoko pipẹ lati ṣatunṣe, ati pe awọn ti ko le ṣe wọn. Mi tobi asise jije gbogbo awọn ti awọn wọnyi àwárí mu.

Awọn buru ti awọn dara

Mo ka esee nipa Richard Gabriel nipa ọna yii ni awọn ọgọrun ọdun bi ọmọ ile-iwe giga, ati pe Mo fẹran rẹ pupọ pe Mo beere lọwọ awọn ọmọ ile-iwe mi. Ti o ko ba ranti rẹ daradara, tun iranti rẹ sọ, o kere. Atilẹkọ yii ṣe iyatọ si ifẹ lati “gba o tọ” ati ọna “buru dara julọ” ni ọpọlọpọ awọn ọna, pẹlu ayedero.

Bii o ṣe yẹ: apẹrẹ yẹ ki o rọrun ni imuse ati wiwo. Ayedero ti wiwo jẹ pataki ju ayedero ti imuse.

Buru, dara julọ: apẹrẹ yẹ ki o rọrun ni imuse ati wiwo. Irọrun imuse jẹ pataki ju ayedero ti wiwo.

Jẹ ki a gbagbe nipa iyẹn fun iṣẹju kan. Laanu, Mo ti gbagbe nipa rẹ fun ọpọlọpọ ọdun.

Onihumọ App

Lakoko ti o n ṣiṣẹ ni Google, Mo jẹ apakan ti ẹgbẹ naa Onihumọ App, a fa-ati-ju online idagbasoke ayika fun aspiring Android Difelopa. O jẹ ọdun 2009, ati pe a yara lati tu ẹda alpha silẹ ni akoko ki ni akoko ooru a le mu awọn kilasi titunto si fun awọn olukọ ti o le lo agbegbe nigbati o nkọ ni isubu. Mo ti yọọda lati a se sprites, nostalgic fun bi mo ti lo a Kọ awọn ere lori TI-99/4. Fun awọn ti ko mọ, sprite jẹ ohun alaworan onisẹpo meji ti o le gbe ati ṣe ajọṣepọ pẹlu awọn eroja sọfitiwia miiran. Awọn apẹẹrẹ ti sprites pẹlu awọn ọkọ oju-aye, awọn asteroids, awọn okuta didan, ati awọn rackets.

A ṣe imuse ohun-Oorun App onihumọ ni Java, ki o wa ni o kan kan ìdìpọ ohun ni nibẹ. Niwọn igba ti awọn bọọlu ati awọn sprites huwa bakannaa, Mo ṣẹda kilasi sprite kan pẹlu awọn ohun-ini (awọn aaye) X, Y, Iyara (iyara) ati Akọle (itọsọna). Wọn ni awọn ọna kanna fun wiwa awọn ikọlu, bouncing kuro ni eti iboju, ati bẹbẹ lọ.

Iyatọ akọkọ laarin bọọlu ati sprite ni ohun ti o fa ni pato - Circle ti o kun tabi raster kan. Niwọn igba ti Mo ti ṣe imuse awọn sprites akọkọ, o jẹ ọgbọn lati pato awọn ipoidojuko x- ati y ti igun apa osi oke ti ibiti aworan naa wa.

Awọn aṣiṣe didamu pupọ julọ ninu iṣẹ siseto mi (titi di isisiyi)
Ni kete ti awọn sprite ti n ṣiṣẹ, Mo pinnu pe MO le ṣe awọn nkan bọọlu pẹlu koodu kekere pupọ. Iṣoro kan ṣoṣo ni pe Mo gba ipa-ọna ti o rọrun julọ (lati oju-ọna ti oluṣe), ti o tọka si awọn ipoidojuko x- ati y ti igun apa osi oke ti elegbegbe ti n ṣe bọọlu.

Awọn aṣiṣe didamu pupọ julọ ninu iṣẹ siseto mi (titi di isisiyi)
Ni otitọ, o jẹ dandan lati tọka awọn ipoidojuko x- ati y ti aarin Circle, gẹgẹ bi a ti kọ ọ ninu eyikeyi iwe-ẹkọ mathematiki ati eyikeyi orisun miiran ti o mẹnuba awọn iyika.

Awọn aṣiṣe didamu pupọ julọ ninu iṣẹ siseto mi (titi di isisiyi)
Ko dabi awọn aṣiṣe mi ti o kọja, eyi kan kii ṣe awọn ẹlẹgbẹ mi nikan, ṣugbọn tun awọn miliọnu awọn olumulo App Inventor. Pupọ ninu wọn jẹ ọmọde tabi tuntun patapata si siseto. Wọn ni lati ṣe ọpọlọpọ awọn igbesẹ ti ko ni dandan nigbati wọn ṣiṣẹ lori ohun elo kọọkan ninu eyiti bọọlu wa. Ti Mo ba ranti awọn aṣiṣe mi miiran pẹlu ẹrin, lẹhinna eyi jẹ ki n lagun paapaa loni.

Mo nipari padi kokoro yii laipẹ, ọdun mẹwa lẹhinna. "Patched", kii ṣe "ti o wa titi", nitori bi Joshua Bloch ti sọ, API jẹ ayeraye. Ko le ṣe awọn ayipada ti yoo ni ipa lori awọn eto ti o wa tẹlẹ, a ṣafikun ohun-ini OriginAtCenter pẹlu iye eke ni awọn eto atijọ ati otitọ ni gbogbo awọn ọjọ iwaju. Awọn olumulo le beere ibeere ọgbọn kan: tani paapaa ronu gbigbe aaye ibẹrẹ si ibikan miiran yatọ si aarin. Si tani? Si pirogirama kan ti o jẹ ọlẹ pupọ lati ṣẹda API deede ni ọdun mẹwa sẹhin.

Awọn ẹkọ ti a Kọ

Nigbati o ba n ṣiṣẹ lori awọn API (eyiti o fẹrẹ jẹ pe gbogbo pirogirama gbọdọ ṣe nigbakan), o yẹ ki o tẹle imọran ti o dara julọ ti a ṣe ilana ni fidio Joshua Bloch "Bii o ṣe le ṣẹda API ti o dara ati idi ti o ṣe pataki"tabi ni yi kukuru akojọ:

  • API kan le fun ọ ni anfani nla ati ipalara nla.. A ti o dara API ṣẹda tun onibara. Eni buburu di alaburuku ayeraye re.
  • API ti gbogbo eniyan, bii awọn okuta iyebiye, wa titi lailai. Fun ni gbogbo rẹ: kii yoo ni aye miiran lati ṣe ohun gbogbo ti o tọ.
  • Awọn ilana API yẹ ki o jẹ kukuru - oju-iwe kan pẹlu kilasi ati awọn ibuwọlu ọna ati awọn apejuwe, ko gba diẹ sii ju laini lọ. Eyi yoo gba ọ laaye lati tunto API ni irọrun ti ko ba yipada ni pipe ni igba akọkọ.
  • Ṣe apejuwe awọn ọran liloṣaaju ṣiṣe API tabi paapaa ṣiṣẹ lori sipesifikesonu rẹ. Ni ọna yii iwọ yoo yago fun imuse ati sisọ pato API ti ko ṣiṣẹ patapata.

Ti MO ba ti kọ paapaa asọye kukuru kan pẹlu iwe afọwọkọ atọwọda, o ṣee ṣe Emi yoo ti ṣe idanimọ aṣiṣe naa ati ṣatunṣe rẹ. Ti kii ba ṣe bẹ, lẹhinna ọkan ninu awọn ẹlẹgbẹ mi yoo dajudaju ṣe. Eyikeyi ipinnu ti o ni awọn abajade ti o ga julọ nilo lati ronu nipa o kere ju ọjọ kan (eyi kii ṣe si siseto nikan).

Akọle ti aroko Richard Gabriel, “Buburu Ni Dara,” n tọka si anfani ti o lọ lati jẹ akọkọ si ọja-paapaa pẹlu ọja aipe kan-nigba ti ẹlomiran n lo ayeraye lepa pipe. Ti n ronu lori koodu sprite, Mo rii pe Emi ko paapaa ni lati kọ koodu diẹ sii lati ni ẹtọ. Ohunkohun ti ọkan le sọ, Mo ti wà grosssly asise.

ipari

Awọn olupilẹṣẹ ṣe awọn aṣiṣe lojoojumọ, boya o n kọ koodu buggy tabi ko fẹ lati gbiyanju nkan ti yoo mu ọgbọn ati iṣelọpọ wọn dara si. Nitoribẹẹ, o le jẹ pirogirama lai ṣe iru awọn aṣiṣe to ṣe pataki bi Mo ti ṣe. Ṣugbọn ko ṣee ṣe lati di pirogirama ti o dara laisi idanimọ awọn aṣiṣe rẹ ati kọ ẹkọ lati ọdọ wọn.

Mo pade awọn ọmọ ile-iwe nigbagbogbo ti o lero bi wọn ṣe awọn aṣiṣe pupọ ati nitorinaa wọn ko ge jade fun siseto. Mo mọ bawo ni aarun alaiṣedeede ti o wọpọ wa ninu IT. Mo nireti pe iwọ yoo kọ awọn ẹkọ ti Mo ti ṣe atokọ - ṣugbọn ranti ọkan akọkọ: ọkọọkan wa ṣe awọn aṣiṣe - itiju, ẹrin, ẹru. Emi yoo yà ati inu bi mi ti o ba jẹ ni ọjọ iwaju Emi ko ni ohun elo ti o to lati tẹsiwaju nkan naa.

orisun: www.habr.com

Fi ọrọìwòye kun