Compile-time metaprogramming and its implementation

dc.contributorAalto-yliopistofi
dc.contributorAalto Universityen
dc.contributor.authorSykäri, Antti
dc.contributor.departmentInformaatio- ja luonnontieteiden tiedekuntafi
dc.contributor.schoolPerustieteiden korkeakoulufi
dc.contributor.schoolSchool of Scienceen
dc.contributor.supervisorTarhio, Jorma
dc.date.accessioned2020-12-23T12:40:23Z
dc.date.available2020-12-23T12:40:23Z
dc.date.issued2010
dc.description.abstractMetaprogramming is a programming paradigm where programs manipulate, generate, and analyze other programs. A compiler for a programming language can be equipped with a compile-time metaprogramming facility that allows the program to analyze and extend itself. This can raise the level of abstraction in the programming language and make programs faster, more maintainable, and more reliable. This thesis presents KernelC, a programming language derived from C that is equipped with a metalanguage that can be used to manipulate programs written in KernelC. The language consists of from major building blocks. The kernel language, a minimal set of language features that represent the computational core of C, forms the foundation. The extended language, which provides a set of convenient language features familiar from C, builds on the kernel language. The compile-time metaprogramming (CTMP) extension provides Common Lisp-like macros and an explicit operator to run code during compile time. Finally, the syntax extension facility complements the CTMP extension to form a metalanguage that can he used to build language extensions seamlessly into the language. The metalanguage proves powerful enough to implement most of the features in the extended language in terms of the kernel language. Although the resulting language is not ideally suited for everyday programming, KernelC is an interesting experiment in the field of C-derived languages, where metaprogramming facilities are rarely seen.en
dc.description.abstractMetaohjelmointi on ohjelmointiparadigma, jossa ohjelmat voivat muokata, luoda ja analysoida toisia ohjelmia. Ohjelmointikielen kääntäjä voidaan varustaa käännösaikaisilla metaohjelmointiominaisuuksilla, jotka mahdollistavat sen, että käännettävät ohjelmat voivat analysoida ja laajentaa itseään. Näin ohjelmien abstraktiotasoa voidaan kohottaa ja tehdä niistä ylläpidettävämpiä, nopeampia ja luotettavampia. Tässä diplomityössä esitellään KernelC, C:stä johdettu ohjelmointikieli, jossa on metakieli jolla voidaan käsitellä KernelC:llä kirjoitettuja ohjelmia. Kieli koostuu neljästä pääosasta. Ydinkieli, joka on mahdollisimman pieni joukko C:n laskennalliselle luonteelle ominaisia ominaisuuksia, muodostaa perustan. Laajennettu kieli, joka toteuttaa joukon C:stä tuttuja hyödyllisiä rakenteita, on rakennettu ydinkielen päälle. Käännösaikainen metaohjelmointilaajennus tarjoaa Common Lispin kaltaiset makrot ja operaattorin, jolla voidaan eksplisiittisesti ajaa ohjelmakoodia käännösaikana. Neljäs pääosa, syntaksilaajennustoiminnallisuus, muodostaa käännösaikaisen metaohjelmointilaajennuksen kanssa yhdessä metakielen, jolla kieltä voidaan saumattomasti laajentaa. Metakieli osoittautuu tarpeeksi voimakkaaksi, jotta sillä voidaan toteuttaa useimmat laajennetun kielen ominaisuuksista ydinkielen avulla. Vaikka tuloksena saatava kieli ei ole ihanteellisesti sopiva jokapäiväiseen ohjelmointiin, KernelC on mielenkiintoinen kokeilu C-johdannaisten ohjelmointikielten joukossa, jotka harvoin käyttävät hyödykseen metaohjelmointiominaisuuksia.fi
dc.format.extent[6] + 66 s. + liitt. 10
dc.identifier.urihttps://aaltodoc.aalto.fi/handle/123456789/98395
dc.identifier.urnURN:NBN:fi:aalto-2020122357222
dc.language.isoenen
dc.programme.majorOhjelmistotekniikkafi
dc.programme.mcodeT-106fi
dc.rights.accesslevelclosedAccess
dc.subject.keywordcompile-time metaprogrammingen
dc.subject.keywordkäännösaikainen metaohjelmointifi
dc.subject.keywordprogramming language designen
dc.subject.keywordohjelmointikielisuunnittelufi
dc.subject.keywordkernel languagesen
dc.subject.keywordydinkieletfi
dc.subject.keywordcen
dc.subject.keywordcfi
dc.titleCompile-time metaprogramming and its implementationen
dc.titleKäännösaikainen metaohjelmointi ja sen toteutusfi
dc.type.okmG2 Pro gradu, diplomityö
dc.type.ontasotMaster's thesisen
dc.type.ontasotPro gradu -tutkielmafi
dc.type.publicationmasterThesis
local.aalto.digiauthask
local.aalto.digifolderAalto_01770
local.aalto.idinssi40372
local.aalto.inssilocationP1 Ark Aalto
local.aalto.openaccessno

Files