- Zespół opracowujący:
- dr inż. Paweł Cichosz (ISE)
Programowanie w języku Common Lisp (PCL)
ISO
Programowanie (PROG) lub Programowanie strukturalne (PROS)
Programowanie 2 (PROG2) lub Programowanie obiektowe (PROO)
--
E
7-9
programowanie, języki programowania, sztuczna inteligencja
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.
- 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ę.
Oceny wystawiane będą na podstawie wyników egzaminu (50%) oraz
punktacji za projekt (50%).
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.
- 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.
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