Hierarchia języków programowania
Mikroprogramowanie (Microprogramming)
Język maszynowy (wewnętrzny) ( Machine language)
Język asemblerowy (symboliczny) (Assembly language)
Programowanie strukturalne (proceduralne ) (Structured programming)
Programowanie modularne (Modular programming)
Programowanie obiektowe (Object-oriented programming)
Programowanie komponentowe (Component-object model)
Język maszynowy
Język maszynowy, język wewnętrzny (Internal code)
Rozkaz maszynowy:
Rozkazy w postaci binarnej, kod operacji (operation code)
Adresy absolutne - binarne (operand field)
Budowa słowa maszynowego:
Programowanie strukturalne i proceduralne
Aspekt strukturalizacji:
Struktury sterujące języka programowania
Przejrzystość algorytmów i programów
Aspekt proceduralny:
Systematyczny podział na części składowe, których powiązania
wzajemne są dobrze określone (procedury, funkcje)
Ułatwienie uruchamiania i modyfikacji programów
Projektowanie zstępujące (top-down), E. Dijkstra
Refaktoryzacja kodu źródłowego (XP, Extreme Programming)
Modularność
Modularość - podział programu na oddzielne moduły o określonych funkcjach,
w celu umożliwienia pracy nad jednym programem wielu programistom
(opracowywanie, pielęgnowanie i uruchamianie).
Kompletna translacja programu odbywa się w dwóch etapach:
Kompilacja (asemblacja) modułów źródłowych
Konsolidacja skompilowanych modułów
Programowanie komponentowe
Programowanie komponentowe - definiowanie obiektów samoopisujacych się
(komponentów programowych) niezależnie od języka programowania.
Umożliwienie włączenie do aplikacji obiektów należących do innych
programów, przy zachowaniu pewności, że każdy z komponentów będzie w
stanie komunikować się i „rozumieć” funkcje pozostałych.
Technologia COM (Component-object model):
OLE (Object Linking and Embedding) - łączenie i osadzanie obiektów,
standard współużytkowania informacji miedzy aplikacjami, dający możliwość
tworzenia obiektów w jednej aplikacji i włączania ich do innych.
ActiveX - zbiór protokołów i interfejsów programowych API (Application
Programming Interface) służących do tworzenia scalania i udostępniania
komponentów oprogramowania.
DCOM (Distributed Component-object model) - podstawa do tworzenia
środowiska rozproszonego przetwarzania danych poprzez przesyłanie i
udostępnianie komponentów w sieci.
Paradygmaty programowania
Podstawowe paradygmaty:
Imperatywny
Funkcyjny
Deklaratywny (programowanie w logice)
Obiektowy
Założenia:
Mechanizmy są implementowane w realnych systemach komputerowych.
Komputery działają w oparciu o imperatywną architekturę von Neumanna.
Każdy uruchomiany program musi być najpierw przetłumaczony do ciągu rozkazów w języku wewnętrznym konkretnej maszyny.
Paradygmat imperatywny
Postulaty paradygmatu:
Stan maszyny wyznaczają zawartości rejestrów procesora oraz pamięci
Instrukcja imperatywna zmienia stan maszyny
Program - ciąg instrukcji, których realizacja jest zgodna z cyklem
maszynowym, rozkaz: <pobierz-dekoduj-wykonaj>
Języki imperatywne wysokiego poziomu:
Pascal, Fortran, Cobol, C, Ada
Programowanie imperatywne (pierwotny sposób programowania), w którym
program (procedura) postrzegany jest jako ciąg poleceń dla komputera.
Proces programowania sprowadza się do utworzenia ciągu instrukcji
imperatywnych (poleceń).
Paradygmat funkcyjny
Cechy paradygmatu:
Program - złożona funkcja (w sensie matematycznym), która otrzymuje dane
wejściowe i wylicza wynik
Brak imperatywnych pętli
Brak stanu maszyny i zmiennych
Przyjazne środowisko do konstruowania dużych pakietów oprogramowania.
Programowanie funkcyjne - składanie funkcji z wykorzystaniem
rekurencji.
Program jest złożeniem wielu zagnieżdżonych elementarnych funkcji
(wymuszona modułowość budowanych programów).
Paradygmat deklaratywny (programowanie w logice)
Cechy paradygmatu:
Program - zbiór zdań początkowych, na bazie których algorytm dokonuje
wnioskowania dedukcyjnego.
Algorytm oparty jest na cyklicznie stosowanej zasadzie rezolucji
(wnioskowaniu dedukcyjnym).
Składniki, z których konstruuje się zdania początkowe to predykaty.
Predykat składa się z identyfikatora predykatu, po którym w
nawiasach umieszcza się argumenty predykatu.
Przykład predykatu reprezentującego fakt: jan jest ojcem jerzego:
ojciec (jan, jerzy).
Zdania w Prologu są albo faktami albo regułami. W obu przypadkach
zdanie jest zakończone kropką.
Fakt składa się z pojedynczego predykatu.
Prolog odróżnia stałe od zmiennych w ten sposób, że nazwy stałych
rozpoczynają się małymi literami a zmienne dużymi.
Paradygmat obiektowy
Paradygmat obiektowy (programowanie obiektowe OOP (Object-oriented
programming).
Obiekt- odrębna jednostka stanowiąca powiązanie danych z operacjami na nich.
Program - zbiór powiązanych ze sobą obiektów, zawierających dane i umiejących
wykonywać na nich pewne operacje.
klasa (class) - rozszerzeniem struktury danych o funkcje (metody) operujące na
polach klasy.
Obiekt - egzemplarz klasy umieszczony w pamięci (instancja klasy).
CORBA (Common Object Request Broker Architecture) - standard obiektowych
architektur programowych.
Paradygmaty programowania
Paradygmaty inne:
Programowanie na poziomie wartości
Programowanie skalarne i macierzowe
Paradygmat programowania proceduralnego
Konkretny język programowania reprezentuje jeden lub więcej
paradygmatów:
Fortran, Pascal i C - języki pozwalające stosować paradygmat programowania
imperatywnego.
Java, C# - języki obiektowe, w których typowe programowanie imperatywne
zostało mocno ograniczone.
C++ - język zarówno obiektowy jak i imperatywny.
Programowanie imperatywne - szczególny, wynaturzony przypadek
programowania obiektowego.