View
225
Download
0
Category
Preview:
Citation preview
Translacja i translatory
Translacja
Program w języku niskiego poziomu – ciąg instrukcji wykonywany bezpośrednio przez procesor lub maszynęcyfrową
Program w języku wysokiego poziomu – wymaga przetłumaczenia na ciąg instrukcji zrozumiałych dla maszyny cyfrowej która ten program ma wykonać
Translacja
Proces tłumaczenia nosi nazwę translacji.
Translacja to przekład tekstów zredagowanych w jednym języku zwanym źródłowym na równoważny semantycznie tekst w innym języku zwanym wynikowym.
Translacja
W przypadku gdy dany język wysokiego poziomu ma stosunkowo łatwą gramatykę, translacja może byćwykonana samoczynnie przez maszynę cyfrową przy pomocy specjalnego programu translacji zwanego translatorem.
Translacja
Translatory dzielimy zazwyczaj na dwie kategorie:
kompilatory
interpretatory.
Translacja
Kompilator jest translatorem, operującym na całym tekście programu źródłowego generując tekst przekładu jako całość
Interpreter operuje na poszczególnych jednostkach syntaktycznych programu źródłowego i generuje ich przekłady.
Translacja
Jeśli wykonywamy program początkowo zapisany w języku zewnętrznym to używając kompilatora:
możemy przystąpić do wykonania programu w postaci docelowej dopiero po zakończeniu translacji.
Oznacza to, że uzyskany tekst będący przekładem tekstu źródłowego w całości wprowadzany jest do maszyny cyfrowej;
Translacja
Jeśli wykonywamy program początkowo zapisany w języku zewnętrznym to używając interpretatora:
możemy wykonywać przekłady poszczególnych jednostek syntaktycznych, nie czekając na cały proces translacji.
Oznacza to, że cały czas operujemy na tekście źródłowym tłumacząc tylko te jednostki syntaktyczne, które są potrzebne aby poszczególny fragment programu mógł zadziałać.
Translacja
Translacja
W praktyce rzadko dokonuje się bezpośredniej translacji programów z języka zewnętrznego na język maszynowy.
Najczęściej stosuje się proces pośredni
najpierw dokonuje się translacji z języka zewnętrznego na język asemblerowy
potem z języka asemblerowego na język maszynowy.
Zastosowanie dwuetapowej translacji niesie za sobąwiele zalet, m.in. możliwość łączenia poszczególnych części programów zapisanych w różnych językach zewnętrznych.
Schematyczny przebieg powstawania programu
pomysłalgorytm
programowanie
programowanie w języku wysokiego poziomu
kompilacja
program w języku symbolicznym
kod maszynowy
programista (człowiek)
algorytm oprogramowany
kompilator (program)
komputer
Stos i ONP
Bardzo ważnymi pojęciami bez których trudne byłoby zrozumienie zasad jakiejkolwiek translacji są :
stos
odwrotna notacja polska (ONP).
StosStos – jest to organizacja sekwencyjna pamięci operacyjnej maszyny cyfrowej.
Stos działa jak pojemnik określonych jednostek, przy czym pobieranie elementów w nim zgromadzonych odbywa się w kolejności odwrotnej do magazynowania.
Jest to struktura LIFO
Dla stosu określa się dwie podstawowe operacje:
dopisz a na stosie - w wyniku wykonania tej operacji jednostka a zostaje umieszczona na szczycie stosu (staje się pierwszym elementem stosu)
odczytaj a ze stosu - w wyniku wykonania tej operacji jednostka a zostaje wydana na zewnątrz stosu.
Odwrotna Notacja Polska (ONP)
jeden z wariantów beznawiasowego zapisu wyrażeńformalnych, wynalezionego przez polskiego logika Jana Łukasiewicza (1878-1956).
w tym beznawiasowym zapisie symbole operandów poprzedzają bezpośrednio symbol operatora (notacja przyrostkowa) na przykład wyrażenie:
a+b zapisujemy w ONP jako a b +
Odwrotna Notacja Polska (ONP)
Wyróżniamy trzy rodzaje notacji:
Infiksową : a + b
Prefiksową: + a b
Postfiksową: a b +
Odwrotna Notacja Polska (ONP)
ze względu na łatwość obliczania wyrażeń zapisanych w ONP przy użyciu stosu znalazła ona szerokie zastosowanie w arytmetyce komputerów
Wyrażenia arytmetyczne w ONP
Przykłady prostych wyrażeń arytmetycznych i odpowiadający im zapis w ONP:
1. ( a + b ) * d ≡ a b + d *
2. ( a + ( b * c ) ) ≡ a b c * +
3. ( ( a + b ) * ( z + x ) ) ≡ a b + z x + *
4. ( ( a + t ) * ( ( b + ( a + c ) ) ^ ( c + d ) ) ) ≡
a t + b a c + + c d + ^ *
Gramatyka generująca wyrażenie arytmetyczne
Gramatyka G = < V, T, P, S > generująca proste wyrażenia arytmetyczne, np. (a + b ) * d
V = {a, b, d, +, *, (, )}
T = {W, K, C}
Semantyka powyższych symboli jest następująca:
W – wyrażenie; K - składnik, C – czynnik;
Symbol startowy S: S = W
P = { r1, …, r10}
Lista produkcji i BNFLista produkcji:
r1: W → K r2: W → W + K r3: W → K + W
r4: K → C r5: S → C * K r6: S → K * C
r7: C → a r8: C → b r9: C → d
r10: C → ( W )
Zapis w notacji BNF:
<W> ::= <K> | <W> + <K> | <K> + <W>
<K> ::= <C> | <C> * <K> | <K> * <C>
<C> ::= ( <W> ) | a | b | d
Wyrażenie arytmetyczne w ONP
Zapis w notacji BNF:
<W> ::= <K> | <W> + <K> | <K> + <W>
<K> ::= <C> | <C> * <K> | <K> * <C>
<C> ::= ( <W> ) | a | b | d
Gramatyka prostych wyrażeń arytmetycznych w ONP:
<W> ::= <W> <W> <O> | <X>
<X> ::= a | b | d
<O> ::= + | *
Obliczanie wartości w ONP
Pobieramy po kolei symbole wyrażenia od lewej strony do prawej;
Jeżeli symbol jest liczbą (zmienną), to odkładamy go na stos;
Jeżeli symbol jest opisem operacji - pobieramy dwa elementy ze stosu, wykonujemy te operacje, a wynik przesyłamy z powrotem na stos.
Czynności te wykonujemy aż do wyczerpania się danych wejściowych.
Obliczana wartość wyrażenia znajduje się na stosie.
Obliczanie wartości w ONP
start
pobierz symbol z lewej ku prawej
argument stos
operatorpobierz argumenty ze stosu, wykonaj działanie, wynik na stos
φbłąd KONIEC
NN
N T
T
T
ONP - przykład obliczania wartościObliczyć wartość wyrażenia: 2 3 4 5 + * +
Posługujemy się tabelką.
Przedstawimy symbole pojawiające się kolejno na wejściu oraz zawartość stosu po każdym obiegu pętli głównej algorytmu obliczającego wyrażenie.
Obliczanie wartości wyrażenia - przykład
Obliczyć wartość wyrażenia: 2 7 + 3 / 14 3 - 4 * + 2 /
Translacja wyrażeń arytmetycznych
Współczesne podejście translacji wyrażeń arytmetycznych polega na wydzieleniu dwu etapów translacji:
translacja do ONP
translacja ONP na język symboliczny
W celu zobrazowania translacji do ONP przyjmujemy, że:
źródłowy zapis wyrażeń arytmetycznych pojawia sięna wejściu specjalnego automatu.
na wyjściu uzyskamy zapis ONP tych wyrażeń, sam zaś automat wyposażony jest w pamięć stosową:
Model automatu ze stosem do translacji wyrażeńarytmetycznych
Wyrażenie arytmetyczne
Automat ze stosem
ONP wyrażenia arytmetycznego
Translacja wyrażeń arytmetycznych
Podczas translacji wyrażeńarytmetycznych szczególnej analizie poddawane sąsymbole operacji (+,-,*,itp.) zwane ogranicznikami
Wprowadza się dodatkowo listę priorytetów ograniczników
Translacja wyrażeń arytmetycznych
3Dodawanie, odejmowanie (+, -)
2
Mnożenie, dzielenie, negacja( *, / ,⎯ )
1Potęgowanie ( ↑ )
0Funkcja (lg, sin, exp, ...)
PriorytetOperator
Wzrost priorytetu
Pobieramy kolejne znaki wyrażenia, które ma zostaćprzekształcone znak po znaku, począwszy od lewej strony.
Dalsze postępowanie zależy od symbolu. Jeśli pobrany znak jest:
argumentem, to należy przesłać go na wyjście,
nawiasem otwierającym „(” , to należy położyć go na stos,
nawiasem zamykającym „)”, to zawartość stosu, aż do napotkanego znaku „(” należy przesłać na wyjście i usunąć nawias „(”,
Algorytm działania automatu do translacji
operatorem, to przeglądamy zawartość stosu w poszukiwaniu operatora o wyższym priorytecie :
jeśli taki znajdziemy, to przesyłamy zawartość stosu na wyjście, zaś nowy operator wkładamy na stos, jeśli nie, operator odkładamy na stos. stos przeszukujemy do napotkania nawiasu „(” lub do końca stosu, jeżeli nawias nie występuje.jeżeli nawias „(” wystąpił i znaleźliśmy przed nim operator o wyższym priorytecie, to na wyjście trafia wszystko ze stosu do „(”, ale sam nawias zostaje na stosie,
Algorytm działania automatu do translacji
znacznikiem końca wprowadzanego napisu, to kopiujemy zawartość stosu na wyjście, w przeciwnym wypadku sygnalizujemy błąd.
Przetwarzanie kończymy w momencie napotkania znacznika końca napisu wejściowego.
Nawiasów „(” i „)” nie kopiujemy na wyjście.
Algorytm działania automatu do translacji
start
pobierz symbol z lewej ku prawej
argument wyjście
Zawartość stosu do ( lub do dna na wyjście, po czym operator na stos
φbłądKONIEC
N
N
N T
T
T
( stos
N
T
)Zawartość stosu aż do (
na wyjście
N
T
stos
operator
N
T
Stos na wyjście
Czy wyższy w stosie do ( lub
dna
Dokonać konwersji wyrażenia (((a))+b+d)*(d+e)na ONP
Przykład konwersji (1)
Otrzymaliśmy na wyjściu ciąg: abd++de+*
Dokonać konwersji wyrażenia
b * c + ( d - e*k )na ONP
Przykład konwersji (2)
Otrzymaliśmy na wyjściu ciąg: b c d e k * - + *
Dokonać konwersji wyrażenia
( ( a + b ) – ( 3 * x + 7 * y ) ) na ONP
Przykład konwersji (3)
Otrzymaliśmy na wyjściu ciąg: a b + 3 x * 7 y * + -
Dokonać konwersji wyrażenia
( ( a + t ) * ( ( b + ( a + c ) ) ^ ( c + d ) ) )na ONP
Przykład konwersji (4)
Otrzymaliśmy na wyjściu ciąg:
a t + b a c + + c d + ^ *
Języki programowania
Język programowania jest to usystematyzowany sposób przekazywania komputerowi poleceń do wykonania
Język programowania pozwala na dokładny zapis algorytmów oraz innych zadań jakie komputer ma wykonać
Język programowania
Składnia języka określa:
sposób opisywania struktur sterujących
sposób opisywania struktur danych
sposób tworzenia poprawnych symboli do nazywania zmiennych i struktur danych
sposób stosowania interpunkcji, tj. znaków typu spacje, średniki, kropki, nawiasy
sposób budowy poprawnych wyrażeń
Semantyka języka określa znaczenie poprawnych składniowo wyrażeń
Język programowania
Języki programowania można podzielić na pięć wyraźnie różniących się generacji (niektórzy mówią o czterech).
Generacje języków opisują zaawansowanie (rozbudowanie) struktury języka, co jest równocześnie związane z łatwością posługiwania się nimi
Generacje języków
Programowanie pierwszych komputerów akceptujących zmianę oprogramowania odbywało się bezpośrednio w kodzie binarnym, który można przedstawić jako ciągi zer i jedynek. Każdy typ komputera operuje własnym kodem, który dlatego został określony nazwą język maszynowy lub wewnętrzny.Jest to główna wada tych języków, gdyż programista każdorazowo musi dostosowywać się do języka konkretnej maszyny.
Przykład:001010100101101101000101011011010110100010111 000100001001111000010101111100001010101000001
I generacja
Ponieważ operowanie ciągami zero-jedynkowymi nie jest wygodne dla programisty, przypisano im łatwiejsze do zrozumienia znaki mnemotechniczne. Tak narodziły się języki symboliczne, zwane teżasemblerami. Choć stanowią one proste tłumaczenie języka maszynowego na symbole i są ściśle związane z danym modelem komputera, to ułatwiają pisanie instrukcji i czynią je bardziej czytelnymi.
Przykład:mov dx, offset infomov ah, 9int 21hmov ah, 0int 16h
II generacja
Języki wysokiego poziomu - symbole asemblera reprezentujące konkretne instrukcje zostały zastąpione kodem nie związanym z maszyną, bardziej zbliżonym do języka naturalnego lub matematycznego.
Są to języki ogólnego przeznaczenia o dużym stopniu uniwersalności; ich rozwój ewoluował w kierunku języków problemowo zorientowanych
Przykład:for i:=1 to MaxN dobeginVx[i]:=Vx[i]+dx[i];end;
III generacja
Na czwartą generację języków programowania składa sięszereg narzędzi, które umożliwiają budowę prostych aplikacji przez zestawianie „prefabrykowanych” modułów.
Obecnie wielu specjalistów uważa, że nie są to języki programowania w ścisłym znaczeniu, gdyż częstokroćstanowią jedynie rozszerzenie języków już istniejących.
Niektórzy autorzy proponują stosować nazwę „czwarta generacja” wyłącznie w odniesieniu do programowania obiektowego (OOP).
IV generacja
Nazwę „język piątej generacji” stosuje się czasem w odniesieniu do języków używanych do tworzenia programów wykorzystujących tzw. sztucznąinteligencję (AI) lub inaczej systemów ekspertowych.
V generacja
Generacje języków
Paradygmat programowania to ogół oczekiwańprogramisty wobec języka programowania i komputera, na którym będzie działał program.
Paradygmaty programowania
Paradygmaty programowania
Programowanie imperatywne
opisujemy kolejne czynności, które wykonawca (komputer) ma wykonać, by osiągnąć cel
w tym rodzaju programowaniu programista opisuje, jak komputer ma działać
Programowanie deklaratywne
opisujemy cel, który wykonawca (komputer) ma osiągnąć
w tym rodzaju programowaniu programista opisuje, co komputer ma osiągnąć
Paradygmaty programowania
Najbardziej pierwotny sposób programowania, w którym program postrzegany jest jako ciąg poleceń dla komputera
Obliczenia rozumiemy tu jako sekwencję poleceńzmieniających krok po kroku stan maszyny, aż do uzyskania oczekiwanego wyniku
Stan maszyny należy z kolei rozumieć jako zawartośćcałej pamięci oraz rejestrów i znaczników procesora
Programowanie imperatywne
Ten sposób patrzenia na programy związany jest ściśle z budową sprzętu komputerowego o architekturze von Neumanna, w którym poszczególne instrukcje (w kodzie maszynowym) to właśnie polecenia zmieniające ów globalny stan
Programowanie imperatywne
Języki wyższego (w stosunku do asemblera i kodu maszynowego) poziomu — takie jak Fortran, Algol, Pascal, Ada lub C — posługują się pewnymi abstrakcjami, ale wciąż odpowiadają paradygmatowi programowania imperatywnego
Instrukcje podstawienia działają na danych pobranych z pamięci i umieszczają wynik w tejże pamięci, zaśabstrakcją komórek pamięci są zmienne
Programowanie imperatywne
Paradygmaty programowania
Podział zadania programistycznego na podzadania i ich niezależna (od siebie nawzajem) implementacja w postaci podprogramów (procedur)
Niezalecanie korzystania z efektów ubocznych (rozumianych w sensie tradycyjnym, jako zmiana wartości zmiennych globalnych), lecz przekazywanie danych i wyników w parametrach procedur
Metodologia programowania bottom-up
Programowanie proceduralne
Programowanie proceduralne
Paradygmaty programowania
Używanie prostych, dobrze zdefiniowanych struktur (konstrukcji programistycznych):
sekwencja
selekcja (instrukcja warunkowa)
iteracja (pętla)
wywołanie podprogramu
Unikanie skoków (wręcz ich zakaz!)
Metodologia programowania top-down
Programowanie strukturalne
Programowanie strukturalne
Paradygmaty programowania
Program to zbiór porozumiewających się ze sobąobiektów, czyli jednostek zawierających pewne dane i umiejących wykonywać na nich pewne operacje
Programowanie obiektowe jest do pewnego stopnia rozszerzeniem paradygmatu programowania proceduralnego i strukturalnego
Programowanie obiektowe
Ważną cechą jest tu powiązanie danych (czyli stanu) z operacjami na nich (czyli poleceniami) w całość, stanowiącą odrębną jednostkę — obiekt
Bardzo ważną cechą jest też mechanizm dziedziczenia,czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących
Programowanie obiektowe
Ważną cechą jest tu powiązanie danych (czyli stanu) z operacjami na nich (czyli poleceniami) w całość, stanowiącą odrębną jednostkę — obiekt
Bardzo ważną cechą jest też mechanizm dziedziczenia,czyli możliwość definiowania nowych, bardziej złożonych obiektów, na bazie obiektów już istniejących
Inne ważne cechy programowania obiektowego to:
wysoki stopień abstrakcji danych
enkapsulacja danych
polimorfizm
Programowanie obiektowe
Programowanie obiektowe
Paradygmaty programowania
Program to po prostu złożona funkcja (w sensie matematycznym), która otrzymawszy dane wejściowe wylicza pewien wynik
Zasadniczą różnicą w stosunku do poprzednich paradygmatów jest brak dostępu do stanu maszyny
Nie ma zmiennych
A co za tym idzie, nie ma żadnych efektów ubocznych (rozumianych w sensie tradycyjnym, jako zmiana wartości zmiennych)
Programowanie funkcyjne
Nie ma tradycyjnie rozumianych pętli (imperatywnych z natury)
Tradycyjne pętle wymagają bowiem zwykle (poza przypadkami zdegenerowanymi, jak pętle nieskończone) zmiennych (lub innego dostępu do stanu maszyny) do sterowania ich przebiegiem
Programowanie funkcyjne
Konstruowanie programów to składanie funkcji
Zazwyczaj z istotnym wykorzystaniem rekurencji (rekursji) (tam, gdzie w programowaniu imperatywnym wykorzystujemy pętle)
Charakterystyczne jest również definiowanie funkcji wyższego rzędu, czyli takich, dla których argumentami i których wynikami mogą być funkcje (a nie tylko „proste”dane jak liczby lub napisy)
Programowanie funkcyjne
Programowanie funkcyjne
Paradygmaty programowania
Na program składa się zbiór zależności (przesłanek) oraz pewne stwierdzenie/pytanie (cel)
Wykonanie programu to próba udowodnienia celu w oparciu o podane przesłanki
Obliczenia wykonywane są niejako „przy okazji”dowodzenia celu
Podobnie jak w programowaniu funkcyjnym, nie wydajemy rozkazów, a jedynie opisujemy, co wiemy i co chcemy uzyskać
Programowanie logiczne
Programowanie logiczne
Programowanie logiczne
Programowanie na poziomie wartości
Programowanie na poziomie funkcji
Programowanie skalarne
Programowanie wektorowe/macierzowe
Programowanie zdarzeniowe
Programowanie z własnym wątkiem sterowania
Programowanie aspektowe
Programowanie uogólnione
Programowanie równoległe/współbieżne/rozproszone
Inne paradygmaty
asemblery, „stary” BASICp. imperatywne (proceduralne?)
„stary” Pascal, C, Fortran p. imperatywne, proceduralne, strukturalne
C++, Object Pascal, Adap. imperatywne, proceduralne, strukturalne, obiektowe
Smalltalk, C#, Javap. obiektowe
Języki a paradygmaty
Lisp, Scheme, Logo, ML, Haskellp. funkcyjne
Planner, Prologp. logiczne
Pythonp. proceduralne, strukturalne, obiektowe, funkcyjne
SQLp. deklaratywne (ani ściśle funkcyjne, ani ściśle logiczne)
Języki a paradygmaty
http://www.levenez.com/lang/history.html
Przegląd języków programowania
Ada - język programowania wysokiego poziomu, opracowany w latach 1975-1981 na zamówienie Departamentu Obrony USA,spokrewniony z językiem Pascal. Przeznaczony do bezpośredniego sterowania procesami lub maszynami, np. samolotami wojskowymi. Służy głównie do oprogramowywania systemów czasu rzeczywistego, pozwala na kontrolowanie procesów zachodzących jednocześnie. Nazwa języka pochodzi od imienia Ady Augusty Lovelace (1815-1852), córki G.G.N. Byrona, matematyczki współdziałającej z Ch. Babbage’em przy pracach nad pierwszą programowalną maszynąliczącą.
Przegląd języków programowania
Asembler - język programowania niskiego poziomu, wykorzystujący instrukcje procesora.
Program napisany w asemblerze jest tłumaczony na (binarny) kod maszynowy.
Program w asemblerze jest bardzo efektywny w porównaniu do programów napisanych w innych językach, jednakże jego tworzenie jest stosunkowo trudne.
Przegląd języków programowania
Visual Asembler
Przegląd języków programowania
Basic (Beginners All-purpose Symbolic InstructionCode) - przełomowy w chwili powstania w 1964, potem mocno krytykowany za brak strukturalności,
prosty, interpretowany język programowania, spopularyzowany w komputerach ośmiobitowych i kalkulatorach programowanych.
Basic z założenia nadawał się do pracy interakcyjnej i miał ujmować prostotą (m. in. brak typów, numerowane instrukcje ułatwiały redagowanie programu).
Przegląd języków programowania
Odrodzony i zmetamorfozowany zarówno pod względem struktur sterowania i danych, jak i interfejsu systemowego Basic znajduje szerokie zastosowanie pod postacią platformy programowania RAD o nazwie VisualBasic. W tym nowoczesnym produkcie z Basica pozostała głównie nazwa.
iBasic
Przegląd języków programowania
C - proceduralny język programowania wysokiego poziomu, zaprojektowany w 1972 przez D. M. Ritchiegoi zrealizowany pod systemem operacyjnym UNIX dla komputera PDP-11.
Początkowo C był językiem oprogramowania systemowego (powstał jako język do przeprogramowania systemu UNIX). Szybko zyskałpopularność jako uniwersalny język programowania.
Przegląd języków programowania
Cechami języka C są zwięzłość i elastyczność, przy jednoczesnym przerzucaniu dużej odpowiedzialności na programistę (nie ma np. wbudowanej kontroli indeksowania tablic).
W latach 1983-1988 język C uległ standaryzacji.
Znormalizowany język C nosi nazwę ANSI C.
Przegląd języków programowania
C++ - obiektowy język programowania zaprojektowany przez B. Stroustrupa i in.,
w warstwie proceduralnej osadzony w notacji języka C, wpływ języków Algol 68 i Simula 67 oraz Ada, ML i Clu.
Charakterystyczne cechy: dociążanie funkcji i operatorów, dziedziczenie z wielu klas, obsługa wyjątków, klasy parametryczne.
Przegląd języków programowania
Wersja pierwotna (1979) nosiła nazwę C z klasami (C with classes), a jej kompilatory generowały kod w języku C.
Standaryzowany od 1994, standard ostateczny ISO/ANSI C++ (ANSI 14882) z 1 września 1998.
Liczne kompilatory, m. in. Borland C++, Microsoft C++, Watcom C++, implementacje systemów operacyjnych, baz danych. Java, Smalltalk.
Przegląd języków programowania
DevC++
Przegląd języków programowania
lcc
Przegląd języków programowania
Clips (C Language Integrated Production System) -rozwijany od 1984 r. język przeznaczony do badania i rozwijania systemów ekspertowych,
służący do programowania typu optymalizacji algorytmowej (rule-based), proceduralnego i obiektowego (COOL - Clips Object OrientedLanguage).
CLIPS ma składnię przypominającą Lisp-a. Obecnie (2002) dostępna jest wersja 6.20 beta.
Przegląd języków programowania
Css (Cascading Style Sheets) - technologia (język) umożliwiająca przydzielanie „stylu”, tj. charakterystyk takich jak położenie, barwa, rozmiary, itp., elementom HTML.
Arkusze styli są wzorcami (templates) przypominającymi wzorce znane np. z edytora tekstu Word (mogą być również dołączane z zewnątrz).
CSS są w znacznym stopniu niezależne od platformy (stopień ich „rozumienia” przez nowe przeglądarki IE 5.5, Netscape 6 i Opera 5 jest oceniany odpowiednio na 92%, 98% i 99%).
Przegląd języków programowania
DHTML (Dynamic HTML) - rozszerzenie języka HTML o wzorce stylu (style sheets), rozmieszczanie elementów na stronie WWW według upodobańużytkownika (content positioning) oraz możliwośćstosowania indywidualnych krojów pisma, sprowadzanych z komputera macierzystego danej strony WWW (downloadable fonts).
Przegląd języków programowania
Fortran (FORmula TRANslator) - jeden z pierwszych szeroko używanych, algorytmicznych języków programowania, opracowany przez J. Backusa w 1957.
Po wielu unowocześnieniach i zmianach (Fortran 77, Fortran 90) stosowany do dzisiaj.
Język Fortran powstał jako wynik wczesnych doświadczeń w programowaniu komputerów za pomocą autokodów z lat 1951-56.
Pierwszą implementację Fortranu wykonano dla maszyny IBM-704. W 1958 powstała wersja Fortran II wprowadzająca możliwość kompilacji niezależnej (IBM-704), a w 1959 jej odpowiednik dla komputera IBM-709.
Przegląd języków programowania
HTML (HyperText Markup Language) - specjalny język służący do opisu strony oraz odniesień z poszczególnych jej elementów do innych dokumentów. Język ten powstał na potrzeby internetowej usługi WWW.HTML Umożliwia umieszczenie na stronie tekstu zdefiniowanych dyrektyw co do sposobu jego prezentacji, wyróżnienia pewnych jego elementów edytorskich jak akapity, nagłówki itp. Pozwala także umieszczać bezpośrednio na opisywanych stronach grafikę, a w najnowszych wersjach również inne typy dokumentów.
Przegląd języków programowania
Java - popularny język programowania obiektowego autorstwa J. Goslinga, zaprojektowany w firmie Sun Microsystems, Używany szeroko do oprogramowywania specjalizowanych mikroprocesorów, wzbogacania prezentacji danych zawartych w dokumentach HTML, pamiętanych w komputerach sieci Internet oraz do opracowywania samodzielnych aplikacji wielowątkowych i rozproszonych.Kompilatory języka Java produkują bajtokod, który nadaje się do interpretacji w środowisku JVM. Znaczenie języka Java systematycznie rośnie.
Przegląd języków programowania
Przykład skryptu w Javie
Przegląd języków programowania
JavaScript, opracowany przez firmę Sun Microsystemsjęzyk programowania obiektowego, przypominający C++, jednak przeznaczony do zastosowań sieciowych.
Java nie przenosi wirusów i nie może uszkodzićkomputera-klienta (o ile wiadomo).
Java jest także środowiskiem przetwarzania online, działającym w tzw. maszynie wirtualnej Javy - JVM (Java Virtual Machine) .
Ta ostatnia jest rodzajem pośrednika pomiędzy programem Javy i komputerem. Kompilator Javy tworzy bowiem nie kod przeznaczony dla konkretnej platformy, lecz kod niezależny od sprzętu (przynajmniej na ogół), interpretowany przez JVM.
Przegląd języków programowania
Lisp - język programowania oparty na przetwarzaniu list.
Główny wkład w jego powstanie w latach 50. wniósł J. McCarthy, profesor wielu amerykańskich uczelni, m.in. Instytutu Technologicznego Massachusetts i Uniwersytetu Stanforda.
Wywodzi się z badań teoretycznych nad tzw. rachunkiem lambda i stał się podstawowym językiem sztucznej inteligencji.
Przegląd języków programowania
Eclips Lisp
Przegląd języków programowania
Logo - edukacyjny język programowania biorący początek z badań nad psychologią uczenia się i jego wpływem na kształtowanie osobowości (J. Piaget), opracowany przez Seymoura Paperta i spopularyzowany przez niego w książce, rewolucyjnej z punktu widzenia metodologii nauczania, pt. Burze mózgów – dzieci i komputery (Wydawnictwo Naukowe PWN, 1996). Logo jest stosowane w początkowym nauczaniu matematyki oraz jako język komunikacji dziecka z komputerem; odznacza się interakcyjnością, znakomicie przemyślanym, prostym zestawem operacji graficznych i ogólnością składni wzorowanej na języku Lisp.
Przegląd języków programowania
MSW Logo
Przegląd języków programowania
NET Logo
Przegląd języków programowania
Star Logo
Przegląd języków programowania
Visual Logo
Przegląd języków programowania
Pascal - strukturalny język programowania stworzony przez N. Wirtha na początku lat 70.
Jego zastosowanie w praktyce jest obecnie bardzo ograniczone. Najważniejszym zastosowaniem języka Pascal jest nauka programowania.
Pozostaje on przez to jednym z najszerzej znanych i popularnych języków, zwłaszcza wśród początkujących programistów.
Przegląd języków programowania
Perl (Practical Report and Extraction Language) –interpretowany język programowania, zewnętrznie bardzo podobny do C/C++, dostosowany przez twórcę(Larry Wall, koniec lat 80-tych) przede wszystkim do przetwarzania plików tekstowych. Perl służy do administracji i oprogramowania WWW, w tym do pisania tzw. skryptów cgi. Trudno uznać Perl za język szczególnie przyjazny; jest jednak tak uniwersalny i przy tym rozpowszechniony, że warto go poznać, pomimo tego, że w ostatnich latach pojawiły się języki pod wieloma względami wydajniejsze (m.in. ASP i PHP). Perl powstał w środowisku unixowym, jednak niemal od razu został zaimplementowany jako ActivePerl równieżdo Win32.
Przegląd języków programowania
Przykład skryptu w Perlu
Przegląd języków programowania
PHP - język skryptowy stosowany „po stronie serwera”podobnie jak np. Perl, z którym jest zresztąspokrewniony. Za pośrednictwem skryptów php typowy serwer (np. PWS, IIS, Apache) może przesyłać na strony sieciowe dane z relacyjnych baz danych (np. MySQL, mSQL, PostgreSQL a także MS Access). Mówiąc w uproszczeniu, kod php wbudowany jest w plik HTML pomiędzy znaczniki <?php i ?>, chociażmożna skonfigurować php tak, aby używać innych znaczników, np. <% i %>, jak w przypadku ASP.Kod php jest interpretowany przez serwer, przekształcany w tekst a następnie przesyłany do przeglądarki.
Przegląd języków programowania
Przykład skryptu w PHP
Przegląd języków programowania
Prolog (PROgraming in LOGic) - deklaratywny język programowania w logice. Program w takim języku nie jest sekwencją działań, jak np. w języku proceduralnym, lecz zbiorem faktów i regułpozwalających w oparciu o fakty formułować wnioski.
Visual Prolog
Przegląd języków programowania
Python - interpretowany współczesny język obiektowy.
Istnieją implementacje dla różnych systemów operacyjnych.
Posiada przejrzystą i łatwą do nauki strukturę.
Python jest językiem darmowym - tworzone w nim aplikacje można również sprzedawać.
Przegląd języków programowania
Python
Przegląd języków programowania
Ruby - interpretowany, w pełni obiektowy język programowania
Ruby bazuje na wielu językach, takich jak Perl, Smalltalk, Python, CLU czy LISP.
Składnia jest zorientowana liniowo i oparta na składni CLU (w mniejszym stopniu Perla).
Program pisane w Ruby charakteryzują się wysokąwymiennością pomiędzy platformami (istniejąimplementację na wiele maszyn UNIXowych, DOS, Windows, Mac, BeOS itd.).
Język popularny w Japonii, oparty na języku japońskim.
Przegląd języków programowania
Ruby
Przegląd języków programowania
SQL (Structured Query Language) - standardowy język zapytań do obsługi relacyjnej bazy danych. Język programowania baz danych i ich sieciowych serwerów. Pierwowzorem SQL był opracowany przez IBM we wczesnych latach siedemdziesiątych XX w. język SEQUEL (E. F. Codd).Niezależnie od specyficznych właściwości standardów język SQL pozwala formułować działania na tabelach w formie zbliżonej do zdań w języku angielskim.
Przegląd języków programowania
VRML (Virtual Reality Modeling Language) -opracowany w 1993r. język udostępniający operacje na obiektach trójwymiarowych w Internecie.
Dostępny dla większości przeglądarek po zainstalowaniu dodatkowej wtyczki.
Od 1995 r. dostępna jest wersja VRML 2.0.
Przegląd języków programowania
Przykład modelu w VRML
Przegląd języków programowania
XML (eXtensible Markup Language) - standard Internetowy (metajęzyk), oparty na SGML, a będący poszerzeniem techniki używania markerów (tagów) nie tylko do określania sposobu prezentacji, lecz także rodzaju przesyłanej informacji. Znaczniki nie są opisane w XML lecz definiowane przez użytkownika.
Przegląd języków programowania
Do opisu danych XML używa DTD - Document TypeDefinition. Jeśli więc HTML zajmuje się wyświetlaniem danych i ich wyglądem, to XML skupia się na opisie, przechowywaniu i przesyłaniu danych (lecz nie ich prezentacji) niezależnie od sprzętu, oprogramowania systemowego i aplikacji.
Ma uzupełniać a nie zastępować HTML, nie jest językiem, jest uproszczoną wersją metajęzyka SGML.
Przegląd języków programowania
Kolekcję ponad 300 programów Hello world w różnychjęzykach programowania i w ponad 50 językach naturalnych :
http://www.roesler-ac.de/wolfram/hello.htm
Pierwszy „Hello World” powstał w 1972 roku i byłnapisany w B (taki poprzednik C ;-).
Na wyróżnienie zasługują: Assembler-Z80-Console i HQ9+ (za długość), Argh!, BrainFxxx, G-Code, Malbolge i MAMASH (za zakręcenie), CSS (za spryt), LabVIEW i Logo-graphical (za efekty specjalne).
„Hello World”
Standardowe:
„Hello World”
Na wyróżnienie zasługują: Assembler-Z80-Console i HQ9+ (za długość),Argh!, BrainFxxx, G-Code, Malbolge i
MAMASH (za zakręcenie), CSS (za spryt), LabVIEW i Logo-graphical (za efekty specjalne).
„Hello World”
Assembler-Z80-Console
„Hello World”
Assembler-Z80-Console
„Hello World”
Assembler-Z80-Console
„Hello World”
Assembler-Z80-Console
„Hello World”
Assembler-Z80-Console
„Hello World”
Argh!
„Hello World”
BrainFxxx:
„Hello World”
G-Code:„Hello World”
Malbolge :
„Hello World”
MAMASH :
„Hello World”
CSS :
„Hello World”
LabVIEW :
„Hello World”
Logo-graphical :
„Hello World”
N. Wirth: „Algorytmy + struktury danych = programy”.WNT, Warszawa, 2004.
Harel D., Rzecz o istocie informatyki - algorytmika, WNT, Warszawa 2008
http://uranos.cto.us.edu.pl/~boryczka/http://we.pb.edu.pl/~jforenc/dydaktyka.htmlhttp://pl.wikipedia.org
Literatura
Recommended