Cookies op Tweakers

Tweakers maakt gebruik van cookies, onder andere om de website te analyseren, het gebruiksgemak te vergroten en advertenties te tonen. Door gebruik te maken van deze website, of door op 'Ga verder' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt, bekijk dan ons cookiebeleid.

Meer informatie

Door , , 19 reacties
Bron: Real World Technologies

Hoewel de meeste gevorderde computergebruikers waarschijnlijk wel weten wat een compiler is, zal de precieze werking ervan bij velen onbekend zijn. Voor iedereen die de details nu toch graag eens wil weten, heeft Real World Technologies een uitgebreid artikel geschreven over de verschillende aspecten van het soort programma's dat code van een hoge programmeertaal kan omzetten in machinetaal. Overigens is deze definitie volgens het artikel te beperkt, en wordt onder een compiler alles verstaan dat strings in andere strings omzet. Besproken wordt echter voornamelijk de variant die in de eerste definitie vastgelegd werd, en sinds de jaren veertig bestaat:

CompilerWhen high level languages were first invented in the forties and fifties no compilers had been written. Early compilers were complex and took huge amounts of time and manpower to write. Since then work on methods and tools have made it possible for a single programmer to write quite an advanced compiler. One of the main lessons learnt is how to split a compiler into parts. At the highest level there are three parts: the front end that understands the syntax of the source language, the mid-end that performs high level optimizations and the back end that produces assembly language.
Moderatie-faq Wijzig weergave

Reacties (19)

mid-end that performs high level optimizations
Deze stap wordt steeds belangrijker tegenwoordig, vooral bij de laatste Intel CPU's, die feature's hebben die "vereisen" dat de compiler speciale code maakt om die feature's te gebruiken.

Zoals bij de P4 met HTT, als de programmeur en de compiler niet genoeg met threads werkt, zal je weinig aan HTT hebben en SSE2, als de compiler SSE2 niet goed begrijpt of niet de volledige functionaliteiten van SSE2 gebruikt, heb je weinig aan SSE2 waardoor de P4 erg matig is in floating point operaties.

En natuurlijk de IA-64 CPU van Intel, die is erg afhankelijk van de compiler, zonder een goede zal de performance erg slecht zijn omdat de CPU dan o.a. zelf moet gaan uitzoeken in welke volgorde de instructies uitgevoerd moeten gaan worden. Dat doet de compiler dus bij IA-64.

Dus bij de laatste Intel CPU's is de compiler een van de meest belangrijke dingen waardoor die dus erg goed moet zijn.

\[off-topic]
speedy:
ik ook! (oude pagina's lrijgen)
Heb dit ook met NU.NL, zit ik zomaar een pagina uit januari te lezen. boosdoener : IE6 of MS Proxy 2? of xs4all?
Een keer je historie en cache in IE wissen, een keer de pagina refreshen en je krijgt na de "back" knop weer de recente pagina's te zien.
\[/off-topic]
probeer ff behulpzaam te zijn: je offtopic staat te laag, kun je het beste bovenaan zetten want je begint over de pentium 4 technologie.

flaming :9
voor de mensen die er interesse in hebben, op www.peroxide.dk vind je een serie prima tutorials (work in progress) die uitleggen hoe men een script compiler bouwt. Zware stof maar zeer interessant om te lezen, vooral als je een (game) coder bent natuurlijk.
Ik vind het toch prima dat men een artikel schrijft over compilters. Maar ze houden het wel erg opervakig. Ik bedoel in heb me nog nooit echt in compilers verdiept maar erg veel nieuws hoorde ik niet.

Het zou zo veel intresanter zijn als ze bv GCC pakte en uitlegde hoe DIE het in het ECHT voor elkaar krijgt een leuke binary te produceren.
> Maar ze houden het wel erg opervakig.
Ik denk dat het wel meevalt, er wordt duidelijk gemaakt hoe moderne compilers zijn opgebouwd in een frontend en een backend, daardoor wordt duidelijk waarom Delphi en C++Builder dezelfde backend compiler gebruiken, hoewel de frontend verschillend is (pascal vs C++).

> Ik bedoel in heb me nog nooit echt in compilers
> verdiept maar erg veel nieuws hoorde ik niet.

Op zich niet zo vreemd want compiler bouw is zo oud sinds de weg naar Rome, compilerbouw is niet voor niets het meest onderzochte onderwerp in de informatica met een geschiedenis van 50 jaar...

> Het zou zo veel intresanter zijn als ze bv GCC pakte
> en uitlegde hoe DIE het in het ECHT voor elkaar
> krijgt een leuke binary te produceren.

Als je de source van GCC erbij pakt, zie je toch echt hoe de theorie toegepast is, een lexical analyser, die een tree (dag) genereert en daarop transformaties doet als constant-folding, subexpression optimalisation, en via de backend met color coding een optimale register allocatie doet...
Top reason why compilers are like women: Miss a period and they go crazy
Sjemig, ook nog grappig dat artikel ;)
hmm wist je niet dat het gezegde loopt:

ff een qoute die ik van onder een e-mail vandaan viste
give a man a answer and he is happy for a day,
teach a man how to program and he has a headache whole his life.
;)

maar ff serieus tis wel waar progammeren is niet moeilijk.

maar:
1) je moet consequent zijn
2) eerst goed uitwerken wat je wil gaan maken.
3) onderzoek doen, denk aan kleine test programmatjes die later in het geheel zouden moeten gaan werken.

als je dit hebt gedaan dan is het programma al voor 75% af alleen je moet het schrijven en debuggern

en zeker als je het los laat in de wereld dan wordt je er nog vrolijker op NOT
Hehe daar heb je gelijk in. Bij het vrijgeven van mij Webcam programma was het aardig getest en bleek goed te zijn. Maar wat sommige gebruikers doen dat is toch onvoorstelbaar. Die komen soms met fouten aanlopen waar ik juist heletijd op getest heb. Dat denk ik hoe krijgen ze het weer voor elkaar maar dat is weer dan een avond proggen. (Vinden de vrouwen geweldig :o)
Ik vind het toch prima dat men een artikel schrijft over compilters. Maar ze houden het wel erg opervakig. Ik bedoel in heb me nog nooit echt in compilers verdiept maar erg veel nieuws hoorde ik niet.

Het zou zo veel intresanter zijn als ze bv GCC pakte en uitlegde hoe DIE het in het ECHT voor elkaar krijgt een leuke binary te produceren.
eeuh hoe lang wordt dit artikel dan ik heb een vak Scanners en Parsers gehad en hier hadden we 400 paginas studiemateriaal voor om alleen maar een beetje inleiding in de technieken te krijgen. Ook kan ik nu een parsertje schrijven voor een formele taal (nog lang geen programmeertaal maar veel eenvoudiger)

Een compiler is echt een van de meest ingewikkelde zaken op computer gebied, ze zijn heel complex maar ook erg interessant.
FYI een programmeertaal staat slechts ergens halverwege in het lijstje van formele talen.
De meeste programmeertalen zijn gebaseerd op een Context Free Grammer (speciale variant daarvan dan, IIRC in Greibach Normal Form) en zo niet, dan wil je dat heel graag daar naar toe werken omdat je dan diverse technieken kan automatiseren (en behalve als parallellisme in het spel komt, zijn computers beter in staat een compiler te construeren dan een mens).

Als voorbeeld kun je overigens beter kijken naar iets simpelers dan GCC. Een vroege Pascal-compiler bijvoorbeeld, of een scheme-compiler of interpreter.
Er is tegenwoordig ook compilerbouwersoftware. Daarin beschrijf je hoe de taal in elkaar zit en wordt de compiler voor je gemaakt. Zo kan je dus je eigen taaltje compileren binnen no-time. Dit is uiteraard niet optimaal qua compile snelheid, maar je kan zo wel een Nederlandse versie van C maken bijvoorbeeld. Niet dat je dat wil, maar goed, misschien ook wel.
Yacc (yet another compiler compiler....)

is als zo oud....
Tjah mischien hebben jullie wel gelijk. En zou het allemaal te diep gaan als ze GCC gingen uitpluizen. Ik miste alleen nieuws :)

en als je 50 jaar compiler bouw hebt dan kan je tochook eindigen welke systemen er precies gebruikt worden heden ten dage met een kleine analyse hoe ze in elkaar zitten. En eventueel links naar meer info over de diverse compilers ?

Ik geef toe het is niet de boedoeling een verhaal van 400 P te gaan schrijven maar met dit artikel blijf ik toch met een leeg gevoel acher.
Gezien er over dit onderwerp meer geschreven is dan eigenlijk wat dan ook binnen de informatica is het aanbod ruim.

Het standaardwerk over compilers, hoewel al redelijk aan de oude kant, is toch wel het Red Dragon boek van Aho en Ullman.
Een wat moderner boek is Modern Compiler Design van Grune etc. (een docent van me) of Modern Compiler Implementation in Java van Appel (de informaticus, niet de schilder...)

Naar verluidt is Donald Knuth momenteel ver gevorderd met diens deel 4 uit de (legendarische) reeks The Art of Computer Programming en dat zou over compilers moeten gaan.

Boeken over tools om compilers te construeren zijn wat lastiger te
vinden, maar O'Reillys Lex & Yacc en GNU's Bison Manual moeten de OSS mensen toch wel tevreden houden. Andere werken zijn IMHO te droog voor woorden.

Als je helemaal diep op de materie in wilt gaan, kun je altijd nog An Introduction to Formal Languages and Automaton van Linz lezen. Weet je gelijk meer dan je lief is over de achtergronden van programmeertalen en waarom er bepaalde eisen aan gesteld worden die ze soms nogal rigide doen overkomen; zeker als je er een compiler voor aan het schrijven bent.

* 786562 Jit
Er zit toch een Bug in tweakers. Als ik soms opstart of op back druk krijg ik ineens nieuws berichten van weken terug op mijn scherm ;)
Zoiets heet toch Cache? :)
dit kun je beter in het forum bespreken.

http://gathering.tweakers.net/listtopics.php/43

(die fout dat hij de content van vorig jaar laat zien heeft geloof ik te maken met het feit dat hij dan niet op de hoofdserver kan en dan maar uitwijkt naar een server waar een oude backup staat... maar dat kunnen op het forum beter vertellen)
speedy:
ik ook! (oude pagina's lrijgen)
Heb dit ook met NU.NL, zit ik zomaar een pagina uit januari te lezen. boosdoener : IE6 of MS Proxy 2? of xs4all?
:? :? :?
"Vliegtuigen tegen WTC gevlogen...".... hadden ze die dingen al weer opgebouwd dan ? :) :)

Op dit item kan niet meer gereageerd worden.



Apple iOS 10 Google Pixel Apple iPhone 7 Sony PlayStation VR AMD Radeon RX 480 4GB Battlefield 1 Google Android Nougat Watch Dogs 2

© 1998 - 2016 de Persgroep Online Services B.V. Tweakers vormt samen met o.a. Autotrack en Carsom.nl de Persgroep Online Services B.V. Hosting door True