Bij dit artikel hoort bovenstaande video: Wat Is Een Programmeertaal?

Al jaren verschijnt er content op JorCademy om mensen, met name jongeren, te leren programmeren. Hierbij maken we gebruik van Scratch en Python. Dit zijn twee populaire programmeertalen voor beginnende programmeurs. Je leert met het lesmateriaal op JorCademy hoe je Scratch en Python kunt inzetten om programma’s te bouwen, maar het is misschien ook interessant om een stap terug te doen en te onderzoeken wat een programmeertaal precies is.

Oorsprong van programmeertalen

Om te kunnen begrijpen waarom programmeertalen überhaupt bestaan, is het noodzakelijk om op een iets lager niveau te bekijken hoe een computer precies denkt. Een computer kan over het algemeen maar één taal lezen: binaire taal. Deze taal bevat slechts twee tekens: 0 en 1. Dit lijkt wellicht beperkt, maar je kunt nullen en enen inzetten om getallen te vormen. Dit getallen vormen vervolgens codes die kunnen staan voor bepaalde stukken data, zoals leestekens en emoji. ASCII en het veel uitgebreidere UNICODE zijn twee coderingen die op deze manier werken.

Datarepresentatie met binaire code.

Naast bijvoorbeeld emoji en leestekens zou je ook instructies kunnen koppelen aan een binaire code. Op deze manier zouden computerprogrammeurs programma’s voor de computer kunnen schrijven om uit te voeren. Er is alleen een probleem: binaire code is niet heel erg gebruiksvriendelijk voor programmeurs. Hierom zijn programmeertalen ontwikkeld. Deze talen hebben een grammatica (syntax) en vocabulaire die voor mensen een stuk makkelijker te lezen en schrijven is.

Na het schrijven van een programma in programmeertaal is het nog wel noodzakelijk dat de programmeertaal wordt omgezet naar binaire taal, de enige taal die de computer begrijpt. Dit wordt gedaan door middel van een compiler. De compiler leest de code in programmeertaal en vertaalt dit naar binaire code, die de computer kan lezen. Dit vertalen is alleen mogelijk als er geen grammaticafouten zitten in de code die de programmeur heeft geschreven. Als dit niet het geval is, geeft de compiler een compiler error terug. Hierbij wordt aangegeven waar de fout zit in de code. Nadat de programmeur de fout eruit heeft gehaald, kunnen de instructies (hopelijk) wel worden vertaald en uitgevoerd.

Vertaling van programmeertaal naar binaire taal met een compiler.
Vertaling van programmeertaal naar binaire code met een compiler.

Programmeertalen op verschillende niveau’s

Niet alle programmeertalen werken op hetzelfde niveau. Bij sommige programmeertalen heb je veel invloed op de achterliggende werking van een computerprogramma. Dit worden ook wel low-level programmeertalen genoemd. Een bekend voorbeeld van zo’n taal is Assembly. Low-level programmeertalen zijn vooral handig om te gebruiken als geheugenoptimalisatie belangrijk is. Het nadeel is dat low-level programmeertalen vaak moeilijk te begrijpen zijn.

Het tegenovergestelde van low-level programmeertalen zijn high-level programmeertalen. Hierbij wordt veel abstractie toegepast. Dat houdt in dat veel functionaliteiten achter de schermen gebeuren en de instructieset voor programmeurs vrij beperkt is. Als programmeur heb je dus minder invloed op technischere zaken zoals het geheugen. Het voordeel hiervan is dat high-level programmeertalen vaak veel goed te begrijpen zijn. Voorbeelden van high-level programmeertalen zijn Python, C#, en C++ (al geldt dat je met C++ wel meer invloed hebt op het geheugen dan bijvoorbeeld bij Python).

Programmeerparadigma’s

Naast het feit dat er verschillende soorten programmeertalen zijn, zijn er ook verschillende manieren om programmeertalen in te zetten om een probleem op te lossen. Deze verschillende manieren worden ook wel programmeerparadigma’s genoemd. In de praktijk staan twee paradigma’s centraal: imperatief en declaratief programmeren.

Imperatief programmeren

Bij imperatief programmeren worden programma’s opgemaakt in de vorm van opdrachten die de computer kan uitvoeren. Er wordt beschreven hoe een probleem moet worden opgelost. In de praktijk wordt dit paradigma het vaakst gebruikt, met talen als Python, C#, C++ en Java.

Declaratief programmeren

Bij declaratief programmeren wordt de situatie aan een computer beschreven. Op basis van deze beschrijving lost de computer het probleem op. Dit klinkt misschien vaag: hoe kun je dit in hemelsnaam effectief gebruiken in de praktijk? Je zou declaratief programmeren experimenteel in kunnen zetten, bijvoorbeeld door middel van de functionele programmeertaal Haskell om met inductie wiskundige problemen op te lossen. Een meer effectieve manier van declaratief programmeren kan gedaan met de querytaal SQL, waarmee je data binnen een database kunt selecteren en aanpassen. Als je meer wilt weten over SQL, kun je de verdiepende video over databases op JorCademy bekijken.

Objectgeörienteerd programmeren

Imperatief en declaratief programmeren bestaan uit sub-paradigma’s, zoals procedureel bij imperatief en functioneel bij declaratief.

Verschillende programmeerparadigma's.
Verschillende programmeerparadigma’s in een hiërarchisch overzicht.

De bekendste sub-paradigma is objectgeörienteerd programmeren (OOP). Bij dit paradigma wordt binnen programma’s gebruik gemaakt van objecten, elk met eigen functies en eigenschappen. Er wordt vaak gediscussieerd over het paradigma waar dit bij hoort. Objecten worden op een declaratieve manier beschreven, maar vervolgens worden ze op een imperatieve manier ingezet binnen opdrachten voor de computer. Daarom wordt OOP over het algemeen beschouwd als een subparadigma van imperatief programmeren.

Opbouw van een object in een programma.
De opbouw van een simpel object in Python.

Programmeertalen in de praktijk

In de praktijk worden veel verschillende programmeertalen ingezet, om verschillende soorten problemen op te lossen. Deze programmeertalen verschillen per vakgebied. Vandaar dat we voor vier verschillende vakgebieden onderzoeken welke programmeertalen hierbinnen het vaakst worden ingezet.

Data-analyse

Software wordt tegenwoordig vaak ingezet om data mee te analyseren, verwerken en weer te geven. Drie talen domineren binnen dit vakgebied.

Populaire talen voor data-analyse.
Populaire talen voor data-analyse.

Python is een immens populaire en makkelijk te leren programmeertaal. Daarnaast bestaat het al vrij lang en zijn er in de loop der jaren veel uitbreidingen voor ontwikkeld. Ook uitbreidingen om data mee te analyseren. Dit is de reden dat Python vaak wordt gebruikt binnen dit vakgebied.

De tweede programmeertaal is R. Hoewel dit een minder populaire taal is dan Python is het ontwikkeld om data mee te analyseren. De laatste taal hebben we al besproken. De querytaal SQL wordt gebruikt voor interactie met een database en is daarom een grote speler binnen het verwerken en analyseren van data.

Webdevelopment

Als je websites of webapps wilt bouwen, heb je een aantal cruciale tools nodig.

Populaire tools voor webdevelopment.
Populaire tools voor webdevelopment.

Voor het maken van websites ben je vrijwel altijd verplicht om gebruik te maken van de opmaaktalen HTML en CSS. Met HTML kun je de content van een webpagina opmaken. Met CSS kun je ervoor zorgen dat deze content op een mooie manier wordt weergegeven.

Om een functionele webpagina te bouwen heb je niet per se een programmeertaal nodig. Maar op deze manier blijft de website wel statisch en een dynamische website is in de meeste gevallen interessanter. Denk bijvoorbeeld aan een login-systeem en een forum, maar bijvoorbeeld ook aan een dark mode of een slideshow. De content van een website is hierdoor niet voor iedereen hetzelfde en verandert op basis van de situatie. Om dit te bereiken heb je toch echt een programmeertaal nodig.

JavaScript (JS) is de populairste programmeertaal voor webdevelopment. Daarnaast wordt het oudere PHP nog altijd gebruikt voor server-side scripting, maar JavaScript neemt dit met NodeJS steeds meer over. Ook Python wordt vaak gebruikt voor webdevelopment gebruikt, in combinatie met z’n bekende libraries Flask of Django. Het biedt een goed alternatief voor JS met NodeJS.

Appdevelopment

Voor het maken van mobiele apps en desktop-applicaties heb je per platform (en cross-platform) verschillende mogelijkheden.

Populaire tools voor appdevelopment.
Populaire tools voor appdevelopment.

Voor het ontwikkelen van Android-apps kun je het best Java of het nieuwere Kotlin leren. In combinatie met Android Studio, ontwikkeld door Google in samenwerking met JetBrains, kun je hiermee apps maken voor Android.

Voor het maken van apps voor Apple’s platformen (iOS, macOS, tvOS etc.) is de editor Xcode al jaren de standaard. Eerder werkte Xcode samen met de programmeertaal Objective-C, dat door Apple is ontwikkeld. Sinds 2014 gebruikt Apple echter een programmeertaal die sneller en gebruiksvriendelijker is: Swift. Tegenwoordig is Swift dè taal om te leren als je apps wilt maken voor Apple’s platformen.

Als je apps wilt ontwikkelen voor Windows, zit je met Microsoft’s C# altijd goed. Deze programmeertaal wordt vaak gebruikt in combinatie met de editor Visual Studio, dat eveneens is ontwikkeld door Microsoft. Het .NET-framework bevat een selectie aan mogelijkheden om desktop-apps te maken voor Windows. Windows Forms is hier een voorbeeld van. Dit is een library waarmee je vensters kunt maken en er componenten in kunt zetten, zoals knoppen en invoervelden. Windows Forms is echter al redelijk verouderd. Een alternatief is Xamarin, een platform waarmee je niet alleen C# en .NET-apps mee kunt maken voor Windows, maar ook voor Android en Apple’s platformen kunt ontwikkelen. Xamarin is dus een cross-platform tool.

Een andere bekende cross-platform tool om desktop apps mee te ontwikkelen, is Electron. Met Electron kun je apps maken door middel van HTML, CSS en JS. Het werkt vrij simpel en om die reden geliefd. Visual Studio Code en Slack zijn voorbeelden van apps die zijn gemaakt met Electron. Electron kent echter ook kritiek, met name omdat het veel RAM-geheugen vreet. Qt en Flutter zijn goede alternatieven.

Gamedevelopment

Voor het maken van games kun je verscheidene tools gebruiken, afhankelijk van de grootte van de game.

Populaire tools voor gamedevelopment.
Populaire tools voor gamedevelopment.

Voor grote games wordt vrijwel altijd gebruik gemaakt van C++, met name omdat ontwikkelaars hiermee de mogelijkheid hebben het geheugengebruik te optimaliseren. Dit is voor games heel belangrijk, omdat het een betere performance gegarandeert. C++ wordt daarnaast gebruikt in combinatie met de populaire game engine Unreal van Epic Games.

Je kunt ook games maken met C#, o.a in combinatie met de game engine Unity. Unity wordt met name gebruikt door beginnende gamedevelopers en indiedevelopers (kleine gamedev-teams), maar er zijn al tal van hits gemaakt met engine. Denk maar aan Hollow Knight en Ori and the Will of the Wisps. Je kunt C# daarnaast gebruiken in combinatie met de cross-platform framework Monogame.

Java wordt ook gebruikt om games te maken, maar dan vaak in combinatie met een rendering engine zoals OpenGL. Minecraft is een goed voorbeeld van een game die origineel is ontwikkeld in Java. Daarnaast zijn er ook minder serieuze opties, zoals Lua in combinatie met LÖVE om 2D-games te maken en JavaScript in combinatie met three.js voor het maken van simpele games/renders.

Welke programmeertaal kun je het best leren?

Volgens de Northeastern University zijn de populairste programmeertalen Python, JavaScript, Java, C# en C. Deze talen zijn met name populair omdat ze binnen verschillende vakgebieden kunnen worden gebruikt. Puur statistisch gezien zijn dit dus de beste programmeertalen om te leren. Houd echter wel in de gaten dat we nog steeds werken met tech die draait op oude programmeertalen, zoals Fortran. De ontwikkelaars die deze talen hebben gebruikt om bepaalde, nog actieve systemen op te zetten gaan langzaam met pensioen. We hebben vervangende krachten nodig die de oude technieken begrijpen en doorontwikkelen of op termijn kunnen vervangen met nieuwere technologieën.

Dit zal waarschijnlijk een uitdaging worden. Door het toenemende programmeurtekort zijn er al te weinig programmeurs te vinden voor banen die gebruik maken van nieuwere, populairdere techieken, laat staan jonge krachten met kennis over oude, bijna ‘ancient’ technologieën. Het wordt interessant om te zien hoe problemen als deze in de toekomst worden opgelost.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie-gegevens worden verwerkt.