1 Wykład 1 Zakres przedmiotu Obliczenia symboliczne
Transkrypt
1 Wykład 1 Zakres przedmiotu Obliczenia symboliczne
Wykład 1 Zakres przedmiotu „Obliczenia symboliczne II” Co to są obliczenia symboliczne Rodzaje obliczeń symbolicznych Wprowadzenie do języka Icon Obliczenia symboliczne Rodzaje obliczeń obliczenia numeryczne przetwarzanie danych obliczenia symboliczne Zakres przedmiotu Obliczenia symboliczne i ich rodzaje Język Icon Przykłady obliczeń symbolicznych Przetwarzanie języka naturalnego Rodzaje obliczeń symbolicznych Matematyka nienumeryczna Sztuczna (maszynowa) inteligencja W ujęciu Turinga każde obliczenie można sprowadzić do przetwarzania symboli. Matematyka nienumeryczna różniczkowanie symboliczne całkowanie nieoznaczone upraszczanie wyrażeń rozwiązywanie równań, układów równań rozwiązywanie równań różniczkowych przekształcenia Laplace’a analiza obwodów elektrycznych analiza i synteza automatów skończonych ... Sztuczna inteligencja dowodzenie twierdzeń programy symulujące wnioskowanie indukcyjne i przez analogię programy grające w gry (logiczne) przetwarzanie języka naturalnego ... 1 Języki programowania obliczeń symbolicznych Czym jest ICON? Cechy języka: Icon jest językiem programowania wysokiego poziomu, szczególnie nadający się do przetwarzania tekstów i struktur danych. wysoki poziom dynamiczne typy danych dynamiczny przydział pamięci łatwe operowanie na symbolach (tekstach) struktury danych wysokiego poziomu (listy, tablice asocjacyjne, zbiory, itp.) łatwe manipulowanie tymi strukturami Jest językiem imperatywnym, proceduralnym, o składni zbliżonej do języków C i Pascal oraz dużo mocniejszej semantyce. Następca języka Snobol stworzony przez Ralpha Griswolda z Uniwersytetu w Arizonie. Przykładowe języki: Lisp, Prolog, Smalltalk, Python, Icon Literatura i materiały R.E. Griswold, M.T. Griswold „The Icon Programing Language”, PEER-TO-PEER T.W. Christopher „Icon Programing Language Hanbook” C. Jeffery, S. Mohamed, R. Pereda, R. Parlett „Programing with Unicon” Literatura i materiały Strony WWW http://www.cs.arizona.edu/icon http://unicon.sourceforge.net Lista dyskusyjna comp.lang.icon R.E. Griswold, M.T. Griswold „Icon”, WNT 1987 Dziedziny zastosowań przetwarzanie języków naturalnych przekształcanie danych przekształcanie programów komputerowych manipulowanie wzorami formatowanie dokumentów algorytmy sztucznej inteligencji programy jednokrotnego wykonania programy prototypowe Cechy języka różne platformy sprzętowe (przenośność) IDOL - nakładka obiektowa grafika bogata biblioteka IPL „długi” integer struktury danych wysokiego poziomu zaawansowane mechanizmy sterujące 2 Preprocesor języka Icon $define name text $define name (_UNIX, _MSDOS, ...) $undef name $ifdef name kod $else kod $endif $include plik Przykład programu # # program oblicza NWD # procedure main() x:=read() y:=read() while x~=y do if x>y then x:=x-y else y:=y-x write(x) end Oddzielna translacja i łączenie Plik źródłowy: nwd.icn procedure nwd(x,y) while x~=y do if x>y then x:=x-y else y:=y-x return x end Translacja: icont -c nwd Powstają pliki: nwd.u1 nwd.u2 Program główny: prog.icn link nwd procedure main() ... z:=nwd(24,32) ... end Struktura programu import bibliotek deklaracje nowych typów (rekordów) deklaracje zmiennych globalnych procedury (brak zagłębiania) procedura main() Translacja i wykonanie Plik źródłowy: hello.icn procedure main() write(”hello”) end Translacja: Wykonanie: icont hello.icn icont hello ./hello iconx hello Charakterystyka języka Brak deklaracji rezerwujących pamięć Pamięć dla zmiennych przydzielana automatycznie Brak deklaracji zmiennych Automatyczna konwersja typów Program składa się z wyrażeń Wyrażenia kończą się sukcesem lub zawodzą 3 Sukces lub niepowodzenie read() zm:=wyrażenie a<b if a>0 then r:=”dodatnie” else r:=”ujemne” r:=(if a>0 then ”dodatnie” else ”ujemne”) find(s1,s2) write(read()) wiersz:=read() write(wiersz) Struktury sterujące if wyr then wyr_1 if wyr then wyr_1 else wyr_2 case wyr of { wyr_1 : wyr_2 ... ... ... default : wyr_n } Zastosowania pętli while l:=read() do write(l) while write(read()) repeat { ... break wyr } repeat { ... repeat { ... if wyr then break break ... } ... } Sukces lub niepowodzenie procedury procedure power(a,b) return a^b end procedure nsqrt(x) if x>=0 then return sqrt(x) else fail end Struktury sterujące - pętle while wyr1 do wyr2 until wyr1 do wyr2 while not (wyr1) do wyr2 repeat wyr break wyr next Typy danych w Iconie null integer real cset string set list table file procedure co-expression window record 4