Data science en AI programmeertalen

Om met succes data science en artificial intelligence toe te passen op je probleem heb je kennis over drie zaken nodig:

  • domeinkennis, zodat je weet wat de data en de relaties tussen variabelen betekent,
  • algoritmen, zodat je weet hoe je informatie uit data kunt halen, en
  • programmeerkennis, zodat je op een efficientie manier met data en de algoritmen kunt omgaan.

Als je op het Internet zoekt naar “programming language data science artificial intelligence” dan vind je verschillende lijsten met veel gebruikte programmeertalen voor data science en artificial intelligence. Welke moet je nu gebruiken?

Er bestaan zeer veel verschillende soorten programmeertalen. Elke taal is ontwikkeld om een probleem op een eigen specifiek manier op te lossen. Hierdoor gebruiken programmeertalen verschillende concepten en manieren om een programma te schrijven.

Afhankelijk van het probleem dat je wilt oplossen kies je een efficientie programmeertaal. Er zijn twee soorten efficienties belangrijk:

  • De snelheid waarmee een programma draait op een computer. Dit is met name belangrijk bij het ontwikkelen van complexe algoritmen. Gecompileerde programmeertalen zijn hier goed voor.
  • De snelheid waarmee je een programma kunt schrijven. Data science en AI problemen oplossen is vaak een zoektocht. Flexibiliteit, inzicht in de data tijdens executie en het kunnen testen van beperkte stukken code is belangrijk. Geïnterpreteerde programmeertalen zijn hier goed voor.

Gecompileerde programmeertalen

Bij een gecompileerde programmeertaal wordt de code die je schrijft eerst omgezet (‘gecompileerd’) in machine code. Deze talen halen vaak de meeste performance uit een computersysteem. Een nadeel is dat compileren en testen van code lang duurt.

Voorbeelden zijn

  • C/C++ : De meest gebruikte programmeertaal. Als je zeer snelle code wilt schrijven voor bijvoorbeeld neurale netwerken of computer vision, dan is dit een geschikte taal. Nadeel is dat voor elke type computer de code weer op nieuw gecompileerd moet worden. https://isocpp.org/
  • Java : Een populaire taal waarbij gecompileerde code op verschillende systemen kan draaien doordat er een Java Virtual Machine gebruikt wordt. https://go.java/

Geïnterpreteerde programmeertalen

De code van een geïnterpreteerde programmeertaal wordt tijdens de execute van de code vertaald naar machine code. Hierdoor zijn deze talen langzamer dan gecompileerde talen. Het voordeel is wel dat je interactief code kan ontwikkelen. Tijdens het schrijven van code kan je delen van die code direct uitvoeren. Ook kost het geen tijd om de code te compileren. Deze talen worden ook wel ‘script talen’ genoemd.

Een scriptaal wordt krachtiger als er bibliotheken met functies beschikbaar zijn die zijn ontwikkeld met een gecompileerde programmeertaal. Hiermee krijg je de beschikking over de snelheid van een gecompileerde programmeertaal, en de flexibiliteit van een scriptaal.

Voorbeelden zijn

  • Python : Meest populair taal voor data science en AI. Er zijn een groot aantal libraries beschikbaar voor numerieke berekeningen en visualisaties. [https://www.python.org/](https://www.python.org/}
  • Javascript : Javascript wordt gebruikt om toepassingen te ontwikkeling die in een browser draaien. Door de recente ontwikkeling van Node.js, een run-time omgeving voor verschillende computeromgevingen, kan JavaScript nu ook gebruikt wordt om bijvoorbeeld server-side IoT toepassingen te maken. https://www.w3schools.com/Js/
  • Lua : Een lichtgewicht scripttaal dat bijvoorbeeld populair is binnen de gaming-industrie. https://www.lua.org/
  • Tcl : Een scriptaal met een eenvoudige grammatica dat vaak als scripttaal in andere programmeertalen wordt gebruikt. https://www.tcl.tk/

Domein specifice programmeertalen

De bovengenoemde programmeer- en scripttalen zijn algemene talen. Ze kunnen gebruikt worden voor een willekeurig programmeerprobleem. Naast algemene talen bestaan er ook veel domein specifieke programmeertalen. Deze talen richten zich op het oplossen van specifieke problemen.

Programmeertalen kiezen

Zoals uit de lijsten hierboven al blijkt, bestaan er zeer veel programmeertalen. Welke moet je nu leren en gebruiken?

De keuze van een programmeertaal hangt af van het probleem dat je aan het oplossen bent.

Nieuwe AI algoritmes onwikkelen

Is performance van je algoritme belangrijk? Kies dan voor C++! Deze geeft je de meeste performance.

Data science

Als je datasets gaat analyseren met bijvoorbeeld klantengegevens, financiële gegevens of andere gegevens uit databases, kies dan voor R of Python. Voor beide talen zijn veel bibliotheken met algoritmen en visualisaties beschikbaar.

Engineering problemen oplossen

Ga je datascience en AI toepassen op engineering data? Of ga je werken met simulatiemodellen van dynamische fysische systemen? Gebruik dan Matlab, de standard tool voor engineers. Er zijn zeer veel toolboxen beschikbaar voor onder andere regeltechniek, signaalbewerking, statistiek en machinelearning.

IoT / Web AI applicaties ontwikkelen

Voor het toepassen van data science en AI binnen IoT en web applicaties zul je waarschijnlijk een groot aantal talen gaan gebruiken. Een full-stack ontwikkelaar gebruikt al snel talen zoals Java, JavaScript, Python en SQL. Daarnaast zal kennis over HTML, CSS, JSON en php ook erg nuttig zijn.

AI toepassen in games of robots

Als AI wordt toegepast bij spelletjes en robots dan zal performance weer belangrijk zijn. Vaak wordt C++ gebruikt om een goede performance te halen. Om flexibiliteit te krijgen wordt een scripting-engine vaak geïntegreerd binnen de C++ code. Zo kan je, nadat alle code gecompilieerd is, via het verandere van een script toch nog het gedrag van je code aanpassen.

AI leren

Als je tot doel hebt om AI te leren dan kan het leerzaam zijn om oudere talen zoals Prolog, LIPS en CLIPS eens te bestuderen. Een goed boek hiervoor is “Paradigms of Artificial Intelligence Programming” van Peter Norvig. Dit boek kan je gratis download via github https://github.com/norvig/paip-lisp. Natuurlijk kan je ook in Python veel AI toepassingen uitwerken en testen.