Waarom zijn er zoveel programmeertalen?

Er zijn meer dan 250 programmeertalen. Sommige worden veel gebruikt in de bedrijfswereld, zoals C ++, Java, JavaScript, Ruby en Python. Anderen zijn voornamelijk academisch, zoals Lisp. Toch zijn anderen obscuur en esoterisch. U vraagt ​​misschien: "Waarom zijn er zoveel programmeertalen?"

Dat is hetzelfde als vragen: "Waarom zijn er zoveel gebieden van de wiskunde? We hebben algebra, waarom hebben we geometrie, calculus en vloeiende mechanica nodig?" Elke programmeertaal is bedoeld om een ​​bepaald probleem op te lossen. Meerdere talen kunnen hetzelfde probleem oplossen, maar elk zal het anders benaderen.

Hier zijn enkele van de belangrijkste verschillen in programmeertalen.

Leesbaarheid en onderhoudbaarheid

Sommige talen zijn gemakkelijker voor een mens om te lezen, waardoor het voor één programmeur gemakkelijker wordt om samen te werken aan de code van een andere programmeur. Python heeft bijvoorbeeld de reputatie gemakkelijk te lezen te zijn. Het dwingt strikte inspringen van lijnen af ​​om de codeblokken te definiëren, wat het gemakkelijk maakt om naar een programma te kijken en de structuur ervan te achterhalen. Andere talen laten ook inspringen toe, maar als een stilistische keuze, niet als een vereiste.

Perl is daarentegen een taal waarmee de programmeur hetzelfde programma op veel verschillende manieren kan schrijven, maar het doel van het programma is misschien niet meteen duidelijk voor een andere lezer. Zo'n programma is misschien handig om te schrijven, maar moeilijk voor iemand anders om te begrijpen en te bewerken.

Prestatie

Sommige talen worden geïnterpreteerd en sommige worden gecompileerd. Een samengesteld programma moet worden verwerkt door een preprocessor, compiler en linker voordat het door de computer kan worden uitgevoerd. Deze gespecialiseerde tussenliggende software voert lexicale analyse uit en vertaalt het programma in machinetaal. Het kan ook de resulterende instructies optimaliseren, op zoek naar slimme manieren om het programma sneller te laten werken.

Gecompileerde programma's presteren doorgaans beter dan geïnterpreteerde programma's. C, C ++ en Objective-C zijn bijvoorbeeld talen die doorgaans worden gecompileerd naar zeer snelle machine-code. Videogames en systeemsoftware worden vaak in deze talen geschreven om elk stukje prestatie uit de CPU te persen.

Aan de andere kant worden programma's met vertolkte talen uitgevoerd door software, een interpreter genaamd, die de instructies van het programma uitvoert zonder ze eerst naar machinecode te compileren. Hoewel de interpreter het programma soms in een tussentaal parseert, wat resulteert in enige optimalisatie, zijn de prestaties nooit zo snel als gecompileerde machine-code.

Een groot voordeel van geïnterpreteerde talen is hun potentieel voor interactieve ontwikkeling. Omdat het volledige programma niet hoeft te worden gecompileerd voordat het kan worden uitgevoerd, kan de code interactief worden uitgevoerd. U kent dit als u ooit de opdrachtregel van uw besturingssysteem heeft gebruikt: u voert een opdracht in en u ziet de resultaten. Zo'n interface wordt een REPL of "read-eval-print-loop" genoemd. Met een REPL kunt u opdrachten (of blokken met opdrachten) afzonderlijk uitvoeren en de resultaten bekijken. Lisp, Perl, Python, NodeJS, Ruby en JavaScript zijn voorbeelden van geïnterpreteerde talen die kunnen worden uitgevoerd in een REPL.

Interactieve opdrachtinterfaces, zoals de Windows-opdrachtprompt en bash, komen ook in aanmerking als geïnterpreteerde talen. Programma's in deze "talen" worden batchbestanden of shellscripts genoemd.

Specifieke use cases

Vaak zijn talen vooral goed in het schrijven van specifieke soorten programma's. NodeJS is bijvoorbeeld ontworpen om toepassingen met één schroefdraad voor het web te schrijven. De niet-blokkerende bestands-I / O staat toe dat programma's blijven werken ("niet geblokkeerd") terwijl ze wachten totdat de vereiste gegevens zijn verzonden.

Een ander voorbeeld is de programmeertaal R, die is gespecialiseerd in statistische analyse. Programma's die zijn geschreven in R profiteren van ingebouwde analytische tests en modellen en hulpmiddelen voor het efficiënt manipuleren van enorme hoeveelheden gegevens.

Eenvoudig prototypen

Sommige talen maken snelle prototypes mogelijk: de programmeur kan "net beginnen met schrijven" en component op component bouwen totdat het programma volledig is gevormd.

De website Reddit is bijvoorbeeld oorspronkelijk in Lisp geschreven. Nadat Reddit gelanceerd was, werd de hele site om verschillende redenen, zowel technisch als logistiek, in Python herschreven. Hoewel het herschrijven van alle code een grote onderneming was, spraken de eigenaars van de site geen spijt uit. In een blog in 2005 merkten ze op dat Lisp hen toestond iets te maken zonder precies te weten wat het zou worden.

Beschikbare bibliotheken

Meestal, wanneer u een nieuw programmeerproject start, wilt u het wiel niet opnieuw uitvinden. Dat wil zeggen dat u geen functies voor veelgebruikte taken wilt schrijven, zoals het berekenen van een vierkantswortel of het vinden van de eerste instantie van een teken in een tekenreeks. Om deze reden biedt bijna elke programmeertaal een verzameling standaardbibliotheken met algemene functies. Programmeurs geven misschien de voorkeur aan een taal vanwege de bibliotheken die ze aanbieden.

De C-standaardbibliotheken bieden bijvoorbeeld zeer performante functies voor veel systeembewerkingen op laag niveau. Perl biedt veel krachtige bibliotheken en ook de CPAN-repository van modules die moeten worden gedownload en gebruikt in uw programma. Python biedt een breed scala aan ingebouwde functies en modules voor zo ongeveer alles onder de zon. Clojure, een Lisp-achtige taal die op de JVM wordt uitgevoerd, profiteert van de mogelijkheid om code uit de uitgebreide bestaande bibliotheken van Java-objecten en -methoden uit te voeren.

Veiligheid

Niet alle talen lenen zich voor het schrijven van veilige code. De C-programmeertaal is bijvoorbeeld berucht om het hebben (of het ontbreken van) functies die kunnen leiden tot verwoestende kwetsbaarheden zoals nulverwijzing dereferencing. Andere talen proberen deze problemen aan te pakken met strengere regels.

Bepaalde talen leggen bijvoorbeeld beperkingen op aan welke bewerkingen op verschillende soorten gegevens kunnen worden uitgevoerd. De strengste van deze talen worden soms "sterk getypeerd" genoemd en ze kunnen gemoedsrust bieden aan programmeurs die prioriteit geven aan beveiliging en stabiliteit bij het ontwikkelen van software. Voorbeelden van sterk getypte talen zijn onder meer Rust, Nim, Ocaml en Haskell.

Talen kunnen ook grenzen stellen aan "veranderlijkheid", het vermogen van een data-object om van status te veranderen. In plaats van objecten waarvan de waarden worden overschreven, geven deze talen de voorkeur aan 'onveranderlijke' objecten: waarden in het geheugen die niet kunnen worden gewijzigd zonder expliciete uitzondering. Onveranderlijke objecten hebben belangstelling getrokken omdat multi-core CPU's wijdverspreid zijn geworden, vanwege hun neiging om "thread safety" te promoten. In een thread-safe-programma kan meer dan één processor werken op één set gegevens met een sterk verminderd foutenrisico. Talen die prioriteit geven aan onveranderlijke objecten zijn Rust en Clojure.

Maatschappelijke hulp

Bij het schrijven van een programma in een nieuwe taal, helpt het om toegang te hebben tot een actieve, gepassioneerde gemeenschap van ontwikkelaars die actief gebruik maken van en bijdragen aan elkaars werk. Voordat u een programmeertaal kiest, moet u meer te weten komen over de gemeenschap van die taal. Sommige talen hebben een opwindende, dynamische, levendige gebruikersgroep waarvan u mogelijk deel wilt uitmaken en andere talen kunnen weinig of geen community hebben.

expressiviteit

Bij het schrijven van een programma, zijn de gedachten en het probleemoplossend vermogen van de programmeur door die taal "aan het spreken". Het gevolg is dat programmeurs de voorkeur geven aan talen waarin ze zich op hun gemak voelen. Wat een taal en programmeur goed samen laat werken, is echter moeilijk te definiëren. Uiteindelijk is de enige manier om te weten voor welke taal u zich comfortabel voelt, het gebruik van verschillende talen voor verschillende projecten en deze zelf te vergelijken.