Miks (ja kuidas) kirjutan koodi pliiatsi ja paberiga PlatoBlockchain Data Intelligence. Vertikaalne otsing. Ai.

Miks (ja kuidas) kirjutan koodi pliiatsi ja paberiga

Kui mõte käsitsi kirjutatavast koodist tundub rumal, võib teid üllatada teadmine, et see on vältimatu. Kui te pole kindel, mõelge viimasele tööintervjuule ja pidage meeles, kuidas vestlusruumis polnud arvutit – ainult teie intervjueerijad, tühi paberileht ja sinine pastapliiats.

Teie seas olevate õpilaste jaoks on see veelgi suurem asi, kuna teie hinded jäävad koodiridadele, mille olete strateegiliselt oma vastustelehe vabasse kohta surunud.

Ja mitte ainult, kogenud programmeerijad võivad osutada teile kontori koopiamasinast eemaldatud A4-formaadis lehtede kimbule, et kritseldada üles eriti keeruline algoritm, mille kallal nad olid töötanud.

Nii et olenemata sellest, kas olete eksamiüliõpilane, potentsiaalne tööintervjueeritav või keegi, kes soovib oma programmeerimise ummikuid lahendada, loodan, et see artikkel aitab teil kodeerimisel pliiatsi paberile asetades.

Kuigi ma keskendun koodi kirjutamise analoogaspektile, saate neid samme rakendada mis tahes vormis või keeles kodeerimisel. Nii et pidage seda ka üldiseks kodeerimisjuhiseks, mis töötab spetsiaalselt minu jaoks, kuid võib teile ka teie töös väga kasulik olla.

Miks see kirja panna?

Enne alustamist on oluline mõista, et keegi ei eelda, et kirjutaksite märkmikusse üles tootmisvalmis koodi. See ei ole nii, et saate selle koodiredaktorisse visata ja ilma veata kompileerida. Kui eesmärk oleks luua täiuslik kood, istuksite vestlusruumides ja eksamiruumides arvuti ees.

Käsitsi kirjutamise koodi eesmärk on eelnevalt loogika läbi töötada. Kujunduses tahetakse võimalikult kiiresti "brauserisse pääseda", kuid kujunduste käsitsi visandamisel on tavapärane tarkus. Madala täpsusega meedium julgustab kiiret katsetamist ja odavaid vigu.

Vaev püüdes välja mõelda, kuidas ümbritsevaid esemeid ühe klõpsuga mõjutada (minu viimane artikkel)

Sama võib juhtuda ka koodiga, peamiselt süntaksi ja semantika väljatöötamisel. Sellegipoolest on õige süntaksi ja semantika hankimine alati plusspunkt, kuigi mitte kogu käekirjaharjutuse ainus fookus.

Vaatame, kust saaksime käsitsi kirjutamise koodi osas alustada.

Tea oma küsimust

Kolledži viimasel aastal ei saanud ma tervislikel põhjustel praktikal käia ega isegi ülikoolilinnaku intervjuudel osaleda. Selle tulemusena oli minu esimene tööintervjuu üsna sõnasõnaline ja suurte panustega.

Kui ma nüüd tagasi vaatan, oli intervjuu üsna lihtne. Kuid kuna ma polnud kunagi varem sellel osalenud, olin ma üle mõistuse ärevil. Esimese asjana küsisid intervjueerijad programmeerimise kohta, kas ma saan väljastada tärnidest koosneva ümberpööratud kolmnurga. Nagu ma ütlesin, oli see lihtne – ei midagi a for loop ei saa hakkama, eks? Aga nagu ma ütlesin, oli ka minu ärevus läbi katuse.

Hingasin sügavalt sisse, surusin peopesa vastu tühja paberilehte, mille nad mulle olid pannud, libistasin selle võimalikult aeglaselt enda poole laual (loomulikult ostuaeg), klõpsasin pliiatsit ja siis tegin midagi. õige.

Kõigepealt joonistasin tärnidest tagurpidi kolmnurga. Nii leidsin jalad maas, et nende küsimusele vastama hakata.

Olen näinud, kuidas muidu geniaalsed arendajad saavad midagi valesti lihtsalt sellepärast, et nad ei saa kunagi täielikult aru, mida nad lahendavad.

Küsimused, millega me töötame, ei sarnane küsimustele, mida lahendavad füüsikud või matemaatikud. Nad saavad parameetrite komplekti ja leiavad puuduvad; meie küsimused on ka meie tulemused. Meile on juba öeldud, millised on meie tulemused – me peame välja mõtlema, kuidas nendeni jõuda. Sellepärast on oluline küsimust hästi teada, sest näete tulemust.

Kodeerimise alustamiseks on üks parimaid viise, kui kirjutate või joonistage välja, mida soovite väljastada. Ma saan aru, et meie kiire tempoga tööstuses eeldatakse, et peame otse programmeerimisse hüppama, käivitades „tere maailm” demo. Ja see on suurepärane, kui saate end kurssi viia võõra süntaksiga ja vabaneda ärevusest millegi uue proovimise pärast.

Aga kui keegi esitab teile küsimuse ja annab teile tulemuse, mille nimel töötada, kas poleks parem see kõigepealt ära jätta? See küsimus/tulemus pole mitte ainult teie lähtepunkt, vaid ka teie tugipunkt. Kodeerimise mis tahes etapis saate seda vaadata, veendumaks, et töötate selle nimel ja olete õigel teel.

Nii et olenemata sellest, kas oma vastuste lehtedel või tühjal A4-formaadis paberil, millele kirjutate, alustage sellest, et võtke hetk ja kirjutage üles, mida soovite väljastada. Kui te ei soovi, et see oleks teie vastuse osa, võite selle panna veeristele või nurka. Lihtsalt veenduge, et see oleks kuskil, kus saate sellele viidata.

Kirjeldage oma koodi

See samm on nagu kahe teraga mõõk. See võib anda teile oma programmi tegevuskava või raisata teie aega. Minu ülesanne on veenduda, et see on esimene.

Nii et ennekõike meeldib mulle öelda: koodi kirjeldamine pole vajalik, kui teie probleemi või küsimuse ulatus on väike. Jällegi, see tava ei ole ettekirjutav ega universaalne kõigi projektide või olukordade jaoks. Kujutage ette, et ma olen teie intervjueerija ja ma palun teil kirjutada, kuidas CSS-i kasutades võimalikult mitmel viisil tsentreerida element veebilehel. Te ei vaja selle jaoks täpselt ülevaadet. Koodilõigud on iga meetodi puhul suhteliselt väikesed.

Nüüd aga oletame, et määran teile veebirakenduse, mis jäädvustab puuteekraani liidese kaudu kasutajate allkirjad ja salvestab seejärel allkirja serverisse. Mitte nii otsekohene, eks? Sul on rohkem kui üks asi, mida välja mõelda. Võib-olla aitab väike ülevaade.

  1. UI allkirja jäädvustamiseks – HTML Canvas? WebGL?
  2. Keelake kursori sündmused ülejäänud veebilehel, kui kasutaja allkirjastab
  3. Teisendage ja salvestage jäädvustatud pilt PNG-failiks — JS
  4. Seejärel teisendage see blobiks (võib-olla) ja salvestage see külastaja logiandmete tabelisse.

Olen kirjutanud umbkaudse jada toiminguid, mida pean võib-olla kodeerima. See oleks võinud olla lühem või pikem, olenevalt sellest, mida ma sellest tahtsin.

Soovitan kliendiprojektide jaoks koodi visandada. Kirjutage ülevaade koos oma kasutajanõuetega või välja prinditud traatraamide tagaküljele.

Teie kiire täppide hetktõmmis annab teile kaardi, ülesannete loendi ja kontrollnimekirja, mida saate kontrollida, kui jõuate projekti lõppu – peaaegu kogu teie projekti kokkuvõte madala täpsusega loendis. Sellest võib saada ka malli järgmise sarnase projekti alustamiseks.

Kuid nagu ma enne ütlesin, on see samm nagu kahe teraga mõõk. Ajapiirangute korral peate eksamineeritavate ja intervjueeritavate jaoks selle lühidalt kasutama.

Kui te ei tea, kust alustada, kirjutage üles vaid kolm olulist funktsiooni, mille peate oma rakenduses kodeerima, ja kui teil on aega, tehke see viieks.

Aga see selleks. Kulutage sellele võimalikult vähe aega ja ärge higistage detailide pärast. Ülevaade ei too teile lisapunkte. See on ainult selleks, et aidata teil veenduda, et kõik on kaetud. See jäädvustab teie esialgse kõhureaktsiooni ja hoiab teid ausana kogu projekti jooksul.

Pikk vs kiirkiri

Valge joonega paber musta tindiga kursiivsete käsitsi kirjutatud märkmetega.
Kiirviide tekstivaliku keelamiseks

Aeg hakata kodeerima. Mida sa siis kirjutad? "Bdrs" või "border-radius"; "div -> p"Või"<div><p></div></p>"; "pl()"Või"println()"; "q()"Või"querySelector()"?

Kui keegi teine ​​teie koodi hindab, pole valikut. Jätke välja lühendid, pseudokoodid, Emmeti otseteed ja mis tahes muud kiirkirja vormid. Vastasel juhul pole põhjust eeldada, et igaüks, kes seda loeb, teab, mida teie lühendid tähendavad.

See sõltub tõesti sinust.

Kui olete käsitsi kirjutamisest loobunud – ja paljud meist on seda teinud –, on parem mitte liiale minna pikakäeliste märgetega, kuna need muutuvad tüütuks. Samas ei ole oma kirjutamisega liiga kokkuhoidlik. Mitte siis, kui soovite ühel päeval sellele tagasi vaadata ja mõista, mida olete üles kirjutanud.

Minu märkmete tegemise rakenduses on avatud fail ja laual jooneline märkmik, kuhu kirjutan üles koodilõigud, mida tahan hilisemaks kasutamiseks salvestada. Need on organiseerimata, vaid pikk juppide voog. Seetõttu ei tea ma vanemaid märkmeid sirvides, mida ma mõtlesin kirjutada, kui ma poleks neid selgelt üles kirjutanud.

Ma unustan kogu aeg süntaksid. Näiteks olen kasutanud JavaScripti funktsioonide jaoks noolemärki selle kasutuselevõtust saadik (kuna see on lühem) ja olen üsna kindel, kui keegi äkki palub mul funktsiooni defineerida, kasutades function märksõna, võin isegi sulud või funktsiooni nime valesti panna, tekitades süntaksivea.

Pole ebatavaline, et unustame süntaksid, mida me pole mõnda aega kasutanud. Seetõttu on parem oma märkmed selgelt kirjutada, kui teate, et vajate neid edaspidiseks kasutamiseks.

Koodi mittejärjestikune voog

Erinevalt viimasest etapist, mis ei kehti teie intervjueeritavate ja testi sooritajate kohta, on see mõeldud just teile.

Enamikku programmeerimiskeeli tõlgendatakse, kompileeritakse ja käivitatakse nii, et mõnikord käivitatakse allikas eelnevalt kirjutatud kood kutsumisel hiljem. Teeme seda näiteks JavaScriptis funktsioonide väljakutsumisega — funktsioone saab algselt defineerida, siis hiljem käivitada. Eksamineeritavad ja intervjueeritavad saavad seda kasutada, et alustada tööd teie vastuse kriitilise punktiga.

Nagu ma olen algusest peale öelnud, on käsitsi kirjutamise koodi eesmärk läbi töötada või testida mis tahes programmi loogikat. Parim on, kui keskendute kõigepealt selle lahendamisele.

Võtame klassikalise õpiku näite — programmi n-nda leidmiseks Fibonacci arv. Kui ma kirjutaksin selle jaoks lihtsa ülevaate, oleks see umbes selline:

  1. Hankige sisend.
  2. Arvutage Fibonacci arv.
  3. Tehke väljundist kokkuvõte.
  4. Printige väljund.

Kõik selle ülevaate etapid on olulised; aga 1, 3 ja 4 on kohustuslikumad. Need on vajalikud, kuid mitte piisavalt olulised, et neile kohe keskenduda.

Parem on alustada koodi üles kirjutamist Fibonacci numbri arvutamiseks, mitte sisendi toomiseks. Pakkige see funktsiooniks, seejärel kirjutage kood järjestikku ja kirjutage üles rida selle funktsiooni kutsumiseks, kui see on asjakohane.

Kulutage oma aega koodi kirjutamisele, mis keskendub probleemi tuumale.

Tõelised professionaalid võivad edasi liikuda. Oletame, et mul on kliendiprojekt ja ma pean töötama mingi kolmnurga geomeetriaga – mul on kaks külge, vastasnurk ja ma pean leidma kolmanda külje pikkuse. Ja ma otsustasin alustamiseks paberile kritseldada, mitte oma avada IDE.

Kõigepealt joonistaksin loomulikult kolmnurga (nagu võite öelda, on see asi, millega ma olen väga kogenud). Panen kirja mõned näidispikkused ja nurgad. Seejärel kirjutaksin valemi (komplimendid võrguotsingu kohta kindlasti) ja seejärel hüppaksin otse funktsiooni koodi juurde.

Mul pole mõtet kohustuslikke samme kirja panna, kuigi vajan neid tootmisvalmis koodis. Aga see oleks teisiti, kui ma peaksin selle eksamil vastuste lehele kirjutama. Ma ei saa teisi samme vahele jätta; aga võin siiski alustada valemi koodiga.

Pseudokood

Chris on juba kirjutanud a mugav artikkel pseudokoodi kohta et ma soovitan teil põhjalikult lugeda.

Kõigile nendele professionaalidele, kes tunnevad, et kogu käekirjakoodi asi ei tundu olevat teie tassike teed, võib siiski olla uudishimulik, kas see võib teid aidata, pseudokood võib olla tasakaal, mida otsite.

See sarnaneb koodi visandamisega, nagu ma ühes eelmises etapis mainisin. Siiski on see lühim ja sarnaneb pigem kiirkodeerimisega. Seda nimetatakse mõnikord ka "skeleti koodiks".

Siin on mõni kiire pseudokood CSS-i ruudustiku paigutuse jaoks:

Grid
5 60px rows
6 100px columns

Polegi palju kirjutada! Seega, kuigi pliiatsi paberile panemine on sedalaadi asjade jaoks suurepärane, on sama tõhus, kiire ja odav pseudokoodi sisestamine mis tahes kasutatavasse programmi.

Ruum ja kommentaarid

Usun, et kood koosneb 90% märksõnadest ja 10% vahekaartidest. Ilma tühikuta sõnade loetavus väheneb. Taanded on vajalikud ka käsitsi kirjutatud koodi puhul. Kuid ärge kasutage seda igal tasemel, sest paberi laius piirab teid. Kasutage tühikuid mõistlikult, kuid kasutage neid.

Kollane voodrita paber musta tindiga kursiivkirjas käsitsi kirjutatud koodiga.
Hinnatud OG-lõik, kirjutatud täiendava TLC-ga

Kui kirjutate oma kasutuseks koodi, siis usun ka, et kui olete järginud kõike, mida olen seni maininud ja olete juba lehele oma väljundi ja konspekti kirja pannud, ei pruugi te isegi kommentaare lisada. Kommentaarid ütlevad teile kiiresti, mida selle järgmine koodikomplekt teeb. Kui olete koodi lühikirjelduse juba kirjutanud ja lugenud, on kommentaarid üleliigsed.

Kui aga teie otsus ütleb, et peate selle maha panema, tehke seda. Lisage see koodi paremale küljele (kuna te ei saa seda juba kirjutatud ridade vahele sisestada nii, nagu saaksite näiteks VS-koodis). Kasutage kaldkriipsu, sulgusid või nooli, et märkida, et need on kommentaarid.

Eksaminandide jaoks, kes ei ole kindla süntaksiga kindlad, kirjutage kommentaarid üles. Nii annate vähemalt teie paberit hindavale inimesele oma kavatsuse selle valesti vormindatud koodiga teada. Kommentaaride tähistamiseks kasutage ainult õigeid eraldajaid – näiteks JavaScripti jaoks on need kaldkriipsud.

Analoog vs digitaalne

Nagu ma varem mainisin, on kõik, mida ma siin pakun, üldised kodeerimisnõuanded. Kui te ei soovi seda füüsilise paberiga proovida, töötab ka mis tahes märkmete tegemise rakendus.

Kui aga kavatsete proovida digitaalset marsruuti, on minu soovitus proovida kasutada midagi muud kui lihtsalt märkmete tegemise rakendus. Töötage visuaalsemate digitaalsete tööriistadega – vooskeemid, mõttekaardid, traatraamid jne. Need aitavad teil tulemust, piirjooni ja koodi ennast visualiseerida.

Ma ei ole eriline digikodanik (välja arvatud veebis töötamine ja hiljuti e-raamatute lugemiseks üleminek), seega jään füüsiliste märkmike juurde.

Minu lemmiktööriistad koodi käsitsi kirjutamiseks

Iga pliiats ja paber sobivad! Kuid seal on palju võimalusi ja need on mõned valiktööriistad, mida ma kasutan:

Kodeerimiseks pole "kirjutamisviisi".

Loodan, kui mitte midagi muud, siis minu väike viis käsitsi koodi kirjutamiseks pliiatsi ja paberiga paneb teid hindama seda, kuidas te koodi juba planeerite ja kirjutate. Mulle meeldib teada, kuidas teised arendajad oma tööle suhtuvad, ja see on minu viis anda teile ülevaade sellest, kuidas ma asju teen.

Jällegi, siin pole miski teaduslik ega täpne kunst. Kuid kui soovite proovida käsitsi kirjutatud koodi planeerimist, on siin kõik, mida oleme kenas järjestatud loendis käsitlenud:

  1. Alustuseks kirjutage üles (vajadusel koos näidisandmetega) oma koodi väljund.
  2. Kirjutage koodi ülevaade. Väikeste või vähem keerukate projektide puhul jätke see kolme sammu juurde.
  3. Kasutage pikakäelisi tähiseid. Enda jaoks kirjutavad arendajad saavad kasutada stenogrammi, kui kiri on loetav ja teile hiljem viidates mõistlik.
  4. Kui teil on ajapiirangud, kaaluge kõigepealt koodi kirjutamist, mis lahendab probleemi tuuma. Hiljem kirjutage üleskutse sellele koodile oma järjestikuse koodi õigesse kohta.
  5. Kui tunnete end enesekindlalt, proovige kirjutada pseudokood, mis käsitleb põhiideed.
  6. Kasutage õigeid taandusi ja tühikuid ning pidage meeles paberi laiust.

See on kõik! Kui olete valmis proovima koodi käsitsi kirjutada, siis loodan, et see artikkel muudab teil alustamise lihtsaks. Ja kui istute eksamile või intervjuule, siis loodan, et see aitab teil keskenduda küsimuste õigele lahendamisele.

Ajatempel:

Veel alates CSSi trikid