Zakaj (in kako) pišem kodo s svinčnikom in papirjem PlatoBlockchain Data Intelligence. Navpično iskanje. Ai.

Zakaj (in kako) pišem kodo s svinčnikom in papirjem

Če se misel na rokopisno kodo zdi neumna, vas bo morda presenetilo, da veste, da je neizogibna. Če niste prepričani, pomislite na zadnji razgovor za službo, ki ste ga opravili, in se spomnite, da v sobi za razgovore ni bilo računalnika – samo vaši anketarji, prazen list papirja in moder kemični svinčnik.

Za študente med vami je to še večji zalogaj, saj vaše ocene visijo na vrsticah kode, ki ste jih strateško stisnili v razpoložljivi prostor na listu za odgovore.

In ne samo to, izkušeni programerji vas lahko pokažejo na sveženj listov A4, ki so jih odstranili iz pisarniškega fotokopirnega stroja, da bi načrtali posebej zapleten algoritem, na katerem so delali.

Ne glede na to, ali ste študent na izpitu, potencialni sogovornik za službo ali nekdo, ki želi rešiti svoje programerske slepe ulice, upam, da vam bo ta članek pomagal, ko boste kodirali s peresom na papir.

Čeprav se bom osredotočil na analogni vidik pisanja kode, lahko te korake uporabite za kodiranje v kateri koli obliki ali jeziku. Zato menite, da je to tudi kot generična smernica za kodiranje, ki deluje posebej zame, vendar je lahko zelo koristna tudi vam pri vašem delu.

Zakaj zapisati?

Preden začnemo, je pomembno razumeti, da nihče ne pričakuje, da boste v zvezek zapisali kodo, pripravljeno za proizvodnjo. Tega ne morete spustiti v urejevalnik kode in prevesti brez napake. Če bi bil cilj ustvariti popolno kodo, bi v sobah za razgovore in izpitnih dvoranah sedeli pred računalnikom.

Namen rokopisne kode je vnaprej preučiti logiko. Pri oblikovanju obstaja želja po tem, da bi čim prej vstopili v brskalnik, vendar je običajna modrost ročno skiciranje dizajnov. Medij nizke ločljivosti spodbuja hitro eksperimentiranje in poceni napake.

Muka poskušati ugotoviti, kako z enim klikom vplivati ​​na okoliške predmete (iz mojega zadnji članek)

Enako lahko velja za kodo, predvsem pri razvijanju sintakse in semantike. Kljub temu je treba pridobiti pravilno sintakso in semantiko vedno plus točka, čeprav ni edini poudarek celotne vaje rokopisa.

Poglejmo, kje lahko začnemo, ko gre za kodo rokopisa.

Spoznajte svoje vprašanje

V zadnjem letniku fakultete zaradi zdravstvenih razlogov nisem mogel opravljati pripravništva ali se celo udeležiti razgovorov v kampusu. Posledično je bil moj prvi razgovor za službo precej dobeseden z visokimi vložki.

Ko zdaj pogledam nazaj, je bil intervju precej enostaven. Ker pa se ga še nikoli nisem udeležil, sem bil nerazumno zaskrbljen. Prva stvar, ki so jo anketarji vprašali o programiranju, je bila, ali lahko izpišem obrnjen trikotnik iz zvezdic. Kot sem rekel, je bilo enostavno - nič a for zanke ne prenese, kajne? Toda kot sem rekel, je bila tudi moja tesnoba presežena.

Globoko sem vdihnila, z dlanjo pritisnila na prazen list papirja, ki so mi ga položili, ga čim počasneje podrsala proti sebi po mizi (si pridobila čas, seveda), škljocnila s pisalom in nato nekaj naredila. prav.

Najprej sem narisala obrnjen trikotnik iz zvezdic. Tako sem se znašel na tleh, da bi začel odgovarjati na njihovo vprašanje.

Videl sem sicer briljantne razvijalce, da naredijo nekaj narobe preprosto zato, ker nikoli popolnoma ne razumejo, kaj rešujejo.

Vprašanja, s katerimi delamo, niso podobna vprašanjem, ki jih rešujejo fiziki ali matematiki. Dobijo nabor parametrov in poiščejo manjkajoče; naša vprašanja so tudi naši rezultati. Povedali smo že, kakšni so naši rezultati — ugotoviti moramo, kako jih doseči. Zato je nujno, da dobro poznate vprašanje, saj boste videli rezultat.

Zapisovanje ali risanje tega, kar želite izpisati, je eden najboljših načinov za začetek kodiranja. Razumem, da se v naši hitro razvijajoči se panogi pričakuje, da moramo skočiti takoj v programiranje z izvedbo predstavitve »zdravo, svet«. In to je super, če se seznanite z neznano sintakso in se otresete tesnobe, da bi poskusili nekaj novega.

Ko pa vam nekdo zastavi vprašanje in vam ponudi rezultat, na katerega morate delati, ali ne bi bilo bolje, da to najprej zapišete? To vprašanje/rezultat ni le vaše izhodišče, ampak tudi vaša referenčna točka. Na katerem koli koraku svojega kodiranja si ga lahko ogledate in se prepričate, da delate v smeri tega in da ste na pravi poti.

Torej, ne glede na to, ali ste na listih za odgovore ali na tistem praznem papirju A4, na katerega nameravate pisati, začnite tako, da si vzemite sekundo in zapišite, kaj želite izpisati. Lahko ga postavite na rob ali v kot, če ne želite, da je del vašega odgovora. Prepričajte se le, da je nekje, kjer se lahko še naprej sklicujete nanj.

Opišite svojo kodo

Ta korak je kot dvorezen meč. Lahko vam priskrbi načrt za vaš program ali pa zapravi vaš čas. Moja naloga je zagotoviti, da je prvo.

Torej, najprej in predvsem rad rečem: orisna koda je nepotrebna, če je obseg vaše težave ali vprašanja majhen. Še enkrat, ta praksa ni niti predpisujoča niti univerzalna za vse projekte ali situacije. Predstavljajte si, da sem vaš anketar in vas prosim, da napišete, kako centrirati element na spletni strani z uporabo CSS na čim več načinov. Za to ne boste ravno potrebovali orisa. Delčki kode so relativno majhni za vsako metodo.

Zdaj pa recimo, da vam dodelim pisanje spletne aplikacije, ki zajema podpise uporabnikov prek vmesnika zaslona na dotik in nato shrani podpis na strežnik. Ni tako preprosto, kajne? Ugotoviti morate več kot eno stvar. Morda lahko pomaga majhen oris.

  1. Uporabniški vmesnik za zajem podpisa — HTML Canvas? WebGL?
  2. Onemogočite dogodke kazalcev na preostali spletni strani, ko se uporabnik podpisuje
  3. Pretvorite in shranite zajeto sliko v datoteko PNG — JS
  4. Nato ga pretvorite v blob (morda) in ga shranite v tabelo s podatki dnevnika obiskovalca.

Napisal sem grobo zaporedje dejanj, za katera mislim, da jih bom morda moral kodirati. Lahko bi bil krajši ali daljši, odvisno od tega, kaj sem želel od tega.

Zelo priporočam oris kode za projekte strank. Napišite oris skupaj z vašimi uporabniškimi zahtevami ali na zadnjo stran žičnih okvirjev, ki ste jih natisnili.

Vaš hitri posnetek oznak vam daje zemljevid, seznam opravil in kontrolni seznam, s katerim se lahko prepričate, ko pridete do konca projekta – skoraj povzetek celotnega projekta na seznamu nizke ločljivosti. Lahko postane tudi predloga za začetek vašega naslednjega podobnega projekta.

Toda kot sem že rekel, je ta korak kot dvorezen meč. Za izpraševance in intervjuvance boste morali biti kratki, ko so časovne omejitve.

Če ne veste, kje začeti, si zapišite samo tri bistvene funkcije, ki jih boste morali kodirati v svoji aplikaciji, in če imate čas, jih naredite pet.

Ampak to je tudi vse. Za to porabite čim manj časa in se ne znojite nad podrobnostmi. Oris vam ne bo prinesel dodatnih točk. Tam je samo zato, da vam pomaga zagotoviti, da imate vse pokrito. Zajame vašo začetno reakcijo in vas ohranja poštene skozi celotno življenjsko dobo projekta.

Dolgopis proti stenografiji

Bel črtan papir z ročno napisanimi zapisi s črnim črnilom.
Hitra referenca za onemogočanje izbire besedila

Čas je za začetek kodiranja. Torej, kaj pišeš? »Bdrs« ali »border-radius"; "div -> p"Ali"<div><p></div></p>"; "pl()"Ali"println()"; "q()"Ali"querySelector()„?

Če nekdo drug ocenjuje vašo kodo, potem ni druge izbire. Izpustite okrajšave, psevdo kode, bližnjice Emmet in katero koli drugo obliko stenografskega pisanja. V nasprotnem primeru ni razloga za domnevo, da kdor koli to bere ve, kaj pomenijo vaše okrajšave.

Res je odvisno od vas.

Če ste izgubili stik s pisanjem z roko - in mnogi od nas so - je bolje, da ne pretiravate z dolgimi zapisi, saj postanejo dolgočasni. Hkrati ni nobene stvari, kot bi bili preveč varčni pri svojem pisanju. Ne, če se želite nekega dne ozreti nazaj in razumeti, kaj ste zapisali.

V aplikaciji za pisanje zapiskov imam odprto datoteko in na mizi beležko s črtami, kamor si zapisujem delčke kode, ki jih želim shraniti za kasnejšo uporabo. So neorganizirani, le dolg tok izrezkov. Zato, ko brskam po starejših zapiskih, ne bi vedel, kaj sem hotel napisati, če jih ne bi jasno zapisal.

Ves čas pozabljam sintakse. Na primer, uporabljam puščični zapis za funkcije JavaScript, odkar je bil uveden (ker je krajši), in skoraj prepričan sem, da me bo kdo nenadoma vprašal, naj definiram funkcijo z function ključno besedo, lahko celo zamenjam oklepaj ali ime funkcije, kar povzroči sintaktično napako.

Ni nenavadno, da pozabimo sintakse, ki jih že nekaj časa nismo uporabljali. Zato je bolje, da zapiske jasno napišete, ko veste, da jih potrebujete za prihodnjo uporabo.

Nezaporedni tok kode

Za razliko od zadnjega koraka, ki ne velja za anketirance in testirance, je ta namenjen posebej vam.

Večina programskih jezikov se tolmači, prevaja in izvaja, tako da se včasih vnaprej napisana koda v izvorni kodi izvede pozneje, ko je priklicana. To naredimo na primer v JavaScriptu s klicanjem funkcij – funkcije je mogoče definirati na začetku, nato pa jih izvesti pozneje. Izpraševanci in anketiranci lahko to uporabijo, da najprej začnejo delati na kritični točki vašega odgovora.

Kot sem rekel od samega začetka, je namen rokopisne kode obdelati ali preizkusiti logiko katerega koli programa. Najbolje je, če se najprej osredotočite na rešitev tega.

Vzemimo klasičen učbeniški primer — program za iskanje n-te Fibonaccijevo število. Če bi napisal preprost oris za to, bi bilo nekaj takega:

  1. Pridobite vnos.
  2. Izračunajte Fibonaccijevo število.
  3. Povzemite rezultat.
  4. Natisnite izpis.

Vsi koraki v tem orisu so bistveni; vendar so 1, 3 in 4 bolj obvezni. So potrebni, a ne dovolj pomembni, da bi se nanje osredotočili takoj.

Bolje je, da začnete zapisovati kodo za izračun Fibonaccijevega števila, namesto da pridobite vhod. Zavijte ga v funkcijo, nato zaporedno napišite kodo in zapišite vrstico za klic te funkcije, kjer je to primerno.

Porabite svoj čas za pisanje kode, ki se osredotoča na bistvo problema.

Pravi profesionalci lahko preskočijo naprej. Recimo, da imam projekt stranke in moram delati z nekaj geometrije trikotnika — imam dve strani, nasprotni kot in moram najti dolžino tretje stranice. In odločil sem se, da bom za začetek počečkal na papir, namesto da bi odprl svojega IDE.

Najprej bi seveda narisal trikotnik (s tem imam veliko izkušenj, kot lahko vidite). Zapisal bi nekaj vzorcev dolžin in kotov. Nato bi napisal formulo (zagotovo pohvale spletnega iskanja) in nato takoj skočil na kodo za funkcijo.

Nima smisla zapisovati obveznih korakov, čeprav jih bom potreboval v kodi, pripravljeni za proizvodnjo. Drugače pa bi bilo, če bi moral to napisati na list za odgovore na izpitu. Ne morem preskočiti drugih korakov; vendar lahko še vedno začnem s kodo za formulo.

Psevdo koda

Chris je že napisal a priročen članek o psevdo kodi da vam toplo priporočam, da dobro preberete.

Za vse tiste strokovnjake, ki menijo, da se celotna stvar s kodo rokopisa ne zdi kot vaša skodelica čaja, vendar vas vseeno morda zanima, ali vam lahko pomaga, potem psevdo koda morda ravnovesje, ki ga iščete.

Podobno je orisu kode, kot sem omenil v enem od prejšnjih korakov. Vendar je krajši in je bolj podoben stenografskemu kodiranju. Včasih se imenuje tudi »skeletna koda«.

Tukaj je nekaj hitrih psevdo kod za postavitev mreže CSS:

Grid
5 60px rows
6 100px columns

Ni kaj dosti za napisati! Torej, čeprav je uporaba svinčnika na papirju odlična za tovrstne stvari, je enako učinkovito, hitro in poceni, če vpišete nekaj psevdo kode v kateri koli program, ki ga uporabljate.

Prostor in komentarji

Menim, da je koda 90 % ključnih besed in 10 % zavihkov. Brez presledkov se berljivost besed zmanjša. Vdolbine so potrebne tudi za ročno napisano kodo. Vendar ga ne uporabljajte za vsako raven, ker vas bo širina papirja omejila. Premišljeno uporabljajte prostore, vendar jih uporabite.

Rumen nečrtan papir z ročno napisano šifro s črnim črnilom.
Cenjen izrezek OG, napisan z dodatnim TLC

Če pišete kodo za lastno uporabo, verjamem tudi, da če ste upoštevali vse, kar sem do zdaj omenil in ste že zapisali svoj rezultat in oris na strani, vam morda sploh ne bo treba vključiti komentarjev. Komentarji vam hitro povedo, kaj počne naslednji nabor kode. Če ste že napisali in prebrali osnutek kode, so komentarji odveč.

Vendar, če vaša presoja pravi, da enega odložite, potem to storite. Dodajte ga na desno stran kode (saj ga ne boste mogli vstaviti med že napisane vrstice tako, kot bi lahko v npr. kodi VS). Uporabite poševnice, oklepaje ali puščice, da označite, da gre za komentarje.

Za preiskovance, ki niso prepričani v določeno sintakso, zapišite komentarje. Na ta način vsaj osebi, ki ocenjuje vaš prispevek, sporočite vašo namero s to nepravilno oblikovano kodo. Za označevanje komentarjev uporabljajte le pravilna ločila - to bi bile na primer poševnice za JavaScript.

Analogno proti digitalnemu

Kot sem že omenil, je vse, kar tukaj ponujam, generični nasvet za kodiranje. Če tega ne želite preizkusiti s fizičnim papirjem, deluje tudi katera koli aplikacija za zapisovanje.

Če pa nameravate preizkusiti digitalno pot, priporočam, da poskusite uporabiti kaj drugega kot preprosto aplikacijo za zapisovanje. Delajte z več vizualnimi digitalnimi orodji – diagrami poteka, miselni zemljevidi, žični okvirji itd. Pomagajo vam lahko vizualizirati rezultat, obrise in samo kodo.

Nisem ravno digitalni državljan (razen dela v spletu in pred kratkim prehoda na branje e-knjig), zato se držim fizičnih zvezkov.

Moja najljubša orodja za rokopisno kodo

Vsak svinčnik in papir bosta zadostovala! Vendar obstaja veliko možnosti in to je nekaj orodij za izbiro, ki jih uporabljam:

Ne obstaja "pisan" način kodiranja

Upam, da vas bo moj mali način pisanja kode s svinčnikom in papirjem spodbudil, da ocenite način, kako že načrtujete in pišete kodo. Rad vem, kako se drugi razvijalci lotevajo svojega dela, in to je moj način, da vam omogočim vpogled v moj način dela.

Še enkrat, nič tukaj ni znanstveno ali eksaktna umetnost. Če pa želite poskusiti načrtovanje ročno napisane kode, je tukaj vse, kar smo zajeli na lepo urejenem seznamu:

  1. Začnite tako, da zapišete (z vzorčnimi podatki, če je potrebno) rezultat vaše kode.
  2. Napišite osnutek kode. Za majhne projekte ali tiste, ki so manj zapleteni, naj bo v treh korakih.
  3. Uporabite dolge zapise. Razvijalci, ki pišejo zase, lahko uporabljajo stenografske zapise, če je zapis berljiv in vam je smiseln, ko se nanj pozneje obrnete.
  4. Ko ste v časovni stiski, razmislite o pisanju kode, ki se najprej loti bistva problema. Pozneje zapišite klic te kode na pravo mesto v vaši zaporedni kodi.
  5. Če ste prepričani, poskusite napisati psevdo kodo, ki obravnava glavno idejo.
  6. Uporabite ustrezne vdolbine in presledke — in bodite pozorni na širino papirja.

To je to! Ko boste pripravljeni poskusiti ročno pisati kodo, upam, da vam bo ta članek olajšal začetek. In če se usedete na izpit ali razgovor, upam, da vam bo to pomagalo, da se osredotočite na pravilno postavljanje vprašanj.

Časovni žig:

Več od Triki CSS