Een taal om hulle almal te regeer

Versteek onder 'n laag kode, 'n taal kwyn, smag om geleer te word.

Een taal om hulle almal te regeer

Soos van hierdie skrywe, gee die navraag "programmeer watter taal om eerste te leer" 517 miljoen soekresultate. Elkeen van hierdie werwe sal een spesifieke taal prys, en 90% van hulle sal uiteindelik Python of JavaScript aanbeveel.

Ek wil sonder meer op rekord sê dat al hierdie 517 miljoen webwerwe verkeerd is en dat die taal wat jy eerste moet leer is fundamentele logika.

Net om te weet hoe om te kodeer is nie genoeg nie. Die mark is so versadig met gegradueerdes van institute en kursusse dat die junior posisie feitlik opgehou het om te bestaan*. Om suksesvol te wees in vandag se wêreld, moet jy beide kodeer en gevorderde fundamentele logiese denke hê.

*onthou asseblief dat dit 'n vertaling is, en die situasie op die arbeidsmark vir die skrywer en in jou land kan anders wees (asook ander nuanses), wat egter op sigself nie die oorspronklike artikel vererger nie - ongeveer. vertaling

My eerste rekenaarwetenskaples

My eerste blootstelling aan rekenaarwetenskap was 'n keusevak wat ek in graad 10 geneem het. Op die heel eerste dag toe ek die klaskamer binnekom, was ek verheug om 'n groot aantal emmers roomys en verskeie toppe voor my te sien. Nadat almal gesit het, het die onderwyser aangekondig:

“Vandag gaan ons selfgemaakte roomyse proe. Maar met een voorwaarde: jy moet ’n lys van spesifieke instruksies maak oor hoe om die nagereg voor te berei, en ek sal dit volg.”

“Geen probleem nie,” het ek gedink, “hierdie les sal nie lank wees nie.” Ek het binne 'n minuut of wat die perfekte resep vir die roomys van my drome neergeskryf:

  1. Skep en plaas drie skeppies framboosroomys in 'n bak
  2. Maak die sjokoladesous oop en voeg twee eetlepels by dieselfde bak
  3. Voeg geklopte room by bak
  4. Sprinkel dit alles met suikerstokkies en sit 'n kersie bo-op

My onderwyser - die "rekenaar" in daardie oulike metafoor - het 'n meer sarkastiese, letterlike vertoning gelewer as wat ek nog ooit tevore gesien het. Sy het ywerig begin om die roomysemmer met 'n skeplepel te steek sonder om eers aan die deksel te raak.

"Goed, goed, maar eers moet jy dit oopmaak!" - Ek het uitgeroep en probeer om die lekkerny so vinnig as moontlik te kry.

“Jy het dit nie in die instruksies geskryf nie, en ek kon nie vir jou roomys maak nie. VOLGENDE!"

Kom ons vinnig vorentoe na poging #2

  1. Maak framboosroomys oop deur die deksel te verwyder
  2. Skep en plaas drie skeppies framboosroomys in 'n bak
  3. Maak die sjokoladesous oop en voeg twee eetlepels by dieselfde bak
  4. Voeg geklopte room by bak
  5. Besprinkel dit alles met suikerstokkies en plaas 'n kersie bo-op

Wel, nou behoort daar beslis geen probleme te wees nie. Net vir ingeval, ek het seker gemaak dat al die bestanddele vir die maak van my kulinêre meesterstuk oop is.

Die onderwyser het die deksel verwyder, opgeskep en drie lepels roomys in 'n bak gesit. "Uiteindelik het my pragtige roomys begin waar word!" Sy maak toe die sjokoladesous oop en gooi twee eetlepels by die bak. Sy het nie "sjokoladesous van twee eetlepels bygesit" nie - moenie so dink nie - sy het natuurlik die lepels self in die bak gesit. Geen sous in hulle nie. Weereens, ek het nie die moeite gedoen om alles presies neer te skryf nie. Nadat die res in dieselfde gees gedoen is, het ek 'n bak roomys en twee eetlepels ontvang, skaars merkbaar onder die see van geklopte room. Bo-op was 'n paar suikerstokkies.

Dit blyk dat dit op hierdie oomblik uiteindelik tot my deurgedring het: 'n rekenaar is logika in 'n vakuum. Hy is onbewus van omliggende omstandighede en maak geen aannames nie. Hy voer slegs duidelik geformuleerde opdragte uit en volg dit woord vir woord.

My finale uitslag was die resultaat van 'n lang maar noodsaaklike reeks proef en foute:

  1. As jy dit nog nie gedoen het nie, maak elk van die volgende pakkies oop: framboosroomys, sjokoladesous, geklopte room, suikerstokkies.
  2. Haal 'n bak uit en plaas dit voor jou
  3. Neem 'n roomyslepel en plaas drie lepels framboosroomys een vir een in 'n bak. Sit die roomyslepel terug op sy plek.
  4. Neem 'n fles sjokoladesous, skep die sous en gooi die inhoud van 'n eetlepel in 'n bak. Herhaal die skep- en gietproses nog een keer. Sit die lepel en fles terug in plek.
  5. Neem die pakkie geklopte room onderstebo en hou dit oor die bak, gooi dit vir 3 sekondes oor die roomys en plaas dan die pakkie terug op sy plek.
  6. Neem 'n fles suikerstokkies, gooi ongeveer veertig stokkies in 'n bak en sit die fles terug.
  7. Neem een ​​kersie uit die bak kersies en plaas dit bo-op die roomys.
  8. Gee vir die student 'n bak met die voltooide roomys en 'n lepel.

Die laaste punt was veral belangrik, want daarsonder het die juffrou die voorlaaste keer sommer my roomys begin eet.

Maar dit is programmering. Die stres om 'n noukeurige stel instruksies vir 'n rekenaar te skep. Dit is in wese waarop elke programmeertaal neerkom - die skryf van instruksies.

Loopbaan in programmering

Programmering het die punt bereik waar dit moeilik is om as 'n enkele bedryf te bespreek, net soos dit moeilik is om die enkele woord "programmeerder" as 'n posbeskrywing te gebruik. Twee ontwikkelaars kan ewe in aanvraag deur die mark wees, wat heeltemal verskillende tale ken, wat beteken dat die vermoë om te ontwikkel belangriker is as kennis van 'n spesifieke taal. 'N Universele kenmerk wat deur alle suksesvolle ontwikkelaars gedeel word, is fundamentele logika.

Die beste programmeerder is die een wat in staat is om kode vanuit 'n nuwe hoek te kyk. En dit is fundamenteel belangrik, want die meeste sagtewareprodukte is 'n versameling ongedokumenteerde fragmente van slegte kode. Hulle moet voortdurend bymekaar gebring word en gapings vul soos nodig. Mense wat nie in staat is om uiteenlopende kolletjies met 'n enkele lyn te verbind nie, sal vir altyd op die kantlyn moet wees.

Dit alles bring my by nog 'n verklaring, hierdie keer in vetdruk: fundamentele kennis was nog altyd en sal uiters belangrik wees vir 'n programmeerder.

Tale kom en gaan. Raamwerke raak verouderd, en maatskappye reageer op die vraag deur die tegnologiestapel wat hulle gebruik, te verander. Is daar een ding wat nooit sal verander nie? Ja - fundamentele kennis, wat fundamenteel genoem word omdat dit alles onderlê!

Hoe om fundamentele kennis te verbeter

Een taal om hulle almal te regeerFoto deur Christopher Jeschke op Unsplash

As jy 'n beginpunt soek om jou fundamentele logiese denke te verbeter, probeer om hier te begin:

Ken die kompleksiteit van jou program

Ook genoem Groot O "algoritme kompleksiteit" verwys na die afhanklikheid van die tyd wat dit neem om 'n program uit te voer op die grootte van sy insetdata (N). Om jou vinger op die pols te hou van die algoritmes wat gebruik word, is 'n belangrike stap.

Ken jou datastrukture

Datastrukture is die kern van elke moderne program. Om te weet watter struktuur om in watter geval te gebruik, is 'n dissipline op sy eie. Datastrukture is direk verwant aan runtime-kompleksiteit, en die keuse van die verkeerde struktuur kan tot fundamentele prestasieprobleme lei. Om 'n element in 'n skikking te vind is O (n), wat die hoë koste van die gebruik van skikkings as invoerdata aandui. Hash tabel opsoek − O (1), wat beteken dat in hierdie geval die tyd om na 'n waarde te soek nie afhang van die aantal elemente nie.

Mense het na my toe gekom vir 'n onderhoud en beweer dat soek in 'n skikking vinniger was as om in 'n hash-tabel te soek. Dit was die sekerste teken dat jy hulle nie moet huur nie - ken jou datastrukture.

Lees / kyk / luister

Webwerwe soos UdemyPluralsight и Kode Akademie - 'n Uitstekende keuse om nuwe programmeertale aan te leer. Maar vir die basiese beginsels, raadpleeg boeke oor algemene koderingsbeginsels, -praktyke en -style. Die mees aanbevole boeke is "Ontwerppatrone", "Refactoring. Verbetering van bestaande kode, "perfekte kode", "skoon kode" en "pragmatistiese programmeerder". Ten slotte moet elke ontwikkelaar 'n kopie van die "Algoritmes" byderhand.

Oefen!

Jy kan nie roereier kook sonder om eiers te breek nie. Webwerwe soos HackerRankCodeWarsCoderByte, Topkodeerder и LeetCode bied duisende interessante legkaarte om jou kennis van datastrukture en algoritmes te toets. Probeer jou geluk om 'n probleem op te los waarvan jy hou, plaas jou oplossing op Github, en kyk dan hoe ander dit benader het. Wat ons by die laaste punt bring:

Lees ander mense se kode

Die grootste fout wat jy kan maak wanneer jy op die ontwikkelingspad gaan, is om dit alleen te gaan. Sagteware-ontwikkeling is grootliks 'n spanpoging. Ons skep saam standaarde, maak saam foute en word, ten spyte van alle mislukkings, saam beter. Die tyd wat spandeer word om ander mense se kode te lees, sal baie vrugte afwerp. Maak net seker dit is goeie kode.

Wel, die beste raad wat ek kan gee, is om nooit skaam te wees dat jy iets nog nie weet nie. Soos reeds gesê, is ons bedryf groot en die hoeveelheid tegnologie is eindeloos. Dit verg baie tyd en moeite om 'n geheelbeeld te bou, selfs meer om 'n professionele persoon te word in iets spesifieks, en 'n orde van grootte meer om jou vaardighede in jou veld te slyp. Ek sal jou laat weet wanneer ek dit self bereik.

Bron: will.com

Voeg 'n opmerking