#Klooienmetcomputers

The next step

Arnout van Kempen over rommelen in een digitale wereld.

We zijn op een punt gekomen om keuzes te maken. De basismogelijkheden van C, wat gegoochel met linked lists, met een dynamische boomstructuur, met bestanden en zelfs met JSON hebben we gezien. In principe is daarmee wel het basisgereedschap aanwezig om nuttige dingen te doen.

Mijn eerste gedachte was om nu verder te gaan met grafische mogelijkheden, waarbij ik twijfelde tussen de bibliotheken Qt en GTK. Daarna wilde ik nog wat meer gaan doen richting XBRL. Maar die grafische mogelijkheden werken in andere talen gewoon beter en makkelijker dan in C. En voor XBRL ben ik ernstig gewaarschuwd: Het is allemaal heel knap, maar om daar nu zelf mee te gaan rommelen en dan ook nog in C, is dat nu wel zo verstandig?

Dat bracht een fundamentelere vraag naar voren: Gaan we verder met C, waarin overigens nog genoeg bijzonders te ontdekken valt, of gaan we een nieuwe taal leren? En zo ja, welke dan? Mijn keuze is om in ieder geval beide te doen. C is nu eenmaal de snelste, de meest inzicht in de computer gevende en ook nog eens een relatief (!) eenvoudige taal. Dus daarmee ga ik verder.

Maar het is ook een van de oudste nog gebruikte talen, die niet meer in alles echt bij de tijd is. Dus naast C wil ik ook beginnen aan een actuelere taal. Python staat me om allerlei redenen tegen, maar het is wel een enorm veelzijdige en veelgebruikte taal. C++ is de modernere variant van C, en daarmee een logisch vervolg op C, maar topzwaar, ingewikkeld en extreem krachtig, ook in het maken van fouten. Volgens een groot onderzoek onder programmeurs is Rust weliswaar een weinig gebruikte taal, maar wel de meest geliefde. En dan zijn er nog talloze andere opties.

Vier keer hetzelfde programmaatje. In C:

#include <stdio.h>

int square(int num) {
    return num * num;
}

int main() {
    int number = 5;
    int result = square(number);
    printf("Het kwadraat van %d is %d\n", number, result);
    return 0;
}

In C++:

#include <iostream>

int square(int num) {
    return num * num;
}

int main() {
    int number = 5;
    int result = square(number);
    std::cout << "Het kwadraat van " << number << " is " << result << std::endl;
    return 0;
}

In Python:

def square(num):
    return num * num

number = 5
result = square(number)
print(f"Het kwadraat van {number} is {result}")

En in Rust:

fn square(num: i32) -> i32 {
    num * num
}

fn main() {
    let number = 5;
    let result = square(number);
    println!("Het kwadraat van {} is {}", number, result);
}

Rust en C++ lijken sterk op C, Python is veel compacter en ook wel een stuk leesbaarder. Hier niet zichtbaar, maar Rust kent een sterke beveiliging tegen geheugenfouten en ondersteunt concurrency, het tegelijk uitvoeren van delen van een programma, op een veilige manier. Python is in principe een interpreter-taal en dat bevalt me niet. Al met al denk ik dat Rust de interessantste keuze is. Dus vanaf nu zullen de stukjes deels gaan over voortgezet C en deels over basis Rust. En dan zien we wel waar dat naar toe gaat.

Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op www.github.com en zoek naar Abmvk/kmc. Het account Abmvk volgen kan ook. Lezers zijn vrij te gebruiken wat ze willen en om zelf zaken toe te voegen of aan te passen, vragen te stellen of commentaar te leveren.

Arnout van Kempen di CCO CISA is Senior manager Risk & Compliance bij Baker Tilly. Hij schrijft op persoonlijke titel. Hij is lid van de Commissie Financiƫle verslaggeving & Accountancy van de AFM en lid van de signaleringsraad van de NBA. Daarnaast is hij diaken van het bisdom 's-Hertogenbosch.

Gerelateerd

reacties

Reageren op een artikel kan tot drie maanden na plaatsing. Reageren op dit artikel is daarom niet meer mogelijk.

Aanmelden nieuwsbrief

Ontvang elke werkdag (maandag t/m vrijdag) de laatste nieuwsberichten, opinies en artikelen in uw mailbox.

Bent u NBA-lid? Dan kunt u zich ook aanmelden via uw ledenprofiel op MijnNBA.nl.