O (o)programowaniu Próba klasyfikacji Systemy operacyjne

Transkrypt

O (o)programowaniu Próba klasyfikacji Systemy operacyjne
Próba klasyfikacji
Nie jest możliwa jednoznaczna klasyfikacja
oprogramowania!
O (o)programowaniu
Oto jedna z wielu subiektywnych prób:
R. Robert Gajewski
omklnx.il.pw.edu.pl/~rgajewski
www.il.pw.edu.pl/~rg
[email protected]
!
!
!
!
systemy operacyjne,
oprogramowanie narzędziowe,
języki programowania,
programy aplikacyjne.
2•10
Systemy operacyjne
Oprogramowanie narzędziowe
Oprogramowanie narzędziowe staje się coraz
częściej składową systemu operacyjnego
Systemy operacyjne (dla komputerów PC)
!
!
!
!
!
Oprogramowanie narzędziowe
DOS
Windows ’95, ’98, Millenium
Windows NT, 2000, XP
OS/2
Linux
3•10
!
!
© 2004, R. Robert Gajewski
5•10
© 2004, R. Robert Gajewski
Generacje języków (1)
Języki programowania są to (w pewnym
uproszczeniu) narzędzia, które umożliwiają
tworzenie nowych programów.
!
nakładki na system operacyjny ułatwiające niezbyt
wprawnym użytkownikom posługiwanie się
komputerem
bardziej zaawansowane programy służące
zaawansowanym użytkownikom do szczegółowej
diagnostyki sprzętu.
4•10
Generacje języków (1)
!
© 2004, R. Robert Gajewski
!
I generacja - języki poziomu maszynowego (MLL,
Machine Level Languages) powstały wraz z
narodzinami pierwszych komputerów; wymagały od
programistów pracy na poziomie pojedynczych bitów.
II generacja - języki symboliczne określane mianem
języków niskiego poziomu (Intermediate Level
Languages) powstały jako ułatwienie pracy
programisty; są one nadal językami zorientowanymi
maszynowo, ich używanie jest już jednak znacznie
prostsze.
© 2004, R. Robert Gajewski
!
III generacja - języki wysokiego poziomu (High
Level Languages) są to języki ogólnego przeznaczenia
o dużym stopniu uniwersalności; ich rozwój
ewoluował w kierunku języków problemowo
zorientowanych.
IV generacja - użytkownik komputera czasami jest
też programistą!
"
"
"
"
!
6•10
języki arkuszy kalkulacyjnych,
systemy zarządzania bazami danych,
systemy graficzne
systemy ekspertowe i oprogramowanie zintegrowane
V generacja: wizualny (graficzny) interfejs, by
stworzyć kod źródłowy, kompilowany zwykle
kompilatorem języka 3. czy 4. generacji: VisualAge
for Java, Visual C++
© 2004, R. Robert Gajewski
Rozwiązanie zadania
Algorytm
Celem wielu działań jest „rozwiązanie zadania”.
Na proces ten składa się wiele różnych
powiązanych ze sobą pojęć takich jak:
!
!
!
!
W każdym przepisie możemy wyróżnić:
!
!
metoda, która będzie stosowana,
plan stosowania tej metody w konkretnym zadaniu,
opis czynności wykonywanych podczas realizacji
planu,
wynik końcowy wykonywanych czynności .
Algorytm to opis obiektów łącznie z opisem
czynności, które należy wykonać z tymi
obiektami aby osiągnąć określony cel.
Dodatkowymi istotnymi elementami rozwiązania
zadania są:
!
!
Każdy algorytm powinien być zapisany w notacji
zrozumiałej
dowód poprawności zbudowanego rozwiązania
(zarówno każdego kroku z osobna, jak i też kroków
wykonywanych w określonym porządku),
stwierdzenie jednoznaczności rozwiązania.
7•10
© 2004, R. Robert Gajewski
!
!
Proces tłumaczenia (translacji) programu może
przyjąć postać:
to co jest zrozumiałe dla programisty jest nieczytelne
dla procesora
! ciągi rozkazów procesora są zrozumiałe jedynie dla
bardzo wprawnych programistów.
Język programowania jest zbiorem odpowiednich
konwencji umożliwiających komunikatywność algorytmu.
!
!
!
!
Implementacja to realizacja języka programowania dla
określonego komputera lub systemu operacyjnego.
© 2004, R. Robert Gajewski
!
© 2004, R. Robert Gajewski
Programowanie
Proces tłumaczenia (translacji) programu może
przyjąć postać:
Podstawowym celem każdego języka
programowania jest pomoc w budowie
programu (programowaniu) w sferze:
kompilacji
interpretacji.
!
Interpretacja polega na wykonywaniu
programu źródłowego przez interpreter linia po
linii.
!
Nie jest on nigdy tłumaczony w całości.
Czysta interpretacja jest procesem
jednostopniowym.
!
11•10
tłumaczenia tego dokonuje program zwany
kompilatorem;
istnieją kompilatory jednoprzebiegowe i
wieloprzebiegowe.
10•10
Translacja: kompilacja
!
kompilacji
interpretacji.
Kompilacja to proces tłumaczenia programu
źródłowego napisanego w języku
programowania na równoważny mu program
(kod) wynikowy w języku maszynowym
maszyny docelowej, na której będzie on
wykonywany.
Algorytm wyrażony w języku programowania to
program.
!
© 2004, R. Robert Gajewski
Translacja: kompilacja
Oba te wymogi reprezentują dwa przeciwstawne
bieguny:
!
dla programisty (zapis konkretnego algorytmu w
określonej notacji)
dla komputera (ciąg rozkazów zrozumiałych przez
procesor).
8•10
Język programowania
9•10
opis obiektów (prostych i złożonych)
opis czynności prostych i złożonych, które możemy
rozpisać na proste.
!
Zapewnia ona większa elastyczność, jest jednak
procesem wielokrotnie wolniejszym.
© 2004, R. Robert Gajewski
12•10
projektowania programu (zakres programu,
specyfikacja danych);
przejrzystości (wyrażanie akcji w sposób
zrozumiały); dokumentacja powinna być integralną
częścią procesu programowania; program powinien
być zapisany czytelnie, aby umożliwić jego
konserwację i dokonywanie w nim poprawek i
rozszerzeń;
weryfikacji (łatwość określania poprawności i
testowania).
© 2004, R. Robert Gajewski
Implementacja komputerowa
Syntaktyka i semantyka
Syntaktyka języka programowania (składnia)
zajmuje się formą pisania programów i jest
zbiorem reguł, które definiują sposób
konstruowania łańcuchów symboli.
Problem implementacji komputerowej łączy się z
następującymi sprawami:
!
!
!
!
dostępnością (dla jakich maszyn i systemów
operacyjnych istnieją kompilatory danego języka);
bibliotekami (czy istnieje wsparcie w postaci
gotowych podprogramów);
efektywnością (czy kompilator działa szybko i czy
produkuje efektywny kod wynikowy);
dokumentacją (czy istnieje precyzyjny opis lub
norma języka i dokumentacja kompilatora).
13•10
© 2004, R. Robert Gajewski
!
Semantyka zajmuje się znaczeniem
programów, czyli tym, co się się dzieje podczas
wykonywania programów.
!
Rozróżnia się trzy warianty zakończenia działania
programu:
Granica pomiędzy składnią a semantyka nie jest
ściśle i jednoznacznie zdefiniowana.
!
!
Treść programu może być pisana w formatach:
!
© 2004, R. Robert Gajewski
16•10
Komentarze
Do 1954 większość programów pisano w języku
maszynowym.
W następnych latach kody operacji zastąpiono
nazwami mnemotechnicznymi (mnożenie
MPY - MultiPlY).
Kolejny etap to zastąpienia nazwami wartości
adresów. Tak napisane w postaci
symbolicznej programy były tłumaczone na
język maszynowy za pomocą programu
zwanego asemblerem.
Pisanie programów w języku maszynowym lub
symbolicznym określa się mianem kodowania.
To co robimy współcześnie (programowanie)
obejmuje dodatkowo konstrukcję algorytmu.
Możliwe są różne konwencje pisania w
programie komentarzy:
!
17•10
© 2004, R. Robert Gajewski
Historia programowania
Dla uzyskania komunikatywnego przedstawienia
algorytmów programista musi mieć możliwość
robienia bezpośrednio w programie adnotacji
(komentarzy).
!
poprawne zakończenie
przerwanie wykonywania na skutek błędu,
proces nieskończony.
stałym (od określonej kolumny, odstępy nie mają
znaczenia!!!
swobodnym (odstępy są istotnym elementem).
15•10
!
© 2004, R. Robert Gajewski
Zakończenie programu
Ciąg znaków (instrukcji, zdań) poprawny
składniowo (syntaktycznie) może się okazać
błędny semantycznie (jest to widoczne podczas
wykonywania programu).
!
reguły semantyczne języka definiują zbiór
programów poprawnych semantycznie, a także błędy
semantyczne.
14•10
Syntaktyka ~ semantyka
!
dopuszczalne zbiory łańcuchów nazywamy
programami poprawnymi syntaktycznie.
rozpoczęcie komentarza w z góry zadanej kolumnie obejmuje on wówczas wszystkie znaki do końca
wiersza;
użycie specjalnego symbolu, oznaczającego, że wiersz
jest komentarzem;
rozpoczęcie i kończenie komentarza symbolami
specjalnymi.
© 2004, R. Robert Gajewski
18•10
© 2004, R. Robert Gajewski
Języki programowania (1)
Języki programowania (2)
Algol (ALGOrythmic Language, ALGEbraic
Oriented Language) powstał jako wspólne dzieło
Praojcem języków programowania wysokiego
poziomu był język Plankakul
(1945, Konrad Zuse).
Twórca pierwszego kompilatora –
(1952 Grace Hopper).
FORTRAN (FORmula TRANslation) został
opracowany w latach 1954-57 przez Backhusa i
jego grupę.
!
Wirtha i Hoare na gruncie pewnych idei
FORTRANU;
!
BASIC (Beginner’s All-purpose Symbolic
Instruction Code)
Jego celem było automatyczne tłumaczenie różnych
wzorów matematycznych.
!
!
© 2004, R. Robert Gajewski
!
20•10
Uczenie się języków
!
21•10
Istnieje naturalna konieczność tworzenia
kompletnych definicji języków programowania
zawierających omówienie ich wszystkich
szczegółów.
podejście syntetyczne (bottom-up), od podstaw;
rozpoczyna się od pojęć podstawowych, takich jak
typy, identyfikatory, liczby;
podejście analityczne (top-down) rozpoczyna się
od konstrukcji najwyższego poziomu (np. programu);
posługując się często nie zdefiniowanymi
konstrukcjami pozwala na szybsze zrozumienie
języka.
© 2004, R. Robert Gajewski
!
!
!
!
© 2004, R. Robert Gajewski
Programy użytkowe (2)
programy i biblioteki matematyczne - służą
do automatyzacji wielu obliczeń
matematycznych;
edytory - służą do redagowania tekstów o
nieskomplikowanej budowie;
procesory tekstu - to bardziej zaawansowane
edytory dające więcej możliwości
profesjonalnego opracowywania tekstów.
programy małej poligrafii (DTP, DeskTop
Publishing) są w pełni profesjonalnymi
narzędziami służącymi do składu tekstu i grafiki.
zintegrowane pakiety biurowe (MS Office…)
- służą do automatyzacji prac biurowych:
korespondencja, obliczenia tabelaryczne,
kartoteki i bazy danych, grafika prezentacyjna;
© 2004, R. Robert Gajewski
kompletność (odpowiedź na każde pytanie dot.
składni i semantyki);
przejrzystość (do łatwego zrozumienia każdej
definicji powinna być potrzebna minimalna liczba
elementów);
zwięzłość (możliwość zwartego zapisu);
naturalność (ważniejsza chyba od zwięzłości);
realizm (liczenie się z ograniczeniami konkretnej
implementacji).
22•10
Programy aplikacyjne (1)
23•10
łączy ze sobą właściwości asemblerów i dobre cechy
języków wysokiego poziomu
© 2004, R. Robert Gajewski
Definicje języków
Uczenie się i poznawanie języka programowania
może się odbywać w jeden z przeciwstawnych
sposobów:
!
jest językiem zwięzłym o przejrzystej gramatyce
C (1972), którego twórcą jest Ritchie
Stworzony został do przetwarzania dużej liczby
danych.
19•10
jest uniwersalnym językiem programowania dla
początkujących
Pascal został stworzony przez Wirtha w 1969
na gruncie pewnych idei Algolu
COBOL (Common Business Oriented Language)
to język programowania rozwiązujący problemy
z rachunkowości i ekonomii.
!
przeznaczony jest również do obliczeń numerycznych,
ale jego możliwości są szersze
!
stanowią pomoc przy… projektowaniu!
programy wspomagające pracę inżyniera
(CAD/CAE/CAM) - mogą się różnić zależnie od
poszczególnych dyscyplin inżynierskich;
pakiety graficzne - charakter zbliżony do CAD
i DTP
programy edukacyjne - multimedia!!!
gry - mogą mieć charakter edukacyjny;
!
24•10
wiele z gier to odpowiedniki symulatorów,
profesjonalnych narzędzi do szkolenia pilotów.
© 2004, R. Robert Gajewski

Podobne dokumenty