[nem-pl] projekty
Lukasz Kaiser
kaiser at tenet.pl
Tue Oct 7 16:39:04 CEST 2003
To co napisalem o tych moich projektach.
- lk
-----------------------------------------
-------------- next part --------------
Opis przedmiotu "Konstrukcja j?zyka Nemerle".
J?zyk Nemerle jest nowym funkcjonalnym j?zykiem programowania
umo?liwiaj?cym programowanie obiektowe i zawieraj?cym elementy
imperatywne. J?zyk ten dzia?a na platformie .Net i generuje kod CIL.
Obecnie j?zyk Nemerle jest we wczesnej fazie rozwoju. Przedmiot
zaawansowany "Konstrukcja j?zyka Nemerle" ma na celu stworzenie
pe?nego w miar? mo?liwo?ci ?rodowiska i kompilatora tego j?zyka
(obecnie istnieje kompilator core Nemerle w OCamlu, wi?cej informacji
mo?na znale?? na stronie www.nemerle.org).
Wyk?ady z przedmiotu "Konstrukcja j?zyka Nemerle" maj? na celu
dok?adne zapoznanie uczestnik?w z konstrukcj? tego j?zyka i element?w
?rodowiska kt?re b?d? tworzy?. Planowane s? wyk?ady na temat j?zyka
po?redniego technologii .Net (CIL), systemu typ?w i dziedziczenia oraz
technicznych aspekt?w kompilatora i rozszerze? sk?adniowych.
B?d? te? wyk?ady na temat dokumentowania program?w oraz zadawania ich
semantyki za pomoc? system?w przepisywania term?w.
Zasadnicz? cz??ci? przedmiotu b?dzie udzia? w jednym z projekt?w
programistycznych. Projekty b?d? si? odbywa? w grupach 1-3 osobowych
i ka?da grupa b?dzie mia?a opiekuna uczestnicz?cego w pracy grupy,
odpowiedzialnego za efekt tej pracy oraz daj?cego propozycje ocen dla
cz?onk?w grupy. W ramach wyk?adu ka?da grupa opowie o swoim projekcie
oraz przedstawi efekt pracy prowadz?cemu (ToMaszowi Wierzbickiemu).
Ka?dy projekt musi by? zrealizowany starannie i posiada? czyteln?
dokumentacj?. Poniewa? te cz??ci b?d? p??niej ??czone wymagane jest
tak?e dok?adne okre?lenie interface'?w.
Udzia? w projekcie Nemerle poza ocen? b?dzie oczywi?cie odnotowany na
internetowych stronach projektu i mo?e by? wizyt?wk? w przysz?ej pracy
zawodowej. Nabyte podczas tego przedmiotu umiej?tno?ci pracy zespo?owej
nad projektem programistycznym s? wysoko cenione przy zatrudnieniu,
natomiast znajomo?? podstaw nowoczesnych j?zyk?w programowania niew?tpliwie
rozwinie umiej?tno?ci ka?dego programisty.
Przygotowali?my kilka propozycji projekt?w kt?re mog?yby si? odby? oraz
zakres tego, co chcieliby?my zrobi?. Dok?adny plan zostanie ustalony na
pierwszym wyk?adzie i b?dzie zale?a? tak?e od ilo?ci zapisanych student?w.
Projekty:
1) rozszerzenia i optymalizacje kompiltora Nemerle (opiekun: Micha? Moskal)
* kompilator
- przepisanie kompilatora w Nemerle (mo?liwe, ?e to b?dzie ju? przed wrze?niem zrobione)
- dokumentacja wewn?trzna kompilatora
* rozszerzenia
- wymy?lenie i udokumentowanie jak robi? rozszerzenia kompilatora
- implementacja miedzymordzia do rozszerze? w kompilatorze
- napisanie kilku przyk?adowych rozszerze?
* optymalizacje
- znalezienie lub wymy?lenie jakiej? sensownej reprezentacji po?redniej kodu dla
maszyny stosowej
- modyfikacja generatora kodu w kompilatorze, tak by generowa? t? sensown? reprezentacj?
- implementacja kilku optymalizacji (trzeba patrze? kt?re s? sensowne
(tzn. optymalizator bytekodu ich nie robi))
2) debugger (opiekun: Micha? Moskal)
- wyb?r debuggera (mono-debugger, mo?e co? z tfu, tfu, M$?)
- modyfikacja generatora kodu, by robi? debuginfo w formacje zrozumia?ym dla wybranego
debuggera
- modyfikacja debuggera, by rozumia? wyra?enia w nemerle (?)
3) IDE (opiekun: Grzegorz Stelmaszek)
- wybranie ide (moze emacs? visual studio? inne?)
- syntax highlighting
- formater kodu
- interpreter mogacy wykonywac kod nemerle kawalkami
- tool do refactorowania dla nemerle
4) Asercje i pisanie specyfikacji formalnej (opiekun: Grzegorz Stelmaszek)
- okreslanie asercji (w postaci kodu nemerle oczywiscie) w dowolnym miejscu programu
- wlaczanie i wylaczanie kontroli asercji
- by? mo?e generowanie asercji i prototyp?w funkcji z jakiego? kodu UML
(problem: brak otwartych narz?dzi UML)
5) Nemerle-doc (opiekun: Andrzej Wasylkowski)
- adaptacja systemu javadoc do potrzeb Nemerle
- rozszerzenie o mozliwosc formalnego specyfikowania dzialania funkcji (asercje)
- generowanie dokumentacji z kodu
- style css / szablony xml do automatycznego tworzenia mozliwej do przegl?dania
dokumentacji
6) Biblioteka standardowa (opiekun: Andrzej Wasylkowski)
- adaptacja i rozszerzenie biblioteki standardowej OCamla do potrzeb Nemerle
- dobra dokumentacja biblioteki standardowej oraz u?ycie systemu dokumentacji
do stworzenia przeszukiwalnwj strony z biblioteka standzrdowa
- testy biblioteki oraz ?atwo?ci wyszukania dokumentacji
- napisanie asercji do biblioteki standardowej
- przyk?ady u?ycia biblioteki
7) System automatycznego testowania program?w (opiekun: ?ukasz Kaiser)
- stworzenie narz?dzia umo?liwiaj?cego generowanie takich losowych danych testowych dla
funkcji, kt?re przechodz? przez wszystkie odga??zienia kodu a pewnym poziomie
- automatyczne testowanie zadanych asercji
- integracja z IDE oraz testy, zobaczy? kt?re b??dy si? nie wy?apuj? i jakie rozszerzenie
mo?e pom?c
- testy biblioteki standardowej, kontrola czy asercje w bibliotece wy?apuj? wi?kszo??
b??d?w
8) Semantyka Nemerle za pomoc? TRS (opiekun: ?ukasz Kaiser)
- stworzenie prostego interpretera przepisywania term?w i podstawowych funkcji
umo?liwiaj?cych programowanie (listy, arytmetyka, typy)
- dodanie do interpretera sk?adni Nemerle (wymy?lenie jej reprezentacji termowej)
- integracja z IDE, przek?adanie Nemerle -> TRS
- na podstawie kompilatora Nemerle stworzenie kontroli typ?w r?wnowa?nej z Nemerle
w systemie przepisywania term?w
- implementacja prostych (tylko indukcja, podstwowe symbole logiczne i mo?liwo?? sk?adania
kilku krok?w) metod formalnego dowodzenia asercji i integracja z IDE i komentarzami
More information about the devel-pl
mailing list