Één taal om ze allemaal te beheersen

Verborgen onder een laag code ligt een taal die verlangt om geleerd te worden.

Één taal om ze allemaal te beheersen

Op het moment van schrijven geeft de zoekopdracht "welke programmeertaal als eerste leren" 517 miljoen zoekresultaten. Elk van deze websites prijst een bepaalde taal aan, en 90% van hen zal uiteindelijk Python of JavaScript aanbevelen.

Zonder lange inleiding wil ik officieel verklaren dat al deze 517 miljoen sites ongelijk hebben en zeggen dat de taal die je als eerste moet leren — fundamentele logica.

Simpelweg kunnen coderen is niet genoeg. De markt is zo verzadigd met afgestudeerden van universiteiten en cursussen, dat de positie van junior vrijwel niet meer bestaat*. Om succesvol te zijn in de wereld van vandaag, moet je zowel kunnen coderen als geavanceerd fundamenteel logisch denken hebben.

*Hier en verder, onthoud dat dit een vertaling is, en de situatie op de arbeidsmarkt voor de auteur en in jouw land kan verschillen (net als andere nuances), wat echter de originele artikel niet minder maakt — opmerking van de vertaler.

Mijn eerste les informatica

Mijn eerste kennismaking met informatica was een keuzevak dat ik in de 10e klas volgde. Op de eerste dag, toen ik het lokaal binnenkwam, was ik verwonderd om te zien dat er een grote hoeveelheid ijscreememmers en verschillende toppings voorhanden waren. Nadat iedereen was gaan zitten, verklaarde de lerares:

"Vandaag gaan we zelfgemaakte roomijs proeven. Maar met één voorwaarde: jullie moeten een lijst met specifieke instructies opstellen over hoe je het dessert moet maken, en ik zal ze volgen"

"Geen probleem," dacht ik, "deze les zal niet lang duren." Na een minuut had ik een geweldig recept voor mijn droomijs bedacht:

  1. Neem drie bolletjes frambozenijs en leg ze in een kom.
  2. Open de chocoladesaus en voeg twee eetlepels toe aan dezelfde kom.
  3. Voeg slagroom toe aan de kom.
  4. Strooi dit alles met suikerstaafjes en leg een kers bovenop.

Mijn lerares — de 'computer' in deze lieve metafoor — gaf een meer sarcastische-letterlijke uitvoering dan ik ooit eerder had gezien. Ze begon ijverig met een lepel op de ijscreememmer te hameren, zelfs zonder de deksel aan te raken.

"Oké, oké, maar je moet het eerst openen!" riep ik, terwijl ik probeerde de traktatie zo snel mogelijk te krijgen.

«Je hebt dit niet in de instructies geschreven, en ik kon je geen ijsje maken. VOLGENDE!»

Laten we de tijd doorbrengen tot poging №2

  1. Open het frambozenijs door het deksel te verwijderen
  2. Neem drie bolletjes frambozenijs en leg ze in een kom.
  3. Open de chocoladesaus en voeg twee eetlepels toe aan dezelfde kom.
  4. Voeg slagroom toe aan de kom.
  5. Strooi er suikerstaafjes overheen en leg er een kers bovenop

Nou, nu zouden er echt geen problemen meer moeten zijn. Ik heb zelfs voor de zekerheid gecontroleerd of alle ingrediënten voor mijn culinaire meesterwerk klaar zijn.

De lerares verwijderde het deksel, schepte en legde drie bolletjes ijs in een kom. «Eindelijk begint mijn prachtige roomijs werkelijkheid te worden!» Toen opende ze de chocoladesaus en voegde twee eetlepels toe aan de kom. Niet «voegde chocoladesaus van twee eetlepels toe» — denk niet dat ze dat deed — ze deed uiteraard de lepels zelf in de kom. Zonder saus erin. Ik heb weer nagelaten alles precies te beschrijven. Nadat de rest op dezelfde manier was uitgevoerd, kreeg ik een kom met ijs en twee eetlepels, nauwelijks zichtbaar onder een zee van slagroom. Bovenop lagen een paar suikerstaafjes.

Het lijkt erop dat het op dat moment eindelijk tot me doordrong: de computer — logica in een vacuüm. Hij weet niets van de omstandigheden om zich heen en maakt geen aannames. Hij voert alleen duidelijk geformuleerde instructies uit en volgt deze letterlijk.

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

  1. Open, als dat nog niet gedaan is, elk van de volgende verpakkingen: frambozenijs, chocoladesaus, slagroom, suikerstaafjes.
  2. Pak een kom en zet deze voor je neer
  3. Neem een ijslepel en leg een voor een drie bolletjes frambozenijs in de kom. Zet de ijslepel terug op zijn plaats.
  4. Neem de pot chocoladesaus, schep saus en giet de inhoud van de eetlepel in de kom. Herhaal de handeling van scheppen en gieten met de saus nog een keer. Zet de lepel en de pot terug.
  5. Neem de verpakking van de slagroom, draai deze ondersteboven en houd deze boven de kom, en giet deze drie seconden over het ijs, waarna je de verpakking weer op zijn plaats terugzet.
  6. Neem de pot suikerstaafjes, giet ongeveer veertig staafjes in de kom en zet de pot weer terug.
  7. Neem een kers uit de kersenkom en leg deze bovenop het ijs.
  8. Geef de leerling de kom met het bereide roomijs en een lepel.

Het laatste punt was bijzonder belangrijk, want zonder dit begon de lerares simpelweg mijn ijsje op te eten, een keer eerder.

Maar dit is programmeren. Een intense creatie van een zorgvuldig pakket instructies voor de computer. In wezen komt elk programmeertaal hierop neer: het opstellen van instructies.

Carrière in programmeren

Programmeren heeft een punt bereikt waarop het moeilijk is om het als één enkele industrie te bespreken, net zoals het moeilijk is om het woord 'programmeur' als een beschrijving voor een vacature te gebruiken. Twee ontwikkelaars kunnen evenzeer door de markt gevraagd worden, terwijl ze compleet verschillende talen kennen, en dat betekent dat de vaardigheid om te ontwikkelen belangrijker is dan kennis van een specifieke taal. Een universele eigenschap die alle succesvolle ontwikkelaars gemeen hebben, is fundamentele logica.

De beste programmeur is in staat om naar de code vanuit een nieuw perspectief te kijken. En dit is van cruciaal belang, omdat de meeste softwareproducten een verzameling zijn van niet gedocumenteerde fragmenten van slechte code. Deze moeten constant bij elkaar worden gebracht, waarbij gaten worden gedicht waar nodig. Mensen die niet in staat zijn om losse punten met een enkele lijn te verbinden, zullen altijd op de tweede plaats staan.

Dit brengt me bij nog een verklaring, deze keer vetgedrukt: fundamentele kennis is altijd van primair belang voor een programmeur.

Talen komen en gaan. Frameworks verouderen, terwijl bedrijven reageren op de vraag door hun technologie-stack te veranderen. Is er iets dat nooit zal veranderen? Ja - fundamentele kennis, die zo genoemd worden omdat ze de basis van alles vormen!

Hoe je fundamentele kennis kunt verbeteren

Één taal om ze allemaal te beheersenFoto van Christopher Yeshke en een werkende opdracht krijgen. Unsplash

Als je op zoek bent naar een startpunt om je fundamentele logische denkvermogen te verbeteren, probeer dan hier te beginnen:

Ken de complexiteit van je programma

Ook wel genoemd Big O De 'complexiteit van een algoritme' verwijst naar de afhankelijkheid van de tijd die nodig is om een programma uit te voeren van de grootte van zijn invoergegevens (n). De vinger aan de pols houden van de gebruikte algoritmen is een belangrijke stap.

Ken je datastructuren

Gegevensstructuren vormen de basis van elke moderne applicatie. Weten welke structuur in welk geval te gebruiken is, is een op zichzelf staande discipline. Gegevensstructuren zijn direct verbonden met de complexiteit van runtime en het kiezen van de verkeerde structuur kan leiden tot fundamentele prestatieproblemen. Het zoeken naar een element in een array is gelijk aan O(n), wat aangeeft dat het gebruik van arrays als invoergegevens kostbaar is. Het zoeken in een hashtabel is O(1), wat betekent dat in dit geval de zoektijd van een waarde niet afhankelijk is van het aantal elementen.

Tijdens mijn sollicitatiegesprekken kwamen mensen die beweerden dat zoeken in een array sneller is dan in een hashtabel. Dit was een onfeilbaar teken dat ik ze niet moest aannemen - ken je gegevensstructuren.

Lees / bekijk / beluister

Sites zoals Udemy, Pluralsight en CodeAcademy zijn uitstekende keuzes om nieuwe programmeertalen te leren. Maar voor de basis kun je het beste boeken raadplegen over algemene principes, praktijken en coderingsstijlen. De meest aanbevolen boeken zijn 'Design Patterns', 'Refactoring: Improving the Existing Code', 'Code Complete', 'Clean Code' en 'The Pragmatic Programmer'. Ten slotte zou elke ontwikkelaar een exemplaar van 'Algorithms' bij de hand moeten hebben.

Oefen!

Je kunt geen omelet bereiden zonder eieren te breken. Sites zoals HackerRank, CodeWars, CoderByte, TopCoder en LeetCode biedt duizenden interessante problemen om je kennis van gegevensstructuren en algoritmen te testen. Probeer een probleem op te lossen dat je aanspreekt, publiceer je oplossing op Github en bekijk daarna hoe anderen het hebben aangepakt. Dit leidt ons naar het laatste punt:

Lees andermans code

De grootste fout die je kunt maken op je ontwikkelingspad is om deze reis alleen te maken. Softwareontwikkeling is in hoge mate teamwerk. Samen stellen we normen op, maken we fouten en, ondanks alle tegenslagen, worden we samen beter. De tijd die je besteedt aan het lezen van andermans code betaalt zich dubbel en dwars terug. Zorg er alleen voor dat het goede code is.

Het beste advies dat ik kan geven is: schaam je nooit dat je iets nog niet weet. Zoals al gezegd is onze sector enorm en het aantal technologieën is oneindig. Het kost veel tijd en moeite om het grotere geheel te begrijpen, nog meer om een professional in een specifiek gebied te worden, en aanzienlijk meer om je vaardigheden in jouw vakgebied te perfectioneren. Ik laat het je weten wanneer ik daar zelf in slaag.

Bron: habr.com

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster