Nerdy stuff
Arnout van Kempen over rommelen in een digitale wereld.
Als je met grotere projecten bezig bent, heb je soms de behoefte een deel van je code te testen, terwijl een ander deel nog niet werkt. Een deel waarvan je weet: daar moet ik nog wat aan doen, maar nu even niet.
Rust kent daarvoor de uitermate simpele oplossing todo!(). Stel dat je een tweetal functies hebt, waarvan je er één wil testen, terwijl je over de andere nog niet eens hebt nagedacht, dan kan dat er zo uitzien:
fn functie1() {
1+1
}
fn functie2() {
todo!();
}
fn main() {
let x = functie1();
dbg!(x);
functie2();
}
De compiler kan hiermee overweg en geeft als uitkomst dat x = 2, maar ook de boodschap dat het programma panicked omdat het nog niet klaar is.
Je maakt hier gebruik van de dbg! macro om gegevens weer te geven voor debugging en van de todo! macro om aan te geven dat je een codeblock nog even leeg laat, maar je wel alvast zichtbaar wilt hebben wat nog precies moet worden ingevuld. Handig! Maar nerdy? Nee hoor, dit was alleen nog even een extraatje. Echt nerdy wordt het met Compiler Explorer.
Deze website biedt prachtig speelgoed, of analysemogelijkheden als je serieuzer wilt klinken. En alles gratis,en bruikbaar vanuit iedere browser, zolang je maar internettoegang hebt. Het eerste wat je wilt doen is onder de instellingen, herkenbaar aan het tandwieltje, in het tweede window, een vinkje zetten voor 'Execute the code'. Nu heb je drie windows met:
1.Source-code. Je kan hier code invoeren in een enorm scala aan talen, waaronder C en Rust, maar ook populaire andere talen als Java, C++, Python, Go, Ruby. Oude talen als Fortran en Cobol. En exotischer talen als Ada en Haskell. In totaal zestig talen. Als je een taal kiest, krijg je meteen een klein voorbeeldje in die taal, maar het wijst zich eigenlijk prima zelf.
2.Assembler uitkomst van de compiler. De website kan overweg met een bizar grote hoeveelheid compilers, in extreem veel varianten. De code die je in scherm 1 invoert, verschijnt, zodra de gekozen compiler het kan verwerken, in assembler in het tweede scherm. Niet alleen kent het systeem extreem veel verschillende compilers, het kan ook naar extreem veel CPU's vertalen, waaronder behoorlijk oude en exotische. Natuurlijk naar x86 van de MS Windows-computers en naar de ARM-processors waar MacOS en Linux op draaien, als variatie op x86. Maar ook voor oudjes als de 6502, of mainframes als de IBM ESA/390 kan code worden geproduceerd.
3.Het outputscherm, waar je de meldingen van de compiler ziet en de uitkomsten van je code.
Wat maakt dit nu zo leuk? Je kan onderweg simpel iets uitproberen in Rust, zonder dat je de machine waarop je Rust hebt geïnstalleerd bij de hand moet hebben. Misschien niet voor grotere projecten, maar wel voor iets simpels. En je kan zien wat je programma onder de motorkap precies doet, hoe de computer je code 'verstaat'. Als je het leuk vindt, kan je zo ook vergelijken wat verschillende programmeertalen doen met dezelfde code. Of hoe je programma dat jij op Windows draait er uit zou zien op een IBM S/390-mainframe.
Wie mee wil doen met #klooienmetcomputers kan dat doen via GitHub. Maak een account op 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
Over bits & bytes
Arnout van Kempen over rommelen in een digitale wereld.
En arrays dan?
Arnout van Kempen over rommelen in een digitale wereld.
Typecasting in COBOL
Arnout van Kempen over rommelen in een digitale wereld.
Gewone variabelen
Arnout van Kempen over rommelen in een digitale wereld.
Bestanden in soorten en maten
Arnout van Kempen over rommelen in een digitale wereld.