Języki programowania


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/


Wyszukiwarka