C programmeertaal: Wat is het en wat kan je ermee?

De programmeertaal C wordt ook wel beschouwd als de moeder van alle programmeertalen. Programmeren in C werd vroeger veel gedaan en tegenwoordig nog steeds. Vroeger was C een lange tijd de meest populaire programmeertaal wereldwijd. Inmiddels is de programmeertaal C voorbijgestreefd door andere programmeertalen. Hier lees je onder andere wat C is en wat je ermee kan. Is C tegenwoordig nog steeds relevant om te leren? Daar kom je ook in dit artikel achter. Lees lekker verder!

Ja, ik wil leren programmeren in C of misschien wel C++!

Wat is de programmeertaal C en wat kan je ermee?

Van 1985 tot 2001 was C de meeste populaire programmeertaal wereldwijd. Dat is natuurlijk niet voor niets zo geweest! Andere “hippere” hoge programmeertalen zijn C voorbijgegaan, maar C wordt nog steeds gebruikt door programmeurs en is nog populair. Wel in mindere mate dan vroeger.

De kinderen van C zijn hun moeder voorbijgestreefd. C wordt ook wel de moeder van alle programmeertalen genoemd, omdat veel programmeertalen zijn afgeleid van C of bepaalde elementen hebben overgenomen, zoals C++, Java en C#.

Eén van de reacties bij de bovenstaande YouTube video zegt eigenlijk alles:

Programmeertaal C goede moeder voor andere programmeertalen reactie YouTube

C staat ook wel bekend als een middle-level programmeertaal, omdat het tussen een lage en hoge programmeertaal in zit. Je kan met C systemen programmeren (Besturingssystemen), maar je kan bijvoorbeeld ook een game maken met C. C is een procedurele programmeertaal.

De programmeertaal C ligt dichtbij de machine en ook dichtbij de mens. Dit betekent dat machines C goed kunnen begrijpen en de programmeertaal is voor mensen leesbaar.

Als je met C wil gaan leren programmeren, ga je beter het onderliggende proces begrijpen. Met C kan je bijvoorbeeld compilers maken. Hierdoor ga je begrijpen hoe je bijvoorbeeld een programmeertaal als Java compileert en begrijpbaar maakt voor een besturingssysteem, zodat het programma geschreven in Java daarop kan draaien.

Doordat veel programmeertalen afgeleid zijn van C, ga je deze programmeertalen ook makkelijker begrijpen, als je C beheerst. Echter is voor een beginner C wel een stuk lastiger dan bijvoorbeeld Python.

Onder andere de syntax van C is moeilijker te begrijpen dan een programmeertaal zoals Python. Ook moet je bijvoorbeeld in C zelf voor het geheugenmanagement zorgen, bij Python hoef je je daar helemaal niet druk om te maken. Python heeft een automatische “garbage collector”.

Mogelijkheden met C

Maar wat kan je eigenlijk allemaal doen met C? We hebben al gelezen dat je een besturingssysteem, compiler en game kan bouwen. Hieronder staan nog meer voorbeelden van wat je allemaal kan bouwen en doen met C:

  • Database
  • Embedded systems, zoals een wekker en een magnetron
  • Text editor
  • Assembler
  • Robot programmeren
  • Virtual Machine
  • Internet of Things toepassingen
  • Netwerk applicaties

De mogelijkheden met C zijn heel groot! Hierboven staan maar enkele voorbeelden, maar je kan nog veel meer met C doen.

C logo

Voorbeelden van bedrijven die gebruik maken van de programmeertaal C

C is de moeder van alle programmeertalen en heeft zich al lang en breed bewezen. Toch hebben we dit hoofdstuk gemaakt, om te laten zien dat C nog steeds toonaangevend is in de wereld.

De grootste bedrijven ter wereld maken tegenwoordig nog steeds gebruik van de programmeertaal C. Dit doen ze al heel lang. Het geeft aan dat de programmeertaal nog steeds heel goed is.

We gaan kijken naar 3 hele grote bedrijven die gebruik maken van C.

Microsoft

Microsoft heeft het meeste gebruikte besturingssysteem wereldwijd voor computers ontwikkeld, namelijk Windows. Wie kent het niet? Je zal het zelf ook vast wel een keer gebruikt hebben en misschien nog steeds.

Een groot deel van de Windows kernel is geschreven in C. Microsoft blijft vertrouwen houden in de programmeertaal C. Het geeft wel aan hoe goed C nog is, als zo’n belangrijk onderdeel van het Windows besturingssysteem in C is geschreven.

Google

Weer zo’n megabedrijf. Als je Google niet kent, heb je wel zo’n 20 jaar onder een steen gelegen. Google heeft Android niet ontwikkeld, maar wel overgenomen. Tegenwoordig is Android nog steeds van Google.

Android is het meest gebruikte mobiele besturingssysteem wereldwijd. Net zoals bij Windows, is de kans groot dat je ooit gebruik hebt gemaakt van Android en nu misschien nog steeds.

De kernel van Android is ook geschreven in C. Google blijft vertrouwen houden in C, omdat de programmeertaal gewoon stabiel is en goed werkt.

Google logo

Apple

Apple is een andere gigant, de tegenhanger van Microsoft. macOS, het besturingssysteem van de Mac, is ontwikkeld door Apple.

Ook het grootste gedeelte van de macOS kernel is geschreven in C. De kernel is het hart van een besturingssysteem. Het geeft aan hoe krachtig C nog steeds is als de giganten Microsoft, Google en Apple er tegenwoordig nog gebruik van maken.

Dit waren maar enkele voorbeelden, maar C wordt nog steeds op grote schaal gebruikt, door zowel kleine als grote bedrijven. Bij de mogelijkheden uit het eerste hoofdstuk kan je zien waar het nog allemaal voor wordt gebruikt hedendaags.

Apple logo

Voor- en nadelen van C

Ook al is C zo’n krachtige programmeertaal, toch heeft C net zoals elke programmeertaal zijn voor- en nadelen. Laten we positief beginnen en eerst gaan kijken naar de voordelen.

Voordelen

  • Niet moeilijk om te leren, syntax is goed te begrijpen
  • Built-in functions
  • C kan zorgen voor efficiëntere programma’s
  • Programma’s in C zijn sneller dan programma’s in vele andere programmeertalen
  • Gestructureerde programmeertaal
  • Flexibele programmeertaal, programma’s geschreven met C kunnen op elke computer draaien, zonder de code aan te passen
  • Inspiratie voor andere programmeertalen geweest en nog steeds
  • Snelle compiler
  • Makkelijker om nieuwe feature toe te voegen

Nadelen

  • Geen OOP (Object georiënteerd programmeren) ondersteuning
  • Geen ondersteuning voor constructors
  • Geen namespace ondersteuning
  • Run-time type checking niet beschikbaar

Ja, ik wil leren programmeren in C of misschien wel C++!

Verschillen tussen C en C++

C is de moeder van C++. De programmeertaal C++ is gebaseerd op C. Het was de bedoeling om C++ beter te maken dan C, vandaar ook de ++ in de naam van C++.

C++ betekent dat de waarde van de variabele C met 1 wordt verhoogd, daar verwijst het ook naar. Voor programmeurs zal de ++ operator bekend zijn.

Natuurlijk zijn er verschillen tussen C en C++. Dit zijn enkele belangrijke verschillen:

  • C is niet object georiënteerd en C++ wel
  • C++ maakt wel gebruik van namespace en bij C is dat niet mogelijk
  • C heeft geen Exceptions en C++ wel
  • C ondersteunt geen function overloading en C++ wel
  • C++ is een hoge programmeertaal en C een middle-level programmeertaal
  • C ondersteunt alleen pointers en geen reference variables, C++ ondersteunt beiden
  • C++ ondersteunt inline functions en C niet

Dit zijn niet alle verschillen, maar wel belangrijke. Je ziet vooral dat C++ meer functionaliteiten heeft dan C. Dat was ook de bedoeling, om C++ beter te maken dan C.

Echter is het volgens veel experts wel verstandiger om eerst met C te beginnen. C++ is een stuk complexer. Als je goed kan programmeren met C, gaat je dat ook lukken met C++.

Nerd achter computer

C codevoorbeelden

Het is altijd leuk om bij een programmeertaal naar codevoorbeelden te kijken. Dan krijg je een beter beeld van de syntax van een programmeertaal. Programmeren in C doe je niet vanuit het niets en daarom is het handig om eerst naar voorbeelden te kijken.

We gaan het niet ingewikkeld maken. Er komen 3 eenvoudige codevoorbeelden voorbij in C. We beginnen met het bekende “Hello World!” voorbeeld. Daarna komt er een voorbeeld van een if-else statement in C en een function.

De laatste 2 voorbeelden horen bij de basisonderdelen van het programmeren. In het e-book “Snelcursus Leren Programmeren” komen de basisonderdelen van het programmeren terug.

Als je nog niet veel programmeerervaring hebt, is het e-book “Snelcursus Leren Programmeren” zeker een aanrader!

Hello World!

#include <stdio.h>

int main() {
    printf("Hello World!");
    return 0;
}

Je ziet gelijk al dat er in C meer code nodig is voor deze simpele instructie dan bijvoorbeeld in Python. Echter zal dit er niet “schokkend” voor je uitzien als je al een beetje bekend bent met programmeertalen zoals Java en C#.

In de eerste regel wordt het “stdio.h” bestand (Library) opgenomen. In dit bestand staat een printf() function prototype (Opzetje van een function) en deze function prototype is nodig om “Hello World!” naar het scherm te verzenden. Je zou een printf() function prototype zelfs handmatig kunnen toevoegen zonder het “stdio.h” bestand, maar dat is niet aan te raden.

Het “stdio.h” bestand wordt opgenomen door #include te gebruiken. Dit wordt ook wel een “Preprocessor command” genoemd. Het opnemen van bestanden wordt altijd aan het begin van een programma gedaan, in de eerste regels.

Elk programma geschreven in C moet een main() function hebben. Bij het uitvoeren van een C programma, wordt de main() function als eerste aangeroepen. De main() function kan je in verschillende vormen implementeren, zoals void main() en int main(). In dit voorbeeld gebruiken we int main().

Een puntkomma (;) in C is verplicht om elk statement af te sluiten. Als je een puntkomma vergeet achter een statement, compileert het programma niet.

Tot slot zie je in regel 5 return 0; staan. De main() function heeft een int als data type en verwacht daarom een int waarde terug. We doen return 0; om de function en het programma te beëindigen.

If-else statement

#include <stdio.h>

int main() {
    int temperatuur = 31;
    
    if (temperatuur >= 30) {
        printf("Het is een tropische dag, denk eraan dat je genoeg drinkt!");
    } else {
        printf("Het is geen tropische dag.");
    }
    
    return 0;
}

Als je een if-else statement in C vergelijkt met andere programmeertalen, zoals Java en C#, ziet het er niet zo spannend uit. Het ziet er vrijwel hetzelfde uit en de werking komt op hetzelfde neer.

In regel 4 is er een variable (Variabele) aangemaakt. De variable heeft een int als data type en temperatuur is de naam van de variable. 31 is als waarde meegegeven aan de variable.

In een programmeertaal zoals Python en PHP hoef je geen data types te gebruiken. In C is het wel verplicht om een data type mee te geven bij het opstellen van een variable.

Het if-else statement is niet lastig. Als (If) de variable temperatuur groter of gelijk is aan 30, dan krijg je een bericht dat het een tropische dag is en je goed moet drinken.

Als de temperatuur niet groter of gelijk is aan 30 (Else), dan krijg je een bericht dat het geen tropische dag is. Als we dit programma zouden uitvoeren, komt eruit dat het een tropische dag is, zoals je waarschijnlijk al doorhad.

Function

#include <stdio.h>

void tropisch_checker(int temp) {
    if (temp >= 30) {
        printf("Het is een tropische dag, denk eraan dat je genoeg drinkt!");
    } else {
        printf("Het is geen tropische dag.");
    }
}

int main() {
    int temperatuur = 29;
    
    tropisch_checker(temperatuur);
    
    return 0;
}

Ook bij een function zie je weer goed dat het er hetzelfde uitziet als in veel andere programmeertalen. C is een inspiratie geweest voor veel programmeertalen en daarom zal C niet lastig zijn, als je al ervaring hebt met programmeren in bijvoorbeeld Java, C#, C++, PHP en/of JavaScript.

Het zou heel chaotisch zijn als je veel if-else statements in de main() function hebt staan. Het is veel netter om een if-else statement apart in een function te zetten en de function in main() aan te roepen. Vandaar ook het bovenstaande voorbeeld met het checken of de temperatuur tropisch is, maar dan in een function.

In regel 3 is de function tropisch_checker() aangemaakt. De function hoeft geen waarde terug te geven en heeft daarom void als type. Lees in het artikel “Wat is void?” meer over dit type. In de function staat het if-else statement uit het vorige voorbeeld.

In tropisch_checker() zie je int temp als parameter staan, in regel 3. In de main() function in regel 12, zie je dat er een variable is aangemaakt temperatuur.

Deze variable wordt meegegeven als argument aan tropisch_checker(temperatuur) in regel 14, bij het aanroepen van de function. Hierdoor krijgt de parameter temp de waarde van de variable temperatuur.

temp staat in het if-else statement en zo kan de check plaatsvinden of het een tropische dag is.

Ga zelf aan de slag met de programmeertaal C of misschien wel C++

Wil jij gaan programmeren in C en er dieper induiken? Dan ben je hier aan het juiste adres! Hierboven heb je simpele voorbeelden voorbij zien komen, maar om echt meer over C te leren, is het verstandig om een goede cursus te volgen.

Als programmeren nog vrij nieuw voor je is, is het aan te raden om eerst het e-book “Snelcursus Leren Programmeren” te lezen. Hierin leer je de basis van het programmeren en daarna is het makkelijker om moeilijkere programmeertalen en -technieken te leren.

Op Pluralsight staan hele goede cursussen over programmeren in C, zowel voor beginners als gevorderden. Voor beginners is “C Development Fundamentals” een aanrader. Misschien wil je wel iets meer uitdaging en C++ leren? Dat kan ook zeker op Pluralsight.

Pluralsight logo

In “Pluralsight review en ervaringen” lees je meer over dit gave platform. Je kan het platform zelfs 10 dagen helemaal gratis uitproberen.

Ook Coursera is een mooi platform om C of C++ te leren. “Coding for Everyone: C and C++” is een echte aanrader. In “Coursera review” lees je meer over dit online leerplatform.

Boeken zijn ook een mooie mogelijkheid om C++ te leren. In “De beste C++ boeken voor beginners en gevorderden” vind je boeken waarmee je aan de slag kan.

C is de moeder van alle programmeertalen en daarom is het heel gaaf om als programmeur C te kennen. Met kennis over C is het makkelijker om andere programmeertalen te leren en je weet ook beter hoe het onderliggende proces van een programmeertaal werkt.

Verder zou je met C bijvoorbeeld software kunnen schrijven voor robots, Internet of Things toepassingen en voor embedded systems, zoals een magnetron. Je zou bij bedrijven aan de slag kunnen die dit soort dingen doen. Dit zijn maar enkele voorbeelden, maar de mogelijkheden zijn nog veel groter met C en de programmeertaal leeft nog steeds!

C is nog steeds relevant om te leren. Verhoog je status als programmeur en leer programmeren met de programmeertaal C, de moeder van alle programmeertalen. Of ga een stapje verder en leer C++.

Heb je nog vragen en/of opmerkingen? Laat dan hieronder een reactie achter of neem contact op.

4 gedachten over “C programmeertaal: Wat is het en wat kan je ermee?”

  1. Je blijft hier een hardnekkig misverstand promoten, namelijk dat de <stdio.h> file de printf functie bevat. En dat een programma dat printf aanroept niet compileert als de #include <stdio.h> ontbreekt. Beide beweringen zijn niet waar.
    Correct ontworpen include files bevatten niets dat geheugen alloceert en niets dat code genereert, dus zeker geen functies. Ze bevatten function prototypes, templates van structs en unions, extern-declaraties, typedefs, defines en allerlei andere preprocessor directives, enz. En uiteraard bevatten ze commentaarregels.
    Als jouw ‘Hello world’ programma geen #include <stdio.h> zou bevatten dan krijg je een Warning, geen Error. Errors zijn showstoppers, Warnings niet. En dus wordt er wel degelijk een werkende executable gemaakt, want de linker weet gewoon waar in jouw OS de C-library file te vinden is.
    Als je handmatig een prototype-regel voor printf toevoegt die niet conflicteert met wat de linker aantreft bij de printf zelf in de C-library file:
    int printf(const char *, …); /* dit is de GNU library versie */
    dan verdwijnt zelfs de Warning.

    Beantwoorden
  2. Toch leuk, hier enthousiasme voor C te zien en het onovertroffen boek van K & R.
    Waar je enige aandacht aan zou kunnen besteden is het verbergen van functies die niet voor de buitenwereld zijn bestemd; het gebruik van statics en static variabelen. Voor lastige stukjes code zijn macro’s bijzonder nuttig (met de inherente gevaren voor gebruik door het hele team) Voor AI, snel zoeken, n-dimensionale vectorruimten kan C zeker gebruikt worden en geeft compactere code dan C++ en is sneller iha.

    Voor slechte typisten zijn macro’s ideaal, maar vooral voor het denken over een principe.

    # define greatestdivisor(I,P) for(I = 3ul; P%I && I < P/I; I += 2ul); I = (P%I == 0ul && P != 3ul)?(P/I):P
    # define isaprimeornot(I,P) for(I = 3ul; P%I && I < P/I; I += 2ul); I = (P%I == 0ul && P != 3ul)?0ul:P
    # define smallestdivisor(I,P) for(I = 3ul; P%I && I < P/I; I += 2ul); I = (P%I == 0ul && P != 3ul)?I:P

    Commentaren zijn bij C zeer belangrijk!
    //
    // greatestdivisor(I,P) set I to greatest divisor or P if P prime P not changed
    // isaprimeornot(I,P) set I to zero if if P prime P not changed
    // smallestdivisor(I,P) set I to smallest divisor or P if P prime P not changed
    // numoffactors(N,U) set N to number of factors for any U U not changed
    //
    // nextprime(P) set P to the primenumber higher than any P, odd or even input MINPRIME!
    //

    Discipline bij C, of het ontbreken ervan, leidt vaak tot teleurstellingen. Call by value of call by reference is ook belangrijk. Maar wat ik wilde zeggen er was een zeer goed over
    C door Gehani van ma Bell, een aanrader en misschien nog te vinden. Er komt een site met simpele code over hashing, tekst in vectorruimtes en dergelijke.

    Geheugen allocatie is een lastig punt in C en pointers is een hobbel voor beginners.

    Wel zeer leuk het enthousiasme hier!

    Beantwoorden
    • Hoi ing. J. Onno Dekker,

      Bedankt voor je uitgebreide reactie op dit artikel, daar hebben de lezers zeker wat aan!

      Als ik het artikel weer ga updaten, is het zeker interessant om een aantal van jouw punten mee te nemen.

      Gr. Bas

      Beantwoorden

Plaats een reactie