Programowanie w języku Duckling 1000-2M26DUC
Po zakończeniu kursu student powinien być w stanie pisać rozbudowane projekty w języku Duckling, rozumieć istotę technologii na której język Duckling jest oparty, posiadać praktyczne doświadczenie pracy z językiem będącym na bardzo wczesnym etapie rozwoju i rozumieć związane z tym wykorzystywanie C-FFI.
Cele
• Zapoznanie z językiem Duckling, zdolność do tworzenia projektów w języku Duckling.
• Zrozumienie głównych założeń i kluczowych cech Duckling, zdolność do oceny do jakich zadań Duckling jest odpowiedni.
• Zdolność do tworzenia projektów w języku będącym na bardzo wczesnym etapie rozwoju, zdolność do łączenia kodu w Duckling z komponentami udostępnionymi w innych językach (szczególnie w C lub przez C-FFI).
• Zrozumienie obecnego stanu projektu Duckling, dynamiki rozwoju języków programowania i potencjalnego wpływu społeczności na ekosystem i adaptację języka.
• Implementacja w Duckling dużego projektu programistycznego.
Planowana lista zajęć
1. Wstęp do ekosystemu (duck, duckc, DVM, DuckLS), instalacja środowiska, proste programy w Duckling, podstawowe wyrażenia i instrukcje, istota języka.
2. Kluczowe cechy języka Duckling, skryptowość, różne sposoby uruchomienia (w tym notebooks), istota DVM jako narzędzia dla dewelopera, środowisko uruchomieniowe i silnik obliczeń czasu kompilacji.
3. System modułów i paczek, interakcja ze skryptami, praca w Jupyter, praca w REPL, kompilacja przez LLVM oraz przez DVM, napisanie pierwszych dłuższych kodów.
4. Praca z duck i duckc, kompilacja inkrementalna i kompilacja wielowątkowa – zrozumienie zachowania kompilatora.
5. Rozbudowane typy danych: krotki, listy, referencje, typ box oraz klasy, uzupełnienie i wyjaśnienie poprzednio wprowadzonych konstrukcji składniowych.
6. Bez-kolejnościowa semantyka definicji w programie, wpływ takiej semantyki na język, zrozumienie błędów cyklicznych.
7. C-FFI, koncepcja łączenia różnych języków, portowanie przykładowych bibliotek, przypomnienie o dużym projekcie i pokazanie możliwości C-FFI przy nim.
8. Praktyczne użycie dotychczas zdobytej wiedzy przy dłuższym ćwiczeniu programistycznym – pomoc na żywo, zgłaszanie błędów, odkrywanie nowych funkcjonalności.
9. Gramatyka wyrażeń, definiowanie własnych operatorów, funkcjonalności pozwalające tworzyć mini DSLe.
10. Wgląd w bibliotekę standardową.
11. Obliczenia czasu kompilacji, istota DVM w obliczeniach czasu kompilacji, obliczenia czasu kompilacji na typach.
12. Makra, szablony i inne techniki programowania generycznego, generacja kodu a bezkolejnościowa semantyka programu.
13. Pokazywanie, konsultowanie i pomoc z projektami I, wstępna ocena pierwszych iteracji projektów.
14. Ręczne pobieranie i budowanie ekosystemu w celu możliwości pracy z dokładnie wybraną wersją i konfiguracją.
15. Pokazywanie, konsultowanie i pomoc z projektami II.
16. Prezentacja i ocena projektów.
Koordynatorzy przedmiotu
Rodzaj przedmiotu
Tryb prowadzenia
Efekty kształcenia
Wiedza: absolwent zna i rozumie:
• teoretyczne podstawy z zakresu programowania w języku Duckling (K_W02)
• w stopniu ogólnym paradygmat programowania obiektowego (K_W09)
Umiejętności - absolwent potrafi:
• pisać, uruchamiać i testować programy w języku Duckling (K_U05)
• czytać ze zrozumieniem programy zapisane w języku Duckling (K_U06)
Kompetencje społeczne - absolwent jest gotów do:
• krytycznej oceny posiadanej wiedzy i odbieranych treści (K_K01),
• pracy z poszanowaniem uczciwości intelektualnej w działaniach własnych i innych osób; przestrzegania zasad etyki zawodowej i wymagania tego od innych oraz dbałości o dorobek i tradycje zawodu informatyka (K_K02),
• uznawania znaczenia wiedzy w rozwiązywaniu problemów poznawczych i praktycznych oraz wyszukiwania informacji w literaturze oraz zasięgania opinii ekspertów (K_K03).
Kryteria oceniania
Ocena w całości na podstawie projektów programistycznych.
Dwie części oceny:
• małe zadania po wybranych zajęciach (planowo zadanie co 1-2 tyg), wprowadzające praktycznie w poruszane zagadnienia,
• realizacja (w dwóch iteracjach) większego projektu o dowolnej tematyce, do uzgodnienia z prowadzącym.
Literatura
Dokumentacja języka: https://docs.duckling.pl/