Language design
8 belangrijke vragen over Language design
Welke zes aandachtspunten kunnen onderscheiden worden bij het ontwerpen van een programmeertaal?
- Selectie van concepten
- Orthogonaliteit: alle concepten in een taal mogen onbeperkt gecombineerd worden
- Eenvoud
- Efficiëntie
- Syntaxis
- De levenscyclus van een programmeertaal
Noem twee redenen voor het feit dat de acceptatie van nieuwe talen in het algemeen moeizaam verloopt
- Efficiëntie: de oude imperatieve programmeertalen sluiten goed aan op de conventionele machinearchitecturen, wat gunstig is voor de verwerkingssnelheid. De verwerkingssnelheid is lange tijd een doorslaggevend criterium geweest.
- Reeds gedane investeringen in bestaande programmatuur en in het opleiden van programmeurs.
Noem zes redenen om een nieuwe programmeertaal te ontwikkelen
- De syntactische verschijningsvorm: behoefte aan een domeinspecifieke taal, die zoveel mogelijk lijkt op het formalisme waarmee men dagelijks werkt
- Nieuwe datatypen: uitbreiden datatypen
- Het berekeningsmodel: behoefte aan taalconstructies die nieuwe berekeningsmodellen ondersteunen
- Het schrijven van zeer grote programma's: veel talen zijn in eerste instantie ontwikkeld voor kleinschalige toepassingen
- Statische controle, beperking van vrijheid: extra eisen kunnen opleggen aan programma's, bijvoorbeeld de volgorde waarin procedures worden aangeroepen
- Globale analyse: optimalisatie van de wijze waarop een programma op de machinearchitectuur wordt afgebeeld
- Hogere cijfers + sneller leren
- Niets twee keer studeren
- 100% zeker alles onthouden
Noem zeven voorbeelden van een domeinspecifieke taal (DSL)
- Structured Query Language (SQL)
- PostScript (PS) voor het beschrijven van pagina's
- R voor statistische berekeningen
- Bash scripting taal (Unix) voor het manipuleren van bestanden en directories
- Makefiles voor het beschrijven van afhankelijkheden bij het bouwen van executables
- Bedrijfsapplicaties voor het afsluiten van financiële contracten of verzekeringen
- Rascal voor het analyseren en manipuleren van broncode (metaprogrammeren)
Noem een voordeel en een nadeel van een domeinspecifieke taal (DSL) ten opzichte van een algemene programmeertaal
- Biedt extra ondersteuning voor concepten uit het betreffende domein en sluit daarmee aan op het formalisme waarmee men dagelijks werkt
- Het ontwerpen en implementeren van een domeinspecifieke taal met de bijbehorende tooling is veel werk en bovendien erg specialistisch van aard.
Wat wordt verstaan onder een embedded of interne domeinspecifieke taal?
Vanwege de mogelijkheden die Haskell biedt om bestaande notatie uit te breiden, kan Haskell goed als gasttaal dienen.
[C18.4]
Noem vijf voorbeelden van berekeningsmodellen die aanleiding geven tot nieuwe talen
- Grootschalige parallelle machine
- Transactieverwerkende machine
- Gedistribueerde machine
- Querymachine
- Incrementele machine
Noem vijf ontwikkelingen op het gebied van programmeertalen
- Ontwikkeling van krachtigere typesystemen, teneinde de uitdrukkingskracht van typesystemen te vergroten (bijv. GADT's in Haskell)
- Ontwikkeling van abstracte programmeerconcepten (bijv. Aspect-oriented programming, Adaptive object-oriented programming, Generic Haskell)
- Betere ondersteuning door programmeertalen voor parallel programmeren
- Toenemend gebruik van vertalergeneratoren (DSL's om vertalers mee te maken)
- Methodes en technieken om de correctheid van software vast te stellen (bijv. model checking, theorem proving, SAT solvers)
[C18.5]
De vragen op deze pagina komen uit de samenvatting van het volgende studiemateriaal:
- Een unieke studie- en oefentool
- Nooit meer iets twee keer studeren
- Haal de cijfers waar je op hoopt
- 100% zeker alles onthouden