Zespół opracowujący:
dr inż. Paweł Cichosz (ISE)

Programowanie w języku Common Lisp (PCL)



Wymiar godzinowy zajęć:

W C L P
2 - - 1

Klasy tematyczne:

ISO

Wymagane przedmioty poprzedzające:

Programowanie (PROG) lub Programowanie strukturalne (PROS)

Zalecane przedmioty poprzedzające:

Programowanie 2 (PROG2) lub Programowanie obiektowe (PROO)

Przedmioty podobne:

--

Forma zaliczenia:

E

Semestr wzorcowy (zalecany):

7-9

Słowa kluczowe:

programowanie, języki programowania, sztuczna inteligencja

Cel przedmiotu:

Przedmiot ma na celu zapoznanie studentów z językiem ANSI Common Lisp i zasadami programowania w tym języku. Język ten szczególnie dobrze nadaje się do implementowania przetwarzania symbolicznego i jest często stosowany w sztucznej inteligencji, lecz jest językiem ogólnego przeznaczenia umożliwiającym programowanie w stylu proceduralnym, funkcyjnym i obiektowym. Jego wykorzystanie jest szczególnie godne polecenia, jeśli do łatwości programowania, czytelności i elegancji kodu źródłowego, przenośności oraz niezawodności przywiązuje się większą wagę niż do efektywności.

Treść wykładu:

Wprowadzenie.
Informacje o przedmiocie. Podstawowe informacje o języku Lisp. Przykładowy program. Historia i dzień dzisiejszy języka Lisp. Lisp w sztucznej inteligencji. Dialekt Common Lisp. Inne dialekty. Interpretery i kompilatory Lispa.
Podstawy przetwarzania symboli i list.
Wyrażenia symboliczne i ich wartościowanie. Atomy i listy. Rodzaje atomów. Proste typy danych i operacje na nich. Manipulacje na listach. Listy jako uniwersalne struktury danych.
Funkcje.
Definiowanie funkcji. Parametry i wyniki. Zmienne i ich wiązanie. Funkcje rekurencyjne. Zwiększanie efektywności rekurencji. Funkcje jako dane. Funkcje anonimowe. Programowanie proceduralne i funkcyjne.
Sterowanie wartościowaniem wyrażeń.
Wyrażenia warunkowe. Predykaty. Rodzaje iteracji w Lispie. Iteracja a rekurencja. Rodzina funkcji map.
Nielistowe struktury danych.
Definiowanie wektorów i tablic. Sekwencja jako typ abstrakcyjny. Operacje na tablicach, wektorach i sekwencjach. Definiowanie struktur. Operacje na strukturach. Tablice haszujące.
Operacje wejścia-wyjścia.
Czytanie i pisanie prostych typów danych. Czytanie i pisanie złożonych typów danych. Formatowanie wyjścia. Operacje na plikach.
Makrodefinicje.
Definiowanie makrodefinicji. Wartościowanie makrodefinicji. Rozszerzanie języka za pomocą makrodefinicji.
Obiekty w Lispie.
Klasy. Funkcje abstrakcyjne i metody. Wyjątki i ich obsługa. Programowanie obiektowe.
Zaawansowane mechanizmy języka.
Pakiety. Deklaracje. Kontrola typów. Śledzenie wykonywania wyrażeń. Dostęp do środowiska systemowego.
Lisp od środka.
Interpretacja wyrażeń. Reprezentacja list i wektorów. Zarządzanie pamięcią.
Elegancja i efektywność.
Reguły dobrego stylu w Lispie. Efektywne i nieefektywne konstrukcje języka.
Przykłady programowania (1/4).
Symboliczne obliczenia algebraiczne.
Przykłady programowania (2/4).
Przeszukiwanie heurystyczne.
Przykłady programowania (3/4).
Automatyczne wnioskowanie.
Przykłady programowania (4/4).
Uczenie się.

Sposób oceniania:

Oceny wystawiane będą na podstawie wyników egzaminu (50%) oraz punktacji za projekt (50%).

Zakres projektu:

Projekt polegać będzie na napisaniu w języku Common Lisp kolejno trzech programów o rosnącej złożoności: bardzo prosty (2 tygodnie), prosty (4 tygodnie) i średnio złożony (7 tygodni). Tematy dotyczyć będą przede wszystkim, chociaż nie wyłącznie, zagadnień sztucznej inteligencji.

Literatura:

1.
Steele, G. L. Common Lisp the Language, 2nd Edition. Digital Press, 1990. URL: http://www.cs.cmu.edu/Web/Groups/AI/html/cltl/cltl2.html.
2.
ANSI/X3J13. Programming Language Common Lisp (ANSI X3/226-1994). American National Standards Institute, 1994.
3.
Winston, P. H., Horn, B. K. P. Lisp. Addison-Wesley, 1989.
4.
Norvig, P. Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp. Morgan Kaufmann, 1992.

About this document ...

This document was generated using the LaTeX2HTML translator Version 98.1p1 release (March 2nd, 1998)

Copyright © 1993, 1994, 1995, 1996, 1997, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

The command line arguments were:
latex2html -split 0 -no_navigation -html_version 3.2 pcl-konspekt.tex.

The translation was initiated by Pawel Cichosz on 2000-01-25


Pawel Cichosz
2000-01-25