Programmeertalen en raamwerken: waarom je er dieper op moet graven

📖 19min read

Het bedrijf geeft mij geen keus

“Ik heb gehoord dat Python tegenwoordig populair is. Moeten we Python ook gebruiken?” Mag een nieuwe ontwikkelaar zoiets zeggen bij een bedrijf? Het is onmogelijk.

Voordat ik een baan kreeg, kon ik de taal kiezen die ik zou gebruiken. Voor de coderingstest gebruikte ik Python omdat het voordelig was, en voor webontwikkeling verdiepte ik me in Java omdat ik hoorde dat Java goed is voor het verkrijgen van banen. De realiteit voor kleine teams die de arbeidsmarkt betraden was echter anders.

De technologiestapel van het bedrijf stond al vast. De oude code draaide in Java (Spring Boot), de schermen werden getekend in JavaScript (Vue.js) en plotseling had ik geen Android-app-onderhoud meer en kreeg ik te maken met XML en een andere Java.

Ik heb nooit gekozen. Het is alleen zo dat de omgeving (het raamwerk) mij die taal heeft opgedrongen. In eerste instantie was ik bang om gebombardeerd te worden met deze onbekende taal en grammatica. Toen ik echter willekeurig code las en schreef, realiseerde ik me één belangrijk ding.

“Huh? Dit is hetzelfde als het Java-concept dat je eerder hebt bestudeerd?”

Als je de ene taal eenmaal goed begrijpt, is het slechts een kwestie van tijd voordat je de deur opent voor een andere taal.

De grammatica kan anders zijn, maar de essentie is hetzelfde (Conceptoverdracht)

Tijdens mijn schooltijd bestudeerde ik de C-taal lichtjes en verdiepte ik me behoorlijk diep in Java. Toen het seizoen voor de taakvoorbereiding aanbrak, hoorde ik in de gemeenschap dat “Python de slechterik is als het gaat om codeertests”, dus sloeg ik voor het eerst een Python-boek open.

De grammatica was aanvankelijk onbekend voor mij, maar verrassend genoeg kon ik er binnen een paar dagen aan wennen. Het was niet omdat Python gemakkelijk was. Dit komt omdat ik de ‘essentie van programmeren’ al kende via Java.

Wat ik deed, was niet vanaf nul een nieuwe taal leren. De taak was om een ​​‘plaatsnaam genaamd Python’ op de ‘kaart genaamd Java’ in mijn hoofd te plaatsen. In onderwijskundige termen heet dit ‘Transfer of Learning’. Hoe dieper u zich verdiept in één taal, hoe sneller u andere talen kunt begrijpen.

UI is uiteindelijk een boomstructuur

Deze ervaring schitterde ook op een heel ander gebied. Toen ik op school zat, gebruikte ik HTML en CSS om de schoolwebsite te vernieuwen om zakgeld te verdienen. Destijds had ik nooit gedacht dat dit mijn ontwikkelingscarrière zou helpen.

Toen ik bij het bedrijf kwam werken, moest ik echter plotseling de gebruikersinterface van de Android-app aanpassen. Android gebruikt een opmaaktaal genaamd XML om de gebruikersinterface te construeren. Het was de eerste keer dat ik een mobiele app ontwikkelde, dus ik was erg zenuwachtig, maar ik lachte toen ik naar de code keek.

<!-- Android XML -->
<LinearLayout orientation="vertical">
    <TextView text="Hello World" />
    <Button text="Click Me" />
</LinearLayout>

<!-- HTML -->
<div style="display: flex; flex-direction: column;">
    <span>Hello World</span>
    <button>Click Me</button>
</div>

Alleen de tagnaam was anders, maar de structuur van “het invoegen van een onderliggend element in een ouderelement en het vormgeven ervan met een attribuut” was precies hetzelfde als HTML. Omdat ik de DOM-boomstructuur en het boxmodel begrijp, kon ik snel mijn eigen Android-lay-out maken.

Zelfs als het platform verandert, verandert de essentie van ‘hiërarchie’ niet.

Framework, ze leerden het niet op school

Wat mij eigenlijk meer in verwarring bracht dan de taal, was het bestaan van een ‘Framework’.

Op school werden alleen ‘fysieke basisvaardigheden’ zoals C-taalgrammatica, datastructuren, algoritmen en taaltheorie onderwezen. Het is natuurlijk niet zo dat je de namen ‘React’ of ‘Spring’ niet hebt gehoord. Nadat ik van de community had gehoord dat “React tegenwoordig de beste is”, ging ik naar een boekwinkel en kocht een React-boek.

Maar ik sloeg het boek dicht voordat ik zelfs maar de helft had gelezen. Omdat ik niet begreep waarom de code zo moest worden geschreven. “Nee, je kunt gewoon een functie maken en deze aanroepen. Waarom moet ik Component erven en in de functie render plaatsen? Waarom heb ik geen controle?”

Dat wist ik toen nog niet. Het cruciale verschil tussen ‘Bibliotheek’ en ‘Framework’.

Als je op school leerde vrijuit te hameren, was het praktische raamwerk als een enorme fabriek die je dwong te zeggen: “Wij doen het hameren, dus jij hoeft alleen maar de spijker in het gat te slaan.” Omdat ik het concept van ‘Inversion of Control’ niet kende, voelde het, hoe vaak ik het boek ook las, als een vreemde taal.

Als je de taal kent, kun je het raamwerk zien

Toen ik echter op praktisch werk werd gestort en mezelf dwong het raamwerk te gebruiken, kwam ik een paradoxale waarheid tegen. Hoe ingewikkeld de magie van Spring Boot ook is, deze bestaat uiteindelijk uit ‘Java-code’.

Annotaties zoals

@Autowired zorgen op magische wijze voor afhankelijkheid, maar als je ernaar kijkt, is het uiteindelijk een toepassing van Java’s reflectietechnologie. Het responsieve systeem van Vue.js maakt uiteindelijk ook gebruik van de object- en eigendomsbewakingsfuncties van JavaScript.

‘Als de taal (basis) sterk is, zijn de werkingsprincipes van het raamwerk (applicatie) zichtbaar.’ Toen ik voor het eerst bij het bedrijf kwam, sprong ik erin zonder te weten wat de MVC-structuur van Spring was, maar omdat ik Java goed begreep, kon ik me snel aanpassen en dacht ik: “Oh, het raamwerk voert in plaats daarvan mijn code uit. Ik hoef alleen maar objecten te gooien volgens deze regels.”

Als mijn ‘JavaScript-basisprincipes’ sterker waren geweest toen ik het React-boek las, had ik kunnen begrijpen waarom React zo ontstond.

[Tip] Recept voor studenten met beslissingsproblemen

“Welke taal moet ik studeren?” Dit is een van de meest gestelde vragen in de community. Of het nu een taal of een raamwerk is, je hoeft je niet noodzakelijkerwijs de rest van je leven in één ding te verdiepen. Paradoxaal genoeg moet je, om in meerdere dingen goed te zijn, eerst ‘één ding duidelijk verkopen’.

Ben je een student die moeite heeft met het vinden van een richting voor je studie, sluit dan het boek en open meteen de ‘recruitmentsite’.

“Dit bedrijf gebruikt Spring, en dat bedrijf gebruikt Node. Wat moet ik doen?” Het maakt niet uit. Wat het ook is, je moet het gewoon goed leren. Zoals ik al eerder zei: de essentie van programmeren is communicatie. Mensen die Spring onder de knie hebben, passen zich snel aan, zelfs als het bedrijf hen vraagt ​​om Node.js te gebruiken nadat ze bij het bedrijf zijn gekomen. Iedereen die dit echter een beetje heeft geprobeerd, zal uiteindelijk weer helemaal opnieuw ronddwalen, ongeacht welk kader er op hem of haar wordt gegooid.

Als je tijd hebt om na te denken, kies dan één ‘vaardigheid die de markt (wervingsaankondiging) wil’ en graaf diep. Dat is de snelste manier.

[Codeverificatie] De talen kunnen verschillen, maar het geheugen is hetzelfde

Laten we met de code eens kijken of, ook al zijn de talen verschillend, wat er in de computer gebeurt uiteindelijk hetzelfde is. Java’s ArrayList en Python’s list hebben een verschillende syntaxis, maar de methode voor het vergroten van het geheugen (Dynamic Array) is hetzelfde.

Java:

// Java: als het vol is, wordt de grootte 1.5x vergroot en verhuist het.
ArrayList<Integer> list = new ArrayList<>();
list.add(1); 
// Intern: maak array -> voeg data toe -> bij ruimtegebrek, maak grotere array en kopieer

Python:

# Python: als het vol is, wordt de grootte ca. 1.125x + @ vergroot en verhuist het.
my_list = []
my_list.append(1)
# Het interne mechanisme is vrijwel identiek aan Java (gebruikt de array-heralllocatie-logica van C)

Welke taal we ook gebruiken, de manier waarop digitale distributiecentra (computers) werken verandert niet. Dit komt omdat de regels voor het gebruik van werkers (CPU) en opslag (geheugen) universeel zijn.

Sluiting: nieuwsgierigheid in plaats van angst

Als je als ontwikkelaar leeft, zal er onvermijdelijk een moment komen waarop je talen en frameworks moet gebruiken die je niet wilt. Ga je elke keer wegrennen en zeggen: “Ik ben een Java-ontwikkelaar, dus ik hou niet van Python”?

Taal is een ‘instrument’, geen religie. En het raamwerk is de ‘workshop’ voor het gebruik van de tools. Mensen die veel ervaring hebben met het leren van een taal (hun moedertaal), leren snel hoe ze een nieuwe tool moeten gebruiken, zelfs als deze aan hen wordt gegeven.

Wees dus niet bang, zelfs niet als uw bedrijf u op dit moment dwingt een onbekende technologie te gebruiken. Alleen de schaal is anders, maar de inhoud binnenin is hetzelfde als wat je al kent.

Nu we van de angst voor taal af zijn, gaan we in het volgende artikel de diepten van ‘Memory’ in, de echte wereld waar code leeft. Zodra je weet waar de code die je hebt geschreven in het RAM-geheugen is opgeslagen en hoe deze werkt, wordt de taalbarrière kleiner.

Plaats een reactie