Ien taal om se allegear te regearjen

Ferburgen ûnder in laach fan koade, in taal ferdwynt, langstme om leard te wurden.

Ien taal om se allegear te regearjen

As fan dit skriuwen, jout de query "programmearje hokker taal earst te learen" 517 miljoen sykresultaten. Elk fan dizze siden sil ien spesifike taal priizgje, en 90% fan har sil Python of JavaScript oanbefelje.

Sûnder fierdere ado soe ik graach op rekord gean as sizzen dat al dizze 517 miljoen websiden ferkeard binne en dat de taal dy't jo earst leare moatte is fûnemintele logika.

Gewoan witte hoe te koade is net genôch. De merk is sa verzadigd mei ôfstudearden fan ynstituten en kursussen dat de juniorposysje praktysk ophâldt te bestean*. Om te slagjen yn 'e wrâld fan hjoed, moatte jo sawol koade as avansearre fûnemintele logyske tinken hawwe.

*Hjirnei, tink derom dat dit in oersetting is, en de situaasje op 'e arbeidsmerk foar de auteur en yn jo lân kin oars wêze (lykas oare nuânses), wat lykwols op himsels it orizjinele artikel net slimmer makket - ca. oersetting

Myn earste les yn kompjûterwittenskip

Myn earste bleatstelling oan kompjûterwittenskip wie in karfak dat ik naam yn 'e 10e klasse. Op de alderearste dei, by it yngean fan it klaslokaal, wie ik bliid om foar my in grut oantal emmers iis en ferskate toppings te sjen. Neidat elkenien sitten hie, kundige de learaar oan:

“Hjoed sille wy sels makke iisken priuwe. Mar mei ien betingst: jo moatte in list meitsje mei spesifike ynstruksjes oer hoe't jo it dessert tariede, en ik sil se folgje."

"Gjin probleem," tocht ik, "dizze les sil net lang duorje." Binnen in minút of wat hie ik it perfekte resept foar it iis fan myn dreamen opskreaun:

  1. Skep en set trije leppels frambozen iis yn in kom
  2. Iepenje de sûkelade saus en foegje twa tablespoons oan deselde kom
  3. Foegje slachrjemme ta oan kom
  4. Sprinkle it allegear mei sûkerstokken en set in kers op boppe

Myn learaar - de "kompjûter" yn dy leuke metafoar - sette in mear sarkastyske, letterlike foarstelling op dan ik ea earder sjoen hie. Se begûn iverich mei in skepske de iiskemmer te prikken sûnder sels it deksel oan te reitsjen.

"Okee, goed, mar earst moatte jo it iepenje!" - rôp ik út en besocht sa gau mooglik de lekkernij te krijen.

"Jo hawwe dit net skreaun yn 'e ynstruksjes, en ik koe jo gjin iis meitsje. FOLGJENDE!"

Litte wy fluch foarút nei poging #2

  1. Iepenje raspberry-iis troch it deksel te ferwiderjen
  2. Skep en set trije leppels frambozen iis yn in kom
  3. Iepenje de sûkelade saus en foegje twa tablespoons oan deselde kom
  4. Foegje slachrjemme ta oan kom
  5. Sprinkle it allegear mei sûkerstokken en set in kers op boppe

No, no moatte der perfoarst gjin problemen wêze. Foar it gefal, ik soarge derfoar dat alle yngrediïnten foar it meitsjen fan myn kulinêre masterstik iepen wiene.

De learaar die it deksel ôf, skodde en lei trije bollen iis yn in kom. "Einlik is myn prachtige iis begon te wurden!" Se iepene doe de sûkelade saus en foege twa tablespoons oan 'e kom. Se hat gjin "sûkelade saus fan twa eetlepels tafoege" - tink it net - se, fansels, sette de leppels sels yn 'e kom. Gjin saus yn harren. Nochris hie ik net de muoite om alles krekt op te skriuwen. Nei't de rest yn deselde geast dien wie, krige ik in kom iis en twa eetlepels, amper te merken ûnder de see fan slagroom. Boppe op siet in pear sûkerstokken.

It liket derop dat it op dit stuit einliks ta my trochgien is: in kompjûter is logika yn in fakuüm. Hy is net bewust fan omlizzende omstannichheden en makket gjin oannames. Hy fiert allinnich dúdlik formulearre ynstruksjes út en folget se wurd foar wurd.

Myn einresultaat wie it resultaat fan in lange, mar needsaaklike searje probearjen en flaters:

  1. As jo ​​​​dat net al dien hawwe, iepenje dan elk fan 'e folgjende pakketten: raspberry-iis, sûkelade saus, slachrjemme, sûkerstokken.
  2. Nim in kom út en set it foar jo
  3. Nim in iisskeppel en set trije leppels frambozen iis ien foar ien yn in kom. Set de iisskeppel wer op syn plak.
  4. Nim in pot fan sûkelade saus, skep de saus en giet de ynhâld fan in eetlepel yn in kom. Werhelje it skop- en jitproses noch ien kear. Set de leppel en de pot werom op it plak.
  5. Nim it pakket mei slachrjemme op 'e kop en hâld it oer de kom, gie it oer it iis foar 3 sekonden, en bring it pakket werom nei syn plak.
  6. Nim in pot mei sûkerstokken, giet sa'n fjirtich stokjes yn in bakje en set it potsje werom.
  7. Nim ien kers út 'e kom mei kersen en set it boppe op it iis.
  8. Jou de studint in bakje mei it kleare iis en in leppel.

It lêste punt wie foaral wichtich, want sûnder it begon de juf de foarlêste kear gewoan myn iis te iten.

Mar dit is programmearring. De stress fan it meitsjen fan in soarchfâldige set ynstruksjes foar in kompjûter. Yn essinsje is dit wêr't elke programmeartaal op delkomt - ynstruksjes skriuwe.

Karriêre yn programmearring

Programming hat berikt it punt dêr't it is dreech om te besprekken as ien yndustry, krekt sa't it is lestich om te brûken it inkele wurd "programmeur" as in baan beskriuwing. Twa ûntwikkelders kinne likegoed yn 'e fraach wêze fan' e merk, kenne folslein ferskillende talen, wat betsjut dat de mooglikheid om te ûntwikkeljen wichtiger is as kennis fan in spesifike taal. In universele attribút dield troch alle suksesfolle ûntwikkelders is fûnemintele logika.

De bêste programmeur is dejinge dy't by steat is om te sjen nei koade út in nije hoeke. En dit is fûneminteel wichtich, om't de measte softwareprodukten in kolleksje binne fan net dokuminteare fragminten fan minne koade. Se moatte konstant byinoar brocht wurde, sa nedich gatten folje. Minsken dy't net by steat binne om ferskate punten te ferbinen mei ien rigel sille foar altyd oan 'e kant moatte stean.

Dit alles bringt my ta in oare ferklearring, dizze kear yn fet: fûnemintele kennis hat altyd west en sil foarop wêze foar in programmeur.

Talen komme en gean. Frameworks wurde ferâldere, en bedriuwen reagearje op fraach troch it feroarjen fan de technologystack dy't se brûke. Is der ien ding dat noait sil feroarje? Ja - fûnemintele kennis, dy't fûnemintele neamd wurdt, om't it oan alles leit!

Hoe fûnemintele kennis te ferbetterjen

Ien taal om se allegear te regearjenFoto by Christopher Jeschke op Unsplash

As jo ​​​​nei in begjinpunt sykje om jo fûnemintele logyske tinken te ferbetterjen, besykje dan hjir te begjinnen:

Kennis de kompleksiteit fan jo programma

Ek neamd Grutte O "algoritme kompleksiteit" ferwiist nei de ôfhinklikens fan 'e tiid dy't it nimt om in programma út te fieren fan' e grutte fan syn ynfiergegevens (s). It hâlden fan jo finger op 'e pols fan' e brûkte algoritmen is in wichtige stap.

Kennis jo gegevensstruktueren

Gegevensstruktueren binne it hert fan elk moderne programma. Witte hokker struktuer te brûken yn hokker gefal is in dissipline op himsels. Gegevensstruktueren binne direkt relatearre oan runtime kompleksiteit, en it kiezen fan 'e ferkearde struktuer kin liede ta fûnemintele prestaasjesproblemen. It finen fan in elemint yn in array is O (n), wat de hege kosten oanjout fan it brûken fan arrays as ynfiergegevens. Hash tabel opsykje - O (1), wat betsjut dat yn dit gefal de tiid om te sykjen nei in wearde net ôfhinklik is fan it oantal eleminten.

Minsken kamen nei my foar in ynterview en bewearden dat sykjen troch in array flugger wie dan sykjen troch in hash-tabel. Dit wie it wisste teken dat jo se net moatte hiere - ken jo gegevensstruktueren.

Lês / sjoch / harkje

Sites like UdemyPluralsight и CodeAcademy - In poerbêste kar foar it learen fan nije programmeartalen. Mar foar de basis, rieplachtsje boeken oer algemiene kodearringprinsipes, praktiken en stilen. De meast oanrikkemandearre boeken binne "Design Patterns", "Refactoring. Ferbetterjen fan besteande koade", "Perfect Code", "Clean Code" en "Pragmatist Programmer". Uteinlik moat elke ûntwikkelder in kopy fan 'e "Algoritmen" foar hannen.

Oefenje!

Jo kinne gjin roerei koekje sûnder aaien te brekken. Sites lykas HackerRankCodeWarsCoderByte, TopCoder и LeetCode biede tûzenen nijsgjirrige puzels om jo kennis fan gegevensstruktueren en algoritmen te testen. Besykje jo gelok by it oplossen fan in probleem dat jo leuk fine, pleats jo oplossing op Github, en sjoch dan hoe't oaren it oanpakten. Wat ús by it lêste punt bringt:

Lês de koade fan oaren

De grutste flater dy't jo kinne meitsje as jo it ûntwikkelingspaad delgeane is it allinich te gean. Softwareûntwikkeling is foar in grut part in teampoging. Wy meitsje tegearre noarmen, meitsje tegearre flaters en wurde, nettsjinsteande alle mislearrings, tegearre better. De tiid dy't bestege oan it lêzen fan 'e koade fan oare minsken sil goed betelje. Soargje derfoar dat it in goede koade is.

No, it bêste advys dat ik jaan kin is om my noait te skamjen datst noch wat net witst. Lykas al sein is, is ús yndustry enoarm en de hoemannichte technology is einleaze. It kostet in protte tiid en muoite om in algemien byld te bouwen, noch mear om in profesjoneel te wurden yn wat spesifyk, en in folchoarder fan grutte mear om jo feardigens yn jo fjild te skerpjen. Ik sil jo witte as ik dit sels berikke.

Boarne: www.habr.com

Add a comment