Programowanie funkcyjne: Różnice pomiędzy wersjami

Z Studia Informatyczne
Przejdź do nawigacjiPrzejdź do wyszukiwania
Kubica (dyskusja | edycje)
Kubica (dyskusja | edycje)
Linia 19: Linia 19:


=== Zawartość ===
=== Zawartość ===
* Charakterystyka paradygmatu funkcyjnego
* Podstawowe konstrukcje wybranego funkcyjnego języka programowania
* Podstawowe konstrukcje wybranego funkcyjnego języka programowania
** Przyrostowy tryb pracy
** Wyrażenia
** Definicje stałych
** Definicje procedur
** <math>\lambda</math>-abstrakcja
** Procedury rekurencyjne
** Definicje lokalne
** Wyrażenia logiczne i wyrażenia warunkowe
* Typy danych
* Typy danych
** Proste typy wbudowane
** Wzorce i konstruktory
** Produkty kartezjańskie
** Listy
** Deklaracje typów
** Rekordy
** Warianty
** Aliasy we wzorcach
* Wyjątki
* Proceudry wyższych rzędów
* Proceudry wyższych rzędów
** Typy procedur i polimorfizm
** Przykłady procedur wyższych rzędów
** Zastosowania procedur wyższych rzędów
** Procedury wyższych rzędów i listy
* Model obliczeń programów funkcyjnych (uproszczona semantyka operacyjna)
* Model obliczeń programów funkcyjnych (uproszczona semantyka operacyjna)
** Środowiska i ramki
** Semantyka definicji globalnych
** Reprezentacja danych i procedur
** Aplikacja procedur
** Rekurencja ogonowa
** Semantyka definicji lokalnych
** Odśmiecanie
* System typów dla fragmentu języka
* System typów dla fragmentu języka
* Moduły i funktory
* Moduły i funktory
Linia 28: Linia 57:
* Uleniwianie i spamiętywanie
* Uleniwianie i spamiętywanie
* Strumienie
* Strumienie


=== Wytyczne dotyczące sposobu prowadzenia ćwiczeń ===
=== Wytyczne dotyczące sposobu prowadzenia ćwiczeń ===

Wersja z 09:42, 28 sie 2006

Forma zajęć

wykład (30 godz.) + laboratorium (30 godz.)

Opis

Celem przedmiotu jest przedstawienie programowania funkcyjnego – paradygmatu i stylu programowania, oraz towarzyszących mu technik programistycznych. Wykłady obejmują wprowadzenie do wybranego języka funkcyjnego (Ocaml) oraz podstawowe pojęcia i techniki programowania funkcyjnego. Laboratoria obejmują praktyczną naukę programowania funkcyjnego, zwieńczoną realizacją średniej wielkości programu.

Sylabus

Autor

  • Marcin Kubica

Wymagania wstępne

  • Wstęp do programowania
  • Logika i teoria mnogości

Zawartość

  • Charakterystyka paradygmatu funkcyjnego
  • Podstawowe konstrukcje wybranego funkcyjnego języka programowania
    • Przyrostowy tryb pracy
    • Wyrażenia
    • Definicje stałych
    • Definicje procedur
    • λ-abstrakcja
    • Procedury rekurencyjne
    • Definicje lokalne
    • Wyrażenia logiczne i wyrażenia warunkowe
  • Typy danych
    • Proste typy wbudowane
    • Wzorce i konstruktory
    • Produkty kartezjańskie
    • Listy
    • Deklaracje typów
    • Rekordy
    • Warianty
    • Aliasy we wzorcach
  • Wyjątki
  • Proceudry wyższych rzędów
    • Typy procedur i polimorfizm
    • Przykłady procedur wyższych rzędów
    • Zastosowania procedur wyższych rzędów
    • Procedury wyższych rzędów i listy
  • Model obliczeń programów funkcyjnych (uproszczona semantyka operacyjna)
    • Środowiska i ramki
    • Semantyka definicji globalnych
    • Reprezentacja danych i procedur
    • Aplikacja procedur
    • Rekurencja ogonowa
    • Semantyka definicji lokalnych
    • Odśmiecanie
  • System typów dla fragmentu języka
  • Moduły i funktory
  • Konstrukcje imperatywne
  • Uleniwianie i spamiętywanie
  • Strumienie

Wytyczne dotyczące sposobu prowadzenia ćwiczeń

Kolejnym wykładom towarzyszą strony z materiałami do ćwiczeń. Na stronach tych znajdują się zadania podzielone na "prace domowe" i "ćwiczenia". W przypadku studiów internetowych, prace domowe stanowią propozycje zadań, jakie studenci mają rozwiązywać regularnie, a rozwiązania przesyłać do oceny prowadzącemu zajęcia. Zadania umieszczone jako "ćwiczenia" mają charakter uzupełniający.

W przypadku studiów stacjonarnych zarówno prace domowe jak i ćwiczenia stanowią propozycje zadań do wykorzystania w trakcie zajęć laboratoryjnych. Zadań tych jest więcej, niż można rozwiązać w trakcie standardowych 90 minut. Wybór zadań pozostawiamy w rękach prowadzących zajęcia.

Proponujemy, aby mniej więcej w połowie wykładów, gdy studenci poznają już podstawy Ocamla oraz podstawowe techniki programowania funkcyjnego, aby zaprzestać robienia prac domowych lub zadań na rzecz większego programu zaliczeniowego. Najlepiej, aby program zaliczeniowy wykorzystywał któryś z mechanizmów charakterystyczny dla programowania funkcyjnego, np. procedury wyższych rzędów, funktory czy strumienie.

Propozycje zadań egzaminacyjnych

Literatura

  • [AS] H. Abelson, G. J. Sussman, Struktura i interpretacja programów komputerowych, WNT 2002.
  • [L] X. Leroy, The Objective Caml system, [1]
  • [ChMP] E. Chailloux, P. Manoury, B. Pagano, Developing Applications with Objective Caml, [2]
  • [R] D. Rémy, Using, Understanding and Unraveling the Ocaml Language, [3]

Moduły

Tekst gotowy:

Wprowadzone z LaTeXa:

Do testów

Strony przeznaczone do tesowania: