Języki programowania Historia. Przykłady. Wojciech Myszka, Jakub Słowiński 2 grudnia 2011 Krótkie podsumowanie Co wiemy dotychczas: 1. Trochę z historii komputerów & 2. Co to jest komputer. 3. Co to jest automat. 4. Co to jest algorytm. Jak działa komputer 1. Model von Neumanna. 2. Procesor. 3. Arytmetyka, błędy, Odwrotna Notacja Polska. Szukamy 1. Modelu (teoretycznego) obliczeń prowadzonych na komputerze. 2. Sposobu organizowania algorytmów. 3. Metody badania ich efektywności. 4. Metody badania ich poprawności. Postawiony cel 1. Efektywne tworzenie algorytmów. 2. Umiejętność programowania algorytmów (zapisywania w języku zrozumiałym dla komputerów). Języki programowania 1. Analytical Engine 2. Plankalkul Konrad Zuse 3. Kable, lampy, przełączniki & 4. Język wewnętrzny komputera 5. Assembler symboliczne nazwy operacji oraz symboliczne nazwy zmiennych 6. Języki wysokiego poziomu jest ich ponad 2500 http:// people.ku.edu/~nkinners/ LangList/Extras/dialects.htm Główne języki - historia 1957 FORTRAN " John Warner Backus " FORmula TRANslator " stosowany głównie w obliczeniach numerycznych (APDL w Ansysie jako pochodna Fortranu) " Standaryzowany Fortran IV Fortran 66 Fortran 77 Fortran 90 Fortran 95 Fortran 2003 " STALE W UŻYCIU Główne języki - historia 1960 LISP 1958 ALGOL " jeden z najstarszych " ALGOrithmic Language języków programowania " standard opisu algorytmów " chętnie stosowany w w publikacjach naukowych badaniach i rozwoju i podręcznikach sztucznej inteligencji " instrukcje blokowe, " wywodzi się z niego wiele przekazywanie parametrów technik do procedur przez wartość i programistycznych nazwę, rekurencja, tablice struktury drzewiaste dynamiczne, słowa odśmiecanie pamięci kluczowe, typy danych dynamiczne typowanie użytkownika, brak instrukcji " STALE W UŻYCIU I/O Główne języki - historia 1960 COBOL " COmmon Business Oriented Language " 90% operacji finansowych jest IDENTIFICATION DIVISION. obsługiwanych przez programy PROGRAM-ID. HELLO-WORLD. napisane w COBOL-u ENVIRONMENT DIVISION. " doskonała dokumentacja DATA DIVISION. " liczne wady PROCEDURE DIVISION. nadmiernie rozbudowana składnia PARA-1. brak zmiennych lokalnych brak rekurencji DISPLAY "Hello world!". brak dynamicznej alokacji pamięci EXIT PROGRAM. brak programowania END PROGRAM HELLO-WORLD. strukturalnego brak programowania obiektowego " COBOL jest synonimem zła. " STALE W UŻYCIU Główne języki - historia 1962 SIMULA 1962 APL " powstały dwie odmiany tego " A Programming Language języka w Norweskim Ośrodku Obliczeniowym w Oslo: Simula I " język matematyczny i Simula 67 " pierwszy język obiektowy " tworzenie macierzy " Simula jest rozszerzeniem języka Algol 60 " APL posługuje się " pomyślana jako uniwersalny język znakowymi symbolami symulacji " wprowadził pojęcia klas, obiektów, podklas Główne języki - historia 1964 BASIC " Beginner s All-purpose Symbolic Instruction Code " powstał w oparciu o Fortran i ALGOL " język łatwy, wszechstronny, dobra komunikacja z użytkownikiem " niezmiernie popularny istnieje około 200 dialektów " w Polsce popularny ze względu na dostępność na mikrokomputery C-64, Amstrad PC, ATARI i ZX Spectrum Główne języki - historia 1964 PL/I 1966 ISWIM " Programming Language One " If you See What I Mean " powstał dla celów naukowych, " język imperatywny (programy inżynieryjnych i biznesowych imperatywne składają się skupionych wokół firmy IBM z ciągu komend do wykonania " bardzo bogaty zbiór funkcji przez komputer) wbudowanych nie istnieje " wykorzystuje rachunek lambda kompilator uwzględniający (system formalny używany do wszystkie z nich badania zagadnień związanych " służy do przetwarzania informacji, z podstawami matematyki jak rozwiązywania problemów rekurencja, definiowalność (nie)numerycznych funkcji, obliczalność, podstawy " łatwość przedstawiania matematyki, jest przydatny do algorytmów jest predystynowany do rozwiązywania badania algorytmów. skomplikowanych i uniwersalnych zadań, np. zintegrowanych systemów przetwarzania danych Główne języki - historia 1970 PROLOG " Programmation en Logique " język deklaratywny " język programowania logicznego " automatyczna analiza języków naturalnych " dobrze sprawdza się w programach związanych z AI, do tworzenia systemów ekspertowych " na wejściu tworzy się bazę faktów i reguł a następnie tworzy się zapytania " http://www.im.pwr.wroc.pl/~przemko/prolog/ Główne języki - historia 1972 C " Dennis Ritchie " imperatywny i strukturalny " do programowania systemów operacyjnych (1973 - Unix) " tworzony jako prosty i mały język, działa nawet na systemach wbudowanych " komentarze, komentarze blokowe " pętle while, do & while, for " pozwala na wykonywanie niskopoziomowych operacji daje kontrolę nad działaniem komputera, ale wymaga tej wiedzy od programisty " brak odśmiecania pamięci garbage collection " brak operacji na tablicach " brak standardowych bibliotek graficznych (niestandardowe: SDL, Freeglut, Cairo) Główne języki - historia 1972 PASCAL " Niklaus Wirth " bardzo popularny w latach 80. i 90. " Turbo Pascal " zaprojektowany jako język do nauki programowania strukturalnego " 1995 Delphi (Object Pascal) Główne języki - historia 1975 Scheme 1977 OPS5 " Official Production System " język głównie funkcyjny, " język programowania reguł pochodna języka Lisp produkcyjnych " minimalizm " do tworzenia systemów " stosuje notację ekspertowych Aukasiewicza " język wnioskujący w przód " Wnioskowanie w przód " bazuje na rachunku (Modus Ponendo Ponens) to lambda progresywny algorytm " stale rozwijany ostatni sztucznej inteligencji służący standard ogłoszono do tworzenia nowych zdań logicznych na podstawie 28.08.2007 istniejącej bazy faktów /Wikipedia/ Główne języki - historia 1978 CSP 1980 dBASE " pierwszy powszechnie " Communicating stosowany system baz danych Sequential Processes " piłka nożna " formalizm do zapisu " obsługa pętli DO WHILE/ENDDO procesów współbieżnych i warunków logicznych IF/ENDIF " brak kompilatora i " obsługa rekordów USE, SKIP, środowiska do GO TOP, GO BOTTOM uruchamiania " manipulacja rekordami " nadaje się do opisu (REPLACE, STORE), łańcuchami komunikacji w systemach tekstowymi, liczbami, datami, rozproszonych & " manipulacja wieloma " 1983 occam język rekordami/plikami programowania jednocześnie współbieżnego Główne języki - historia 1983 Smalltalk-80 1983 Ada " strukturalny, kompilowany, " opracowany w Xerox Palo imperatywny, obiektowy Alto Research Center " stworzony na zamówienie " wprowadził graficzny Departamentu Obrony USA interfejs użytkownika " język programowania głównie systemów czasu rzeczywistego " język w pełni obiektowy i (przeważnie współbieżnych) reflektywny " bardzo rozbudowany, złożona " refleksja pozwala składnia zarządzać kodem tak " brak pełnego kompilatora dla jakby był on danymi PC (kłopotliwa realizacja współbieżności) " wykorzystywany głównie " standard zapisu programów do celów dydaktycznych współbieżnych w publikacjach naukowych Główne języki - historia 1983 C++ " Opracowany przez Bjarne Stroustrupa w 1983 nazywany pierwotnie jako język C z klasami " C++ (i++ vs ++i) " koncepcje Simuli, Ady, ML dodane do języka C " pierwszy język zorientowany obiektowo, który odniósł komercyjny sukces (lata 90.) " stosowany do tworzenia aplikacji i systemów operacyjnych " bardzo rozbudowana składnia Główne języki - historia 1986 CLP/R 1986 Eiffel " Constraint Logic Programming " język obiektowy " pochodna języka Prolog " stworzenie praktycznego narzędzia do tworzenia " logika z ograniczeniami, na wysokiej jakości wejściu tworzy się bazę faktów oprogramowania i reguł dodając jednocześnie ograniczenia poszukiwanego " Ścisłe rozróżnienie metod rozwiązania a następnie tworzy funkcyjnych i proceduralnych. się zapytania Pierwsze z wymienionych nie mogę modyfikować stanu " umożliwienie rozwiązywania obiektu a zwracane przez nie problemów z liniowymi wartości nie mogą być ograniczeniami w dziedzinie ignorowane. Drugie natomiast, liczb rzeczywistych mogą modyfikować stan lecz " stosowany w biologii nie mogą go ujawniać. molekularnej, finansach, /Wikipedia/ modelowanie fizyczne Główne języki - historia 1988 Mathematica " komercyjny system obliczeń symbolicznych i numerycznych opracowany w 1988 przez Stephena Wolframa. W ciągu przeszło 20 lat istnienia Mathematica stała się bardzo popularna w środowisku naukowców i inżynierów. " szerokie możliwości wizualizacji i prezentacji danych oraz przenośność. Obecnie jest dostępna na większość platform 32- i 64-bitowych " spośród Wolnego Oprogramowania podobne funkcje oferują programy MAXIMA oraz Sage /Wikipedia/ Główne języki - historia 1989 HTML " HyperText Markup Language " Tim Berners-Lee (CERN, 1980) " język znaczników nie język programowania w jego składni nie przewidziano wyrażeń obliczeniowych, warunkowych czy iteracyjnych " pozwala opisać strukturę informacji zawartych wewnątrz strony internetowej " umożliwia określenie wyglądu dokumentu w przeglądarce internetowej " wykorzystuje się pary znaczników umieszczone w nawiasach ostrokątnych, np. i lub
i
" niezależność od systemu operacyjnego i wykorzystywanego sprzętu komputerowego Interpretacja vs. kompilacja " Interpreter program, który czyta kod programu, a następnie realizuje go. " Kompilator (translator) program, który czyta kod programu, a następnie w kilkuetapowym procesie przetwarza go na kod maszynowy. " Nie ma nic takiego jak języki kompilowania czy języki interpretowane; praktycznie każdy język może być zrealizowany w jednej lub drugiej postaci. " Niektóre współczesne interpretery zawierają w sobie fragment kompilatora: we wstępnym etapie przetwarzania program zródłowy konwertowany jest do kodu bajtowego (bytecode) i dopiero interpretowany. " Interpretacja kosztuje sporo czasu & http://www.westnet.com/mirrors/99bottles/beer.html http://99-bottles-of-beer.net/