Aangezien er in het verleden wel een aantal topics over dit onderwerp zijn geopend, maar deze eigenlijk niet echt geweldig waren start ik dit topic maar.
Programmeren komt ten eerste zelfs in het dagelijkse leven voor. Door opdrachten te geven aan een systeem zorg je ervoor dat deze iets uitvoert. Zonder dat je het weet ben je er wel mee bezig. Je zou zelfs het zetten van je wekker als een soort programmeren kunnen zien. Maar natuurlijk gaat het daar in deze topic niet over. Het gaat hier om het programmeren op de computer, wat vaak wordt gezien als iets voor contactgestoorde puisterige nerds. Natuurlijk doen die het ook, maar het is jammer dat dit vooroordeel nog steeds behoorlijk vast staat.
Het lijkt me dus aardig om hier als XBW'ers over te discussieren, vragen over te stellen, elkaar te helpen etc.
Ik zal beginnen met een korte inleiding:
Programmeren is het schrijven van een computerprogramma, een concrete verzameling instructies die een computer uitvoert. Programmeren wordt in het algemeen niet direct in machinetaal gedaan, maar in een programmeertaal. Dit is de taak van een softwareontwikkelaar of programmeur. De programmacode die wordt geschreven heet broncode en wordt door een compiler omgezet in machinetaal. Het gebruik van een programmeertaal zorgt er enerzijds voor dat de code beter leesbaar is en anderzijds kan de broncode door verschillende compilers worden omgezet naar machinetaal voor verschillende processoren.
Stukje geschiedenis:
Geschiedenis
Het is mogelijk om computers direct in hun eigen machinetaal te programmeren: direct de enen en nullen te specificeren die door de processor kunnen worden begrepen. Dit was voor de eerste computers gebruikelijk, met schakelaartjes werden groepen van 8 bits ingesteld. Men ondervond echter snel dat het veel te lastig was om programma's die op die manier waren geschreven, te onderhouden. Snel werd er daarom een symbolische manier bedacht om de machine-instructies als tekst weer te geven in de vorm van mnemonics. Zo werd het mogelijk om instructies veel eenvoudiger te lezen. Deze code, die nog wel een-op-een met de instructiecodes overeen komt, noemt men assembler.
Voor het programmeren van assembler en machinetaal moet de programmeur heel veel weten van de computer die hij wil programmeren. Om programmeren makkelijker te maken, zijn daarna andere programmeertalen, de zogenaamde hogere programmeertalen ontwikkeld. Hoe hoger de orde, hoe verder de taal van de machine-instructies af staat. Een imperatieve programmeertaal (zoals Pascal en C) staat bijvoorbeeld dichter bij de machine-instructies dan een functionele programmeertaal (zoals Scheme en Haskell). Een functionele programmeertaal sluit meer aan bij het denken van de mens dan bij de interne werking van de computer. Zo is het in Haskell mogelijk om 'normale' wiskundige definities te gebruiken.
Programmeertalen worden ook wel onderverdeeld in generaties:
* Eerste generatie: machinetaal.
* Tweede generatie: assembler (de kale machine-instructies, maar leesbaar neergezet).
* Derde generatie: procedurele talen als COBOL, Algol, C en Fortran.
* Vierde generatie: database-georiënteerde talen of talen met een hoger abstractieniveau.
* Vijfde generatie: talen op het gebied van artificiële intelligentie.
De generaties worden vaak afgekort als GL, bijvoorbeeld 3GL, als afkorting van 3rd Generation Language(s).
Er zijn honderden programmeertalen bedacht, maar die worden niet allemaal frequent gebruikt. Veel zijn specifiek voor één doel ontworpen.
Om programmeertalen te beschrijven, is een meta-taal bedacht: BNF of Backus Naur Form.
Bij het ontwikkelen van software in een bepaalde programmeertaal kan de programmeur gebruikmaken van een software-ontwikkelomgeving.
Hello World:
Hello world wordt meestal als eerste voorbeeld gebruikt in een cursus programmeren. Dit basisvoorbeeld wordt vervolgens in de cursus gebruikt als opstapje naar het schrijven van geavanceerde programma's.
Als gevolg hiervan gebruiken ook verschillende cursussen van markuptalen een Hello world-variant als startvoorbeeld.
Oorsprong
Voor zover bekend werd de eerste versie van Hello world gebruikt door de makers van C om hun programmeertaal te laten zien. Het is als ware de computer die laat zien dat hij werkt en "hallo" tegen de wereld zegt.
In 1974 kwam het voor in een intern memorandum van Bell Labs door Kernighan: Programming in C: A Tutorial (Programmeren in C: Een leertekst). Hierin werd het aangeduid als "een simpel C-programma":
main( ) {
printf("hello, world");
}
Maar C veranderde nog in die tijd, en toen het programma in 1978 voor het eerst gepubliceerd werd, in The C programming language (De programmateertaal C) van Kernigan & Ritchie , was het zo geworden:
#include <stdio.h>
main()
{
printf("hello, world\n");
}
Objectoriëntatie
Een belangrijke opkomst was die van de Object-georienteerde programmeertalen, die het de programmeur weer makkelijker maakte dagelijkse situaties om te vormen tot programma's. Dit is misschien iets teveel om in de startpost uit te leggen, maar wikipedia weet raad:
http://nl.wikipedia.org/wiki/Object-oriëntatie
Programmeertalen:
Er zijn behoorlijk wat programmertalen de revu gepasseerd, van dicht op de machine staande talen als assembler tot object-georienteerde talen als Java, C++ en C#. Hier een rijtje met behoorlijk bekende talen:
Assembler
BASIC
Pascal
Python
C
C++
C#
Java
Tutorials:
Hier staan enkele tutorials die ik het wel waard vind om te noemen. Zelf zou ik beginners aanraden om met java te beginnen en ook zeker met deze tutorial, want hij is erg goed. C++ is wat moeilijker te leren, maar is wel de industriestandaard voor applicaties en vooral games (applicaties neigen tegenwoordig ook vaker naar andere talen als Java):
Java <- aanrader! (zeker de quizzes en exercises doen na de chapter)
C en C++ (Learning to program in C++ en C Tutorial voor beginners. Ik zou C++ aanraden van deze twee [gebruik de Dev-C++ compiler])
C++
Beetje eigen ervaringen:
Zelf ben ik een beetje begonnen met kloten met HTML, maar dit is geen programmeertaal. (Dat zoek je maar op) Daarna ben ik wat gaan doen met C++, maar dit kon me niet lang boeien om dat het destijds toch nog iets te ingewikkeld voor me was. Momenteel ben ik bezig met Java (voornamelijk omdat dit voor mn opleiding moet) en ik moet zeggen dat het aardig aan het lukken is. Daarnaast heb ik wat gewerkt met assembler(nooit proberen als het niet verplicht is!), prolog en binnenkort ook Haskell. Het beeld dat veel mensen hebben van programmeren is best verkeerd imo. Bij het object-georienteerde programmeren komt veel designen kijken en zit het meeste tijd nog in het uitzoeken hoe je iets gaat aanpakken en implementeert. Daarnaast ben ik wat bezig met kleine gamepjes maken (wat nog niet echt lukt ).
Ik hoop dat de topic een beetje aanslaat en dat mensen met de wens ooit te programmeren hier wat informatie kunnen opdoen.
Laatst bewerkt: 6 apr 2007