alienfruit: Ja. Een parser maak je dus ook met de hand
Tja, dat mag jij gerust doen, maar ik doe het in ieder geval niet. Ik houd me liever bezig met zaken die relevant zijn voor een specifieke compiler en wat ik kan produceren door te specificeren (met een domein specifieke specificatie, in dit geval een context-vrije grammatica), ga ik niet met de hand schrijven.
Zoals ik al zei, performance wordt relevant als er een grote gebruikersgroep is die je niet kan belasten met een mindere performance van een compiler. Voor veel situaties kan je de gebruikers daar echter
wel mee belasten omdat ze geinteresseerd zijn in
wat de compiler doet en niet in
hoe snel de compiler dat doet.
Compilers maken is overigens ook niet echt probleem

Dat hangt er maar vanaf wat je onder een compiler rekent. Instructie selectie en diverse optimalisatie stappen valt ook onder de overkoepelende naam compiler en is toch geen triviaal probleem. Het uitpoepen van een binary executable is een kwestie van specificaties lezen en rotwerk doen: daarom besteden we dat bij voorkeur ook uit aan een assembler

.
Compilers zijn tegenwoordig te complex om ze als monolithisch geheel te zien. Vrijwel alle boeken presenteren het probleem van compiler implementatie in een aantal fasen, componenten. Op deze manier zouden ze in veel gevallen ook geimplementeerd moeten worden, waarbij je zoveel mogelijk bestaande tools gebruikt.
Maar een heel klein deel van alle geschreven compilers wordt gebruikt door een enorme gebruikersgroep (denk dan aan gcc, jikes, javac en dergelijke). De vereisten die gelden voor deze compilers moet je niet doorvoeren naar compiler implementatie in het algemeen: waarschijnlijk zal je nooit werken aan een compiler met deze requirements.