Upload
dinhquynh
View
213
Download
0
Embed Size (px)
Citation preview
2
Plan prezentacji iPlan prezentacji i mottomotto
• Plan prezentacji
– Część I z dygresjami
– Część II z zagadkami
– Część III z uzupełnieniami
• Motto
富嶽三十六景 Fugaku Sanjū-Rokkei
Thirty Six Views of Mount Fuji
Hokusai Katsushika (1760-1849)
Sanka haku-u
“Mount Fuji in a Summer Storm”
4
Odwieczne potrzeby człowiekaOdwieczne potrzeby człowieka
• Komunikowanie się
– Język
– Przekaz informacji na odległość
• Liczenie, mierzenie, porównywanie, a także wnioskowanie
– Matematyka
• Rozwiązywanie zadań
– Algorytmy
5
AlgorytmyAlgorytmy
• Termin — od zlatynizowanej formy nazwiska uczonego arabskiego Al-Chuwarizmi, przełom VIII i IX wieku
– Muhammad ibn Musa al-Chorezmi / Alchwarizmi
– أبو عبد هللا محمد بن موسى الخوارزمي
• Algorytm Euklidesa (przełom IV i III w.p.n.e.)
• Wczesne techniki, narzędzia i urządzenia wspomagające liczenie i realizacje algorytmów
– Palce, abakus, liczydła (szczoty w Rosji, suanpan w Chinach, soroban w Japonii)
– Pałeczki Nepera (Napiera)
– Suwaki, kalkulatory
6
Definicje sprzed wiekuDefinicje sprzed wieku
[WEPI ] tom XXXIII, 1903, str. 266-278:
• Język, w znaczeniu lingwistycznym, językoznawczym, w znaczeniu mowy ludzkiej. Nazwa ta stosuje się pod wpływem przenośni, […] w znaczeniu całej czynności, w znaczeniu procesu i całości mówienia.
• Oczywiście nazwa ta zjawiła się wtedy, kiedy język, w ustach ludzkich umieszczony, stał się istotnie głównym narzędziem wymawiania. W pierwocinach ludzkości, kiedy wymawianie było umiejscowione głębiej, przeważnie w krtani, trudniej mogłoby się dokonać podobne rozszerzenie nazwy języka.
7
Definicje sprzed wieku, c.d.Definicje sprzed wieku, c.d.
(język = mowa)(język = mowa)
• Skojarzenie nazwy języka, jako głównego narzędzia wymawiania, z nazwą języka, jako mowy ludzkiej widoczne jest w wyrażeniach:
– „długi język”
– „miele językiem”
– „na końcu języka”
– „ciągnąć kogo za język”
– „język mu skołowaciał”
8
Definicje sprzed wieku, c.d.Definicje sprzed wieku, c.d.
(język = mowa)(język = mowa)
• Następnie język jest to mowa, która odróżnia, z
jednej strony, człowieka od człowieka
(mówienie indywidualne), plemię od plemienia,
naród od narodu (język w ścisłym znaczeniu), z
drugiej zaś strony, ludzkość czyli rodzaj ludzki
w ogóle (mowa ludzka) od wszystkich innych
zwierząt. [...]
9
Definicje sprzed wieku, c.d.Definicje sprzed wieku, c.d.
(język = pismo)(język = pismo)
• Język, w najobszerniejszym znaczeniu tego
wyrazu, w znaczeniu przenośnym, oznacza
wszelkie sposoby porozumiewania się, a więc
wszelką mimikę i giesty (język palców itp.),
pismo (język znaków itp.), głosy mimowolne i
odruchowe [...]
10
Definicje sprzed wieku, c.d.Definicje sprzed wieku, c.d.
(alfabet)(alfabet)
• Alfabet, ob. Abecadło
• Abecadłem nazywa się zbiór wszystkich znaków piśmiennych, albo liter na wyrażenie pojedyńczych dźwięków pewnego języka, ułożony w pewien zwyczajem ustalony porządek. Nazwa ta wzięła początek od brzmienia w mowie naszej trzech pierwszych głosek a b c w połączeniu z przyrostkiem –dło (pochodnym –adło) – Dawniejszą od tego wyrazu jest nazwa grecka alfabet,
utworzona z nazw dwóch początkowych liter w abecadle greckim alfa, beta, odpowiadającym naszym a b
19
Zagadka 2Zagadka 2
• tai, dai, ookii oraz nin, jin, hito
• Co to znaczy i jak czytamy?
• Znaczy „dorosły”
• Czytamy: … otona
– Czyli bez żadnego związku z
tai, dai, ookii, nin, jin, hito!
23
Mnogość języków naturalnychMnogość języków naturalnych
• Na świecie istnieje obecnie około 3000 języków
• Wieża Babel
– wg biblijnej Księgi Rodzaju wieża, jaką zaczęto
wznosić w ziemi Szinear w Babilonie (po hebrajsku
Babel) z zamiarem, by sięgnęła nieba
– „Rozgniewany zuchwałością budowniczych Bóg
sprawił, że zaczęli mówić różnymi językami i nie
mogąc się porozumieć, musieli przerwać budowę”
24
Języki naturalne a języki sztuczneJęzyki naturalne a języki sztuczne
• Spontaniczność języków naturalnych
• Języki sztuczne
– Próby opracowania języków „uniwersalnych” (Esperanto)
– Języki naukowe
– Języki programowania
• Semantyka a syntaktyka (co pierwotne, co wtórne)
25
Język programowaniaJęzyk programowania: notacjanotacja do zapisu do zapisu
algorytmówalgorytmów w celu ich wykonania przez w celu ich wykonania przez
komputerkomputer
• Notacja – Syntaktyka (składnia)
– Semantyka (znaczenie)
• Algorytmy – Obiekty
– Operacje
– Złożoność
• Komputery – Translacja (kompilacja lub interpretacja)
26
ENIACENIAC
• Electronic Numerical Integrator And Computer
• 1943-45 (14 lutego 1946)
• 30 ton, 17468 lamp
• Arytmetyka dziesiętna
• Brak pamięci operacyjnej
• Programowanie: wtyki kablowe (później karty perforowane)
27
Języki niskiego poziomuJęzyki niskiego poziomu
• Języki wewnętrzne
– Rozkazy procesora (ubogi repertuar!)
– Notacja zerojedynkowa (mało czytelny zapis!)
• Asemblery
– Czytelniejszy zapis
– Proste tłumaczenie („jeden do jednego”)
• Wczesne algorytmy
– Problemy naukowe (głównie dla celów militarnych)
– Wyselekcjonowana grupa ekspertów
29
Języki wysokiego poziomuJęzyki wysokiego poziomu • Języki zewnętrzne
• Fortran
– FORmula TRANslator
– Podejście „wstępujące” (ang. bottom-up), IBM 704
– John Backus, 1954-57, BNF
– Fortran IV, Fortran 77, Fortran 90, Fortran 2003
• Algol 60
– ALGOrithmic Language
– Podejście „zstępujące” (ang. top-down)
– Peter Naur, 1958-62, BNF
– Wersja wzorcowa i konkretne realizacje
30
GIER (1962)GIER (1962)
• Tranzystory
• Parametry GIERa
– Pamięć
operacyjna
– Bęben
• Gier Algol
• „Granie na bitach”
• Taśma papierowa
31
Języki wysokiego poziomuJęzyki wysokiego poziomu, c.d.
• Cobol
– COmmon Business Oriented Language
– Grace Murrey Hopper, 1959
• Kontradmirał marynarki wojennej USA
• „In 1951 she discovered the first computer ‘bug’. It was a real moth, which she pasted into the UNIVAC I logbook”
• Lisp • LISt Processing
• John McCarthy, 1958
• Implementacja z 1960 roku na IBM 704 (car, cdr)
• Lisp 1.5, Mlisp, Interlisp, Common Lisp, Scheme
32
„Ruszyła maszyna”„Ruszyła maszyna”
• Peter Landin, CACM 9(3), 1966: „The Next 700 Programming Languages”
• Przykłady innych ważnych języków
– PL/I
– Basic
– Lisp
– Logo
– Algol 68
– C, C++
– Pascal, Modula, Oberon
– Ada
33
OsborneOsborne--1 (1981)1 (1981)
• Mikrokomputery
• Układy scalone
• Protoplasta laptopa
• Parametry takie jak
GIER!
• Dołączane urządzenia
• CP/M, baza danych,
arkusz, edytor, Pascal, ...
36
Architektura von NeumannaArchitektura von Neumanna
• Główna idea: nie wyodrębnia się oddzielnej
pamięci dla danych i oddzielnej dla rozkazów
– Ten sam ciąg zer i jedynek w tym samym miejscu
pamięci operacyjnej może w ramach tego samego
programu być różnie interpretowany
• Programy mogą się same modyfikować!
• Sekwencyjna realizacja instrukcji
37
Podstawowe paradygmaty Podstawowe paradygmaty
programowaniaprogramowania
• Programowanie imperatywne
– Polecenia, zmienne, ...
– Języki wewnętrzne
– SAKO, Fortran, Algol, Cobol, Pascal, C, ...
• Programowanie funkcyjne
– Ewaluacja funkcji
– Rachunek lambda z typami
– IPL i Lisp, ML, SML, Miranda, F#, ...
38
Podstawowe paradygmaty Podstawowe paradygmaty
programowania, c.d.programowania, c.d. • Programowanie w logice
– Weryfikowanie relacji i formuł logicznych
– Prolog, 1972, Alain Colmerauer
– Sztuczna inteligencja, „komputery piątej generacji”
– „Konkubinat” z językami funkcyjnymi (Mercury)
• Programowanie obiektowe
– Modularyzacja, hermetyzacja (sekrety)
– Simula 67, Ole-Johan Dahl i Kristen Nygaard
– Obiekty, klasy, dziedziczenie, polimorfizm
– Smalltalk, Loglan, C++, Delphi, Java
39
Era Pascala Era Pascala • Niklaus Wirth
– Euler, Algol W
– Pascal (1971)
• „Strzał w dziesiątkę”
– Elegancja, prostota, łatwość kompilacji
– Światowy standard w edukacji
• Programowanie strukturalne, poprawność
• Wersje Pascala
– Turbo Pascal, Borland Pascal
– Delphi
40
Programowanie współbieżneProgramowanie współbieżne
• Procesy sekwencyjne
• Procesy współbieżne
• Synchronizacja i komunikacja
• Klasyczne problemy
– Zakleszczenie (blokada), zagłodzenie, ścieżka krytyczna
• Sieci, protokoły
• Mechanizmy, modele, języki
– Semafory, monitory, CSP, Concurrent Pascal, Ada, ...
41
Era JavyEra Javy • Narodziny Javy
– Popularność paradygmatu obiektowego
– Uproszczony, zmodyfikowany i przenośny C++
– Oak, 1992, James Gosling (Sun Microsystems)
– Java, 1995
• Najważniejsze wyróżniki Javy
– Niezależność od sprzętu
– Niezależność od systemu operacyjnego
– Możliwość uruchamiania programów w przeglądarkach internetowych
• Ekspansja Javy
– Podzbiór dla celów edukacyjnych
42
I dokąd zdążamy?I dokąd zdążamy? • Nowe wyzwania
– Rozwój technologii teleinformatycznej
– „Multimedialne kombajny”
– Nowatorskie zastosowania
• Różności
– Nowe paradygmaty programowania (np. aspektowe)
– Nowe paradygmaty tworzenia aplikacji (np. .NET )
– Komponenty
– Języki związane z przeglądarkami (np. HTML, XML, PHP)
– Interfejsy!
– ...
• I ciągle będzie coś nowego!
43
WizjonerzyWizjonerzy
• Stanisław Lem
– Niezliczone dzieła, prekursor wirtualnej rzeczywistości
• Marian Załucki, „Wiersz cybernetyczny” (1961)
– Także ocena krajowych możliwości produkcyjnych
• Włodzisław Duch, przewidywania na lata 2030-2050
(www.fizyka.umk.pl/~duch/)
44
A na koniec A na koniec ——
muśnięcie historiimuśnięcie historii
(12 wielkich postaci)(12 wielkich postaci)
45
Wybrani pionierzyWybrani pionierzy
• Blaise Pascal (1623-1662) – Francuski matematyk, fizyk, filozof i teolog
– Pascalina (dodawanie i odejmowanie) • {Zapomniany Wilhelm Schickard (1592-1635); cztery działania}
• Gottfried Wilhelm Leibniz (1646-1716) – Niemiecki matematyk, filozof, inżynier i historyk
– Mechanizm mnożenia i dzielenia dodany do Pascaliny
– Odkrył na nowo system dwójkowy
• Joseph-Marie Jacquard (1752-1834) – Francuski tkacz i wynalazca
– Sterowanie krosnem tkackim za pomocą kart perforowanych
46
Pionierzy, c.d.Pionierzy, c.d.
• Abraham Stern (1769-1842) – Polski zegarmistrz i uczony (dziadek Słonimskiego)
– Pierwszy na świecie arytmometr pięciodziałaniowy
• Charles Babbage (1791-1871) – Angielski matematyk, „ojciec komputera”
– Projektant maszyny różnicowej oraz maszyny analitycznej
• Augusta Ada, hrabina Lovelace (1815-1852) – Angielska matematyczka, córka Lorda Byrona
– Metoda obliczania liczb Bernoulliego
– „Pierwsza programistka świata”
47
Pionierzy, c.d.Pionierzy, c.d.
• George Boole (1815-1864) – Angielski matematyk i filozof
– Algebra dla zbioru dwuelementowego (algebra Boole’a)
• Herman Hollerith (1860-1929) – Amerykański wynalazca
– Mechaniczny system przetwarzania danych
– Spis ludności (USA 1890, Kanada 1891 i Rosja 1897)
• Jan Łukasiewicz (1878-1956) – Polski logik, matematyk i filozof
– Notacja beznawiasowa (ONP)
– Logika trójwartościowa
48
Pionierzy, dokończeniePionierzy, dokończenie • Walther Wilhelm Georg Bothe (1891-1957)
– Niemiecki fizyk jądrowy
– Pierwsza elektroniczna bramka logiczna AND (1924)
– Laureat nagrody Nobla (1954)
• John (János) von Neumann (1903-1957) – Amerykański (węgierski) matematyk, chemik i fizyk
– Współdzielenie pamięci przez program i dane
– System binarny zamiast dziesiętnego
• Alan M. Turing (1912-1954) – Angielski matematyk
– Teoretyczny model obliczeń (maszyna Turinga; 1936)
– Sztuczna inteligencja (test Turinga; 1950)
49
Dziękuję za uwagę Dziękuję za uwagę ── jeszcze tylko jeszcze tylko
źródła źródła Publikacje „papierowe”Publikacje „papierowe” •• David Diringer, David Diringer, Alfabet czyli klucz do dziejów ludzkościAlfabet czyli klucz do dziejów ludzkości, Państwowy Instytut , Państwowy Instytut
Wydawniczy, Warszawa, 1972Wydawniczy, Warszawa, 1972
•• F. J. Granowski i S. J. Sikorski (wyd.), F. J. Granowski i S. J. Sikorski (wyd.), Wielka Encyklopedia Powszechna Wielka Encyklopedia Powszechna IlustrowanaIlustrowana, (55 tomów, przerwana na haśle „Patroklos”), (55 tomów, przerwana na haśle „Patroklos”), , 1880 1880 –– 1914 1914
•• Jan Madey, Jan Madey, Czy to sen, czy Java? O ewolucji języków programowaniaCzy to sen, czy Java? O ewolucji języków programowania, w: M. M. , w: M. M. Sysło (red.), XX Konferencja Informatyka w Szkole, Wrocław, 2004 Sysło (red.), XX Konferencja Informatyka w Szkole, Wrocław, 2004
•• Michael Marcotty, Henry Ledgard: Michael Marcotty, Henry Ledgard: The World of Programming LanguagesThe World of Programming Languages, , SpringerSpringer--Verlag, 1987 (polskie wydanie: Verlag, 1987 (polskie wydanie: W kręgu języków programowaniaW kręgu języków programowania, , Wydawnictwa NaukowoWydawnictwa Naukowo--Techniczne, Warszawa 1991)Techniczne, Warszawa 1991)
•• Oreste Vaccari, Enko Elisa Vaccari, Oreste Vaccari, Enko Elisa Vaccari, Pictorial ChinesePictorial Chinese--Japanese CharactersJapanese Characters, , Sixth Edition, Vaccari’s Language Institute, Tokyo, 1968Sixth Edition, Vaccari’s Language Institute, Tokyo, 1968
Różne witryny internetoweRóżne witryny internetowe