1. Struktury danych Struktura danych (ang. data structure)

advertisement
OPRACOWA : K77. Przeczytajcie wszystko chocia raz a na pewno b dziecie wi cej wiedzie J
Uwaga do wszystkich przysz ych magistrów:
Po wylosowaniu zagadnienia mówcie o rzeczach, które s dla Was zrozumia e i o których najwi cej wiecie (oczywi cie z
zakresu danego zagadnienia). Najcz ciej jest tak, e po kilku minutach komisja Wam przerwie, zanim dojdziecie do rzeczy, o
których macie raczej mgliste poj cie. Nie oznacza to bynajmniej, e nie musicie si w ogóle uczy zagadnie – profesor bywa
czasem bardzo dociekliwy i mo e dowie Waszej niewiedzy, a wtedy mo e by nieciekawie. Powodzenia.
1. Struktury danych
Struktura danych (ang. data structure) - sposób uporz dkowania informacji w komputerze. Na
strukturach danych operuj algorytmy.
Przyk adowe struktury danych to:
1. rekord, zwany w niektórych j zykach po prostu struktur (ang. struct, record), logiczny
odpowiednik to krotka
2. tablica
3. lista
4. drzewo i jego liczne odmiany (np. drzewo binarne)
5. stos
6. kolejka
Podczas implementacji programu programista cz sto staje przed wyborem mi dzy ró nymi strukturami
danych, aby uzyska po dany efekt. Odpowiedni wybór mo e zmniejszy z ono obliczeniow , ale z
drugiej strony trudno implementacji danej struktury mo e stanowi istotn przeszkod .
Poniewa struktury danych s w programie rzecz szczególnie istotn , wiele j zyków programowania
wspiera programist , dostarczaj c bibliotek standardow z zaimplementowanymi ró norodnymi
strukturami danych. Mo na tu wymieni Standard Template Library w C++, API j zyka Java oraz
platform .NET.
Prób po czenia idei struktur danych i algorytmów jest pomys programowania obiektowego.
Rekord zwany w niektórych j zykach po prostu struktur (ang. structure, struct, record) (logiczny
odpowiednik to krotka).
Jest to obiekt programistyczny, grupa danych - takiego samego lub ró nego typu - posiadaj ca swoj
ustalon struktur , oraz mo liwo zmiany i odczytania jego elementów.
W odró nieniu od tablic zawieraj cych wiele elementów tego samego typu, typem elementu tablicy mo e
by równie rekord (struktura), a tablica mo e by sk adow rekordu.
Przyk adowy rekord dotycz cy osoby pracownika mo e zawiera np.:
•
•
•
•
•
•
Nazwisko - dana typu string (lub character)
Imi - j.w.
Data urodzenia - dana typu string lub rekord typu data
Miejsce zamieszkania - dana typu string lub rekord typu adres
Data zatrudnienia - j.w.
stanowisko - dana typu string lub rekord typu stanowisko
1
yty tutaj rekord typu data mo e by definiowany jako:
•
•
•
rok - liczba ca kowita lub string (4 cyfry)
miesi c - liczba ca kowita lub string (2 cyfry)
dzie - j.w.
Itd.
Kod powy szego rekordu w Delphi (Object Pascal)
type Pracownik=record
Nazwisko, Imie: string;
Data_urodzenia: Date;
Miejsce_zamieszkania: string;
Data_zatrudnienia: Date;
Stanowisko: string;
end;
Typ Date to gotowy typ z dniem, miesi cem i rokiem.
Stosowanie rekordów by o konieczno ci przy wykorzystaniu baz danych a tak e krokiem wst pnym do
wprowadzenia obiektów i programowania strukturalnego.
Tablica to pojemnik danych dost pnych za pomoc kluczy b cych ich kolejnymi numerami. Tablice
mog mie zadane z góry rozmiary lub te mie mo liwo automatycznej ich zmiany.
Praktycznie wszystkie j zyki programowania zawieraj tablice - jedynie w niektórych j zykach
funkcjonalnych zamiast tablic u ywane s listy (cho tablice zwykle te s dost pne).
Lista to struktura danych u ywana w infomatyce. Jest to pojemnik sk adaj cy si z po czonych ze sob w
cuszek komórek zawieraj cych dane.
Popularne sposoby
czenia elementów listy
Typowa lista jest czona jednostronnie - komórki zawieraj tylko odno nik do kolejnej komórki. Innym
przypadkiem jest lista dwustronna, gdzie komórki zawieraj tak e odno nik do poprzednika.
Popularna jest tak e lista zwana ownikow , która z regu y jest wariacj listy jednostronnej. Z regu y
stosuje si j tam, gdzie elementy listy zawieraj kilka pól z danymi, a kolejny element mo e rozszerza
poj cie (definicj poprzedniego). Przyk adem jest prosty translator tekstu, zrealizowany jako lista, gdzie
ka dy z elementów zawiera dane wyraz i definicja wyrazu - mo e si okaza , e definicja danego wyrazu
ma swoje rozwini cie (definicj ) w pewnym innym elemencie, wówczas tam kieruje si dodatkowy
cznik.
Implementacja listy
Istniej dwie popularne implementacje struktury listy: tablicowa i wska nikowa.
2
Tablicowa
Jak wskazuje nazwa, lista zaimplementowana w ten sposób opiera si na tablicy obiektów (lub rekordów)
danego typu.
Dopisanie elementu do listy to wstawienie elementu do tablicy:
•
•
je li ma ono nast pi na ko cu listy, b dzie to kolejny element w tablicy;
je li nowy element ma znale si mi dzy innymi elementami, nale y przesun o jedno pole w
prawo wszystkich elementów o indeksie wy szym ni pole, na które b dzie wstawiany obiekt;
nast pnie w powsta luk wpisuje si nowy element.
Usuni cie elementu znajduj cego si pod danym indeksem tablicy to przesuni cie o jedno pole w lewo
wszystkich elementów o indeksie wy szym.
Zalety tej implementacji: prosta nawigacja wewn trz listy, korzystanie z gotowej struktury tablicy,
wi ksza odporno na b dy. Wady: niska elastyczno , szczególnie dotycz ca rozmiaru tablicy.
Implementacj tablicow stosuje si tam, gdzie elastyczno
szybka i prosta nawigacja.
nie odgrywa istotnej roli, a wymagana jest
Wska nikowa
W tej implementacji ka dy obiekt na li cie musi (co nie by o konieczne w wersji tablicowej) zawiera
dodatkowy element: wska nik do innego obiektu tego typu. Wynika to z faktu, e to wska niki s
podstaw nawigacji w tym typie listy, a dost p do jej elementów jest mo liwy wy cznie przez wska nik.
Dopisanie elementu (dla prostej listy jednostronnej):
•
•
je li ma ono nast pi na ko cu listy, to wska nik wi cy obiekcie ostatnim ustawia si na nowy
obiekt danego typu;
je li ma ono nast pi wewn trz listy, to najpierw tworzy si nowy obiekt danego typu i jego
wska nik wi cy ustawia si na nast pnik elementu, za którym ma by wstawiany. Pó niej
wska nik poprzednika przestawia si na ten nowy obiekt. W tym przypadku bardzo wa na jest
kolejno , której zachwianie jest cz st przyczyn b dów. Np. mo na najpierw przestawi
wska nik poprzednika na nowy obiekt, co spowoduje bezpowrotn utrat dost pu do dalszych
elementów listy, na które ju nie b dzie pokazywa aden wska nik. Ustawienie wska nika
nowego elementu na nast pnik nie b dzie mo liwe, bo nie b dzie znany jego adres.
Usuni cie elementu jest odwrotne do wstawiania: w pewnym miejscu zapisuje si wska nik do
usuwanego elementu (aby nie "zgubi " jego adresu), nast pnie wska nik wi cy poprzednika przestawia
si na nast pnik, i dopiero w tym momencie zwalnia si pami po obiekcie usuwanym (do tego
potrzebny jest ten wska nik tymczasowy).
Zalety i wady tej implementacji s komplementarne w stosunku do implementacji tablicowej.
Wg biaj c si w szczegó y implementacji listy za pomoc wska ników mo na wyró ni nast puj ce
rodzaje list:
•
lista jednokierunkowa - w ka dym elemencie listy jest przechowywane odniesienie tylko do
jednego s siada (nast pnika lub poprzednika).
3
•
•
•
lista dwukierunkowa - w ka dym elemencie listy jest przechowywane odniesienie zarówno do
nast pnika jak i poprzednika elementu w li cie. Taka reprezentacja umo liwia swobodne
przemieszczanie si po li cie w obie strony.
lista cykliczna - nast pnikiem ostatniego elementu jest pierwszy element, a poprzednikiem
pierwszego ostatni. Po li cie mo na wi c przemieszcza si cyklicznie. Nie ma w takiej li cie
charakterystycznego ogona (ani g owy), cz sto rozpoznawanego po tym, e jego nast pnik jest
pusty (NIL).
lista z wartownikiem - lista z wyró nionym elementem zwanym wartownikiem. Jest to specjalnie
oznaczony element niewidoczny dla programisty wykorzystuj cego list . Pusta lista zawiera wtedy
tylko wartownika. Zastosowanie wartownika znacznie upraszcza implementacj operacji na
listach.
Powy sze cechy mo na prawie dowolnie czy , co daje mo liwo
implementacji listy, zale nie od potrzeb.
stworzenia wielu ró nych
Drzewo (informatyka)
W informatyce drzewa s strukturami danych reprezentuj cymi drzewa matematyczne. W naturalny
sposób reprezentuj hierarchi danych (obiektów fizycznych i abstrakcyjnych, poj , itp.), tote g ównie
do tego celu s stosowane. Drzewa u atwiaj i przyspieszaj wyszukiwanie, a tak e pozwalaj w atwy
sposób operowa na posortowanych danych. Znaczenie tych struktury jest bardzo du e i ze wzgl du na
swoje w asno ci drzewa s stosowane praktycznie w ka dej dziedzinie informatyki (np. bazy danych,
grafika komputerowa, przetwarzanie tekstu, telekomunikacja).
Drzewa sk adaj si z wierzcho ków (w ów) oraz cz cych je kraw dzi. Wszystkie wierzcho ki
po czone z danym wierzcho kiem, a le ce na nast pnym poziomie s nazywane synami tego w a (np.
synami wierzcho ka D s G i H, wierzcho ka H: J, K oraz L). Wierzcho ek mo e mie dowoln liczb
synów, je li nie ma ich wcale nazywany jest li ciem; na rysunku li cie zaznaczone s kolorem niebieskim.
4
Wierzcho ek jest rodzicem dla ka dego swojego syna; ka dy w ze ma dok adnie jednego rodzica.
Wyj tkiem jest korze drzewa, który nie ma rodzica.
W drzewie istnieje dok adnie jedna cie ka pomi dzy w em a korzeniem; przez cie
rozumie si ci g
kraw dzi, na rys. przyk adowa cie ka do w a J jest zaznaczona na czerwono. Liczba kraw dzi w
cie ce jest nazywana ugo ci (lub boko ci ) – liczba o jeden wi ksza okre la poziom w a. Z
kolei wysoko drzewa to najwi kszy poziom istniej cy w drzewie (przyk adowe drzewo ma wysoko
4).
Specjalne znaczenie w informatyce maj drzewa binarne (liczba synów ograniczona do dwóch) i ich ró ne
odmiany, np. drzewa AVL, drzewa czerwono-czarne, BST; drzewa które posiadaj wi cej ni dwóch
synów s nazywane drzewami wy szych rz dów.
Podstawowe operacje na drzewach to:
•
•
•
•
wyliczenie wszystkich elementów drzewa,
wyszukanie konkretnego elementu,
dodanie nowego elementu w okre lonym miejscu drzewa,
usuni cie elementu.
Pod poj ciem przechodzenia drzewa rozumie si odwiedzanie kolejnych wierzcho ków, zgodnie z
zale no ciami rodzic-syn. Je li przy przechodzeniu drzewa na wierzcho kach s wykonywane pewne
dzia ania, to mówi si wówczas o przechodzeniu:
•
•
preorder - gdy dzia anie jest wykonywane najpierw na rodzicu, nast pnie na synach;
postorder - gdy dzia anie jest wykonywane najpierw na wszystkich synach, na ko cu na rodzicu.
W przypadku drzew binarnych istnieje jeszcze metoda inorder, gdzie najpierw wykonywane jest
dzia anie na jednym z synów, nast pnie na rodzicu i na ko cu na drugim synu.
Je li dzia aniem by oby wypisanie liter przechowywanych w w ach przyk adowego drzewa, to przy
przechodzeniu drzewa metod preorder otrzymamy ABEFCDGIHJKL, natomiast przy przechodzeniu
drzewa metod postorder: EFBCIGJKLHDA.
Fizycznie drzewa s reprezentowane za pomoc struktur wi zanych – ogólnie pojedynczy wierzcho ek
przechowuje dane oraz dowi zania do swoich synów. W szczególno ci je li drzewo jest zapisane w
tablicy (patrz: kopiec), to synowie s wskazywani przez konkretne indeksy; je li drzewo jest budowane na
stercie (w j zykach C, C++, Pascal i podobnych), wówczas dowi zania s wska nikami.
Przyk ad definicji typu drzewa, w którym dane wyst puj tylko na li ciach (ocaml):
type 'a tree = Leaf of 'a | Branch of 'a tree * 'a tree
Przyk ad definicji typu drzewa, w którym dane (napisy) wyst puj na ka dym w le (C):
struct tree {
struct tree *left;
struct tree *right;
char *dane;
};
5
Stos - liniowa struktura danych, znaczeniowo odpowiadaj ca nazwie: dane dok adane s na wierzch stosu,
równie z wierzcho ka s ci gane (stosuje si te okre lenie LIFO (ang. Last In First Out), oddaj ce t
sam zasad ). Mo na zilustrowa t struktur jako stos ustawionych jedna na drugiej ksi ek - nowy
egzemplarz k adzie si na wierzchu i z wierzchu si go ci ga. Elementy poni ej wierzcho ka mo na
wy cznie obejrze , aby je ci gn - trzeba najpierw po kolei ci gn to, co jest nad nimi.
Przeciwie stwem stosu LIFO jest kolejka, bufor typu FIFO (ang. First In, First Out) - pierwszy na
wej ciu, pierwszy na wyj ciu, w którym jako pierwszy obs ugiwany jest element który pojawi si na
pocz tku operacji (jak w kolejce do kasy).
Podstawowe operacje
W powy szym opisie pojawi y si pewne operacje, jakie mo na wykonywa na stosie. Oto ich formalny
zapis:
•
•
push(obiekt) - czyli od enie obiektu na stos;
pop() - ci gni cie obiektu ze stosu i zwrócenie jego warto ci.
Implementacja
Strukturami danych s
cymi do reprezentacji stosu mog by tablice (gdy znamy maksymalny rozmiar
stosu), tablice dynamiczne lub listy. Z ono obliczeniowa operacji na stosie zale y od konkretnej
implementacji, ale w wi kszo ci przypadków jest to czas sta y O(1).
Kolejka (ang. FIFO - First In, First Out; pierwszy na wej ciu, pierwszy na wyj ciu) - liniowa struktura
danych, znaczeniowo odpowiadaj ca nazwie: nowe dane dopisywane s na ko cu kolejki, a jako pierwsze
obs ugiwane s dane z pocz tku.
Specjaln modyfikacj jest kolejka priorytetowa - ka da ze znajduj cych si w niej danych dodatkowo
ma przypisany priorytet, który modyfikuje kolejno pó niejszego wykonania. Oznacza to, e pierwsze na
wyj ciu niekoniecznie s te dane, które w kolejce oczekuj najd ej, ale te o najwi kszym priorytecie.
Kolejk spotyka si przede wszystkim w sytuacjach zwi zanych z ró nego rodzaju obs ug zdarze . W
szczególno ci w systemach operacyjnych ma zastosowanie kolejka priorytetowa, przydzielaj ca zasoby
sprz towe uruchomionym procesom.
Przeciwie stwem kolejki jest stos, bufor (ang. LIFO - Last In, First Out; ostatni na wej ciu, pierwszy na
wyj ciu), w którym jako pierwsze obs ugiwane s dane wprowadzone jako ostatnie.
6
2. Charakterystyka popularnych j zyków programowania
autor: K77 (nie uczcie si tego wszystkiego na pami , wa ne eby cie wiedzieli, e takie j zyki s i jakie maj cechy
szczególne J ); na podstawie informacji na stronie http://pl.wikipedia.org/wiki/J%C4%99zyk_programowania
zyk programowania to usystematyzowany sposób przekazywania komputerowi polece do
wykonania.
zyk programowania pozwala programi cie na precyzyjne przekazanie maszynie, jakie dane maj ulec
obróbce i jakie czynno ci nale y podj w okre lonych warunkach.
Ada
Ada to strukturalny, kompilowalny, statycznie typowany j zyk programowania opracowany przez Jean
Ichbiah z Cii Honeywell Bull w latach 70. XX wieku. Nazwa j zyka pochodzi od nazwiska lady Augusty
Ady Lovelace, uwa anej za pierwsz programistk w historii.
ciwo ci j zyka
Wiele cech Ady zaprojektowanych zosta o w celu zminimalizowania szans pope nienia trudnych do
wykrycia b dów.
Istniej dwa standardy Ady: starszy Ada 83 oraz nowszy Ada 95, w którym dodano m.in. obs ug
obiektów.
Ada jest obs ugiwana przez kompilator GNAT, oparty na GCC.
Poniewa wiele rzeczy w Adzie jest zaprojektowane "wbrew" tradycji uniksowej, nie cieszy si ona
popularno ci w ród programistów uniksowych (w szczególno ci w ród programistów open source). Do
nielicznych programów open source napisanych w Adzie nale y wizualny debugger GNU Visual
Debugger (GVD).
Oto prosty przyk ad (funkcja Ackermanna) kodu w Adzie demonstruj cy kilka jej cech. Program, eby si
skompilowa , musi by umieszczony w pliku "ackermann.adb" (wielko liter bez znaczenia).
with Ada.Command_Line; use Ada.Command_Line;
with Gnat.Io; use Gnat.Io;
procedure Ackermann is
function ack (x : in integer; y : in integer) return integer is
begin
if (x = 0) then
return y + 1;
elsif (y = 0) then
return ack(x-1,1);
else
return ack(x-1,ack(x,y-1));
end if;
end ack;
x,y,a : integer;
begin
if (Argument_Count = 2) then
x := Integer'Value (Argument(1));
7
y := Integer'Value (Argument(2));
elsif (Argument_Count = 1) then
x := 3;
y := Integer'Value (Argument(1));
else
x := 3;
y := 3;
end if;
a := ack (x,y);
Put ("Ack (");
Put (x);
Put (",");
Put (y);
Put (") = ");
Put (a);
New_Line;
end Ackermann;
Co wida :
•
•
•
•
•
•
•
•
•
Wszystko jest case-insensitive.
Ca y program to jedna wielka procedura, która mo e zawiera podprocedury (w tym wypadku
funkcj ack).
Wszystkie zamkni cia s zapisywane za pomoc end co_zamykamy. Pozwala to unikn
przypadkowych pomy ek, ale w opinii wielu programistów jest nadmiarowe.
Przypisanie jest zapisywane :=, natomiast porównanie przez =. Argumentuje si to tym, e w C
wyst puj pomy ki polegaj ce na zapisie = zamiast w ciwego ==.
Nie ma odpowiednika funkcji printf, uwa anej za niebezpieczn . Chocia funkcje Put i
New_Line (z modu u Gnat.Io) s bezpieczniejsze, s bardzo niewygodne w u yciu.
elsif pisze si cznie nie za oddzielnie jak w C. Jest to pewne usprawnienie, u ywane przez
wi kszo nowych j zyków.
Sk adnie atrybutów to obiekt'atrybut (lub klasa'atrybut), zamiast bardziej
tradycyjnych . czy ::.
Casty s przeprowadzane sk adni Klasa'Value(warto ). Jest to znaczne ulepszenie
wobec C, gdzie (klasa)warto prowadzi do niepewnej kolejno ci wykonywania dzia i
zwykle w wi kszych wyra eniach jest zapisywane jako ((klasa)(warto )).
Wyst puje rozró nienie "procedur" (w nomenklaturze C: funkcje nie zwracaj ce warto ci) i
"funkcji" (w nomenklaturze C: funkcje zwracaj ce warto ). Wi kszo wspó czesnych j zyków
nie zawiera tego rozró nienia.
Asembler
Asembler to j zyk programowania niskiego poziomu, w którym zasadniczo jedno polecenie odpowiada
jednemu rozkazowi procesora. Jest to j zyk powsta y na bazie j zyka maszynowego poprzez zast pienie
kodów maszynowych pisanych binarnie lub szesnastkowo ich mnemonicznymi odpowiednikami. Dzi ki
zamianie liczb na tzw. mnemoniki mo na pisa programy w miar zrozumia e dla cz owieka, a
jednocze nie bezpo rednio t umaczone na kod maszynowy procesora zapewniaj c pe kontrol
programow .
Pierwszym asemblerem by skonstruowany przez Konrada Zuse - uk ad elektromechaniczny
przygotowania ta my perforowanej z programem dla maszyny Z4 (modu Planfertigungsteil). Pozwala na
wprowadzanie i odczyt rozkazów i adresów w sposób zrozumia y dla cz owieka.
8
Wspó cze nie praktycznie nie u ywa si asemblera do pisania ca ych programów dla komputerów
osobistych. Jest on za to wci u ywany do pisania fragmentów wymagaj cych bardzo wysokiej
wydajno ci lub maj cych inne specjalne wymagania, np. dla oprogramowania mikrokontrolerów o
niewielkich rozmiarach pami ci programu.
BASIC
BASIC (Beginner's All-purpose Symbolic Instruction Code) - j zyk programowania wysokiego poziomu,
opracowany w 1964 przez Johna George'a Kemeny'ego i Thomasa E. Kurtza w Dartmouth College w
oparciu o Fortran i Algol-60. Jego pierwsza wersja znana by a pó niej pod nazw Dartmouth BASIC.
Historia
Za enia projektantów BASIC-a uwzgl dnia y atwo u ytkowania, wszechstronno zastosowa ,
interaktywno i dobr komunikacj z u ytkownikiem poprzez jasne komunikaty b dów.
BASIC wybi si na czo o j zyków do zastosowa amatorskich i pó profesjonalnych po wprowadzeniu na
rynek mikrokomputera Altair 8800. Twórcami dialektu BASIC-a dla tej maszyny byli Bill Gates i Paul
Allen. BASIC szybko zaimplementowany zosta przy budowie serii komputerów Apple, a pó niej (jako
GW BASIC) w IBM PC (pocz tkowo w ROM, a po pojawieniu si DOSa na dyskietce).
Nast pc GW BASIC-a dla pecetów zosta QB, pó niej rozprowadzany komercyjnie jako QuickBASIC,
który w ko cu wyewoluowa w Visual Basic for Windows. Istniej te alternatywne interpretery i
kompilatory tego j zyka dla platformy win32 (Power BASIC, Dark BASIC itp.)
W Polsce najbardziej znane s dialekty BASIC-a napisane dla popularnych komputerów o miobitowych Commodore, Amstrada CPC, Atari i Sinclair ZX Spectrum.
Semantyka
Programy w BASIC-u sk adaj si z kolejno wykonywanych instrukcji, które zebrane s w linie.
Wszystkie dialekty oprócz najprymitywniejszych dopuszczaj kilka instrukcji w jednej linii,
rozdzielonych zazwyczaj znakiem dwukropka. Starsze wersje wymaga y numerowania linii (maksymalny
numer wynosi zwykle 9999, 16384 albo 32767).
Zmienne mog mie dowolnie d ugie nazwy zaczynaj ce si od litery. Nazwy zmiennych cuchowych
zako czone s znakiem dolara, np. x$, zmienna$. Tablice mog mie dwa lub wi cej wymiarów (w
niektórych dialektach tablice znakowe s
do wska nikowego dost pu do cuchów, jak w C).
BASIC w sprowadzonej do wspólnego mianownika wersji posiada bardzo proste mechanizmy sterowania
przebiegiem programu - instrukcj skoku bezwarunkowego GOTO, wywo ania podprogramu GOSUB
(ko czonego instrukcj RETURN) oraz warunkow (IF..THEN (oraz ELSE w niektórych dialektach). Za
pomoc instrukcji FOR..NEXT mo na powtarza okre lone fragmenty programu (p tla iteracyjna).
Niektóre dialekty posiadaj tak e instrukcje p tli warunkowej (DO LOOP..UNTIL, WHILE..WEND),
skoku warunkowego (ON GOTO, ON GOSUB), oraz wyboru warunkowego (CASE..SELECT).
Inne typowe instrukcje:
9
RUN - uruchomienie programu
PRINT tekst - wyprowadzenie tekstu lub warto ci zmiennej na urz dzenie wyj ciowe (najcz ciej
ekran).
INPUT zmienna - wczytanie warto ci z klawiatury do zmiennej
DIM tablica - deklaracja tablicy
LET zmienna = warto - deklaracja zmiennej (czasami LET mo na opu ci )
STOP - zatrzymanie programu
CONTINUE - wznowienie zatrzymanego programu
Ponadto w wi kszo ci dialektów dost pne s funkcje matematyczne (INT, ABS, SGN) trygonometryczne
(SIN, COS, TAN, czasami LOG, LN) i operacji na cuchach (szereg funkcji zako czonych znakiem $,
np. LEFT$, UPPER$).
Visual Basic to j zyk i narz dzie programowania firmy Microsoft. Sk adnia jest oparta na j zyku BASIC,
ale unowocze niona.
Zawiera kilkaset instrukcji, funkcji i s ów kluczowych. Nie jest j zykiem w pe ni obiektowym, gdy nie
udost pnia, np. mo liwo ci dziedziczenia czy polimorfizmu. Wykorzystuje technologi ActiveX.
Jest dost pny w trzech wersjach:
•
•
•
Learning Edition
Professional Edition
Enterprise Edition
W ostatnim czasie, wraz z pojawieniem si platformy .NET, ukaza a si nowa wersja Visal Basica pod
nazw Visual Basic .NET. Mog wyst powa komplikacje przy automatycznym przenoszeniu programów
napisanych w Visual Basic do Visual Basic .NET.
C
C jest j zykiem programowania stworzonym na pocz tku lat siedemdziesi tych przez Dennisa Ritchiego
do programowania systemów operacyjnych i innych zada niskiego poziomu.
Historia
Poprzednikiem j zyka C by interpretowany j zyk B który Ritchie rozwin w j zyk C. Pierwszy okres
rozwoju j zyka to lata 1969-1973. W roku 1973 w j zyku C uda o si zaimplementowa j dro (kernel)
systemu operacyjnego Unix. W 1978 roku Brian Kernighan i Dennis Ritchie opublikowali dokumentacj
zyka p.t. C Programming Language.
C sta si popularny poza Laboratoriami Bella (gdzie powsta ) po 1980 roku, i sta si dominuj cym
zykiem do programowania systemów operacyjnych i aplikacji. Na bazie j zyka C w latach
osiemdziesi tych Bjarne Stroustrup stworzy j zyk C++, który wprowadza mo liwo programowania
obiektowego.
Standardy
Standard j zyka C zosta zapisany w normie ISO 9899. Pierwsze wydanie tego dokumentu mia o miejsce
w 1990 roku (ISO 9899:1990) i by o modyfikacj standardu ANSI: ANSI X3.159-1989 "Programming
Language C". J zyk zgodny z t wersj standardu okre lany jest nieformalnie jako C89. Od tego czasu
10
powsta o wiele uaktualnie tej normy. W 2001 roku ostatnia ma oznaczenie ISO 9899:1999 i zosta a
opublikowana w 1999 roku, j zyk zgodny z t norm okre lany jest nieformalnie jako C99. C99 nie jest
kompatybilny z C++.
Podstawowe elementy j zyka C
Komentarze
Komentarz blokowy umieszcza si mi dzy sekwencj znaków "/*" a "*/", a komentarz liniowy
rozpoczyna si sekwencj "//" a ko czy znakiem ko ca linii. Komentarz liniowy wprowadzono do
obecnego standardu j zyka C (ISO 9899:1999) z j zyka C++.
/* To jest komentarz
* blokowy. Zajmuje on
* kilka linii */
// to jest komentarz liniowy
Podstawowe typy
Typ
_Bool
Wielko
1 bajt
pami ci
char
1 bajt
unsigned char
1 bajt
signed char
1 bajt
int
2 lub 4 bajty
unsigned int
2 lub 4 bajty
short
2 bajty
unsigned short
2 bajty
long
4 bajty
unsigned long
4 bajty
long long
8 bajtów
tylko w nowych wersjach
unsigned long long
8 bajtów
tylko w nowych wersjach
float
4 bajty
double
8 bajtów
long double
10 bajtów
float _Complex
8 bajtów
tylko w nowych wersjach
double _Complex
16 bajtów
tylko w nowych wersjach
Uwagi
tylko w nowych wersjach
long double _Complex 24 bajty
tylko w nowych wersjach
float _Imaginary
tylko w nowych wersjach
double _Imaginary
tylko w nowych wersjach
long double _Imaginary
tylko w nowych wersjach
void
11
typ nazwa;
Typy pochodne
Typ wyliczeniowy
enum nazwa { jeden, dwa };
Struktury
struct nazwa {
typ1 nazwa1;
typ2 nazwa2;
};
Unie
union nazwa {
typ1 nazwa1;
typ2 nazwa2;
};
Pola bitowe
typ [identyfikator] : d ugo
;
Tablice
typ nazwa[liczba];
Wska niki
typ *nazwa;
typ **nazwa;
typ_zwracany (*nazwa_wsk_do_funkcji)(typ nazwa_parametru1,typ
nazwa_parametru2,...);
Instrukcje steruj ce
Instrukcja if
else i else if s opcjonalne.
if (warunek1) {
instrukcje;
}
[else if(warunek2){
instrukcje;
}]
[else {
instrukcje;
}]
12
tla while
while (warunek) {
instrukcje;
}
tla do...while
do {
instrukcje;
} while (warunek);
tla for
for ([instrukcja-pocz tkowe]; [warunek];
[instrukcje-wykonywane-po-ka dej-iteracji]) {
instrukcje;
}
Instrukcja switch
break jest opcjonalne. warto
1 i warto
2 musz by sta ymi.
switch (wyra enie) {
case warto 1 :
instrukcje;
[break;]
case warto 2 :
instrukcje;
[break;]
default :
instrukcje;
[break;]
}
Funkcje
Klasa_pami ci, typ i lista_argumentów s opcjonalne.
[klasa_pamieci] [typ] nazwa([lista_argumentów])
{
instrukcje;
}
13
Przyk ady
Hello, world
#include <stdio.h>
int main(void)
{
printf ("Hello, world!\n");
return 0;
}
W powy szym kodzie:
•
•
•
•
•
Dyrektywa #include w cza do pliku zawarto odpowiednich plików nag ówkowych - w tym
przypadku pliku stdio.h, zawieraj cego m.in. prototyp funkcji printf.
ówna funkcja nazywa si zawsze main. Zwraca ona warto typu ca kowitoliczbowego - int,
w tym przypadku 0.
Za wyprowadzenie wyniku na standardowe wyj cie (zwykle na ekran) odpowiedzialna jest funkcja
printf.
cuch tekstowy zamyka si w cudzys owach:
cuch".
Znak nowej linii zapisuje si jako "\n".
Ciekawostki
Corocznie organizowany jest konkurs IOCCC (International Obfuscated C Code Contest) prezentuj cy
najbardziej "zaciemnione" (trudne do odczytania) programy w j zyku C.
C++
zyk C++ jest j zykiem programowania "o wielu paradygmatach", m.in. równie obiektowo
zorientowanym. Stworzony w latach osiemdziesi tych XX wieku przez Bjarne Stroustrupa. Na j zyk C++
wp yw mia y, poza j zykiem C, jako jego podstaw , przede wszystkim Simula, z której zaczerpn
ciwo ci obiektowe, a tak e j zyki takie, jak Algol, Ada, ML i Clu.
Historia
Pocz tkowo j zyk C++ by dost pny w takim standardzie, w jakim opracowano ostatni wersj
kompilatora Cfront (t umacz cy C++ na C), pó niej opublikowano pierwszy nieformalny standard zwany
ARM (Annotated Reference Manual), który sporz dzili Bjarne Stroustrup i Margaret Ellis. Standard
zyka C++ powsta w 1998 roku (ISO/IEC 14882-1998 "Information Technology - Programming
Languages - C++"). Standard ten zerwa cz ciowo wsteczn zgodno z ARM w swojej bibliotece
standardowej; jedyne, co pozosta o w stanie w miar nienaruszonym to biblioteka iostream.
Pocz tkowo najwa niejsz rzecz wprowadzon w C++ w stosunku do C by o programowanie obiektowe,
pó niej jednak wprowadzono do niego mnóstwo ulepsze , czyni c ten j zyk wygodniejszym i bardziej
elastycznym od swojego pierwowzoru. Nie od rzeczy jest te wspomnie , e niektóre zmiany w
standardzie j zyka C by y w wi kszo ci zainspirowane j zykiem C++ (np. s owo const).
14
Nazwa j zyka zosta a zaproponowana przez Ricka Mascitti w 1983 roku, kiedy to po raz pierwszy u yto
tego j zyka poza laboratorium naukowym. Odzwierciedla ona fakt, e j zyk ten jest rozszerzeniem j zyka
C. Wcze niej u ywano nazwy "C z klasami".
Pierwsze kompilatory j zyka C++, podobnie jak Cfront, by y wy cznie translatorami na j zyk C.
Kompilatory takie dost pne s i dzi , ale niestety nie oferuj one wszystkich w ciwo ci j zyka C++.
Pierwszym kompilatorem natywnym (produkuj cym od razu kod asemblerowy) dla j zyka C++ by g++ z
pakietu GCC, którego pierwszym autorem by Michael Tiemann, za yciel Cygnus Solutions.
Przyk adowy program
#include <iostream> // wstawiamy plik nag ówkowy biblioteki iostream
int main() // funkcja main
{
std::cout << "Hello world!" << std::endl; //wprowadzenie tekstu na ekran
}
Zamiast ci gle wpisywa std:: mo na na pocz tku programu dopisa using namespace std;, na
przyk ad:
#include <iostream> // wstawiamy plik nag ówkowy biblioteki iostream
using namespace std;
int main() // funkcja main
{
cout << "Hello world!" << endl; //wprowadzenie tekstu na ekran
}
Nowe cechy j zyka C++
Niektóre z nich trafi y do j zyka C, najpierw nieoficjalnie, pó niej za zosta y ustandaryzowane w C99.
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Klasy wraz z innymi elementami j zyków zorientowanych obiektowo takimi jak: dziedziczenie,
metody wirtualne
Dodatkowe ulepszenia klas, konstruktory, destruktory (j zyk C++ by pierwszym j zykiem w
którym u yto nazwy "konstruktor" w tym w nie znaczeniu i pierwszym j zykiem, który posiada
destruktory)
Szablony (wzorce) klas i funkcji
Obs uga wyj tków
Deklaracje zmiennych jako instrukcje (w ANSI C wszystkie zmienne lokalne funkcji musia y by
zadeklarowane przed pierwsz jej instrukcj )
Dynamiczna inicjalizacja zmiennych globalnych i lokalnych zmiennych statycznych (tzn. mog y
by inicjalizowane wynikiem wywo anej funkcji)
Przestrzenie nazw
Referencje
Operatory new i delete
Operator zasi gu (::) (w ANSI C nie istnieje mo liwo odwo ania si do zmiennej globalnej o
tej samej nazwie, co zmienna lokalna)
Dynamiczna kontrola typów RTTI
Przeci anie funkcji
Przeci anie operatorów
Wska niki do sk adowych (pól i metod)
15
•
•
•
•
•
Jednolinijkowe komentarze (//), pochodz ce z j zyka B (równie C99)
Funkcje rozwijalne (inline) (równie C99)
Nowy typ bool i sta e true i false (równie C99)
"Szeroki" typ znakowy, wchar_t (równie C89) wraz ze wszystkimi zale no ciami (wiostream i
reszta, nag ówek <wctype>, wstring)
operatory rzutowania: static_cast, dynamic_cast, reinterpret_cast i const_cast
C Sharp (C#)
Z powodów technicznych poprawny zapis nazwy jest rzadko spotykany – nawet ze strony Microsoftu.
Znak sharp, czyli krzy yk w notacji muzycznej, jest zast powany znakiem kratki (hash, #).
zyk C jest obiektowym j zykiem programowania zaprojektowanym przez firm Microsoft. Program
napisany w tym j zyku kompilowany jest do kodu po redniego wykonywanego w maszynie wirtualnej
.NET, Mono lub DotGNU.
Do uruchomienia programu napisanego w j zyku C# w systemie Windows wymagana jest biblioteka
uruchomieniowa zwana .NET Framework dost pna za darmo na stronie Microsoftu.
zyk C# ma wiele cech wspólnych z j zykami programowania C++ i Java.
Przyk adowe programy
Prosty program napisany w j zyku C#. Po jego skompilowaniu i uruchomieniu zobaczymy napis „Hello
world!”.
using System;
public class PrzykladowaKlasa {
public static void Main()
{
System.Console.WriteLine ("Hello world!");
}
}
Kolejny przyk adowy program demonstruje technik programowania interfejsu u ytkownika. Po jego
skompilowaniu i uruchomieniu system operacyjny utworzy okienko aplikacji.
using System;
using System.Windows.Forms;
public class PrzykladoweOkno : Form {
public static void Main()
{
Application.Run( new PrzykladoweOkno() );
}
}
16
Delphi
Definicja intuicyjna:
Delphi to narz dzie, które s y do tworzenia programów w rodowisku Microsoft Windows. Dzi ki
palecie komponentów oraz zintegrowanym narz dziom, Delphi umo liwia szybkie i proste tworzenie
programów na platform Windows bez konieczno ci znajomo ci WinAPI.
Delphi (oznaczane cz sto jako Borland Delphi) to zintegrowane rodowisko programistyczne typu RAD,
przeznaczone do pracy pod kontrol Microsoft Windows, dzia aj ce zgodnie z zasad dwustronnej edycji.
Odpowiednik Delphi pod Linuksa nosi nazw Kylix.
zykiem programowania (obiektowym) osadzonym w Delphi jest Object Pascal. Programy tworzone w
Delphi musz zosta skompilowane do postaci kodu binarnego przed pierwszym wykonaniem, pomimo
tego podczas projektowania niektóre komponenty dzia aj ju w trakcie tworzenia projektu, umo liwiaj c
ogl danie efektów pracy. Delphi zapisuje informacje o w ciwo ciach obiektów udost pniaj c je
programi cie. Informacje te umo liwiaj zmian ich warto ci przez programist bez pisania kodu
programu oraz s u ywane podczas pracy programu - technika ta zwana jest RTTI. Tworzone programy
pracuj na zasadzie obs ugi zdarze , ka de polecenie (np. klikni cie myszk ) generuje zdarzenie, które
poprzez wewn trzne mechanizmy programu s przesy ane do odpowiedniego komponentu, a rol
programisty jest tylko do czenie odpowiedniego kodu umo liwiaj cego obs ug tego zdarzenia.
Historia
Delphi, opracowane przez firm Borland, jest nast pc rodowiska Turbo Pascal b cego po czeniem
kompilatora j zyka Pascal ze rodowiskiem edycyjnym. Pierwsza wersja (16-bitowa) Delphi ukaza a si w
1995 roku i przeznaczona by a do pracy w Microsoft Windows 3.1. By o to jedno z pierwszych narz dzi
typu Rapid Application Development
Kolejna wersja - Delphi 2 - ukaza a si w roku 1996 i by a rodowiskiem 32-bitowym, generuj cym kod
dla Microsoft Windows 95. Delphi 3 ukaza o si w roku 1997 i wprowadzi o do rodowiska nast puj ce
elementy: pakiety, rozproszon obs ug baz danych, wspomaganie tworzenia aplikacji internetowych,
wspomaganie tworzenia kontrolek ActiveX. Delphi 4 doda o wiele nowych usprawnie IDE (jak na
przyk ad mo liwo dokowanie okien), oraz usprawnienia w samym j zyku programowania (na przyk ad
przeci anie funkcji oraz metod). W roku 2001 powsta a edycja przeznaczona dla Linuksa nazwana Kylix.
Wersja 8 (rok 2003) wprowadzi a Delphi w rodowisko .NET, po raz pierwszy od powstania uleg o te
zmianie IDE, upodobniaj c si do Microsoft Visual Studio .NET. W edycji 2005 oprócz zintegrowania w
jednym rodowisku kompilatorów dla j zyków Delphi (w ciwie Object Pascal), Delphi.NET oraz C#
wprowadzono dalsze udoskonalenia rodowiska (zw aszcza refactoring kodu).
Aktualna wersja: Borland Delphi 2005 (Borland Developer Studio 3.0), pracuj ca w rodowiskach .NET
i Win32, a tak e zawieraj ca wbudowany kompilator j zyka C# - C# Builder.
Wersje planowane: DeXter (nazwa kodowa) - ma integrowa w jednym IDE narz dzia dla j zyków
Delphi, Delphi.NET, C# oraz C++ (Borland C++ Builder), oferowa znacznie przyspieszenie rodowiska
oraz tworzonych w nim aplikacji, oraz dalsze udoskonalenia dla programistów w dziedzinie edycji kodu.
DeXter ma by gotowy przed ko cem 2005 roku.
Cechy i funkcjonalno
17
Delphi charakteryzuje si :
•
•
•
•
•
•
•
szerokim wspomaganiem dla obs ugi relacyjnych systemów bazodanowych (biurkowych lub SQLowych)
szerokim zestawem gotowych do u ycia komponentów
dwustronn edycj
umo liwieniem budowania wizualnej cz ci aplikacji za pomoc techniki przeci gnij i upu (ang.
drag and drop)
szybkim, efektywnym kompilatorem (do 'natywnego' kodu maszynowego) j zyka Object Pascal
rozszerzalno ci rodowiska
do czonymi wieloma narz dziami uzupe niaj cymi
rodowisko Delphi wraz z do czonymi narz dziami mo e by uznane uznane za j zyk czwartej
generacji.
rodowisko u ytkowników
Delphi cieszy si w Polsce stosunkowo du popularno ci , w g ównej mierze ze wzgl du na relatywn
prostot i powszechno ró nego rodzaju poradników dla pocz tkuj cych. Grupa polskich programistów
Delphi spotyka si na dorocznych Zlotach, podczas ktorych odbywaj si wyk ady dotycz ce
programowania.
Fortran
Fortran lub FORTRAN (ang. FORmula TRANslator) to j zyk programowania stworzony w latach 50. i
nadal b cy w u yciu. By to niegdy j zyk proceduralny, obecnie tak e daje mo liwo u ycia struktur
(Fortran 90/95), a jego g ównym zastosowaniem s obliczenia naukowe i analiza numeryczna.
Z pierwszych wersji j zyka pochodzi zasada braku rozró niania ma ych i du ych liter w s owach
kluczowych j zyka oraz u ywanych zmiennych a tak e bogate zasady tworzenia formatów zapisywanych
i drukowanych danych.
Dost pna jest wielka ilo bibliotek w Fortranie pozwalaj cych rozwi zywa praktycznie ka de zadanie
numeryczne. Podstawowe przyczyny, dla której Fortran jest wykorzystywany i rozwijany do dzi , to:
szybko oblicze oraz wysoka jako kodu generowanego przez kompilatory Fortrana, wynikaj ca
m.in. z jego d ugiej obecno ci na rynku programistycznym, znakomita skalowalno i przeno no
oprogramowania (pomi dzy ró nymi platformami sprz towymi i systemami operacyjnymi), a tak e
dost pno bibliotek dla programowania wieloprocesorowego i równoleg ego. Obliczenia
aerodynamiczne, wytrzyma ciowe i cieplne obecnie prowadzone s wy cznie z u yciem tego j zyka.
Do niedawna te zalety by y okupione brakiem dobrych metod wizualizacji czy niskopoziomowej
komunikacji z systemem operacyjnym, gdy te zagadnienia s pomini te w kolejnych standardach j zyka
(a do Fortranu 95 w cznie). Obecnie producenci kompilatorów, a zw aszcza producenci niezale ni,
wzbogacaj je o mo liwo stosowania grafiki celem wizualizacji wyników oblicze (wykresy,
wizualizacja tablic wielowymiarowych) poprzez dostarczanie odpowiednich bibliotek.
Historia i standardy
Pierwszy kompilator Fortranu stworzy zespó Johna Backusa, który w latach 1954-1957 pracowa on dla
IBM. Kompilator ten by pierwszym w historii kompilatorem j zyka wysokiego poziomu. Zosta starannie
18
zoptymalizowany, poniewa autorzy obawiali si , e nikt nie b dzie go u ywa , je li wydajno
programów nie b dzie porównywalna do programów napisanych w asemblerze.
Pierwsza standaryzacja nastapi a w 1960 roku, kiedy opisano pierwszy standard j zyka znany jako
Fortran IV. Kolejnym standardem by Fortran 66. Standard ten by zbyt ubogi i implementacje musia y
zawiera wiele rozszerze . W latach siedemdziesi tych American National Standard Institute (ANSI)
opracowa a kolejny standard nazwany Fortran 77 który w roku 1980 sta si wiatowym standardem.
Jego struktura przystosowana jest do u ywanych wówczas powszechnie kart perforowanych, ale zawiera a
elementy programowania strukturalnego. W Polsce bardzo popularna by a odmiana Fortranu na maszyny
ICL/Odra (FORTRAN 1900), a tak e Watfor 77, Lahey 77 i MS Fortran na PC czy Fortran 80 dla 8bitowych komputerów z systemem CP/M-80. W praktyce wi kszo tych kompilatorów mia a wiele
rozszerze , które dopiero po latach wesz y do kolejnego standardu (struktury rekordowe, alokowalne
tablice, wi cej instrukcji pozwalaj cych na programowanie strukturalne itp.). Nast pc Fortranu 77 sta si
Fortran 90. Standard ma ca kowicie zmienion sk adnie dostosowan do wspó czesnych j zyków
programowania, przyk adowo Fortran 90 nie wymusza ju na u ytkowniku stosowania etykiet i instrukcji
Goto. Kolejnym standardem jest Fortran 95, zmiany w stosunku do poprzedniej wersji s niewielkie.
Pomimo wprowadzenia nowych standardów Fortran 77 jest nadal w u yciu (g ównie przez starszych
programistów przyzwyczajonych do tej wersji), co uwzgl dniaj producenci praktycznie wszystkich
kompilatorów – na przyk ad kompilator Compaq Visual Fortran (wcze niej Digital Visual Fortran)
kompiluje programy napisane w standardach 66/77/90/95. Najnowszy standard j zyka nosi nazw Fortran
2003
Przyk ad kodu
FORTRAN77 (Hello, world)
PROGRAM HELLO
PRINT *, 'hello, world'
END
Java
Definicja intuicyjna:
Java jest obiektowym j zykiem programowania. Programy napisane w Javie mozna uruchomi na wielu
urz dzeniach, takich jak telefony komórkowe lub komputery oraz pod ró nymi systemami
operacyjnymi, przy u yciu Wirtualnej maszyny Javy, która musi by w danym rodowisku
zainstalowana.
Java jest obiektowym j zykiem programowania stworzonym przez grup robocz pod kierunkiem Jamesa
Goslinga z firmy Sun Microsystems. Java jest j zykiem kompilowanym do postaci wykonywanej przez
maszyn wirtualn i silnie typowanym. Jej podstawowe koncepcje zosta y przej te z j zyka Smalltalk
(maszyna wirtualna, garbage collection) oraz z j zyka C++ (du a cz
sk adni i s ów kluczowych).
Javy nie nale y myli ze skryptowym j zykiem JavaScript, z którym ma niewiele wspólnego (g ównie
sk adni podstawowych instrukcji).
ówne koncepcje
Autorzy j zyka Java okre lili kilkana cie kluczowych koncepcji swojego j zyka. Najwa niejsze z nich to:
19
Obiektowo
W przeciwie stwie do C++ (który jest dodatkiem do proceduralnego j zyka C), w Javie obiektowo jest
zaimplementowana od podstaw. Wszelkie dane i akcje na nich podejmowane s pogrupowane w klasy
obiektów. O obiekcie mo na my le jako o samoistnej cz ci programu, która mo e przyjmowa
okre lone stany i posiada okre lone zachowania, które mog zmienia te stany b
przesy dane do
innych obiektów.
// oznacza komentarz
// w tej postaci to obiekt reprezentuj cy kolorowy punkt :)
public class Figura {
// w
ciwo ci (atrybuty/pola)
private float rodekX;
private float rodekY;
private int kolor; //tak naprawd , do przechowywania(tworzenia)
//koloru, u ywa si zazwyczaj obiektu java.awt.Color
// operacje (metody)
public float obliczPole(){
return 0f;
}
public float obliczObwód(){
return 0f;
}
public void wy wietl(){...}
...
}
Jak wida z powy szego, silne typowanie oznacza, e ka da wprowadzana zmienna czy pole musi mie
przypisany typ danych jaki przechowuje (float oznacza typ zmiennoprzecinkowy) a ka da metoda musi
deklarowa jakiego typu dane zwraca (lub void je li nic nie zwraca). Z przyk adu wida te , e w
nazwach zmiennych i metod mo na u ywa polskich liter - to zas uga wbudowanej obs ugi Unicode.
Pokazany w nazwach zmiennych i metod standard kodowania (polegaj cy na pisaniu s ów bez spacji a z
kapitalizowaniem drugiego i nast pnych s ów sk adowych) jest nieobowi zkowy, ale jest jedn z
dobrych praktyk przy programowaniu w Javie
W Javie wszystkie obiekty s pochodn obiektu nadrz dnego (jego klasa nazywa si po prostu Object), z
którego dziedzicz podstawowe zachowania i w ciwo ci, dzi ki czemu wszystkie posiadaj wspólny
podzbiór podstawowych mo liwo ci takich jak ich identyfikacja, porównywanie, kopiowanie, niszczenie
czy wsparcie dla programowania wspó bie nego.
// "extends" oznacza dziedziczenie po klasie Figura pól:
// oraz metod: obliczPole, obliczObwód i wy wietl
public class Kwadrat extends Figura {
// dodatkowe atrybuty
private float wierzcho ekX;
private float wierzcho ekY;
private float d ugo Boku;
rodekX,
rodekY i kolor
// "prze adowujemy" operacje rodzica, dzi ki czemu dla ka dej zdefiniowanej
Figury
// mo na policzy pole czy obwód
public float obliczPole(){
return d ugo Boku*d ugo Boku;
}
...
}
20
Cho C++ udost pnia wielokrotne dziedziczenie, projektanci Javy odeszli od tego pomys u. Java
umo liwia dziedziczenie wy cznie po jednym rodzicu, a wi c wy cznie jedna klasa mo e przekaza
swoje w ciwo ci i operacje jako podstaw do rozszerzania ich o dodatkowe mo liwo ci. Dzi ki temu
wyeliminowano mo liwo konfliktów mi dzy w ciwo ciami przekazywanymi przez klasy nadrz dne.
By zrekompensowa spadek elastyczno ci wynikaj cy z pojedynczego dziedziczenia wprowadzono
interfejsy. Pozwalaj one nazwa pewien okre lony zbiór operacji, dzi ki czemu mo na okre li , e dany
obiekt, któremu przypisano dany interface (implementuj cy go) umo liwia wykonanie owego zestawu
operacji.
Niezale no
od architektury
w ciwo Java posiada dzi ki temu, e kod ród owy programów pisanych w Javie kompiluje si do
kodu po redniego (tzw. bytecode). Powsta y kod jest niezale ny od systemu operacyjnego a wykonuje go
tzw. maszyna wirtualna, która (mi dzy innymi) t umaczy kod uniwersalny na kod dostosowany do
specyfiki konkretnego systemu operacyjnego. W tej chwili wirtualna maszyna Javy jest ju dost pna dla
wi kszo ci systemów operacyjnych.
Jednak z uwagi na to, e kod posredni jest interpretowany, taki system jest wolniejszy ni kompilacja do
kodu maszynowego. Z tego wzgl du maszyn wirtualn cz sto uzupe nia si o kompilator JIT. Istniej
równie niezale ne od Suna kompilatory Javy - przyk adem podprojekt gcc o nazwie GCJ. W rezultacie
powstaje szybszy kod, ale który mo na uruchamia na jednej tylko platformie, a wi c nieprzeno ny.
Sieciowo
i obs uga programowania rozproszonego
Dzi ki wykorzystaniu regu obiektowo ci, Java nie widzi ró nicy mi dzy danymi p yn cymi z pliku
lokalnego a danymi z pliku dost pnego przez HTTP czy FTP.
Biblioteki Javy udost pniaj wyspecjalizowane funkcje umo liwiaj ce programowanie rozproszone zarówno mi dzy aplikacjami Javy (RMI) jak i mi dzy aplikacj Javy a aplikacjami napisanymi w innych
zykach (CORBA, WebServices). Inne biblioteki udost pniaj mo liwo pisania aplikacji
uruchamianych w przegl darkach internetowych (aplety) oraz aplikacji dzia aj cych ci gle po stronie
serwera (serwlety).
Niezawodno
i bezpiecze stwo
W zamierzeniu Java mia a zast pi C++ - obiektow nak adk na j zyk C. Jej projektanci zacz li od
rozpoznania cech j zyka C++, które s przyczyn najwi kszej ilo ci b dów programistycznych, by
stworzy j zyk prosty w u yciu, bezpieczny i niezawodny.
O ile po pi ciu ods onach Javy jej prostota jest dyskusyjna, o tyle j zyk faktycznie robi du o, by utrudni
programi cie pope nienie b du. Przede wszystkim Java posiada system wyj tków czyli sytuacji, gdy kod
programu natrafia na nieprzewidywane trudno ci, takie jak np.:
•
•
•
operacje na elemencie poza zadeklarowan granic tablicy lub elemencie pustym
czytanie z niedost pnego pliku lub nieprawid owego adresu URL
podanie nieprawid owych danych przez u ytkownika
W innych j zykach programowania programista oczywi cie mo e wprowadzi wewn trzne testy
sprawdzaj ce poprawno danych, pozycj indeksu tablicy, inicjalizacj zmiennych itd., ale jest to jego
dobra wola i nie jest to jako szczególnie wspierane przez dany j zyk. W Javie jest inaczej - obs uga
21
wyj tków jest obowi zkowa, bez tego program si nie skompiluje. Przy tym obiekty wchodz ce w sk ad
pakietu standardowego Javy (i gros obiektów z pakietów pochodz cych od powa nych programistów
niezale nych) implementuj wyj tki w ka dym miejscu kodu, którego wykonanie jest niepewne ze
wzgl du na okoliczno ci zewn trzne.
Sama obs uga wyj tków polega na napisaniu kodu, który wykona si w odpowiedzi na tak sytuacj
nadzwyczajn . Mo e to by np. podstawienie warto ci domy lnej przy natrafieniu na nieprawid ow
warto parametru, zaniechanie danej akcji i powrót do stanu stabilnego czy cho by zapisanie pracy przed
wyj ciem. W sytuacji wyj tkowej program przerywa normalne wykonanie i tworzy specjalny obiekt
wyj tku odpowiedniej klasy, który "wyrzuca" z normalnego biegu programu. Nast pnie zdefiniowany
przez u ytkownika kod " apie" ten obiekt wyj tku i podejmuje odpowiednie dzia anie. Dzia anie mo e by
dwojakiego typu: wspomniane wy ej rodki zaradcze lub odrzucenie takiego " mierdz cego jaja" dalej, do
bloku programu, który nakaza wykonanie wadliwej operacji. Takie podawanie sobie wyj tku mo e by
wieloetapowe i je li sko czy si w bloku g ównym programu powoduje jego przerwanie i og oszenie
du krytycznego.
Oprócz systemu wyj tków Java od wersji 1.4 posiada dwa inne systemy wspomagaj ce pisanie
niezawodnych programów: logowanie i asercje. Pierwsze pozwalaj na zapisanie w plikach dziennika
przebiegu dzia ania programu, z dodatkow mo liwo ci filtrowania zawarto ci, okre lenia poziomu
logowanych b dów itp. Drugie rozwi zanie pozwala na upewnienie si , e pewne za enia co do
okre lonych wyra
(np. e liczba, z której wyci gamy pierwiastek jest nieujemna) s prawdziwe.
Asercje s o tyle ciekawe, e dzia aj tylko z odpowiedni opcj wykonania programu, dzi ki czemu
programista mo e sprawdzi dzia anie programu, a pó niej bez wysi ku spowodowa pomini cie testowej
cz ci kodu po prostu przez omini cie tej opcji.
Dystrybucje j zyka Java
Pakiety
Java nie jest monolitem, lecz sk ada si z szeregu klas definiuj cych obiekty ró nego typu. Dla
przejrzysto ci klasy te pogrupowane s w hierarchicznie u one pakiety. Ka dy pakiet grupuje klasy
zwi zane z pewnym szerokim zakresem zastosowa j zyka np. java.io (klasy wej cia-wyj cia),
java.util.prefs (klasy u ytkowe do obs ugi preferencji) czy java.awt (system obs ugi trybu graficznego).
Hierarchi klas oddaj nazwy pakietów, które skonstruowane s podobnie jak cie ki dost pu do plików.
Na przyk ad klasa Preferences znajduj ca si w pakiecie java.util.prefs na pe nazw :
java.util.prefs.Preferences, co oznacza:
•
•
•
•
java : pakiet nale y do zestawu standardowych pakietów Javy
util : to ró nego typu klasy u ytkowe (pomocnicze) g ównie organizuj ce obs ug ró nego typu
struktur danych
prefs : system obs ugi preferencji w sposób niezale ny od platformy, w którym preferencje
systemowe i u ytkownika s sk adowane w postaci hierarchicznego rejestru.
Preferences : konkretna nazwa klasy.
Dzi ki takiemu systemowi nazwy klas s niepowtarzalne, co pozwala unikn niejednoznaczno ci (np.
czy chodzi o klas List implementuj
struktur listy danych czy o List implementuj
graficzn list
wy wietlan w okienku).
Wszystkie klasy pisane przez programistów niezale nych powinny by umieszczane w innych
hierarchiach. Firma Sun cz sto zaleca, by w nazewnictwie klas niestandardowych przed w ciw nazw
pakietu stosowa odwrócon nazw domeny internetowej autora pakietu. Na przyk ad narz dzie Ant [1]
22
znajduje si w pakiecie org.apache.ant, co zapobiega konfliktom nazw z pakietami innych autorów, którzy
równie chcieliby nazwa swój pakiet Ant.
JRE a JDK
Pakiety z hierarchii java i javax (dodatki wprowadzone w pó niejszych wersjach) nale do
podstawowego zestawu klas rozprowadzanych jako Java. Zestaw ten jest dost pny w dwóch wersjach:
JRE (Java Runtime Environment) - udost pnia bytecode wszystkich klas standardowych i wirtualn
maszyn do ich uruchamiania, za JDK (Java Development Kit) dodatkowo udost pnia ród a tych klas
oraz dodatkowe narz dzia takie jak kompilator, paker czy debugger. Podzia ten wprowadzono dlatego, e
ytkownik Javy do uruchamiania programów potrzebuje tylko JRE, natomiast do programowania
dzia aj cych aplikacji potrzeba ju JDK.
Implementacje Javy
Potocznie pod nazw Java rozumie si nie tylko j zyk programowania, ale tak e ca e rodowisko (JDK)
tworzone przez firm Sun. Z tego uogólnienia wynikaj pewne nie cis ci, jak np. to, e Java jest
niezale na od architektury - nie jest to jednak cecha samego j zyka, a mechanizmu wirtualnej maszyny,
wykorzystywanego w standardowej implementacji Suna.
Swoj w asn implementacj JDK, certyfikowan w ramach Java Community Process, tworzy na przyk ad
IBM, a na bazie kodu oryginalnej implementacji powstaje przeznaczona dla Linuksa Blackdown Java.
Istniej te projekty odtworzenia poszczególnych elementów rodowiska. W ród nich s wirtualne
maszyny Javy tworzone przez spo eczno FLOSS SableVM i Kaffe, do wiadczalny IBM-owski
kompilator Jikes, czy optymalizowany pod wzgl dem szybko ci dla architektur Intela JRockit, autorstwa
firmy BEA. Najcz ciej wykorzystuj one bibliotek standardowych klas rozwijan w ramach projektu
GNU Classpath.
Inne podej cie prezentuje projekt GCJ, który pozwala kompilowa programy w Javie bezpo rednio do
kodu maszynowego.
Java Server Pages
JSP (Java Server Pages) to technologia umo liwiaj ce tworzenie dynamicznych stron WWW z
wykorzystaniem j zyka Java, wplecionego w kod HTML danej strony. W tym aspekcie, jest to
rozwi zanie podobne do PHP.
Jest to poniek d odmiana servletow (aplikacji w Javie uruchamianych po stronie serwera). Przy
wywo aniu, strona JSP zamieniana jest na servlet, który wykonuje w ciwe dzia anie i ka de kolejne
zapytania do tej strony.
Je li u yta zostanie prekompilacja (kompilacja wst pna) to ju podczas uruchamiania serwera, wszystkie
strony JSP zostan zamienione na servlety. Powoduje to, e JSP dziedziczy wszystkie w ciwo ci
servletów.
JavaScript
JavaScript ("JS") to stworzony przez firm Netscape zorientowany obiektowo skryptowy j zyk
programowania, najcz ciej stosowany na stronach WWW. Implementacja JavaScriptu stworzona przez
firm Microsoft nosi nazw JScript. G ównym autorem j zyka JavaScript jest Brendan Eich.
23
Zastosowania
Najcz ciej spotykanym zastosowaniem klienckiej wersji j zyka JavaScript s strony WWW. Skrypty
pisane w JS s
najcz ciej do zapewnienia interaktywno ci oraz sprawdzania poprawno ci formularzy
HTML oraz budowania elementów nawigacyjnych (np. rozwijane menu). Tak uruchomiony skrypt
JavaScriptu ma ograniczony dost p do komputera, na którym jest wykonywany (ma wysoce ograniczony
dost pu do zasobów systemu), o ile nie zostanie podpisany cyfrowo.
Niektóre strony www zbudowane s z wykorzystaniem JavaScriptu (lub JScriptu) po stronie serwera,
jednak e znacznie cz ciej korzysta si w tym przypadku z innych j zyków.
W j zyku JavaScript mo na tak e pisa pe noprawne aplikacje. Istnieje kilka rodowisk, które to
umo liwiaj .
Pierwszego z nich dostarcza Mozilla. Dzi ki technologiom takim jak XUL, XBL, XPCOM oraz JSLib
mo na szybko tworzy aplikacje korzystaj ce z zasobów systemowych, z graficznym interfejsem
ytkownika dopasowuj cym si do danej platformy. Przyk adem aplikacji JS+XUL mo e by klient IRC
o nazwie ChatZilla, domy lnie do czony do pakietu Mozilla. Znacznie wi cej programów korzystaj cych
z tych technologii mo na znale na stronie MozDev.org.
Microsoft udost pnia tak e biblioteki umo liwiaj ce tworzenie aplikacji w JavaScript (JScript) jako cz
rodowiska Windows Scripting Host. Ponadto, JScript.NET jest jednym z podstawowych j zyków
rodowiska .NET.
Warto tak e wspomnie o stworzonym przez IBM rodowisku SashXB dla systemu Linux, które
umo liwia tworzenie w j zyku JavaScript aplikacji korzystaj cych z GTK+, GNOME i OpenLDAP.
Podstawowe elementy j zyka ECMAScript v3 (JavaScript 1.5)
Komentarze
Komentarze w skryptach JavaScriptu umieszcza si w sposób identyczny, jak w C++. Komentarz
blokowy umieszcza si mi dzy sekwencj znaków "/*" a "*/", a komentarz liniowy rozpoczyna si
sekwencj "//" a ko czy znakiem ko ca linii:
/* To jest komentarz
* blokowy. Zajmuje on kilka linii */
// to jest komentarz liniowy
Zmienne
Zmienne s typowane dynamicznie. Definiowanie zmiennej polega na zwyk ym przypisaniu jej warto ci
lub skorzystaniu z instrukcji var. Zmienne zdefiniowane poza funkcjami s dost pne w zasi gu globalnym
(widoczne dla ca ego skryptu).
Instrukcje steruj ce
Podstawowe instrukcje s identyczne z instrukcjami znanymi z j zyków Java i C++.
24
Instrukcja if
if (warunek) {
instrukcje;
}
[else {
instrukcje;
}]
tla while
while (warunek) {
instrukcje;
}
tla do...while
do {
instrukcje
} while (warunek);
tla for
for ([instrukcja-pocz tkowe]; [warunek]; [instrukcja-inkrementacji]) {
instrukcje;
}
tla for...in
tla ta przechodzi przez wszystkie pola danego obiektu (tak e np. elementy tablicy):
for (wlasnosc in obiekt) {
instrukcje;
}
Jest to instrukcja, która nie wyst puje w C++ ani w Javie (stosowny odpowiednik pojawi si dopiero w
wersji JDK 1.5).
Instrukcja switch
Tak samo jak w C, C++, PHP i Javie.
25
switch (wyra enie) {
case warto 1 :
instrukcje;
break;
case warto 2 :
instrukcje;
break;
default :
instrukcje;
}
Obiekty
W JavaScripcie wszystko jest obiektem. Podstawowym obiektem jest Object. Standard ECMA opisuje
tak e obiekty Array (tablica), String (ci g znaków), Number (liczba ca kowita lub rzeczywista),
Boolean (warto logiczna), Function (funkcja JavaScriptu), Date (data) i Math (operacje
matematyczne).
Obiekty JavaScriptu s tablicami asocjacyjnymi. Dost p do pól obiektów jest mo liwy przy u yciu dwóch
równowa nych notacji: obiekt.pole i obiekt["pole"]. Trzeci mo liwo ci (aczkolwiek w
wi kszo ci wypadków - niewygodn ) jest skorzystanie z numeru danego pola: obiekt[1].
Obie notacje z nawiasami kwadratowymi zwyczajowo stosuje si jednak przy korzystaniu z tablic
powsta ych jako obiekt Array.
Aby zdefiniowa w asny obiekt, wystarczy utworzy funkcj konstruktora:
// funkcja konstruktora
function MojObiekt(poleA, poleB) {
this.poleA = poleA;
this.poleB = poleB;
function _metoda1() {
alert("mojObiekt::metoda1()");
}
this.metoda1 = _metoda1;
function _metoda2() {
alert("mojObiekt::metoda2()");
}
this.metoda2 = _metoda2;
}
W dalszej cz ci opisu b
mówi o "klasach", mimo e w przypadku JavaScriptu 1.x poj cie "klasy" jest
nieformalne. "Klasa" oznacza tutaj zbiór obieków utworzonych przy u yciu tego samego konstruktora.
Aby utworzy instancj klasy MojObiekt, nale y skorzysta z operatora new:
var m = new MojObiekt(2, 3);
Podobnie jak w Javie, nowe obiekty w JavaScripcie tworzone s na stercie. W przypadku, kiedy do
danego obiektu nie istnieje ju adna referencja, mechanizm garbage collectora usuwa dany obiekt z
pami ci.
26
Poniewa metody obiektu (funkcje) s jego polami, tak e do nich dost p mamy przy u yciu zarówno
notacji z kropk , jak i notacji z nawiasami kwadratowymi. Poni sze dwie linie kodu s zatem
równowa ne:
m.metoda1();
m["metoda1"]();
Funkcje
Funkcje w JavaScripcie definiujemy przy u yciu s owa kluczowego function, a jej argumenty
podajemy w nawiasach:
function dodajDwieLiczby(a, b) {
return a+b;
}
Funkcje s jednocze nie obiektami typu Function. Obiekt ten ma konstruktor przyjmuj cy jako argument
ci g znaków, powy sz funkcj mo na wi c tak e zdefiniowa w sposób nast puj cy:
dodajDwieLiczby = new Function("a", "b", "return a+b;");
Ostatni argument Function() jest tre ci kodu funkcji, pozosta e to nazwy parametrów. Ten sposób
tworzenia funkcji bywa jednak ma o wydajny.
W przeciwie stwie do Javy, JavaScript pozwala tak e operowa na referencjach do funkcji:
function f1(a,b) {
alert(a+b);
}
function f2(a,b) {
alert(a-b);
}
var g = f1;
g(7,3); // wy wietla "10"
g = f2;
g(7,3); // wy wietla "4"
Dziedziczenie
W implementacjach ECMAScript V3 dziedziczenie realizowane jest przez prototypy. Je li chcemy
utworzy klas Pochodna dziedzicz
po klasie Bazowa, ustawiamy pole Pochodna.prototype na now
instancj klasy Bazowa:
function Bazowa() {
this.metodaA = function() {
alert("Bazowa::A()");
}
this.metodaB = function() {
alert("Bazowa::B()");
}
}
27
function Pochodna() {
// metodaB przeci a odpowiedni metod
this.metodaB = function () {
alert("Pochodna::B()");
}
}
Pochodna.prototype = new Bazowa();
z klasy Bazowa:
x = new Bazowa();
y = new Pochodna();
x.metodaA();
y.metodaA();
x.metodaB();
y.metodaB();
//
//
//
//
wy
wy
wy
wy
wietla:
wietla:
wietla:
wietla:
"Bazowa::A()"
"Bazowa::A()"
"Bazowa::B()"
"Pochodna::B()"
Istniej inne sposoby na uzyskanie dziedziczenia w JavaScripcie. Osoby przyzwyczajone do Javy lub C++
mog zmodyfikowa prototyp obiektu Object w nast puj cy sposób:
Object.prototype.extending = function (supClass) {
tempObj = new supClass();
for (property in tempObj) {
this[property] = tempObj[property];
}
};
by pó niej w funkcjach konstruktora korzysta z metody extending(), rozwi zuj cej szybko problem
dziedziczenia (u ywamy nazwy "extending" zamiast "extends", gdy to drugie s owo jest s owem
zastrze onym w JavaScripcie). Oto przyk ad:
function Bazowa() {
this.value = 5;
this.metoda1 = function () {
alert("Bazowa::metoda1() " + this.value);
}
this.metoda2 = function () {
alert("Bazowa::metoda2()");
}
}
function Pochodna() {
this.extending(Bazowa);
this.metoda1 = function () {
alert("Pochodna::metoda1() " + this.value);
}
}
Wazne tylko, eby extending() wywo ywa jako pierwsz instrukcj w konstruktorze.
28
Obs uga wyj tków
Do obs ugi wyj tków w JavaScript wykorzystywana jest "klasa" Error, odpowiadaj ca znanej z Javy
klasie Exception.
Aby wyrzuci nowy wyj tek, nale y skorzysta z instrukcji throw:
function zrobCos() {
throw new Error("Komunikat wyj tku");
}
Aby obs
wyj tek, nale y zastosowa konstrukcj try...catch...finally (przy czym
finally jest opcjonalne):
try {
zrobCos();
} catch (wyjatek) {
alert("Nast pi wyj tek: " + wyjatek.toString());
} finally {
posprzataj();
}
...
throw("nastapil blad");
Umieszczanie kodu JavaScript w plikach HTML i XHTML
W kodzie HTML 4.x skrypty JavaScript umieszczamy wewn trz znaczników <script>. Wymaganym
parametrem tego znacznika jest type równe dla JavaScriptu "text/javascript". Opcjonalnie mo na poda
parametr language oznaczaj cy minimalny numer wersji JavaScriptu wymaganej przez skrypt:
<script type="text/javascript" language="JavaScript1.5">
// Ten skrypt wymaga JS 1.5.
// Zostanie zignorowany przez przegl darki
// nie obs uguj ce tej wersji j zyka
function fun() {
try {
...
} catch (e) {
...
}
}
</script>
W przypadku XHTML 1.x nie wyst puje parametr language. Ponadto specyfikacja XML wymaga, by
umie ci tre skryptu wewn trz sekcji CDATA, je li u ywamy znaków takich jak "<" czy ">". Tak wi c
dla XHTML:
<script type="text/javascript">
// <![CDATA[
function fun() {
...
}
// ]]>
</script>
29
Znaki komentarza "//" przy pocz tku i ko cu sekcji CDATA zapobiegaj b dnemu zinterpretowaniu tej
sekcji przez starsze przegl darki.
Zewn trzne skrypty dodajemy tak e przy u yciu w/w znacznika, dodaj c tylko parametr src z nazw
pliku zawieraj cego kod skryptu:
<script type="text/javascript" src="plik.js"></script>
Typem MIME dla samodzielnych plików z kodem w JavaScripcie jest "text/javascript" lub "application/xjavascript".
JavaScript w przegl darkach internetowych
Implementacje JavaScriptu w przegl darkach internetowych dostarczaj obiektów pozwalaj cych na
modyfikowanie zawarto ci dokumentu oraz tworzenie i odczyt tzw. cookies (obiekt document),
manipulowanie oknami i wy wietlanie prostych okien dialogowych (obiekt window), pobieraniem
informacji o przegl darce (obiekt navigator), sterowaniem pluginami przegl darek oraz obs ug
zdarze .
Problem z manipulowaniem zawarto ci dokumentu stanowi brak standaryzacji obiektowego modelu
dokumentu (DOM) - poczatkowo w wersjach 4.x przegl darek Netscape dost p do niektórych elementów
dokumentu mo liwy by przy u yciu kolekcji document.layers, a w Internet Explorerze 4.x document.all.
Organizacja W3C opracowa a jednak jednolity DOM, obs ugiwany przez wszystkie wspó czesne
przegl darki (Netscape od wersji 6, IE od wersji 5, Opera od wersji 6, Konqueror od wersji 3, Mozilla i
Safari w dowolnej wersji). Aby uzyska referencje do obiektu wewn trz dokumentu HTML, nale y
skorzysta z metody document.getElementById(identyfikator), tym samym wymienione
wcze niej kolekcje all i layers uwa a si za przestarza e.
Java i JavaScript
Pocz tkowo Netscape nazwa a ten j zyk "LiveScript", lecz szybko nazwa ta zosta a zmieniona na
"JavaScript" wskutek biznesowych porozumie mi dzy Netscape a firm Sun Microsystems. Nazwa ta
powoduje wiele nieporozumie w ród pocz tkuj cych programistów.
Mimo odr bno ci tych j zyków, skrypty JavaScriptu mog mie dost p do publicznych metod klas Javy
(g ównie apletów) dzi ki tzw. technologii LiveConnect. Programi ci Javy mog tak e stosowa klas
netscape.javascript.JSObject jako "opakowanie" obiektów JavaScriptu, jednak e mo liwo
ta dost pna jest jedynie, je li aplet Javy i skrypt JavaScriptu uruchamiane s przez przegl darki Mozilla,
Opera i Netscape.
Pascal
Pascal - jeden z najpopularniejszych j zyków programowania, uniwersalny, wysokiego poziomu,
ogólnego zastosowania, oparty na j zyku Algol. Zosta opracowany przez Niklausa Wirtha w 1971 roku.
Pierwotnie s
celom edukacyjnym (do nauki programowania strukturalnego).
Pierwszy opis j zyka Wirth zawar w The programming language Pascal, Acta Informatica 1/1971, a
kolejny, poprawiony w The programming language Pascal (Revised Report), Bericht der Fachrgruppe
30
Computer – Wissenschaften 5/1972. Pierwszym podr cznikiem j zyka Pascal by a pozycja Jensen, Wirth,
Pascal, User Manual and Report 1974.
Jedn z popularniejszych implementacji kompilatorów tego j zyka by produkt firmy Borland
International – Turbo Pascal. W chwili obecnej do mocno rozpowszechnionym obiektowym dialektem
zyka Pascal jest Object Pascal osadzony w Delphi oraz Kylix'ie (równie wyprodukowanych przez
Borland International).
Istniej wolne kompilatory Pascala, na przyk ad Free Pascal, a tak e wolne rodowisko IDE jak Lazarus.
Ró nice obiektowego Pascala w porównaniu z C++
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
(+) sk adnia atwiejsza do zrozumienia dla nie–programisty (s owa–polecenia zamiast klamer i
nawiasów; co poci ga za sob wi ksz obj to kodu ród owego),
(+-) odmienne symbole operatorów,
funkcje nie zwracaj ce warto ci nazwane procedurami
(-) ubo sza implementacja obiektów (brak dziedziczenia od dwóch przodków)
(+-) mniejsza kontrola wykonywania p tli for – zmienna iteracyjna w p tli for zmienia si o 1
automatycznie a w wielu implementacjach jest "chroniona" przed zmianami, umo liwia to
tworzenie wydajniejszego kodu wykonalnego
(??) (w standardowym Pascalu) brak polece break, continue, w obecnych implementacjach
(??) brak typów numerycznych bez znaku unsigned (istnieje jedynie typ word,byte), w
obecnych implementachach s ,
(+-) brak preprocesora kodu, przez co kompilacja jest znacznie szybsza ale brak korzystania z
makr
(+) automatyczna kontrola zakresów i przepe nie
(+) mechanizm zgodno ci typów
(+) mo liwo tworzenia procedur w procedurach
(-) brak mo liwo ci przeci ania operatorów
(-) brak przeci ania funkcji, w obecnych implementacjach jest
(+) mo liwo przekazywania danych przez zmienn
(-) brak mo liwo ci ingerencji w optymalizacj kodu przez kompilator, w obecnych
implementacjach jest
(-) brak mo liwo ci wykorzystania niektórych specyficznych w asno ci procesora
(+-) oddzielenie cz ci deklaracji od instrukcji zwi ksza czytelno kodu i zmusza do porz dku
Dla niektórych programistów niektóre cechy Pascala wykluczaj jego zastosowanie w powa nych
projektach i s powodem krytyki tego j zyka. Wed ug nich powinien zosta jedynie narz dziem do nauki
programowania. Natomiast nie potwierdzaj tego tysi ce aplikacji (równie komercyjnych) stworzonych
w Pascalu.
Wi kszo powy szych uwag (na niekorzy Pascala) nie dotyczy Object Pascala dialektu Pascala
ywanego firm Borland w rodowisku Delphi. Natomiast najbardziej rozbudowanym kompilatorem
zyka Pascal jest obecnie Free Pascal.
Turbo Pascal - jedna z popularniejszych implementacji kompilatorów j zyka Pascal, zintegrowane
rodowisko programistyczne, produkt firmy Borland International dla procesorów Z-80 (system CP/M)
oraz rodziny Intel 80x86 i nowszych.
31
Historia
•
•
•
•
•
wersja 1.0 rodowiska Turbo Pascal zosta a wprowadzona na rynek w 1983 roku.
wersja 4.0 ukaza a si w XI 1987 r. i wprowadzi a poj cie modu u i kompilacji warunkowej.
w roku 1988 pojawi a si wersja 5.0 (w ród nowo ci znalaz y si typy proceduralne i funkcyjne jako zapowied skierowania produktu w stron obiektowo ci oraz mo liwo debugowania kodu
ród owego).
wersja 5.5 wprowadzi a nowy, rewolucyjny w odniesieniu do j zyka Pascal typ danych: typ
obiektowy.
ostatnia wersja oznaczona zosta a numerem 7.0, a jej nast pc sta si w 1995 r. Borland Delphi
1.0 wraz z j zykiem Object Pascal.
PHP
PHP (angielski akronim rekurencyjny, którego rozwini cie to PHP Hypertext Preprocessor), pierwotnie
nazwany Personal Home Page - skryptowy j zyk programowania, s
cy przede wszystkim do tworzenia
dynamicznych stron WWW i wykonywany w tym przypadku po stronie serwera, z mo liwo ci
zagnie ania w HTML (b
XHTML). PHP jest podobny w za eniach do du o starszego
mechanizmu SSI (Server Side Includes), jednak jest w stosunku do SSI nieporównanie bardziej
rozbudowany. Udost pniany jest na zasadach licencji open-source. Jego sk adnia bazuje na j zykach C,
Java i Perl.
PHP mo e by u ywane nie tylko do tworzenia stron WWW. Jego modu owa budowa pozwala tak e na
programowanie aplikacji z interfejsem graficznym (rozszerzenie PHP-GTK), a tak e na wykonywanie z
linii polece (podobnie jak Perl i Python).
PHP umo liwia tak e wspó prac z wieloma systemami relacyjnych baz danych (np. MySQL, Oracle,
PostgreSQL, SQLite) oraz korzystanie z alternatywnych sposobów przechowywania danych - plików
tekstowych i XML-owych. Mo e by uruchamiane na wi kszo ci systemów operacyjnych (uwzgl dniaj c
najpopularniejsze) oraz serwerów sieciowych.
Implementacja PHP w rodowisku Linux wraz z serwerem Apache i silnikiem baz danych MySQL
stanowi popularn platform serwerow , tzw. LAMP.
Historia
PHP/FI
Pierwsza wersja PHP, rozpowszechniana pod nazw PHP/FI (Personal Home Page/Forms Interpreter),
zosta a stworzona przez Rasmusa Lerdorfa w roku 1994 jako zestaw skryptów Perla s
cy do
monitorowania internautów odwiedzaj cych jego witryn . Gdy ruch sta si zbyt du y, przepisa je w
zyku C, dodaj c przy tym nowe opcje. Nied ugo pó niej ludzie zacz li prosi go o mo liwo u ycia
tych narz dzi na swoich stronach, zatem 8 czerwca 1995 roku autor udost pni publicznie kod ród owy
(PHP Tools 1.0). Ju kilka miesi cy pó niej projekt przekszta ci si w zal ek znanego obecnie j zyka
programowania, gdy zosta po czony z innym narz dziem Rasmusa Lerdorfa - Form Interpreter, które
da o drugi cz on nazwy. W 1997 roku pojawi o si PHP/FI 2.0, posiadaj ce wtedy kilka tysi cy
aktywnych u ytkowników na ca ym wiecie oraz obs uguj ce 50 tys. domen. Co ciekawe, wersja ta
sp dzi a wi kszo " ycia" na beta testach. Oficjalne wydanie by o tylko jedno i ukaza o si w listopadzie
1997 roku.
32
PHP 3
W 1997 roku projektem zainteresowali si dwaj izraelscy programi ci: Zeev Suraski i Andi Gutmans.
Odkryli oni, e PHP/FI ma zbyt ma e mo liwo ci, jak na potrzeby aplikacji eCommerce, któr tworzyli na
uniwersytecie. Zdecydowali wtedy, e przepisz kod PHP ca kowicie od nowa, korzystaj c z pomocy ju
istniej cej spo eczno ci PHP. W czerwcu 1998 roku og osili PHP 3.0 jako nast pc PHP/FI, którego
dalszy rozwój zosta wtedy zatrzymany. By to wielki krok naprzód. PHP 3.0 posiada o ca kowicie now
architektur , która znacznie zwi ksza a wydajno . Pojawi y si w niej zal ki programowania
obiektowego, ale najwa niejsz cech aplikacji by a jej modu owo . U ytkownicy mogli rozszerza teraz
funkcjonalno j zyka poprzez dodawanie nowych modu ów.
PHP 4
Krótko po wydaniu PHP 3, w zimie 1998 Zeev Suraski oraz Andi Gutmans jeszcze raz zabrali si za
przepisywanie kodu ród owego PHP, korzystaj c z do wiadcze nabytych przy pracach nad poprzedni
wersj . Za g ówne cele obrali poprawienie modu owo ci oraz wydajno ci z onych aplikacji. Cho
dotychczasowa wersja potrafi a sobie z nimi poradzi , nie by a jednak stworzona do tego celu i
przegrywa a przez to z innymi rozwi zaniami.
W po owie roku 1999 ukaza si oficjalnie Zend Engine, nowy silnik j zyka skryptowego, wokó którego
nied ugo pó niej zacz to budowa PHP 4. Jego nazwa to kompromisowe po czenie imion twórców
projektu. Nowa, oparta o niego wersja PHP, ukaza a si w maju 2000 roku. Tak jak poprzednio, by to
pot ny krok naprzód. Programi ci mieli do dyspozycji teraz wiele nowych narz dzi, konstrukcji
zykowych oraz bezpieczniejszy system wej cia/wyj cia. Od strony administracyjnej pojawi o si
oficjalne wsparcie dla wielu nowych serwerów. Przez cztery lata od chwili wydania ukaza y si trzy
kolejne edycje tej wersji oznaczone numerami: 4.1, 4.2 oraz 4.3. W ka dej z nich odczuwalne by o
zwi kszenie bezpiecze stwa, szybko ci dzia ania oraz mo liwo ci. W 2004 roku obs ugiwa y one cznie
20% wszystkich domen sieciowych. Równie obecnie, w rok po premierze PHP 5, "czwórka" jest bardzo
ch tnie wykorzystywana przez administratorów ze wzgl du na du stabilno .
PHP 5
W 2002 roku Zeev Suraski oraz Andi Gutmans ponownie rozpocz li znacz
modernizacj silnika PHP
maj
na celu dodanie do tego j zyka modelu obiektowego z prawdziwego zdarzenia. W lutym 2003
ukaza a si pierwsza wersja alpha nowej wersji PHP oznaczonej numerem 5.0.0. Stabilna wersja ukaza a
si prawie pó tora roku pó niej, w lipcu 2004 roku. Nowo ci sprawi y, e PHP mo e konkurowa teraz z
innymi rozwi zaniami server-side, jak równy z równym. Pojawi si ca kowicie nowy model
programowania obiektowego, przez co niestety zosta a utracona kompatybilno z poprzednimi wersjami
PHP na niektórych skryptach. Jest to spowodowane zmian sposobu reprezentacji obiektów. Wcze niej
obiekt by jednocze nie zmienn , co sprawia o du e trudno ci, dlatego te na wzór Javy zmienna
obiektowa sta a si jedynie referencj do w ciwego obiektu. Kopiowanie powoduje jedynie powstanie
drugiej referencji wskazuj cej na ten sam obiekt. Funkcje obs ugi j zyka XML zosta y na nowo
przepisane i wbudowane bezpo rednio w j dro aplikacji. Jednocze nie, oprócz modelu DOM,
udost pniono bardzo wygodne API do zarz dzania dokumentami w tym j zyku zwane SimpleXML.
Dotychczas domy ln baz danych dla PHP by MySQL, jednak z powodu zmian licencji autorzy musieli
usun z kodu w asn bibliotek do komunikacji z nim. Obecnie nale y r cznie instalowa to
rozszerzenie, korzystaj c z dostarczonej przez MySQL biblioteki libmysqlclient. Zmiana ta dotyczy
równie PHP 4. W zamian udost pniono now domy ln baz danych: SQLite, której cech jest to, i nie
wymaga adnych dodatkowych programów. Biblioteka kliencka jest jednocze nie jej serwerem.
33
W chwili obecnej trwaj ju intensywne prace nad PHP 5.1, w którym pojawi si ma z dawna
oczekiwany natywny sterownik baz danych oraz rozszerzenie mo liwo ci rzutowania typów o tablice.
Modu y PHP
PHP, w odró nieniu od ASP, posiada ogromn ilo darmowych i opartych na licencji open-source
modu ów. Ich oficjalne repozytorium znajduje si pod adresem http://pecl.php.net.
Oprócz ogromych mo liwo ci rozbudowy parsera dzi ki modu om, PHP ma tak e ogromn ilo
dzia aniu podobnym do C, takich jak printf(), czy strstr(), zaimplementowanych w j drze.
funkcji o
PHP a programowanie obiektowe
Elementy programowania obiektowego pojawi y si ju w PHP 3, lecz nie pozwala y one rozwin
skrzyde programistom. Brakowa o wielu istotnych elementów, a kod nie by zoptymalizowany. Sytuacja
ca kowicie uleg a zmianie w PHP 5 - dodano wiele istotnych rzeczy, m.in. interfejsy, kontrola dost pu,
czy klasy abstrakcyjne. Model OOP wzorowany jest na j zykach C++ i Java.
Przyk ady kodu ród owego
Standardowe "Hello, world!":
<?php
echo "Hello, world!";
?>
Komentarze:
<?php
// To jest komentarz, którego koniec to ostatni znak w tej linii
# To komentarz podobny do powy szego
/* To komentarz,
Który ko czy
si tutaj */
?>
ycie zmiennych w PHP:
<?php
$str = "Hello, world!";
echo $str;
?>
Przyk adowa funkcja w PHP:
<?php
function hello() {
return "Hello, world!";
}
echo hello();
?>
Przyk adowe po czenie z baz danych (MySQL) w PHP, oraz zwrócenie wszystkich danych z jednej
kolumny na ekran:
34
<?php
mysql_connect('localhost', 'uzytkownik', 'haslo');
mysql_select_db('bazadanych');
$wynik = mysql_query('SELECT * FROM tabela') or die(mysql_error());
while($wiersz = mysql_fetch_array($wynik)) {
echo $wiersz['nazwa_kolumny'];
}
mysql_close();
?>
Parser PHP nie posiada najprostszych zabezpiecze przed niesko czonymi p tlami lub rekurencj , dlatego
kod:
<?php
function foo() {
return foo();
}
foo();
?>
lub
<?php
while (1) {
}
?>
spowoduje zap tlenie.
Active Server Pages (ASP)
ASP (ang. Active Server Pages) to technologia firmy Microsoft s
WWW.
ca tworzeniu dynamicznych stron
Dokumenty ASP sk adaj si z dwóch elementów:
•
•
kodu programu
kodu HTML lub XHTML
Kod programu mo e by napisany w czterech, akceptowalnych przez ASP, j zykach skryptowych:
•
•
•
•
VBScript
JScript
PerlScript
Python
Przewa aj ca wi kszo stron ASP jest tworzona przy wykorzystaniu j zyka VBScript, gdy jest on
skutecznie lansowany przez Microsoft jako najlepsze narz dzie do tego celu.
Strony ASP maj rozszerzenie .asp.
35
3. Bazy danych
Baza danych to kolekcja danych umieszczonych w okre lony sposób w strukturach odpowiadaj ca
za onemu modelowi danych. W potocznym uj ciu obejmuje dane oraz program komputerowy
wyspecjalizowany do gromadzenia i przetwarzania tych danych. Program taki (lub zestaw programów)
nazywany jest "Systemem zarz dzania baz danych" - ang. DataBase Management System (DBMS).
(Poniewa "system zarz dzania baz danych" jest niewygodny w u yciu, to cz sto samo oprogramowanie
nazywa si równie "baz danych", lub DBMS'em).
Bazy danych operuj g ównie na danych tekstowych i liczbowych, lecz wi kszo
umo liwia przechowywanie danych binarnych typu: grafika, muzyka itp.
wspó czesnych baz
Bazy danych mo na podzieli wed ug struktur danych których u ywaj :
1. bazy kartotekowe (proste) - ka da tablica danych jest samodzielnym dokumentem i nie mo e
wspó pracowa z innymi tablicami. Do baz tego typu nale liczne programy typu - ksi ka
telefoniczna, ksi ka kucharska, spis ksi ek, kaset lub p yt. Wspóln cech tych baz jest ich
zastosowanie w jednym wybranym celu.
2. bazy relacyjne (z one) - wiele tablic danych mo e wspó pracowa ze sob . Bazy relacyjne
posiadaj wewn trzne j zyki programowania, wykorzystuj ce zwykle SQL do operowania na
danych, za pomoc których mo emy tworzy zaawansowane funkcje obs ugi danych. Relacyjne
bazy danych (jak równie przeznaczony dla nich standard SQL) oparte s na kilku prostych
zasadach:
1. Wszystkie warto ci danych oparte s na prostych typach danych.
2. Wszystkie dane w bazie relacyjnej przedstawiane s w formie dwuwymiarowych tabel (w
matematycznym argonie nosz cych nazw "relacji"). Ka da tabela zawiera zero lub
wi cej wierszy (w tym e argonie - "krotki") i jedn lub wi cej kolumn ("atrybuty"). Na
ka dy wiersz sk adaj si jednakowo u one kolumny wype nione warto ciami, które z
kolei w ka dym wierszu mog by inne.
3. Po wprowadzeniu danych do bazy mo liwe jest porównywanie warto ci z ró nych kolumn,
zazwyczaj równie z ró nych tabel, i scalanie wierszy, gdy pochod ce z nich warto ci s
zgodne. Umo liwia to wi zanie danych i wykonywanie stosunkowo z onych operacji w
granicach ca ej bazy danych.
4. Wszystkie operacje wykonywane s w oparciu o logik , bez wzgl du na po enie wiersza
tabeli. Nie mo na wi c zapyta o wiersze, gdzie (x=3) bez wiersza pierwszego, trzeciego i
pi tego. Wiersze w relacyjnej bazie danych przechowywane s w porz dku zupe nie
dowolnym - nie musi on odzwierciedla ani kolejno ci ich wprowadzania, ani kolejno ci
ich przechowywania.
5. Z braku mo liwo ci identyfikacji wiersza przez jego pozycj pojawia si potrzeba
obecno ci jednej lub wi cej kolumn niepowtarzalnych w granicach ca ej tabeli,
pozwalaj cych odnale konkretny wiersz. Kolumny te okre la si jako "klucz
podstawowy" (primary key) tabeli.
3. bazy obiektowe
4. strumieniowe bazy danych
5. temporalne bazy danych
36
Podstawowe funkcje bazy danych to:
•
•
•
•
•
•
•
projektowanie rekordów
o nazwa pola
o
ugo pola
o rodzaj pola (tekstowe, liczbowe, logiczne)
edycja (dopisywanie, usuwanie, poprawianie rekordów)
sortowanie
wyszukiwanie i selekcja danych
tworzenie zapyta
tworzenie raportów
drukowanie
UWAGA: W potocznym znaczeniu przyj o si u ycie poj cia Baza danych okre laj c system
zarz dzania danymi. Jednak w cis ej nomenklaturze przez baz danych rozumiemy zbiór danych
zarz dzany przez system zarz dzania danymi. System zarz dzania danymi zapewnia metody dost pu do
danych.
System Zarz dzania Baz Danych
System Zarz dzania Baz Danych, SZBD (ang. Data Base Management System, DBMS) nazywany te
serwerem baz danych lub systemem baz danych, SBD to oprogramowanie b
system informatyczny
cy do zarz dzania komputerowymi bazami danych. Systemy baz danych mog by sieciowymi
serwerami baz danych lub udost pnia baz danych lokalnie.
Niezb dne mechanizmy
•
•
•
•
•
•
•
•
•
•
rodki do gromadzenia, utrzymywania i administrowania trwa ymi i masowymi zbiorami danych,
rodki zapewniaj ce spójno i bezpiecze stwo danych,
sprawny dost p do danych (zwykle poprzez j zyk zapyta , np. SQL),
rodki programistyczne s
ce do aktualizacji/przetwarzania danych (API dla popularnych
zyków programowania),
jednoczesny dost p do danych dla wielu u ytkowników (z regu y realizowany poprzez transakcje),
rodki pozwalaj ce na regulacj dost pu do danych (autoryzacj ),
rodki pozwalaj ce na odtworzenie zawarto ci bazy danych po awarii,
rodki do zarz dzania katalogami, schematami i innymi metadanymi,
rodki optymalizuj ce zaj to pami ci oraz czas dost pu (np. indeksy),
rodki do pracy lub wspó dzia ania w rodowiskach rozproszonych.
Dodatkowe mechanizmy
•
•
•
•
•
•
•
•
zarz dzanie wersjami i danymi nietrwa ymi,
przechowywanie i udost pnianie danych multimedialnych,
wygodne (wizyjne) rodowiska do tworzenia aplikacji,
pomosty do wspó pracy z innymi systemami,
wspomaganie dla perspektyw, zapami tanych procedur i aktywnych regu ,
pakiety statystyczne, pakiety dla przeprowadzania analiz (eksploracji danych),
pakiety do tworzenia hurtowni danych,
rodki udost pniaj ce baz danych w sieci Internet, itd.
37
SZBD dzia aj ce w architekturze klient-serwer
Wi kszo obecnie spotykanych systemów dzia a w trybie klient-serwer, gdzie baza danych jest
udost pniana klientom przez SZBD b cy serwerem. Serwer baz danych mo e udost pnia dane
klientom bezpo rednio lub przez inny serwer po rednicz cy (np. serwer WWW lub aplikacji).
Systemy bazy danych w architekturze klient-serwer to m.in.:
•
•
•
•
•
•
•
DB2
Informix Dynamic Server
Firebird
Microsoft SQL Server
MySQL
Oracle
PostgreSQL
Bezserwerowe SZBD
Czasem jednak stosowanie serwera nie jest konieczne. Istniej bazy danych, które nie musz by
wspó dzielone przez wielu u ytkowników w tym samym czasie.
Do takich zastosowa u ywane s bezserwerowe bazy danych takie jak:
•
•
Access korzystaj ca z silnika Microsoft Jet
Kexi korzystaj ca z silnika SQLite
SQL
SQL (ang. Structured Query Language) to strukturalny j zyk (informatyka) zapyta u ywany do
tworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych.
zyk SQL jest j zykiem deklaratywnym. Decyzj o sposobie przechowywania i pobrania danych
pozostawia si systemowi zarz dzania baz danych DBMS.
Jest to j zyk programowania opracowany w latach siedemdziesi tych w firmie IBM. Sta si on
standardem w komunikacji z serwerami relacyjnych baz danych. Wiele wspó czesnych systemów
relacyjnych baz danych u ywa do komunikacji z u ytkownikiem SQL, dlatego mówi si , e korzystanie z
relacyjnych baz danych, to korzystanie z SQL-a. Pierwsz firm , która w czy a SQL do swojego
produktu komercyjnego, by Oracle. Dalsze wprowadzanie SQL-a, w produktach innych firm, wi za o si
nieroz cznie z wprowadzaniem modyfikacji pierwotnego j zyka. Wkrótce utrzymanie dalszej jednolito ci
zyka wymaga o wprowadzenia standardu.
Standardy SQL
W 1986 roku SQL sta si oficjalnym standardem, wspieranym przez Mi dzynarodow Organizacj
Normalizacyjn (ISO) i jej cz onka, Ameryka ski Narodowy Instytut Normalizacji (ANSI). Wczesne
wersje specyfikacji (SQL86 i SQL89) by y w du ej mierze jedynie okre leniem wspólnej p aszczyzny
cz cej ró ne istniej ce wówczas produkty i pozostawia y wiele swobody twórcom implementacji. Z
czasem jednak systemy komputerowe uleg y integracji i rynek zacz domaga si aplikacji oraz ich
38
funkcji faktycznie wspó pracuj cych z wieloma ró nymi bazami danych. Pojawi a si potrzeba okre lenia
standardu ci lejszego. Móg on jednocze nie obejmowa nowe elementy, nieuj te do tej pory w j zyku.
Tak powsta SQL92, obowi zuj cy w produktach komercyjnych do dzi .
Funkcje silnika i middleware
Produkty zwi zane z relacyjnymi bazami danych to nie tylko serwery. Sam serwer okre la si cz sto
takimi nazwami jak "back end", "engine", czy te "motor/silnik bazy danych". Przechowuje on dane oraz
zapewnia ich pobieranie i aktualizacje w odpowiedzi na pobierane instrukcje w SQL-u.
Uzupe nieniem serwera jest zazwyczaj "front end", "middleware" czy te "fronton" - narz dzia
upraszczaj ce komunikacj z serwerem i wyposa one w mechanizmy pozwalaj ce wykorzysta pobrane
dane. Nale do nich mechanizmy generowania i obs ugi formularzy oraz raportów, j zyki czwartej
generacji (4GL), graficzne j zyki zapyta , narz dzia konstrukcyjne u ytkownika, oprogramowanie do
prezentacji multimedialnych, systemy tworzenia hipertekstu, systemy CAD/CAM, arkusze kalkulacyjne,
jak równie interfejsy dost pu bezpo redniego. Wszystkie one wykorzystuj , do komunikacji z serwerem i
wykonywania za jego po rednictwem ró nych operacji, j zyk SQL. Serwer odpowiada za
przechowywanie, porz dkowanie i pobieranie danych, zapewnia ich integralno , bezpiecze stwo oraz
zabezpiecza przed ewentualnymi konfliktami mi dzy u ytkownikami.
Formy SQL-a
Z technicznego punktu widzenia, SQL jest podj zykiem danych. Oznacza to, e jest on wykorzystywany
wy cznie do komunikacji z baz danych. Nie posiada on cech pozwalaj cych na tworzenie kompletnych
programów. Jego wykorzystanie mo e by trojakie i z tego wzgl du wyró nia si trzy formy SQL-a:
1. SQL interakcyjny lub autonomiczny wykorzystywany jest przez u ytkowników w celu
bezpo redniego pobierania lub wprowadzania informacji do bazy. Przyk adem mo e by zapytanie
prowadz ce do uzyskania zestawienia aktywno ci kont w miesi cu. Wynik jest wówczas
przekazywany na ekran, z ewentualn opcj jego przekierowania do pliku lub drukarki.
2. Statyczny kod SQL (Static SQL) nie ulega zmianom i pisany jest wraz z ca aplikacj , podczas
której pracy jest wykorzystywany. Nie ulega zmianom w sensie zachowania niezmiennej tre ci
instrukcji, które jednak zawiera mog odwo ania do zmiennych lub parametrów przekazuj cych
warto ci z lub do aplikacji. Statyczny SQL wyst puje w dwóch odmianach.
1. Embedded SQL (Osadzony SQL) oznacza w czenie kodu SQL do kodu ród owego
innego j zyka. Wi kszo aplikacji pisana jest w takich j zykach jak C++ czy Java, jedynie
odwo ania do bazy danych realizowane s w SQL. W tej odmianie statycznego SQL-a do
przenoszenia warto ci wykorzystywane s zmienne.
2.
zyk modu ów. W tym podej ciu modu y SQL czone s z modu ami kodu w innym
zyku. Modu y kodu SQL przenosz warto ci do i z parametrów, podobnie jak to si
dzieje przy wywo ywaniu podprogramów w wi kszo ci j zyków proceduralnych. Jest to
pierwotne podej cie, zaproponowane w standardzie SQL. Embedded SQL zosta do
oficjalnej specyfikacji w czony nieco pó niej.
3. Dynamiczny kod SQL (Dynamic SQL) generowany jest w trakcie pracy aplikacji. Wykorzystuje
si go w miejsce podej cia statycznego, je eli w chwili pisania aplikacji nie jest mo liwe
okre lenie tre ci potrzebnych zapyta - powstaje ona w oparciu o decyzje u ytkownika. T form
SQL generuj przede wszystkim takie narz dzia jak graficzne j zyki zapyta . Utworzenie
odpowiedniego zapytania jest tu odpowiedzi na dzia ania u ytkownika.
Wymagania tych trzech form ró ni si i znajduje to odbicie w wykorzystywanych przez nie
konstrukcjach j zykowych. Zarówno statyczny, jak i dynamiczny SQL uzupe niaj form autonomiczn
39
cechami odpowiednimi tylko w okre lonych sytuacjach. Wi kszo
wszystkich form identyczna.
j zyka pozostaje jednak dla
Sk adnia SQL
ycie SQL, zgodnie z jego nazw , polega na zadawaniu zapyta do bazy danych. Zapytania mo na
zaliczy do jednego z dwóch g ównych podzbiorów:
•
•
SQL DML (ang. Data Manipulation Language, czyli J zyk Manipulacji Danymi),
SQL DDL (ang. Data Definition Language, czyli J zyk Definicji Danych).
Instrukcje SQL w obr bie zapyta tradycyjnie zapisywane s wielkimi literami, jednak nie jest to wymóg.
Ka de zapytanie w SQL-u musi ko czy si znakiem ";" ( rednik).
Dodatkowo, niektóre interpretery SQL (np. psql w przypadku PostgreSQL), u ywaj swoich w asnych
instrukcji, spoza standardu SQL, które s
np. do po czenia si z baz , wy wietlenia dokumentacji, itp.
DML
DML s y do operacji na danych - do ich umieszczania w bazie, kasowania, przegl dania, zmiany.
Najwa niejsze polecenia z tego zbioru to:
•
•
•
•
SELECT - pobranie z bazy danych,
INSERT - umieszczenie danych w bazie,
UPDATE - zmiana danych,
DELETE - usuni cie danych z bazy.
Dane tekstowe podawane musz by zawsze w formie ograniczonej znakami pojedynczego cudzys owu
(').
DDL
Dzi ki DDL natomiast, mo na operowa na strukturach, w których te dane s przechowywane - czyli np.
dodawa , zmienia i kasowa tabele lub bazy. Najwa eniejsze polecenia tej grupy to:
•
•
•
CREATE (np. CREATE TABLE, CREATE DATABASE, ...) - utworzenie struktury (bazy, tabeli,
indeksu, itp.),
DROP (np. DROP TABLE, DROP DATABASE, ...) - ca kowite usuni cie struktury,
ALTER (np. ALTER TABLE ADD COLUMN ...) - zmiana sturktury (dodanie kolumny do tabeli,
zmiana typu danych w kolumnie tabeli).
Przyk adowe zapytania
Przyk adowe u ycie wy ej wymienionych rodzajów zapyta .
SELECT * FROM pracownicy WHERE pensja > 2000 ORDER BY staz DESC;
Wy wieta z tabeli pracownicy (FROM pracownicy) wszystkie kolumny (*) dotycz ce tych
pracowników, których pensja jest wi ksza ni 2000 (WHERE pensja > 2000) i sortuje wynik malej co
wed ug sta u pracy (ORDER BY staz DESC).
40
INSERT INTO pracownicy (imie, nazwisko, pensja, staz) VALUES ('Jan', 'Kowalski',
5500, 1);
Dodaje do tabeli pracownicy (INTO pracownicy) wiersz (rekord) zawieraj cy dane pojedynczego
pracownika.
UPDATE pracownicy SET pensja = pensja * 1.1 WHERE staz > 2;
Podnosi o 10% (SET pensja = pensja * 1.1) pensj pracownikom, których sta jest wi kszy ni 2 (np.
lata).
DELETE FROM pracownicy WHERE imie = 'Jan' AND nazwisko = 'Kowalski';
Usuwa z tabeli "pracownicy" wiersz (rekord) dotycz cy pracownika o imieniu "Jan" i nazwisku
"Kowalski".
CREATE TABLE pracownicy (imie varchar(255), nazwisko varchar(255), pensja float,
staz int);
Tworzy tabel "pracownicy" zawieraj
tekstowe (varchar - zmiennej d ugo ci pole tekstowe) pola
"imi " i "nazwisko", o maksymalnej d ugo ci 255 znaków, zapisan za pomoc liczby rzeczywistej (float
od ang. floating point) pensj oraz zapisany za pomoc liczby ca kowitej (int od ang. integer) sta .
DROP TABLE pracownicy;
Usuwa z bazy ca kowicie tabel "pracownicy".
ALTER TABLE pracownicy ADD COLUMN dzial varchar(255);
Dodaje do struktury tabeli "pracownicy" kolumn "dzial" (dzia ), jako pole tekstowe o d ugo ci max. 255
znaków.
SQL:2003
W roku 2003 przedstawiono SQL:2003 – nowy standard j zyka SQL. opublikowano w Sigmod Record
Vol.33 Nr.1 Marzec 2004. Jest to g ównie poprawione SQL:1999 z wyj tkiem cz ci SQL/XML oraz
kilku dodatkowych w ciwo ci.
W SQL:2003 wprowadzono:
1. Nowe typy danych (BIGINT, MULTISET oraz XML)
2. Usuni to typy BIT oraz BIT VARYING
3. Rozszerzenia w sposobie wywo ywania procedur
4. Poszerzono instrukcj CREATE TABLE (CREATE TABLE { LIKE | AS } )
5. Wprowadzono instrukcj MERGE
6. Wprowadzono nowy obiekt schematu – generator sekwencji
7. Wprowadzono dwa nowe typy kolumn – identyfikatory oraz generowane
8. Retrospektywne sprawdzanie wi zów integralno ci
9. Rozszerzenia dla OLAP w formie wbudowanych funkcji (skalarnych i agreguj cych)
10. Klauzula WINDOW
41
Prowadzone s równie prace nad alternatywnymi j zykami zapyta opartymi na SQL. Przyk adem
takiego j zyka mo e by j zyk ci ych zapyta CQL lub j zyk SQL wyposa ony w mo liwo
przetwarzania sekwencji danych AQuery.
DB2
Pochodzenie DB2
Do wiadczenia firmy IBM zwi zane z bazami danych si gaj pocz tku ich istnienia.
To w nie pracownicy IBM opracowali podstawy relacyjnych baz danych oraz j zyk SQL, a baza danych
IBM DB2 uznawana jest za pierwsz komercyjn implementacj relacyjnej bazy danych.
Relacyjne bazy danych by y rozwiajane w IBM w ramach projektów z rodziny System R. W roku 1982
rozwi zanie o nazwie SQL/DSTM zosta o zintegrowane w ramach systemu serwerowego SYSTEM/38.
Nast pnie w roku 1983 wyodr bni si formalnie projekt ochrzczony nazw DB2 na systemie MVSTM pierwotnie okre lany mianem DATABASE 2.
Aktualnie z DB2 Universal Database korzysta ponad 60 milionów u ytkowników w ponad 425 000
firmach na ca ym wiecie.
Cechy bazy danych IBM DB2
•
•
•
•
•
•
•
•
•
DB2 to pierwsza baza ze wsparciem dla j zyka Java
DB2 to pierwsza na wiecie baza certyfikowana na Windows 2000
DB2 posiada silne wsparcie dla systemów Linux, tak e 64-bitowych
DB2 to pierwsza baza z optymalizatorem kosztowym (rozwijanym od ponad 20 lat)
DB2 to pierwsza baza z przepisywaniem SQL do optymalnej postaci
DB2 to pierwsza baza relacyjna pozwalaj ca na obiektowe rozszerzenia
DB2 jest dost pna na wszystkie wiod ce platformy sprz towe
o AIX (32, 64 bit)
o Solaris UltraSparc (32, 64 bit)
o HP-UX oparte na HP PA-RISC (32, 64 bit)
o HP-UX oparte na Intel Itanium (32, 64 bit)
o iSeries (OS/400)
o zSeries (OS/390 oraz z/OS)
o GNU/Linux 32, 64 bit na platformach Intel, pSeries, iSeries oraz zSeries (S/390)
o Microsoft Windows 32 bit (Intel+AMD)
o Microsoft Windows 64 bit oparte na Intel Intanium i AMD Athlon/Opteron
DB2 posiada mo liwo ci auto-konfiguracji i samo-zarz dzania
DB2 Posiada pe ne wsparcie dla istniej cych przemys owych standardów tworzenia aplikacji, w
tym równie w szczególno ci mo liwo ci tworzenia procedur sk adowanych w j zyku Java, C,
C++, C# i rodowisku .NET.
Cechy funkcjonalne DB2
Optymalizator zapyta DB2 - LEO (ang. Learing Optimizer) wybiera najwydajniejsz strategi realizacji
zapyta w oparciu o do wiadczenia z przesz ci. Optymalizator LEO uwzgl dnia fizyczne aspekty
instalacji DB2 (ilo i wydajno procesorów, pami operacyjn dost pn dla bazy, wydajno dysków)
42
oraz zgromadzone wcze niej informacje o samych danych, tzw. statystyki. Statystyki okre laj zakres
informacji o danych, jakimi powinna dysponowa baza, by najefektywniej obs
wykonywane
zapytania SQL. Optymalizator DB2 mo e zosta wprowadzony w tryb uczenia si , który pozwoli
samoczynnie przygotowa profile statystyk na podstawie danego obci enia. Dzi ki tej funkcjonalno ci
znacz co mo e by skrócony czas strojenia systemu, ale tak e baza mo e elastycznie dostosowa si do
pó niejszych zmian w aplikacji oraz w ciwie zareagowa na znaczny przyrost danych. Optymalizator
DB2 wykorzystuje wiele opatentowanych algorytmów pozwalaj cych na przepisywanie z onych
zapyta do optymalnej postaci (np. uwzgl dnienie wi zów spójno ci w filtracji warunków zapytania,
wykorzystanie tabel zawieraj cych cz ciowo przetworzone wyniki zapytania). Optymalizator zapyta
DB2 wybiega znacznie poza mo liwo konkurencyjnych baz. Pozwala nie tylko optymalizowa
zapytania skierowane do bazy DB2, ale tak e rozproszone zapytania z wykorzystaniem innych systemów
baz danych (np. Oracle, MsSQL, itd.). Tak jak pokazano na poni szym rysunku tabele innych systemów
baz danych mog by obs ugiwane jak lokalne tabele DB2.
DB2 gromadzi w tzw. globalnym katalogu informacje o zdalnych tabelach i podczas optymalizacji bierze
pod uwag tak e aspekty zdalnej bazy (np. indeksy za one na tabeli, wielko tabel, wydajno zdalnej
bazy, buforowanie zdalnych obiektów).
Do innych unikalnych funkcjonalno ci mo na tak e zaliczy :
•
•
•
•
•
Wielowymiarowe klastrowanie danych (ang. Multidimensional Clustering) pozwalaj ce na
fizyczn organizacj danych na dysku, zgodnie ze zdefiniowanymi kombinacjami pól
Budowanie rozwi za klastrowych w architekturze „Shared-nothing” z mo liwo ci do czania do
1000 klastrów (ADTmag.com, „DB2 for Linux Clustering scales to 1000 nodes”)
Rozwi zania wysokiej dost pno ci bazy danych z prze czaniem si na serwer zapasowy bez
utraty po czenia do bazy danych (HADR)
Zintegrowane mechanizmy replikacji transakcji (tak e dwukierunkowej) z wykorzystaniem kolejki
komunikatów WebSphere MQ
Po czenie autonomicznych cech samo-zarz dzania bazy z mo liwo ci pe nej kontroli
administratora:
o pami mo e by dynamicznie alokowana, przy czym administrator mo e narzuci
okre lone ograniczenia, co do maksymalnej wielko ci zaalokowanej pami ci dla
odseparowania obci enia
o dla wybranych tabel administrator mo e zdefiniowa dowoln liczb puli buforów b
pozostawi jedn i zda si na optymalizacj bazy
o w ka dym momencie administrator mo e dynamicznie obni
priorytet dzia aj cych
operacji administracyjnych, tak e tych wyzwalanych automatycznie.
Microsoft SQL Server
Microsoft SQL Server (MS SQL) to komercyjny system zarz dzania baz danych, wspierany i
rozpowszechniany przez korporacj Microsoft. Jeden z trzech produktów bazodanowych firmy Microsoft,
obok Access oraz ADP.
MS SQL Server jest platform bazodanow typu klient-serwer. W stosunku do programu Access odznacza
si lepsz wydajno ci , niezawodno ci i skalowalno ci . Przede wszystkim s tu zaimplementowane
wszelkie mechanizmy wp ywaj ce na bezpiecze stwo operacji (m.in. wyzwalacze i transakcje).
43
Firebird
Firebird - ca kowicie darmowy serwer relacyjnych baz danych zgodny ze standardem ANSI SQL-92,
oferuj cy równie wiele elementów standardu SQL-99 oraz SQL:2003, dzia aj cy w rodowisku systemu
operacyjnego Linux, Windows i wielu innych. Mo e by u ywany bez rejestrowania lub wnoszenia
jakichkolwiek op at w dowolnych zastosowaniach, równie komercyjnych.
Serwer jest rozwijany na bazie kodu ród owego serwera InterBase 6.0 udost pnionego przez firm
Inprise Corp (obecnie znana jako Borland Software Corp) w lipcu 2000 roku na podstawie licencji
InterBase Public License 1.0. Nowe modu y dodane do serwera obj te s licencj Initial Developer's
Public License. Obie licencje s zmodyfikowanymi nieco wersjami Mozilla Public License v.1.1.
Przez pewien czas tak samo nazywa a si przegl darka internetowa. Ostatecznie jej nazwa zosta a
zmieniona na Mozilla Firefox.
MySQL
MySQL to obok PostgreSQL najpopularniejszy z wolnodost pnych silników relacyjnych baz danych. W
odró nieniu jednak od rozwijanego przez spo eczno open-source PostgreSQL-a, MySQL tworzony jest
przez pojedynczy podmiot - szwedzk firm MySQL AB.
Wady i zalety MySQL
MySQL by pisany raczej z my o szybko ci, ni kompatybilno ci ze standardem SQL – przez d szy
czas MySQL nie obs ugiwa nawet transakcji, co by o zreszt g ównym argumentem przeciwników tego
silnika bazodanowego (najcz ciej zwolenników PostgreSQL) – w nowszych wersjach (>=4) jest jednak
zaimplementowana wi kszo istotnych funkcji, a z ka
nowsz wersj , wsparcie SQL staje si coraz
bardziej kompletne.
Cieszy si natomiast opini jednego z szybszych serwerów bazodanowych, dzi ki czemu znakomicie
nadaje si jako serwer dla cz sto odwiedzanych witryn WWW.
Platformy, dla których dost pny jest MySQL
Serwer dost pny jest dla w ciwie wszystkich popularnych platform i ró norakich architektur, a tak e w
wersji ród owej, umo liwiaj cej skompilowanie go dla innej, normalnie nie wspieranej platformy.
Podobnie ma si sprawa z bibliotekami klienckimi MySQL, umo liwiaj cymi korzystanie z tego serwera
bazodanowego z poziomu aplikacji. Dost pne s równie dla wielu platform i j zyków programowania m. in. dla C, C++, Delphi, czy PHP.
Rodzaje obs ugiwanych tabel
MySQL oferuje wiele ró nych typów tabel, z których ka dy nadaje si do innego zastosowania. S to
mi dzy innymi:
•
•
•
MyISAM – domy lny, nie obs uguje transakcji,
HEAP – najszybszy, gdy wszystko jest przechowywane wy cznie w pami ci RAM. Posiada
jednak kilka ogranicze , mi dzy innymi nie przechowuje danych po wy czeniu serwera MySQL,
InnoDB – obs uguje transakcje,
44
•
BerkeleyDB – obs uguje transakcje, jak dotychczas nie w pe ni zintegrowany z MySQL.
Licencjonowanie
MySQL jest dost pny na licencji GPL, jednak e mo na naby równie wersje z licencjami zamkni tymi.
Zastosowanie
Wraz z serwerem Apache i parserem PHP zaimplementowanymi na platformie Linux stanowi popularne
rodowisko serwerowe – LAMP.
Oracle
Oracle Database to nazwa relacyjnego systemu baz danych stworzonego przez firm Oracle.
Opis
Relacyjna baza danych Oracle pos uguje si standardowym j zykiem zapyta SQL oraz posiada
wbudowane wewn trzny j zyk tworzenia procedur sk adowanych PL/SQL - b cy proceduralnie
obudowanym j zykiem SQL. Jako j zyka tworzenia procedur sk adowanych w bazach danych Oracle (od
wersji 8i) mo na u ywa równie j zyka Java
Struktura
Baza danych Oracle sk ada si z:
•
•
•
•
•
instancji - struktur pami ciowych oraz procesów obs uguj cych baz danych
plików danych - plików w których przechowywane s wszystkie gromadzone w systemie dane
oraz struktury wspomagaj ce (np. indeksy)
pliku parametrów - plik ten zawiera parametry uruchomieniowe instancji bazy danych Oracle
oraz cie ki do plików kontrolnych instancji
plików kontrolnych - pliki kontrolne przechowuj informacj na temat struktury bazy danych
(informacj o plikach danych, historia backupów, numery SCN, informacje na temat archiwalnych
dzienników powtórze , trybu pracy bazy danych)
dzienników powtórze - przechowuj powtórzon informacj na temat przeprowadzonych w
systemie transakcji i maj charakter dookolny - po zape nieniu informacja jest nadpisywana
Struktura instancji
Struktury Pami ciowe
Instancja bazy danych Oracle sk ada si ze wspó dzielonych struktur pami ciowych (do których dost p
maj wszystkie procesy obs uguj ce instancj ) oraz ze struktur prywatnych dost pnych tylko dla
procesów, które te struktury zaalokowa y.
Podstawow struktur pami ciow jest SGA czyli System Global Area lub Shared Global Area zale nie
od nazewnictwa. W sk ad SGA wchodz :
•
Shared Pool
45
•
•
•
•
Database Buffer Cache
Redo Log Buffer Cache
Large Pool (struktura opcjonalna)
Java Pool (struktura opcjonalna)
Do struktur wspó dzielonych nale y równie Software Code Area b
wykonywalny procesów Oracle.
cy struktur przechowuj
kod
Poza strukturami wspó dzielonymi dost pna jest przestrze PGA czyli Program Global Area. PGA jest
dost pne tylko dla jednego procesu, który je stworzy i zawiera:
•
•
•
Przestrze Stosu (Stack Space)
Informacje o Procesie
Sort Area
Procesy
Procesy wchodz ce w sk ad instancji Oracle:
•
•
•
•
•
•
•
•
•
•
•
Database Writer (DBWn)
Log Writer (LGWR)
Checkpoint (CKPT)
System Monitor (SMON)
Process Monitor (PMON)
Archiver (ARCn)
Recovery (RECO)
Lock (LCKn)
Queue Monitor (QMNn)
Dispacher (Dnnn)
Shared Server (Snnn)
Pliki
Edycje/Wersje
Obecnie System zarz dzania baz danych - SZBD - (ang. RDBMS) Oracle jest dystrybuowany w wersji
10g Release 2 (w tej chwili wersja ta jest dost pna na ograniczon ilo platform sprz towych). Dost pne
ró norodne edycje SZBD Oracle ró ni ce si mo liwo ciami a co za tym idzie cen .
W tej chwili dost pne s :
•
•
•
•
•
•
Oracle Enterprise Edition
Oracle Standard Edition
Oracle Standard Edition One
Oracle Express Edition (pierwsza wersja beta zosta a udost pniona publicznie 28.10.2005)
Oracle Personal
Oracle Lite
Oracle Enterprise Edition jest sztandarowym i najbardziej rozbudowanym produktem firmy Oracle i
46
mo e by dodatkowo rozszerzany o opcje np. takie jak: partycjonowanie tabel, RAC, zaawansowane
bezpiecze stwo itd.
Oracle Standard Edition ta sza edycja bazy danych Oracle pozbawiona mo liwo ci rozbudowy o opcje,
nie posiadaj ca wszystkich mo liwo ci edycji Enterprise (brak np. mechanizmu DataGuard) oraz
ograniczona ilo ci procesorów na jakiej mo na j uruchomi .
Oracle Standard Edition One pierwszy raz ukaza a si wraz z wersj 10g. Jest to tania edycja bazy
danych Oracle nie ró ni ca si niczym w stosunku do Oracle Standard Edition poza ograniczeniami
licencyjnymi takimi mi dzy innymi jak: brak mo liwo ci uruchomienia w konfiguracji klastrowej,
ograniczenie na prac w maszynach maj cych mo liwo instalacji maksymalnie dwóch procesorów
jednoj drowych lub jednego procesora dwuj drowego.
Oracle Express Edition (nie nale y jej myli z wielowymiarow baz danych Oracle Express) jest
darmow ale bardzo ograniczon (mi dzy innymi wykorzystanie jednego procesora, wykorzystanie
maksymalnie 1GB RAM, obs uga maksymalnie 4GB danych u ytkownika) edycj SZBD Oracle. Oracle
Express Edition jest prezentowana po raz pierwszy w wersji 10gR2 i znajduje si jeszcze w fazie testów
beta.
Oracle Personal jest edycj w pe ni funkcjonaln , kompatybiln z dowoln wersj rodziny relacyjnych
baz danych Oracle, przeznaczon do u ytku indywidualnego.
Oracle Lite jest silnikiem baz danych przeznaczonym do zastosowa mobilnych.
Od wersji 9i silniki bazy danych pomi dzy wszystkimi edycjami (wy czaj c edycj Lite) jest ten sam z
wprowadzeniem do niego adekwatnych dla edycji ogranicze . W wersjach wcze niejszych silniki wersji
Standard oraz Enterprise by y tworzone osobno.
PostgreSQL
PostgreSQL to, obok MySQL i Firebird, jeden z trzech najpopularniejszych wolnodost pnych systemów
zarz dzania relacyjnymi bazami danych. Pocz tkowo opracowywany na Uniwersytecie Kalifornijskim
Berkeley i opublikowany pod nazw Postgres. W miar rozwoju i zwi kszania funkcjonalno ci, baza
danych otrzyma a nazwy Postgres95 i ostatecznie PostgreSQL, aby upami tni pierwowzór oraz
zaznaczy zgodno ze standardem SQL.
PostgreSQL zalicza si do baz typu RDBMS, z rozszerzeniami obiektowymi.
Cechy
Funkcje
W samej bazie mo na pisa procedury sk adowane w ró nych j zykach programowania:
•
•
•
•
wbudowany j zyk PL/pgSQL podobny do proceduralnego j zyka PL/SQL w bazie Oracle
zyki skryptowe m.in. PL/Perl, plPHP, PL/Python, PL/Ruby, PL/sh, i PL/Tcl
zyki kompilowane C, C++, lub Java (jako PL/Java)
zyk statystyczny R jako PL/R
47
Indeksy
W PostgreSQL zaimplementowano obs ug wielu typów indeksów takich jak B-drzewo, Hash, R-drzewo i
GiST. Indeksy posiadaj dodatkowe mo liwo ci:
•
•
•
indeksy funkcyjne, gdzie indeks powstaje poprzez wynik funkcji, a nie z warto ci kolumny
indeksy cz ciowe czyli indeksy reprezentuj cy cz
tabeli, mo e zosta utworzony poprzez
dodanie klauzuli "WHERE" na ko cu CREATE INDEX.
w razie potrzeby PostgreSQL mo e przegl da indeksy od ko ca
Wyzwalacze
Posiada mechanizm wyzwalaczy. Wyzwalacze mog by przy czane do tabel lub widoków. Wyzwalacze
mog by definiowane w PL/pgSQL, PL/Perl, PL/Python lub PL/Tcl.
Inne cechy
Silnik ten zawiera wiele obiektowych rozszerze takich jak mo liwo
podstawowych, nowych operatorów i dziedziczenia typów tablic.
Posiada zaawansowany system transakcji, mo liwo
zawartym w contribie.
definiowania nowych typów
dodawania funkcjonalno ci dzi ki modu om
Jednym z pierwszorz dnych celów twórców PostgreSQL jest jak najwi ksza zgodno
SQL.
ze standardem
PostgreSQL jest dost pny na wiele platform, m.in. Linux i Windows. Od 8 listopada 2005 aktualn wersj
jest 8.1
PostgreSQL jest dost pny na licencji BSD.
Microsoft Access
Microsoft Access - system obs ugi relacyjnych baz danych wchodz cy w sk ad pakietu biurowego
Microsoft Office dla rodowiska Windows.
Bazy danych Access s zapisywane w pojedynczych plikach. Jest to wygodne w przypadku prostych
zastosowa , jednak kosztem wydajno ci, wielodost pno ci oraz bezpiecze stwa danych. Aby unikn
takich problemów, Access mo na pod czy do zewn trznego ród a danych (np. serwera [Microsoft SQL
Server]] lub PostgreSQL). W takim przypadku Access spe nia rol graficznego interfejsu dla
zewn trznych róde danych, a nie ca ego systemu obs ugi baz danych.
Do przyk adowych zastosowa mo na zaliczy prostsze aplikacje dla ma ych i rednich firm dotycz ce
analizy oraz przetwarzania danych. Microsoft Access mo na równie wykorzysta do szybkiego
prototypowania aplikacji bazodanowych.
Dost p do baz danych utworzonych w Microsoft Acess wymaga posiadania programu Access b
te
napisania osobnego programu z u yciem zewn trznych narz dzi. Wyj tkiem jest najbardziej rozbudowana
wersja Developer umo liwia te tworzenie gotowej aplikacji zawartej w jednym pliku wykonywalnym.
48
Cechy MS Access
W obecnej wersji (MS Access 2003) Access ma nast puj ce ograniczenia:
•
•
•
•
•
maksymalny rozmiar bazy danych to 2 GB (w tej przestrzeni musz si równie zmie ci obiekty
systemowe, np. indeksy),
maksymalna liczba obiektów w bazie: 32 768,
maksymalna liczba jednoczesnych u ytkowników: 255 (w praktyce du o mniej),
maksymalna liczba pól w tabeli: 255,
maksymalny rozmiar tabeli: 2 GB (wraz z obiektami systemowymi)
Poza tym, Microsoft Access zawiera wbudowany interpreter VBA (ang. Visual Basic for Applications).
SQLite
SQLite - to baza danych/biblioteka C implementuj ca silnik (ang. engine) SQL (ang. Structured Query
Language). Zosta a stworzona przez Richard'a Hipp'a i jest dost pna na licencji public domain. Projekt
zosta rozpocz ty w roku 2000.
Biblioteka implementuje silnik SQL, która daje mo liwo u ywania bazy danych bez konieczno ci
uruchamiania osobnego procesu RDBMS, co w wielu zastosowaniach jest najpraktyczniejszym
rozwi zaniem. SQLite posiada równie API do innych ni C j zyków programowania, a mianowicie do
zyka: Perl, PHP, Ruby, C++, Python, Java, Tcl, Visual Basic, .NET i wiele innych; a tak e interfejs
shellowy. Baza mo e czy si przez ODBC. Zawarto bazy danych przetrzymywana jest w jednym
pliku (do 2 TB). Baza SQLite jest utrzymywana na dysku przy u yciu drzew binarnych (ang. B-Tree).
Osobne drzewo jest u ywane dla ka dej z tabel i ka dego z indeksów. SQLite udost pnia transakcje
ACID oraz wi kszo standardu SQL 92. SQLite jest cz sto wykorzystywany w wi kszych aplikacjach
oraz w systemach obs ugi relacyjnych baz danych takich jak Kexi.
Bazy danych zapisywane s jako pliki binarne. Ich bezpiecze stwo jest oparte na zabezpieczeniach
oferowanych przez u ywany system plików. Istnieje te projekt oferuj cy szyfrowanie baz danych SQlite
na bie co.
SQLite ma kilka ciekawych rozwi za takich jak:
•
•
•
•
•
Obs uga zapyta zagnie onych
Obs uga widoków
Obs uga transakcji
Obs uga triggerów (niepe na)
Mo liwo definiowania w asnych funkcji
Nale y zaznaczy e niektórych z nich brakuje nawet w tak rozbudowanych serwerach baz danych jak
MySQL, a wydajno SQLite w porównaniu z serwerami baz danych MySQL oraz PostgreSQL jest
bardzo wysoka.
49
Visual FoxPro
Visual FoxPro - jest zorientowanym obiektowo oraz proceduralnym j zykiem baz danych z Microsoftu.
Zosta oparty na FoxPro (pocz tkowo zwanym FoxBASE) rozwijanym przez Fox Software od 1984; Fox
Sofware zosta w czony do Microsoftu w 1992 a program w dalszych wersjach otrzyma przyrostek
Visual. Ostatnia wersja FoxPro (2.6) pracowa a pod systemami Mac OS DOS, Windows i Unix: Visual
FoxPro 3.0, pierwsza wersja Visual wspiera a jedynie platformy Mac i Windows, a pó niejsze wersje ju
tylko Windows.
FoxPro jest jednym z j zyków zwanych xBase, które wywodz si od dBase: pozosta e to Clipper, dBase i
Recital.
50
5. Podstawowe pakiety informatyczne, statystyczne i ekonometryczne
PS. Warto jest wspomnie o pakietach typu Office na samym pocz tku omawiania zagadnienia. Zajmie to troch czasu a
komisja b dzie widzia a, e jeste przygotowana/y J .
Microsoft Office to pakiet aplikacji biurowych wyprodukowany przez firm Microsoft.
W ka dej wersji niezale nie od licencji zawiera aplikacje
•
•
•
Microsoft Word (procesor tekstu)
Microsoft Excel (arkusz kalkulacyjny)
Microsoft Outlook (program pocztowy, kalendarz).
Programy sk adaj ce si na Microsoft Office natywnie s przeznaczone na platform Microsoft Windows
oraz MacOS X, lecz mog zosta uruchomione na innych systemach (GNU/Linux, FreeBSD itp.) za
pomoc programów takich jak np. WINE.
W zale no ci od licencji mo e, ale nie musi zawiera :
• Microsoft PowerPoint (tworzenie i wy wietlanie prezentacji)
• Microsoft Access (front-end baz danych, wbudowany engine Microsoft Jet)
• Microsoft OneNote (robienie notatek, dodawany od wersji 2003)
• Microsoft Publisher (tworzenie publikacji prasowych)
• Microsoft Visio (edytor schematów),
• Microsoft FrontPage (tworzenie i edycja stron WWW)
• Microsoft Project (zarz dzanie harmonogramem projektów) i kilka mniej popularnych.
Microsoft Word jest obecnie najpopularniejszym procesorem tekstu, a podstawowy format tworzonych
przez niego plików sta si de facto standardem, który musz obs ugiwa konkuruj ce produkty. Filtry
eksportu i importu dla tego formatu zosta y wmontowane w wiele procesorów tekstu, takich jak AbiWord
czy OpenOffice. Kolejne wersje Worda otrzyma y wi cej mo liwo ci ni tylko przetwarzanie tekstu.
Narz dzie rysowania pozwala na wykonywanie prostych operacji z zakresu desktop publishing, takich jak
dodawanie grafik do dokumentu, chocia specjalizowany program b dzie si niew tpliwie nadawa do
tego lepiej. W kolejnych latach dodano mi dzy innymi obs ug wielu u ytkowników, porównywanie
dokumentów, wsparcie wielu j zyków i inne mo liwo ci.
Microsoft Excel jest obecnie najpopularniejszym narz dziem na rynku, cenionym za szybko ,
rozbudowane narz dzia analityczne (np. tabele przestawne) i grafik biznesow oraz ergonomi obs ugi.
Program Microsoft Office Outlook jest mened erem informacji osobistych i programem komunikacyjnym
zapewniaj cym ujednolicone miejsce do zarz dzania poczt e-mail, kalendarzami, kontaktami oraz
innymi informacjami osobistymi i zespo owymi.
http://pl.wikipedia.org/wiki/Microsoft_PowerPoint
http://pl.wikipedia.org/wiki/Microsoft_Access
http://pl.wikipedia.org/wiki/Microsoft_OneNote
http://pl.wikipedia.org/wiki/Microsoft_FrontPage
Przez wiele lat Microsoft Office wiód prym w tej klasie programów na komputery typu desktop. Od roku
1998 darmow alternatyw dla pakietu firmy Microsoft sta si pakiet typu open source firmowany
pocz tkowo przez firm Sun - Pocz tkowo StarOffice, teraz OpenOffice.org.
51
StarOffice — Pakiet biurowy firmy Star Division, wykupionej przez Sun Microsystems w roku 1999.
Konkurencja dla Microsoft Office. Uruchamianie poszczególnych aplikacji pakietu (np. edytora tekstu)
odbywa si przez w asne rodowisko pracy pakietu, w przeciwie stwie do najwi kszego konkurenta,
gdzie ka da aplikacja jest oddzielna.
W pa dzierniku 2000 roku Sun Microsystems uczyni dotychczas darmowy pakiet StarOffice p atnym,
jednocze nie tworz c now aplikacj OpenOffice.org z otwartym kodem. Ró ni a si ona od ówczesnej
wersji StarOffice (5.2) tym, e uruchamianie poszczególnych aplikacji pakietu nie odbywa si poprzez
asne rodowisko pracy, ale przez menu kontekstowe ikony w trayu (brak wspólnego pulpitu). Obecnie
ró nice funkcjonalne obu wersji oprogramowania s nieznaczne.
OpenOffice.org (potocznie: OpenOffice, OOo) jest pakietem oprogramowania biurowego Open Source.
Jego kod bazuje na starszym pakiecie StarOffice, napisanym przez niemieck firm Star Division. W 1999
firma wraz z prawami do programu zosta a zakupiona przez Sun Microsystems.
13 pa dziernika 2000 Sun opublikowa kod ród owy pakietu (okrojony jedynie o cz ci nie nale ce do
firmy) powo uj c jednocze nie do ycia projekt OpenOffice.org. OOo stanowi bezp atn alternatyw dla
Microsoft Office, ale mo na go te kupi : zwykle w cen wersji pude kowej jest wliczony koszt us ugi
wsparcia technicznego, uaktualnie oraz ró ne dodatki, np. profesjonalne szablony dokumentów,
certyfikat czy program do graficznej obs ugi baz danych Kexi.
Aktualna stabilna wersja pakietu to 2.0, jej najwa niejsz nowo ci jest w asny system obs ugi
relacyjnych baz danych (OpenOffice.org Base), unowocze niony zosta interfejs wywodz cy si jeszcze z
pakietu StarOffice. Arkusz kalkulacyjny zosta rozszerzony do 64K wierszy (tyle, ile ma Microsoft
Excel), znacznie udoskonalono te program prezentacyjny Impress. Administratorzy otrzymaj narz dzia
do sieciowej instalacji pakietu. Nowo ci jest wreszcie OpenDocument - unormowany, otwarty format
plików OASIS (Organization for the Advancement od Structured Information Standards).
Sk adniki pakietu
•
•
•
•
•
•
•
Procesor tekstu - Writer
Arkusz kalkulacyjny - Calc
Edytor grafiki - Draw
Edytor prezentacji - Impress
Edytor wzorów matematycznych - Math
Wizualny edytor HTML
Rejestrator i edytor makr w j zyku StarOffice Basic
Pakiet obs uguje (eksport lub import) mi dzy innymi dokumenty Microsoft Office (DOC, XLS, PPT,
RTF), formaty graficzne (BMP, GIF, JPG, PNG), pliki tekstowe, bazy danych w formacie dBASE (DBF),
pliki AutoCADa (DXF), wzory matematyczne w formacie MathML (MML) oraz format PDF.
52
Download