Als je denkt aan programmeertalen in embedded engineering, denk je onmiddellijk aan C of C++. Dat is vaak de programmeertaal die nog standaard gebruikt wordt in embedded, en die de meeste programmeurs kennen. 

Het grootste nadeel aan C, is natuurlijk het geheugenmanagement (pointers, anyone?). Omdat programmeurs dat zelf moeten verzorgen, gebeuren hier vaak fouten tegen. En veel bugs ontstaan door geheugenproblemen. Hoe lossen we dat op?

Ongeveer 11 jaar geleden waren de medewerkers van Mozilla de foutjes die snel in programmeertalen zoals C of C++ sluipen, grondig beu. Daarom startten ze met de ontwikkeling van een nieuwe programmeertaal, die even performant is als bestaande talen, maar ook garantie biedt op veilige code: Rust.

wat is rust?

Rust is een programmeertaal, maar het is geen klassieke programmeertaal zoals C of C++. Rust voorkomt namelijk fouten tegen geheugengebruik zonder de overhead van een garbage collector en verzorgt concurrency zonder data races, waardoor het een veiligere taal is. Daarnaast is Rust minstens even snel als klassieke programmeertalen, en in bepaalde gevallen zelfs sneller.

man and woman talking behind computer screen
man and woman talking behind computer screen

Oké, horen we je denken, maar is Rust dan ook even performant als andere programmeertalen? Jazeker! Je kan even veel en even uitgebreide applicaties bouwen met Rust als met eender welke andere programmeertaal. Een paar voorbeelden van software en applicaties waar Rust zich goed toe leent:

  • firmware
  • embedded software
  • websites (en web assembly)
  • games
  • (device) drivers
  • besturingssystemen
  • applicaties

wie gebruikt rust zoal?

Rust wint als programmeertaal de laatste jaren meer en meer aan populariteit. Er zijn ondertussen al heel wat grote bedrijven die de overstap naar deze taal hebben gemaakt, denk aan:

hoe is rust ontstaan?

Rust werd initieel ontwikkeld om 2 problemen op te lossen:

  • programmeren veilig maken
  • concurrency vergemakkelijken

De grootste oorzaak van bugs in het geheugen of in concurrency, is code die data leest of aanpast wanneer dat niet de bedoeling is. Rust probeert deze bugs te voorkomen met behulp van ownership: een manier om het schrijven en lezen van variabelen veiliger te maken die systeemprogrammeurs vaak ook zelf proberen te volgen, en die de Rust compiler statisch checkt.

Ook wat het geheugen betreft, leunt Rust op ownership. Het laat toe te programmeren zonder de overhead van een garbage collector, en zonder angst voor segmentatiefouten. Rust onderschept je fouten wanneer je je code compileert, en geeft je de kans problemen op te lossen vóór de code met een bug kan worden uitgevoerd. Handig, want hoe sneller je een bug vindt en kan oplossen in het ontwikkelproces hoe goedkoper je ervan af komt.

Voor concurrency betekent Rust dan weer dat je kan programmeren zonder data races, en dat je kan kiezen uit een enorme hoeveelheid paradigma’s zoals shared-state, lock-free ... Rust zal je helpen om veelvoorkomende fouten te voorkomen.

Male and female colleague talking while sitting at a table.
Male and female colleague talking while sitting at a table.

voordelen van rust.

Als je andere programmeertalen gewoon bent, aarzel je misschien om over te schakelen op een nieuwe taal zoals Rust. 

Des te meer omdat het migreren van de ene naar de andere taal niet altijd vanzelfsprekend is. Maar ook hier hebben de makers van Rust aan gedacht: Rust is interoperationeel en werkt gemakkelijk samen met o.a. C, C++, Python … Je hoeft namelijk niet je hele codebase te herschrijven wanneer je wilt overstappen naar Rust. Je kan bijvoorbeeld starten met de delen die een hoog risico hebben op security en memory issues, en dan verder gaan naar de minder kritische delen wanneer jij daar tijd voor hebt. 

algemene voordelen.

Rust heeft als programmeertaal heel wat voordelen. Zo checkt Rusts compiler op foutjes in het geheugenmanagement, en is hij dus veiliger dan bijvoorbeeld C en C++. Bovendien is Rust snel, minstens even snel als C en C++. Verder kan de taal gebruikt worden voor heel wat verschillende toepassingen. Als je Rust gebruikt, word je lid van een snel groeiende community. En last but not least: Rust biedt een sterk build system en package manager.

voordelen ten opzichte van andere talen.

Rust zal natuurlijk andere voordelen hebben, afhankelijk van welke programmeertaal jij gewoon bent. We zetten een aantal voordelen ten opzichte van andere programmeertalen voor je op een rijtje. 

c.

  • rust biedt garantie op een 100% veilig geheugen
  • je hoeft je geen zorgen meer te maken over segfaults
  • de rust syntax leunt meer aan bij high-level talen

c++.

  • rust biedt ingebouwde test support
  • je kan de delen van een project gemakkelijk beheren dankzij cargo: de rust package manager

java.

  • garantie op thread safety
  • geen race conditions

c#.

  • garantie op thread safety
  • geen race conditions

python.

  • mogelijkheid tot interoperationaliteit via pyo

nadelen van rust.

Natuurlijk is het niet enkel rozengeur en maneschijn. Deze (relatief) nieuwe programmeertaal heeft ook enkele nadelen. Het programmeren zelf gaat namelijk niet altijd zo snel, of toch niet zo snel als bijvoorbeeld in Python of Ruby. Verder is er ook een steile leercurve, tenzij je al een grondige kennis hebt van C++ of een andere object georiënteerde programmeertaal. Maar als je de afweging maakt, zal je al snel zien dat de voordelen van deze taal zwaarder wegen dan de nadelen.

over de auteur
Portrait of Kris van der Stappen
Portrait of Kris van der Stappen

devon kerkhove

senior account manager

Elke dag meewerken aan de (onzichtbare) technologie van morgen, samen met onze klanten, da’s waar we het voor doen. Gebeten door embedded systems, gebrand om te innoveren.