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.
Gerelateerd

De TSR en protected mode
Arnout van Kempen over rommelen in een digitale wereld.

IBM-pc en MS-DOS
Arnout van Kempen over rommelen in een digitale wereld.

Nogmaals ons programmaatje
Arnout van Kempen over rommelen in een digitale wereld.

De uitdagingen van de 8086
Arnout van Kempen over rommelen in een digitale wereld.

Programmeren van de 8080
Arnout van Kempen over rommelen in een digitale wereld.