Eén taal om ze allemaal te regeren

Verborgen onder een laag code kwijnt een taal weg, verlangend om geleerd te worden.

Eén taal om ze allemaal te regeren

Op het moment van schrijven levert de zoekopdracht ‘programmeren welke taal je eerst moet leren’ 517 miljoen zoekresultaten op. Elk van deze sites prijst één specifieke taal, en 90% van hen zal uiteindelijk Python of JavaScript aanbevelen.

Zonder verder oponthoud zou ik willen zeggen dat al deze 517 miljoen websites ongelijk hebben en dat de taal die u eerst moet leren de fundamentele logica.

Alleen weten hoe te coderen is niet voldoende. De markt is zo verzadigd met afgestudeerden van instituten en opleidingen dat de juniorfunctie vrijwel niet meer bestaat*. Om in de wereld van vandaag te slagen, moet je zowel coderen als over geavanceerd fundamenteel logisch denken beschikken.

*Houd er hierna rekening mee dat dit een vertaling is en dat de situatie op de arbeidsmarkt voor de auteur en in uw land verschillend kan zijn (evenals andere nuances), wat het originele artikel op zichzelf echter niet slechter maakt - ca. vertaling

Mijn eerste les informatica

Mijn eerste kennismaking met computerwetenschappen was een keuzevak dat ik in de 10e klas volgde. Op de allereerste dag toen ik het klaslokaal binnenkwam, zag ik tot mijn grote vreugde een groot aantal emmers ijs en verschillende toppings voor me staan. Nadat iedereen was gaan zitten, kondigde de leraar aan:

“Vandaag gaan we zelfbereide ijsjes proeven. Maar met één voorwaarde: je moet een lijst maken met specifieke instructies voor het bereiden van het dessert, en ik zal ze opvolgen."

“Geen probleem”, dacht ik, “deze les duurt niet lang.” Binnen ongeveer een minuut had ik het perfecte recept voor het ijs van mijn dromen opgeschreven:

  1. Schep en doe drie bolletjes frambozenijs in een kom
  2. Open de chocoladesaus en doe twee eetlepels in dezelfde kom
  3. Voeg slagroom toe aan de kom
  4. Bestrooi het geheel met suikerstokjes en leg er een kers op

Mijn leraar – de ‘computer’ in die schattige metafoor – voerde een sarcastischer, letterlijker optreden op dan ik ooit eerder had gezien. Ze begon ijverig met een schep in de ijsemmer te porren zonder zelfs maar het deksel aan te raken.

"Oké, oké, maar eerst moet je het openen!" ' Riep ik uit, terwijl ik probeerde het lekkers zo snel mogelijk te bemachtigen.

'Je hebt dit niet in de instructies geschreven en ik kon geen ijs voor je maken. VOLGENDE!"

Laten we snel vooruitspoelen naar poging #2

  1. Open het frambozenijs door het deksel te verwijderen
  2. Schep en doe drie bolletjes frambozenijs in een kom
  3. Open de chocoladesaus en doe twee eetlepels in dezelfde kom
  4. Voeg slagroom toe aan de kom
  5. Bestrooi het geheel met suikerstokjes en plaats er een kers op

Nou, nu zouden er zeker geen problemen moeten zijn. Voor de zekerheid zorgde ik ervoor dat alle ingrediënten voor het maken van mijn culinaire meesterwerk open waren.

De leraar verwijderde het deksel, schepte en plaatste drie bolletjes ijs in een kom. "Eindelijk begint mijn prachtige ijs werkelijkheid te worden!" Vervolgens opende ze de chocoladesaus en deed twee eetlepels in de kom. Ze heeft niet "chocoladesaus van twee eetlepels toegevoegd" - denk het niet - ze heeft de lepels natuurlijk zelf in de kom gedaan. Er zit geen saus in. Nogmaals, ik heb niet de moeite genomen om alles precies op te schrijven. Nadat de rest in dezelfde geest was gedaan, kreeg ik een kom ijs en twee eetlepels, nauwelijks merkbaar onder de zee van slagroom. Erbovenop lagen een paar suikerstokjes.

Het lijkt erop dat het op dit moment eindelijk tot me doordrong: een computer is logica in een vacuüm. Hij is zich niet bewust van de omringende omstandigheden en maakt geen aannames. Hij voert uitsluitend duidelijk geformuleerde instructies uit en volgt deze woord voor woord op.

Mijn eindresultaat was het resultaat van een lange maar noodzakelijke reeks vallen en opstaan:

  1. Als je dit nog niet hebt gedaan, open dan elk van de volgende verpakkingen: frambozenijs, chocoladesaus, slagroom, suikersticks.
  2. Neem een ​​kom en zet deze voor je neer
  3. Neem een ​​ijsschep en doe drie bolletjes frambozenijs één voor één in een kom. Plaats de ijsschep terug op zijn plaats.
  4. Neem een ​​potje chocoladesaus, schep de saus op en giet de inhoud van een eetlepel in een kom. Herhaal het schep- en gietproces nog een keer. Plaats de lepel en de pot terug op hun plaats.
  5. Neem het pakje slagroom ondersteboven, houd het boven de kom, giet het gedurende 3 seconden over het ijs en plaats het pakje dan terug op zijn plaats.
  6. Neem een ​​pot met suikersticks, giet ongeveer veertig sticks in een kom en zet de pot terug.
  7. Neem een ​​kers uit de schaal met kersen en plaats deze op het ijs.
  8. Geef de leerling een kom met het afgewerkte ijs en een lepel.

Vooral het laatste punt was belangrijk, want zonder dit punt begon de leraar de voorlaatste keer gewoon mijn ijsje te eten.

Maar dit is programmeren. De stress van het maken van een zorgvuldige set instructies voor een computer. In wezen is dit waar elke programmeertaal op neerkomt: instructies schrijven.

Carrière in programmeren

Programmering heeft het punt bereikt waarop het moeilijk is om als afzonderlijke sector te discussiëren, net zoals het moeilijk is om het enkele woord ‘programmeur’ als functieomschrijving te gebruiken. Er kan evenveel vraag zijn naar twee ontwikkelaars op de markt, die totaal verschillende talen kennen, wat betekent dat het vermogen om zich te ontwikkelen belangrijker is dan kennis van een specifieke taal. Een universeel kenmerk dat door alle succesvolle ontwikkelaars wordt gedeeld is fundamentele logica.

De beste programmeur is degene die vanuit een nieuwe hoek naar code kan kijken. En dit is van fundamenteel belang, omdat de meeste softwareproducten een verzameling ongedocumenteerde fragmenten van slechte code zijn. Ze moeten voortdurend bij elkaar worden gebracht en zo nodig gaten opvullen. Mensen die niet in staat zijn om uiteenlopende punten met één lijn te verbinden, zullen voor altijd aan de zijlijn moeten staan.

Dit alles brengt mij bij een andere verklaring, deze keer vetgedrukt: Fundamentele kennis is altijd van het grootste belang geweest voor een programmeur, en dat zal ook zo blijven.

Talen komen en gaan. Frameworks raken verouderd en bedrijven reageren op de vraag door de technologiestapel die ze gebruiken te veranderen. Is er één ding dat nooit zal veranderen? Ja – fundamentele kennis, die fundamenteel wordt genoemd omdat zij aan alles ten grondslag ligt!

Hoe fundamentele kennis te verbeteren

Eén taal om ze allemaal te regerenFoto door Christoffel Jeschke op Unsplash

Als je op zoek bent naar een startpunt om je fundamentele logische denken te verbeteren, begin dan hier:

Ken de complexiteit van uw programma

Ook wel genoemd Big O ‘Algoritmecomplexiteit’ verwijst naar de afhankelijkheid van de tijd die nodig is om een ​​programma uit te voeren, afhankelijk van de grootte van de invoergegevens (N). De vinger aan de pols houden van de gebruikte algoritmen is een belangrijke stap.

Ken uw datastructuren

Datastructuren vormen de kern van elk modern programma. Weten welke structuur je in welk geval moet gebruiken, is een discipline op zich. Datastructuren houden rechtstreeks verband met de complexiteit van de runtime, en het kiezen van de verkeerde structuur kan tot fundamentele prestatieproblemen leiden. Het vinden van een element in een array is O (n), wat de hoge kosten aangeeft van het gebruik van arrays als invoergegevens. Hashtabel opzoeken − O (1), wat betekent dat in dit geval de tijd om naar een waarde te zoeken niet afhankelijk is van het aantal elementen.

Mensen kwamen naar mij toe voor een interview en beweerden dat zoeken in een array sneller ging dan zoeken in een hashtabel. Dit was het duidelijkste teken dat u ze niet zou moeten inhuren: ken uw datastructuren.

Lees/kijk/luister

Sites zoals UdemyPluralsight и CodeAcademy - Een uitstekende keuze voor het leren van nieuwe programmeertalen. Maar voor de basisbeginselen kunt u boeken raadplegen over algemene codeerprincipes, -praktijken en -stijlen. De meest aanbevolen boeken zijn “Design Patterns”, “Refactoring. Bestaande code verbeteren", "Perfecte code", "Schone code" en "Pragmatistische programmeur". Ten slotte moet elke ontwikkelaar een kopie bewaren van de "Algoritmen" bij de hand.

Oefening!

Je kunt geen roerei koken zonder de eieren te breken. Sites zoals HackerRankCodeWarsCoderByte, TopCoder и LeetCode bied duizenden interessante puzzels om je kennis van datastructuren en algoritmen te testen. Beproef uw geluk bij het oplossen van een probleem dat u bevalt, plaats uw oplossing op Github en kijk hoe anderen het hebben aangepakt. Dat brengt ons bij het laatste punt:

Lees de code van anderen

De grootste fout die je kunt maken als je het ontwikkelingspad bewandelt, is om het alleen te doen. Softwareontwikkeling is grotendeels een teaminspanning. We creëren samen normen, maken samen fouten en worden, ondanks alle mislukkingen, samen beter. De tijd die u besteedt aan het lezen van de code van anderen, zal zijn vruchten afwerpen. Zorg ervoor dat het een goede code is.

Nou, het beste advies dat ik kan geven is: schaam je nooit als je iets nog niet weet. Zoals al is gezegd, is onze industrie enorm en is de hoeveelheid technologie eindeloos. Het kost veel tijd en moeite om een ​​totaalbeeld op te bouwen, nog meer om een ​​professional te worden in iets specifieks, en nog veel meer om je vaardigheden in je vakgebied aan te scherpen. Ik laat het je weten als ik dit zelf heb bereikt.

Bron: www.habr.com

Voeg een reactie