581362 Ohjelmointikielten periaatteet keväällä 2007: artikkeli

(Muutettu viimeksi 14.2.2007)

Artikkelit 14.3.-27.4.

Kurssin yhteydessä kirjoitetaan ryhmissä tieteellisluonteinen artikkeli. Artikkeleissa sovelletaan suunnittelumallien (design patterns) dokumentoinnista tuttua kaavaa: valitusta aiheesta dokumentoidaan nimi, ongelma, ratkaisu ja seuraukset.

Miksi tällainen jaoittelu?

Gamma et al. kirjoittavat [GoF95, pp 4]:
Although design patterns describe object-oriented designs, they are based on practical solutions that have been implemented in mainstream object-oriented programming languages like Smalltalk and C++ rather than procedural languages (Pascal, C, Ada) or more dynamic object-oriented languages (CLOS, Dylan, Self).
..
The choice of programming language is important because it influences one's point of view. Our patterns assume Smalltalk/C++-level language features, and that choice determines what can and cannot be implemented easily. If we assumed procedural languages, we might have included design patterns called "Inheritance," "Encapsulation," and "Polymorphism." Similarly, some of our patterns are supported directly by the less common object-oriented languages. CLOS has multi-methods, for example, which lessen the need for a pattern such as Visitor. In fact, there are enough differences between Smalltalk and C++ to mean that some patterns can be expressed more easily in one language than the other. (See Iterator for and example.)

Tämän vuoksi [Gamman ja kumppanien] suunnittelumalleja vastaan on esitetty kritiikkiä, esim [GL98]: nehän ovat vain olemassaolevien oliokielten puutteellisuuksien korjaamista - ja hyviä kandidaatteja uusien kielten ominaisuuksiksi.

Kohdeyleisö ja formaatti

Me käännämme asian toisinpäin: dokumentoimme olemassaolevien kielten ominaisuuksia suunnittelumalli-formaatissa. Artikkelien kirjoittamisessa sovelletaan (toivottavasti!) tuttua ja hyväksi havaittua dokumenttimallia ohjelmointikielten yksittäisten ominaisuuksien kuvaamiseen. Yhtenäisellä rakenteella yritetään toisaalta parantaa kirjoittajien mahdollisuuksia keskittyä 'itse pihvin' esittämiseen ja toisaalta helpottaa lukijoiden mahdollisuuksia tutustua materiaaliin.

Siinä missä Gamma & al olettavat lähtökohdakseen Smalltalk- ja C++-kielet, me suuntaamme kirjoituksemme laitoksen perus- ja jatko-ohjelmointikurssit Javalla käyneelle henkilölle. Kutakin dokumentoitavaa kielen ominaisuutta kuvaillaan Java-ympäristön termein, mahdollisesti esittäen mahdollinen toteutus ko. ominaisuuden simuloimiseksi.

Aikataulu

Artikkeleiden valmistumis- ja esittelyajat ovat työryhmäkohtaisia, samoin opponointien päivämäärät. Artikkelin tulisi valmistua viikkoa ennen allokoitua esityspäivämäärää. Kunkin ryhmän esityksen ajankohta kootaan erilliseen luetteloon

Viitteet


Takaisin kurssin pääsivulle.