52
1 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áRĪ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

OPRACOWAà K77. Przeczytajcie wszystko chocia * raz a na ...keller.info.pl/materialy/zagadnienia_z_informatyki2.pdf · Struktury danych Struktura danych (ang.data structure) - sposób

Embed Size (px)

Citation preview

1

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 zzakresu danego zagadnienia). Najcz ciej jest tak, e po kilku minutach komisja Wam przerwie, zanim dojdziecie do rzeczy, októrych macie raczej mgliste poj cie. Nie oznacza to bynajmniej, e nie musicie si w ogóle uczy zagadnie – profesor bywaczasem 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. Nastrukturach danych operuj algorytmy.

Przyk adowe struktury danych to:

1. rekord, zwany w niektórych j zykach po prostu struktur (ang. struct, record), logicznyodpowiednik to krotka

2. tablica3. lista4. drzewo i jego liczne odmiany (np. drzewo binarne)5. stos6. kolejka

Podczas implementacji programu programista cz sto staje przed wyborem mi dzy ró nymi strukturamidanych, aby uzyska po dany efekt. Odpowiedni wybór mo e zmniejszy z ono obliczeniow , ale zdrugiej strony trudno implementacji danej struktury mo e stanowi istotn przeszkod .

Poniewa struktury danych s w programie rzecz szczególnie istotn , wiele j zyków programowaniawspiera programist , dostarczaj c bibliotek standardow z zaimplementowanymi ró norodnymistrukturami danych. Mo na tu wymieni Standard Template Library w C++, API j zyka Java orazplatform .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) (logicznyodpowiednik to krotka).

Jest to obiekt programistyczny, grupa danych - takiego samego lub ró nego typu - posiadaj ca swojustalon 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 eby 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

2

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 dowprowadzenia obiektów i programowania strukturalnego.

Tablica to pojemnik danych dost pnych za pomoc kluczy b cych ich kolejnymi numerami. Tablicemog 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 zykachfunkcjonalnych 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 wcuszek 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. Innymprzypadkiem 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 ystosuje si j tam, gdzie elementy listy zawieraj kilka pól z danymi, a kolejny element mo e rozszerzapoj cie (definicj poprzedniego). Przyk adem jest prosty translator tekstu, zrealizowany jako lista, gdzieka dy z elementów zawiera dane wyraz i definicja wyrazu - mo e si okaza , e definicja danego wyrazuma 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.

3

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 lewowszystkich 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 nie odgrywa istotnej roli, a wymagana jestszybka i prosta nawigacja.

Wska nikowa

W tej implementacji ka dy obiekt na li cie musi (co nie by o konieczne w wersji tablicowej) zawieradodatkowy element: wska nik do innego obiektu tego typu. Wynika to z faktu, e to wska niki spodstaw 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 nowyobiekt danego typu;

• je li ma ono nast pi wewn trz listy, to najpierw tworzy si nowy obiekt danego typu i jegowska nik wi cy ustawia si na nast pnik elementu, za którym ma by wstawiany. Pó niejwska nik poprzednika przestawia si na ten nowy obiekt. W tym przypadku bardzo wa na jestkolejno , której zachwianie jest cz st przyczyn b dów. Np. mo na najpierw przestawiwska nik poprzednika na nowy obiekt, co spowoduje bezpowrotn utrat dost pu do dalszychelementów listy, na które ju nie b dzie pokazywa aden wska nik. Ustawienie wska nikanowego 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 dousuwanego elementu (aby nie "zgubi " jego adresu), nast pnie wska nik wi cy poprzednika przestawiasi na nast pnik, i dopiero w tym momencie zwalnia si pami po obiekcie usuwanym (do tegopotrzebny 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 cerodzaje list:

• lista jednokierunkowa - w ka dym elemencie listy jest przechowywane odniesienie tylko dojednego s siada (nast pnika lub poprzednika).

4

• lista dwukierunkowa - w ka dym elemencie listy jest przechowywane odniesienie zarówno donast pnika jak i poprzednika elementu w li cie. Taka reprezentacja umo liwia swobodneprzemieszczanie si po li cie w obie strony.

• lista cykliczna - nast pnikiem ostatniego elementu jest pierwszy element, a poprzednikiempierwszego ostatni. Po li cie mo na wi c przemieszcza si cyklicznie. Nie ma w takiej li ciecharakterystycznego ogona (ani g owy), cz sto rozpoznawanego po tym, e jego nast pnik jestpusty (NIL).

• lista z wartownikiem - lista z wyró nionym elementem zwanym wartownikiem. Jest to specjalnieoznaczony element niewidoczny dla programisty wykorzystuj cego list . Pusta lista zawiera wtedytylko wartownika. Zastosowanie wartownika znacznie upraszcza implementacj operacji nalistach.

Powy sze cechy mo na prawie dowolnie czy , co daje mo liwo stworzenia wielu ró nychimplementacji listy, zale nie od potrzeb.

Drzewo (informatyka)

W informatyce drzewa s strukturami danych reprezentuj cymi drzewa matematyczne. W naturalnysposób reprezentuj hierarchi danych (obiektów fizycznych i abstrakcyjnych, poj , itp.), tote g ówniedo tego celu s stosowane. Drzewa u atwiaj i przyspieszaj wyszukiwanie, a tak e pozwalaj w atwysposób operowa na posortowanych danych. Znaczenie tych struktury jest bardzo du e i ze wzgl du naswoje 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 kipo 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 liczbsynów, je li nie ma ich wcale nazywany jest li ciem; na rysunku li cie zaznaczone s kolorem niebieskim.

5

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 gkraw dzi, na rys. przyk adowa cie ka do w a J jest zaznaczona na czerwono. Liczba kraw dzi wcie 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 wysoko4).

Specjalne znaczenie w informatyce maj drzewa binarne (liczba synów ograniczona do dwóch) i ich ró neodmiany, np. drzewa AVL, drzewa czerwono-czarne, BST; drzewa które posiadaj wi cej ni dwóchsynó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 zzale no ciami rodzic-syn. Je li przy przechodzeniu drzewa na wierzcho kach s wykonywane pewnedzia 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 jestdzia 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 przyprzechodzeniu drzewa metod preorder otrzymamy ABEFCDGIHJKL, natomiast przy przechodzeniudrzewa metod postorder: EFBCIGJKLHDA.

Fizycznie drzewa s reprezentowane za pomoc struktur wi zanych – ogólnie pojedynczy wierzcho ekprzechowuje dane oraz dowi zania do swoich synów. W szczególno ci je li drzewo jest zapisane wtablicy (patrz: kopiec), to synowie s wskazywani przez konkretne indeksy; je li drzewo jest budowane nastercie (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;};

6

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 tsam zasad ). Mo na zilustrowa t struktur jako stos ustawionych jedna na drugiej ksi ek - nowyegzemplarz k adzie si na wierzchu i z wierzchu si go ci ga. Elementy poni ej wierzcho ka mo nawy 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 nawej ciu, pierwszy na wyj ciu, w którym jako pierwszy obs ugiwany jest element który pojawi si napocz 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 formalnyzapis:

• 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 rozmiarstosu), tablice dynamiczne lub listy. Z ono obliczeniowa operacji na stosie zale y od konkretnejimplementacji, 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 strukturadanych, znaczeniowo odpowiadaj ca nazwie: nowe dane dopisywane s na ko cu kolejki, a jako pierwszeobs ugiwane s dane z pocz tku.

Specjaln modyfikacj jest kolejka priorytetowa - ka da ze znajduj cych si w niej danych dodatkowoma przypisany priorytet, który modyfikuje kolejno pó niejszego wykonania. Oznacza to, e pierwsze nawyj 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 . Wszczególno ci w systemach operacyjnych ma zastosowanie kolejka priorytetowa, przydzielaj ca zasobysprz towe uruchomionym procesom.

Przeciwie stwem kolejki jest stos, bufor (ang. LIFO - Last In, First Out; ostatni na wej ciu, pierwszy nawyj ciu), w którym jako pierwsze obs ugiwane s dane wprowadzone jako ostatnie.

7

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 cechyszczegó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 dowykonania.

zyk programowania pozwala programi cie na precyzyjne przekazanie maszynie, jakie dane maj ulecobróbce i jakie czynno ci nale y podj w okre lonych warunkach.

Ada

Ada to strukturalny, kompilowalny, statycznie typowany j zyk programowania opracowany przez JeanIchbiah z Cii Honeywell Bull w latach 70. XX wieku. Nazwa j zyka pochodzi od nazwiska lady AugustyAdy 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 dowykrycia b dów.

Istniej dwa standardy Ady: starszy Ada 83 oraz nowszy Ada 95, w którym dodano m.in. obs ugobiektów.

Ada jest obs ugiwana przez kompilator GNAT, oparty na GCC.

Poniewa wiele rzeczy w Adzie jest zaprojektowane "wbrew" tradycji uniksowej, nie cieszy si onapopularno ci w ród programistów uniksowych (w szczególno ci w ród programistów open source). Donielicznych programów open source napisanych w Adzie nale y wizualny debugger GNU VisualDebugger (GVD).

Oto prosty przyk ad (funkcja Ackermanna) kodu w Adzie demonstruj cy kilka jej cech. Program, eby siskompilowa , 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 isbegin 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));

8

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 izwykle 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ównie zawiera tego rozró nienia.

Asembler

Asembler to j zyk programowania niskiego poziomu, w którym zasadniczo jedno polecenie odpowiadajednemu rozkazowi procesora. Jest to j zyk powsta y na bazie j zyka maszynowego poprzez zast pieniekodów maszynowych pisanych binarnie lub szesnastkowo ich mnemonicznymi odpowiednikami. Dzi kizamianie liczb na tzw. mnemoniki mo na pisa programy w miar zrozumia e dla cz owieka, ajednocze nie bezpo rednio t umaczone na kod maszynowy procesora zapewniaj c pe kontrolprogramow .

Pierwszym asemblerem by skonstruowany przez Konrada Zuse - uk ad elektromechanicznyprzygotowania ta my perforowanej z programem dla maszyny Z4 (modu Planfertigungsteil). Pozwala nawprowadzanie i odczyt rozkazów i adresów w sposób zrozumia y dla cz owieka.

9

Wspó cze nie praktycznie nie u ywa si asemblera do pisania ca ych programów dla komputerówosobistych. Jest on za to wci u ywany do pisania fragmentów wymagaj cych bardzo wysokiejwydajno ci lub maj cych inne specjalne wymagania, np. dla oprogramowania mikrokontrolerów oniewielkich 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 woparciu 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 narynek mikrokomputera Altair 8800. Twórcami dialektu BASIC-a dla tej maszyny byli Bill Gates i PaulAllen. BASIC szybko zaimplementowany zosta przy budowie serii komputerów Apple, a pó niej (jakoGW 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 ikompilatory 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 (maksymalnynumer wynosi zwykle 9999, 16384 albo 32767).

Zmienne mog mie dowolnie d ugie nazwy zaczynaj ce si od litery. Nazwy zmiennych cuchowychzako czone s znakiem dolara, np. x$, zmienna$. Tablice mog mie dwa lub wi cej wymiarów (wniektó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 sterowaniaprzebiegiem programu - instrukcj skoku bezwarunkowego GOTO, wywo ania podprogramu GOSUB(ko czonego instrukcj RETURN) oraz warunkow (IF..THEN (oraz ELSE w niektórych dialektach). Zapomoc 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:

10

RUN - uruchomienie programuPRINT tekst - wyprowadzenie tekstu lub warto ci zmiennej na urz dzenie wyj ciowe (najcz ciejekran).INPUT zmienna - wczytanie warto ci z klawiatury do zmiennejDIM tablica - deklaracja tablicyLET zmienna = warto - deklaracja zmiennej (czasami LET mo na opu ci )STOP - zatrzymanie programuCONTINUE - 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 nieudost 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 podnazw Visual Basic .NET. Mog wyst powa komplikacje przy automatycznym przenoszeniu programównapisanych w Visual Basic do Visual Basic .NET.

C

C jest j zykiem programowania stworzonym na pocz tku lat siedemdziesi tych przez Dennisa Ritchiegodo 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 okresrozwoju 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 cymzykiem 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 programowaniaobiektowego.

Standardy

Standard j zyka C zosta zapisany w normie ISO 9899. Pierwsze wydanie tego dokumentu mia o miejscew 1990 roku (ISO 9899:1990) i by o modyfikacj standardu ANSI: ANSI X3.159-1989 "ProgrammingLanguage C". J zyk zgodny z t wersj standardu okre lany jest nieformalnie jako C89. Od tego czasu

11

powsta o wiele uaktualnie tej normy. W 2001 roku ostatnia ma oznaczenie ISO 9899:1999 i zosta aopublikowana w 1999 roku, j zyk zgodny z t norm okre lany jest nieformalnie jako C99. C99 nie jestkompatybilny z C++.

Podstawowe elementy j zyka C

Komentarze

Komentarz blokowy umieszcza si mi dzy sekwencj znaków "/*" a "*/", a komentarz liniowyrozpoczyna si sekwencj "//" a ko czy znakiem ko ca linii. Komentarz liniowy wprowadzono doobecnego 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 Wielko pami ci Uwagi_Bool 1 bajt tylko w nowych wersjachchar 1 bajtunsigned char 1 bajtsigned char 1 bajtint 2 lub 4 bajtyunsigned int 2 lub 4 bajtyshort 2 bajtyunsigned short 2 bajtylong 4 bajtyunsigned long 4 bajtylong long 8 bajtów tylko w nowych wersjachunsigned long long 8 bajtów tylko w nowych wersjachfloat 4 bajtydouble 8 bajtówlong double 10 bajtówfloat _Complex 8 bajtów tylko w nowych wersjachdouble _Complex 16 bajtów tylko w nowych wersjachlong double _Complex 24 bajty tylko w nowych wersjachfloat _Imaginary tylko w nowych wersjachdouble _Imaginary tylko w nowych wersjachlong double _Imaginary tylko w nowych wersjachvoid

12

enum nazwa { jeden, dwa };

struct nazwa { typ1 nazwa1; typ2 nazwa2; };

union nazwa { typ1 nazwa1; typ2 nazwa2; };

typ nazwa;

typ [identyfikator] : d ugo ;

typ nazwa[liczba];

typ *nazwa;typ **nazwa;typ_zwracany (*nazwa_wsk_do_funkcji)(typ nazwa_parametru1,typnazwa_parametru2,...);

if (warunek1) { instrukcje; } [else if(warunek2){ instrukcje; }] [else { instrukcje; }]

Typy pochodne

Typ wyliczeniowy

Struktury

Unie

Pola bitowe

Tablice

Wska niki

Instrukcje steruj ce

Instrukcja if

else i else if s opcjonalne.

13

while (warunek) { instrukcje; }

do { instrukcje; } while (warunek);

for ([instrukcja-pocz tkowe]; [warunek];

[instrukcje-wykonywane-po-ka dej-iteracji]) { instrukcje; }

switch (wyra enie) { case warto 1 : instrukcje; [break;] case warto 2 : instrukcje; [break;] default : instrukcje; [break;] }

[klasa_pamieci] [typ] nazwa([lista_argumentów]) { instrukcje; }

tla while

tla do...while

tla for

Instrukcja switchbreak jest opcjonalne. warto 1 i warto 2 musz by sta ymi.

Funkcje

Klasa_pami ci, typ i lista_argumentów s opcjonalne.

14

#include <stdio.h>

int main(void){ printf ("Hello, world!\n"); return 0;}

Przyk ady

Hello, world

W powy szym kodzie:

• Dyrektywa #include w cza do pliku zawarto odpowiednich plików nag ówkowych - w tymprzypadku 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 funkcjaprintf.

• 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 cynajbardziej "zaciemnione" (trudne do odczytania) programy w j zyku C.

C++

zyk C++ jest j zykiem programowania "o wielu paradygmatach", m.in. równie obiektowozorientowanym. 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 wersjkompilatora Cfront (t umacz cy C++ na C), pó niej opublikowano pierwszy nieformalny standard zwanyARM (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 - ProgrammingLanguages - C++"). Standard ten zerwa cz ciowo wsteczn zgodno z ARM w swojej bibliotecestandardowej; 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 bardziejelastycznym od swojego pierwowzoru. Nie od rzeczy jest te wspomnie , e niektóre zmiany wstandardzie j zyka C by y w wi kszo ci zainspirowane j zykiem C++ (np. s owo const).

15

Nazwa j zyka zosta a zaproponowana przez Ricka Mascitti w 1983 roku, kiedy to po raz pierwszy u ytotego j zyka poza laboratorium naukowym. Odzwierciedla ona fakt, e j zyk ten jest rozszerzeniem j zykaC. 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++ zpakietu 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;, naprzyk ad:

#include <iostream> // wstawiamy plik nag ówkowy biblioteki iostreamusing 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 wktórym u yto nazwy "konstruktor" w tym w nie znaczeniu i pierwszym j zykiem, który posiadadestruktory)

• 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)

16

• 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. Programnapisany 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 bibliotekauruchomieniowa 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 „Helloworld!”.

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 jegoskompilowaniu 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() ); }}

17

Delphi

Definicja intuicyjna:Delphi to narz dzie, które s y do tworzenia programów w rodowisku Microsoft Windows. Dzi kipalecie komponentów oraz zintegrowanym narz dziom, Delphi umo liwia szybkie i proste tworzenieprogramó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 wDelphi musz zosta skompilowane do postaci kodu binarnego przed pierwszym wykonaniem, pomimotego podczas projektowania niektóre komponenty dzia aj ju w trakcie tworzenia projektu, umo liwiaj cogl danie efektów pracy. Delphi zapisuje informacje o w ciwo ciach obiektów udost pniaj c jeprogrami cie. Informacje te umo liwiaj zmian ich warto ci przez programist bez pisania koduprogramu oraz s u ywane podczas pracy programu - technika ta zwana jest RTTI. Tworzone programypracuj na zasadzie obs ugi zdarze , ka de polecenie (np. klikni cie myszk ) generuje zdarzenie, którepoprzez wewn trzne mechanizmy programu s przesy ane do odpowiedniego komponentu, a rolprogramisty 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 czeniemkompilatora j zyka Pascal ze rodowiskiem edycyjnym. Pierwsza wersja (16-bitowa) Delphi ukaza a si w1995 roku i przeznaczona by a do pracy w Microsoft Windows 3.1. By o to jedno z pierwszych narz dzitypu Rapid Application Development

Kolejna wersja - Delphi 2 - ukaza a si w roku 1996 i by a rodowiskiem 32-bitowym, generuj cym koddla Microsoft Windows 95. Delphi 3 ukaza o si w roku 1997 i wprowadzi o do rodowiska nast puj ceelementy: pakiety, rozproszon obs ug baz danych, wspomaganie tworzenia aplikacji internetowych,wspomaganie tworzenia kontrolek ActiveX. Delphi 4 doda o wiele nowych usprawnie IDE (jak naprzyk ad mo liwo dokowanie okien), oraz usprawnienia w samym j zyku programowania (na przyk adprzeci 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 tezmianie IDE, upodobniaj c si do Microsoft Visual Studio .NET. W edycji 2005 oprócz zintegrowania wjednym 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 .NETi 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ówDelphi, Delphi.NET, C# oraz C++ (Borland C++ Builder), oferowa znacznie przyspieszenie rodowiskaoraz 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

18

Delphi charakteryzuje si :

• szerokim wspomaganiem dla obs ugi relacyjnych systemów bazodanowych (biurkowych lub SQL-owych)

• 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 czwartejgeneracji.

rodowisko u ytkowników

Delphi cieszy si w Polsce stosunkowo du popularno ci , w g ównej mierze ze wzgl du na relatywnprostot i powszechno ró nego rodzaju poradników dla pocz tkuj cych. Grupa polskich programistówDelphi spotyka si na dorocznych Zlotach, podczas ktorych odbywaj si wyk ady dotycz ceprogramowania.

Fortran

Fortran lub FORTRAN (ang. FORmula TRANslator) to j zyk programowania stworzony w latach 50. inadal 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 owachkluczowych j zyka oraz u ywanych zmiennych a tak e bogate zasady tworzenia formatów zapisywanychi drukowanych danych.

Dost pna jest wielka ilo bibliotek w Fortranie pozwalaj cych rozwi zywa praktycznie ka de zadanienumeryczne. Podstawowe przyczyny, dla której Fortran jest wykorzystywany i rozwijany do dzi , to:szybko oblicze oraz wysoka jako kodu generowanego przez kompilatory Fortrana, wynikaj cam.in. z jego d ugiej obecno ci na rynku programistycznym, znakomita skalowalno i przeno nooprogramowania (pomi dzy ró nymi platformami sprz towymi i systemami operacyjnymi), a tak edost pno bibliotek dla programowania wieloprocesorowego i równoleg ego. Obliczeniaaerodynamiczne, 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 niskopoziomowejkomunikacji 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 dlaIBM. Kompilator ten by pierwszym w historii kompilatorem j zyka wysokiego poziomu. Zosta starannie

19

zoptymalizowany, poniewa autorzy obawiali si , e nikt nie b dzie go u ywa , je li wydajnoprogramó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 jakoFortran IV. Kolejnym standardem by Fortran 66. Standard ten by zbyt ubogi i implementacje musia yzawiera 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 aelementy programowania strukturalnego. W Polsce bardzo popularna by a odmiana Fortranu na maszynyICL/Odra (FORTRAN 1900), a tak e Watfor 77, Lahey 77 i MS Fortran na PC czy Fortran 80 dla 8-bitowych komputerów z systemem CP/M-80. W praktyce wi kszo tych kompilatorów mia a wielerozszerze , które dopiero po latach wesz y do kolejnego standardu (struktury rekordowe, alokowalnetablice, wi cej instrukcji pozwalaj cych na programowanie strukturalne itp.). Nast pc Fortranu 77 sta siFortran 90. Standard ma ca kowicie zmienion sk adnie dostosowan do wspó czesnych j zykówprogramowania, przyk adowo Fortran 90 nie wymusza ju na u ytkowniku stosowania etykiet i instrukcjiGoto. 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 starszychprogramistów przyzwyczajonych do tej wersji), co uwzgl dniaj producenci praktycznie wszystkichkompilatoró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 Fortran2003

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 wieluurz dzeniach, takich jak telefony komórkowe lub komputery oraz pod ró nymi systemamioperacyjnymi, przy u yciu Wirtualnej maszyny Javy, która musi by w danym rodowiskuzainstalowana.

Java jest obiektowym j zykiem programowania stworzonym przez grup robocz pod kierunkiem JamesaGoslinga z firmy Sun Microsystems. Java jest j zykiem kompilowanym do postaci wykonywanej przezmaszyn 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 ówniesk adni podstawowych instrukcji).

ówne koncepcje

Autorzy j zyka Java okre lili kilkana cie kluczowych koncepcji swojego j zyka. Najwa niejsze z nich to:

20

Obiektowo

W przeciwie stwie do C++ (który jest dodatkiem do proceduralnego j zyka C), w Javie obiektowo jestzaimplementowana od podstaw. Wszelkie dane i akcje na nich podejmowane s pogrupowane w klasyobiektów. O obiekcie mo na my le jako o samoistnej cz ci programu, która mo e przyjmowaokre lone stany i posiada okre lone zachowania, które mog zmienia te stany b przesy dane doinnych 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 mieprzypisany typ danych jaki przechowuje (float oznacza typ zmiennoprzecinkowy) a ka da metoda musideklarowa jakiego typu dane zwraca (lub void je li nic nie zwraca). Z przyk adu wida te , e wnazwach 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 zkapitalizowaniem drugiego i nast pnych s ów sk adowych) jest nieobowi zkowy, ale jest jedn zdobrych praktyk przy programowaniu w Javie

W Javie wszystkie obiekty s pochodn obiektu nadrz dnego (jego klasa nazywa si po prostu Object), zktórego dziedzicz podstawowe zachowania i w ciwo ci, dzi ki czemu wszystkie posiadaj wspólnypodzbiór podstawowych mo liwo ci takich jak ich identyfikacja, porównywanie, kopiowanie, niszczenieczy wsparcie dla programowania wspó bie nego.

// "extends" oznacza dziedziczenie po klasie Figura pól: rodekX, rodekY i kolor// oraz metod: obliczPole, obliczObwód i wy wietlpublic class Kwadrat extends Figura { // dodatkowe atrybuty private float wierzcho ekX; private float wierzcho ekY; private float d ugo Boku;

// "prze adowujemy" operacje rodzica, dzi ki czemu dla ka dej zdefiniowanejFigury // mo na policzy pole czy obwód public float obliczPole(){ return d ugo Boku*d ugo Boku; } ...}

21

Cho C++ udost pnia wielokrotne dziedziczenie, projektanci Javy odeszli od tego pomys u. Javaumo liwia dziedziczenie wy cznie po jednym rodzicu, a wi c wy cznie jedna klasa mo e przekazaswoje w ciwo ci i operacje jako podstaw do rozszerzania ich o dodatkowe mo liwo ci. Dzi ki temuwyeliminowano mo liwo konfliktów mi dzy w ciwo ciami przekazywanymi przez klasy nadrz dne.

By zrekompensowa spadek elastyczno ci wynikaj cy z pojedynczego dziedziczenia wprowadzonointerfejsy. Pozwalaj one nazwa pewien okre lony zbiór operacji, dzi ki czemu mo na okre li , e danyobiekt, któremu przypisano dany interface (implementuj cy go) umo liwia wykonanie owego zestawuoperacji.

Niezale no od architektury

w ciwo Java posiada dzi ki temu, e kod ród owy programów pisanych w Javie kompiluje si dokodu po redniego (tzw. bytecode). Powsta y kod jest niezale ny od systemu operacyjnego a wykonuje gotzw. maszyna wirtualna, która (mi dzy innymi) t umaczy kod uniwersalny na kod dostosowany dospecyfiki konkretnego systemu operacyjnego. W tej chwili wirtualna maszyna Javy jest ju dost pna dlawi kszo ci systemów operacyjnych.

Jednak z uwagi na to, e kod posredni jest interpretowany, taki system jest wolniejszy ni kompilacja dokodu maszynowego. Z tego wzgl du maszyn wirtualn cz sto uzupe nia si o kompilator JIT. Istniejrównie niezale ne od Suna kompilatory Javy - przyk adem podprojekt gcc o nazwie GCJ. W rezultaciepowstaje 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 plikulokalnego 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 aplikacjiuruchamianych w przegl darkach internetowych (aplety) oraz aplikacji dzia aj cych ci gle po stronieserwera (serwlety).

Niezawodno i bezpiecze stwo

W zamierzeniu Java mia a zast pi C++ - obiektow nak adk na j zyk C. Jej projektanci zacz li odrozpoznania cech j zyka C++, które s przyczyn najwi kszej ilo ci b dów programistycznych, bystworzy 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 utrudniprogrami cie pope nienie b du. Przede wszystkim Java posiada system wyj tków czyli sytuacji, gdy kodprogramu 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 testysprawdzaj ce poprawno danych, pozycj indeksu tablicy, inicjalizacj zmiennych itd., ale jest to jegodobra wola i nie jest to jako szczególnie wspierane przez dany j zyk. W Javie jest inaczej - obs uga

22

wyj tków jest obowi zkowa, bez tego program si nie skompiluje. Przy tym obiekty wchodz ce w sk adpakietu standardowego Javy (i gros obiektów z pakietów pochodz cych od powa nych programistówniezale nych) implementuj wyj tki w ka dym miejscu kodu, którego wykonanie jest niepewne zewzgl du na okoliczno ci zewn trzne.

Sama obs uga wyj tków polega na napisaniu kodu, który wykona si w odpowiedzi na tak sytuacjnadzwyczajn . Mo e to by np. podstawienie warto ci domy lnej przy natrafieniu na nieprawid owwarto parametru, zaniechanie danej akcji i powrót do stanu stabilnego czy cho by zapisanie pracy przedwyj ciem. W sytuacji wyj tkowej program przerywa normalne wykonanie i tworzy specjalny obiektwyj tku odpowiedniej klasy, który "wyrzuca" z normalnego biegu programu. Nast pnie zdefiniowanyprzez u ytkownika kod " apie" ten obiekt wyj tku i podejmuje odpowiednie dzia anie. Dzia anie mo e bydwojakiego typu: wspomniane wy ej rodki zaradcze lub odrzucenie takiego " mierdz cego jaja" dalej, dobloku programu, który nakaza wykonanie wadliwej operacji. Takie podawanie sobie wyj tku mo e bywieloetapowe 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 pisanieniezawodnych programów: logowanie i asercje. Pierwsze pozwalaj na zapisanie w plikach dziennikaprzebiegu dzia ania programu, z dodatkow mo liwo ci filtrowania zawarto ci, okre lenia poziomulogowanych b dów itp. Drugie rozwi zanie pozwala na upewnienie si , e pewne za enia co dookre 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 czemuprogramista mo e sprawdzi dzia anie programu, a pó niej bez wysi ku spowodowa pomini cie testowejcz 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. Dlaprzejrzysto ci klasy te pogrupowane s w hierarchicznie u one pakiety. Ka dy pakiet grupuje klasyzwi 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 listwy wietlan w okienku).

Wszystkie klasy pisane przez programistów niezale nych powinny by umieszczane w innychhierarchiach. Firma Sun cz sto zaleca, by w nazewnictwie klas niestandardowych przed w ciw nazwpakietu stosowa odwrócon nazw domeny internetowej autora pakietu. Na przyk ad narz dzie Ant [1]

23

znajduje si w pakiecie org.apache.ant, co zapobiega konfliktom nazw z pakietami innych autorów, którzyrównie chcieliby nazwa swój pakiet Ant.

JRE a JDK

Pakiety z hierarchii java i javax (dodatki wprowadzone w pó niejszych wersjach) nale dopodstawowego 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 wirtualnmaszyn do ich uruchamiania, za JDK (Java Development Kit) dodatkowo udost pnia ród a tych klasoraz 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 programowaniadzia 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 jestniezale 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 adIBM, 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 wirtualnemaszyny Javy tworzone przez spo eczno FLOSS SableVM i Kaffe, do wiadczalny IBM-owskikompilator Jikes, czy optymalizowany pod wzgl dem szybko ci dla architektur Intela JRockit, autorstwafirmy BEA. Najcz ciej wykorzystuj one bibliotek standardowych klas rozwijan w ramach projektuGNU Classpath.

Inne podej cie prezentuje projekt GCJ, który pozwala kompilowa programy w Javie bezpo rednio dokodu maszynowego.

Java Server Pages

JSP (Java Server Pages) to technologia umo liwiaj ce tworzenie dynamicznych stron WWW zwykorzystaniem j zyka Java, wplecionego w kod HTML danej strony. W tym aspekcie, jest torozwi zanie podobne do PHP.

Jest to poniek d odmiana servletow (aplikacji w Javie uruchamianych po stronie serwera). Przywywo aniu, strona JSP zamieniana jest na servlet, który wykonuje w ciwe dzia anie i ka de kolejnezapytania do tej strony.

Je li u yta zostanie prekompilacja (kompilacja wst pna) to ju podczas uruchamiania serwera, wszystkiestrony JSP zostan zamienione na servlety. Powoduje to, e JSP dziedziczy wszystkie w ciwo ciservletów.

JavaScript

JavaScript ("JS") to stworzony przez firm Netscape zorientowany obiektowo skryptowy j zykprogramowania, najcz ciej stosowany na stronach WWW. Implementacja JavaScriptu stworzona przezfirm Microsoft nosi nazw JScript. G ównym autorem j zyka JavaScript jest Brendan Eich.

24

Zastosowania

Najcz ciej spotykanym zastosowaniem klienckiej wersji j zyka JavaScript s strony WWW. Skryptypisane w JS s najcz ciej do zapewnienia interaktywno ci oraz sprawdzania poprawno ci formularzyHTML oraz budowania elementów nawigacyjnych (np. rozwijane menu). Tak uruchomiony skryptJavaScriptu ma ograniczony dost p do komputera, na którym jest wykonywany (ma wysoce ograniczonydost 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 toumo liwiaj .

Pierwszego z nich dostarcza Mozilla. Dzi ki technologiom takim jak XUL, XBL, XPCOM oraz JSLibmo 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 IRCo nazwie ChatZilla, domy lnie do czony do pakietu Mozilla. Znacznie wi cej programów korzystaj cychz tych technologii mo na znale na stronie MozDev.org.

Microsoft udost pnia tak e biblioteki umo liwiaj ce tworzenie aplikacji w JavaScript (JScript) jako czrodowiska Windows Scripting Host. Ponadto, JScript.NET jest jednym z podstawowych j zykówrodowiska .NET.

Warto tak e wspomnie o stworzonym przez IBM rodowisku SashXB dla systemu Linux, któreumo 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++. Komentarzblokowy umieszcza si mi dzy sekwencj znaków "/*" a "*/", a komentarz liniowy rozpoczyna sisekwencj "//" 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 cilub 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++.

25

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 wwersji JDK 1.5).

Instrukcja switch

Tak samo jak w C, C++, PHP i Javie.

26

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 opisujetak 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 (operacjematematyczne).

Obiekty JavaScriptu s tablicami asocjacyjnymi. Dost p do pól obiektów jest mo liwy przy u yciu dwóchrównowa nych notacji: obiekt.pole i obiekt["pole"]. Trzeci mo liwo ci (aczkolwiek wwi 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 tablicpowsta ych jako obiekt Array.

Aby zdefiniowa w asny obiekt, wystarczy utworzy funkcj konstruktora:

// funkcja konstruktorafunction 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" jestnieformalne. "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 dodanego obiektu nie istnieje ju adna referencja, mechanizm garbage collectora usuwa dany obiekt zpami ci.

27

Poniewa metody obiektu (funkcje) s jego polami, tak e do nich dost p mamy przy u yciu zarównonotacji z kropk , jak i notacji z nawiasami kwadratowymi. Poni sze dwie linie kodu s zatemrównowa ne:

m.metoda1(); m["metoda1"]();

Funkcje

Funkcje w JavaScripcie definiujemy przy u yciu s owa kluczowego function, a jej argumentypodajemy w nawiasach:

function dodajDwieLiczby(a, b) { return a+b;}

Funkcje s jednocze nie obiektami typu Function. Obiekt ten ma konstruktor przyjmuj cy jako argumentci 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óbtworzenia 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 chcemyutworzy klas Pochodna dziedzicz po klasie Bazowa, ustawiamy pole Pochodna.prototype na nowinstancj klasy Bazowa:

function Bazowa() { this.metodaA = function() { alert("Bazowa::A()"); } this.metodaB = function() { alert("Bazowa::B()"); } }

28

function Pochodna() { // metodaB przeci a odpowiedni metod z klasy Bazowa: this.metodaB = function () { alert("Pochodna::B()"); } } Pochodna.prototype = new Bazowa();

x = new Bazowa(); y = new Pochodna();

x.metodaA(); // wy wietla: "Bazowa::A()" y.metodaA(); // wy wietla: "Bazowa::A()" x.metodaB(); // wy wietla: "Bazowa::B()" y.metodaB(); // wy wietla: "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 problemdziedziczenia (u ywamy nazwy "extending" zamiast "extends", gdy to drugie s owo jest s owemzastrze 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.

29

Obs uga wyj tków

Do obs ugi wyj tków w JavaScript wykorzystywana jest "klasa" Error, odpowiadaj ca znanej z Javyklasie 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 czymfinally 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>. Wymaganymparametrem tego znacznika jest type równe dla JavaScriptu "text/javascript". Opcjonalnie mo na podaparametr 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, byumie ci tre skryptu wewn trz sekcji CDATA, je li u ywamy znaków takich jak "<" czy ">". Tak wi cdla XHTML:

<script type="text/javascript"> // <![CDATA[ function fun() { ... } // ]]> </script>

30

Znaki komentarza "//" przy pocz tku i ko cu sekcji CDATA zapobiegaj b dnemu zinterpretowaniu tejsekcji przez starsze przegl darki.

Zewn trzne skrypty dodajemy tak e przy u yciu w/w znacznika, dodaj c tylko parametr src z nazwpliku 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/x-javascript".

JavaScript w przegl darkach internetowych

Implementacje JavaScriptu w przegl darkach internetowych dostarczaj obiektów pozwalaj cych namodyfikowanie zawarto ci dokumentu oraz tworzenie i odczyt tzw. cookies (obiekt document),manipulowanie oknami i wy wietlanie prostych okien dialogowych (obiekt window), pobieranieminformacji o przegl darce (obiekt navigator), sterowaniem pluginami przegl darek oraz obs ugzdarze .

Problem z manipulowaniem zawarto ci dokumentu stanowi brak standaryzacji obiektowego modeludokumentu (DOM) - poczatkowo w wersjach 4.x przegl darek Netscape dost p do niektórych elementówdokumentu 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ó czesneprzegl darki (Netscape od wersji 6, IE od wersji 5, Opera od wersji 6, Konqueror od wersji 3, Mozilla iSafari w dowolnej wersji). Aby uzyska referencje do obiektu wewn trz dokumentu HTML, nale yskorzysta z metody document.getElementById(identyfikator), tym samym wymienionewcze 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 tapowoduje 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 klasnetscape.javascript.JSObject jako "opakowanie" obiektów JavaScriptu, jednak e mo liwota 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, akolejny, poprawiony w The programming language Pascal (Revised Report), Bericht der Fachrgruppe

31

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 BorlandInternational – Turbo Pascal. W chwili obecnej do mocno rozpowszechnionym obiektowym dialektem

zyka Pascal jest Object Pascal osadzony w Delphi oraz Kylix'ie (równie wyprodukowanych przezBorland 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 inawiasó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 totworzenie 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), wobecnych implementachach s ,

• (+-) brak preprocesora kodu, przez co kompilacja jest znacznie szybsza ale brak korzystania zmakr

• (+) 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 nychprojektach i s powodem krytyki tego j zyka. Wed ug nich powinien zosta jedynie narz dziem do naukiprogramowania. Natomiast nie potwierdzaj tego tysi ce aplikacji (równie komercyjnych) stworzonychw Pascalu.

Wi kszo powy szych uwag (na niekorzy Pascala) nie dotyczy Object Pascala dialektu Pascalaywanego 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, zintegrowanerodowisko programistyczne, produkt firmy Borland International dla procesorów Z-80 (system CP/M)

oraz rodziny Intel 80x86 i nowszych.

32

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 koduród owego).

• wersja 5.5 wprowadzi a nowy, rewolucyjny w odniesieniu do j zyka Pascal typ danych: typobiektowy.

• ostatnia wersja oznaczona zosta a numerem 7.0, a jej nast pc sta si w 1995 r. Borland Delphi1.0 wraz z j zykiem Object Pascal.

PHP

PHP (angielski akronim rekurencyjny, którego rozwini cie to PHP Hypertext Preprocessor), pierwotnienazwany Personal Home Page - skryptowy j zyk programowania, s cy przede wszystkim do tworzeniadynamicznych stron WWW i wykonywany w tym przypadku po stronie serwera, z mo liwo cizagnie ania w HTML (b XHTML). PHP jest podobny w za eniach do du o starszegomechanizmu SSI (Server Side Includes), jednak jest w stosunku do SSI nieporównanie bardziejrozbudowany. 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 naprogramowanie aplikacji z interfejsem graficznym (rozszerzenie PHP-GTK), a tak e na wykonywanie zlinii 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ówtekstowych i XML-owych. Mo e by uruchamiane na wi kszo ci systemów operacyjnych (uwzgl dniaj cnajpopularniejsze) oraz serwerów sieciowych.

Implementacja PHP w rodowisku Linux wraz z serwerem Apache i silnikiem baz danych MySQLstanowi 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 domonitorowania 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 yciatych 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 zykaprogramowania, gdy zosta po czony z innym narz dziem Rasmusa Lerdorfa - Form Interpreter, któreda o drugi cz on nazwy. W 1997 roku pojawi o si PHP/FI 2.0, posiadaj ce wtedy kilka tysi cyaktywnych u ytkowników na ca ym wiecie oraz obs uguj ce 50 tys. domen. Co ciekawe, wersja tasp dzi a wi kszo " ycia" na beta testach. Oficjalne wydanie by o tylko jedno i ukaza o si w listopadzie1997 roku.

33

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 nauniwersytecie. Zdecydowali wtedy, e przepisz kod PHP ca kowicie od nowa, korzystaj c z pomocy juistniej cej spo eczno ci PHP. W czerwcu 1998 roku og osili PHP 3.0 jako nast pc PHP/FI, któregodalszy rozwój zosta wtedy zatrzymany. By to wielki krok naprzód. PHP 3.0 posiada o ca kowicie nowarchitektur , która znacznie zwi ksza a wydajno . Pojawi y si w niej zal ki programowaniaobiektowego, ale najwa niejsz cech aplikacji by a jej modu owo . U ytkownicy mogli rozszerza terazfunkcjonalno 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 zaprzepisywanie kodu ród owego PHP, korzystaj c z do wiadcze nabytych przy pracach nad poprzedniwersj . Za g ówne cele obrali poprawienie modu owo ci oraz wydajno ci z onych aplikacji. Chodotychczasowa wersja potrafi a sobie z nimi poradzi , nie by a jednak stworzona do tego celu iprzegrywa a przez to z innymi rozwi zaniami.

W po owie roku 1999 ukaza si oficjalnie Zend Engine, nowy silnik j zyka skryptowego, wokó któregonied ugo pó niej zacz to budowa PHP 4. Jego nazwa to kompromisowe po czenie imion twórcówprojektu. Nowa, oparta o niego wersja PHP, ukaza a si w maju 2000 roku. Tak jak poprzednio, by topot 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 sioficjalne wsparcie dla wielu nowych serwerów. Przez cztery lata od chwili wydania ukaza y si trzykolejne edycje tej wersji oznaczone numerami: 4.1, 4.2 oraz 4.3. W ka dej z nich odczuwalne by ozwi kszenie bezpiecze stwa, szybko ci dzia ania oraz mo liwo ci. W 2004 roku obs ugiwa y one cznie20% wszystkich domen sieciowych. Równie obecnie, w rok po premierze PHP 5, "czwórka" jest bardzoch 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 PHPmaj na celu dodanie do tego j zyka modelu obiektowego z prawdziwego zdarzenia. W lutym 2003ukaza a si pierwsza wersja alpha nowej wersji PHP oznaczonej numerem 5.0.0. Stabilna wersja ukaza asi prawie pó tora roku pó niej, w lipcu 2004 roku. Nowo ci sprawi y, e PHP mo e konkurowa teraz zinnymi rozwi zaniami server-side, jak równy z równym. Pojawi si ca kowicie nowy modelprogramowania obiektowego, przez co niestety zosta a utracona kompatybilno z poprzednimi wersjamiPHP na niektórych skryptach. Jest to spowodowane zmian sposobu reprezentacji obiektów. Wcze niejobiekt by jednocze nie zmienn , co sprawia o du e trudno ci, dlatego te na wzór Javy zmiennaobiektowa sta a si jedynie referencj do w ciwego obiektu. Kopiowanie powoduje jedynie powstaniedrugiej referencji wskazuj cej na ten sam obiekt. Funkcje obs ugi j zyka XML zosta y na nowoprzepisane 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 musieliusun z kodu w asn bibliotek do komunikacji z nim. Obecnie nale y r cznie instalowa torozszerzenie, korzystaj c z dostarczonej przez MySQL biblioteki libmysqlclient. Zmiana ta dotyczyrównie PHP 4. W zamian udost pniono now domy ln baz danych: SQLite, której cech jest to, i niewymaga adnych dodatkowych programów. Biblioteka kliencka jest jednocze nie jej serwerem.

34

W chwili obecnej trwaj ju intensywne prace nad PHP 5.1, w którym pojawi si ma z dawnaoczekiwany 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-sourcemodu ó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 funkcji odzia aniu podobnym do C, takich jak printf(), czy strstr(), zaimplementowanych w j drze.

PHP a programowanie obiektowe

Elementy programowania obiektowego pojawi y si ju w PHP 3, lecz nie pozwala y one rozwinskrzyde programistom. Brakowa o wielu istotnych elementów, a kod nie by zoptymalizowany. Sytuacjaca 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 jednejkolumny na ekran:

35

<?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 , dlategokod:

<?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 ca tworzeniu dynamicznych stronWWW.

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 onskutecznie lansowany przez Microsoft jako najlepsze narz dzie do tego celu.

Strony ASP maj rozszerzenie .asp.

36

3. Bazy danych

Baza danych to kolekcja danych umieszczonych w okre lony sposób w strukturach odpowiadaj caza onemu modelowi danych. W potocznym uj ciu obejmuje dane oraz program komputerowywyspecjalizowany 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 oprogramowanienazywa si równie "baz danych", lub DBMS'em).

Bazy danych operuj g ównie na danych tekstowych i liczbowych, lecz wi kszo wspó czesnych bazumo liwia przechowywanie danych binarnych typu: grafika, muzyka itp.

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 ewspó pracowa z innymi tablicami. Do baz tego typu nale liczne programy typu - ksi katelefoniczna, ksi ka kucharska, spis ksi ek, kaset lub p yt. Wspóln cech tych baz jest ichzastosowanie w jednym wybranym celu.

2. bazy relacyjne (z one) - wiele tablic danych mo e wspó pracowa ze sob . Bazy relacyjneposiadaj wewn trzne j zyki programowania, wykorzystuj ce zwykle SQL do operowania nadanych, za pomoc których mo emy tworzy zaawansowane funkcje obs ugi danych. Relacyjnebazy danych (jak równie przeznaczony dla nich standard SQL) oparte s na kilku prostychzasadach:

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 lubwi cej wierszy (w tym e argonie - "krotki") i jedn lub wi cej kolumn ("atrybuty"). Naka dy wiersz sk adaj si jednakowo u one kolumny wype nione warto ciami, które zkolei 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 szgodne. Umo liwia to wi zanie danych i wykonywanie stosunkowo z onych operacji wgranicach ca ej bazy danych.

4. Wszystkie operacje wykonywane s w oparciu o logik , bez wzgl du na po enie wierszatabeli. Nie mo na wi c zapyta o wiersze, gdzie (x=3) bez wiersza pierwszego, trzeciego ipi tego. Wiersze w relacyjnej bazie danych przechowywane s w porz dku zupe niedowolnym - nie musi on odzwierciedla ani kolejno ci ich wprowadzania, ani kolejno ciich przechowywania.

5. Z braku mo liwo ci identyfikacji wiersza przez jego pozycj pojawia si potrzebaobecno ci jednej lub wi cej kolumn niepowtarzalnych w granicach ca ej tabeli,pozwalaj cych odnale konkretny wiersz. Kolumny te okre la si jako "kluczpodstawowy" (primary key) tabeli.

3. bazy obiektowe4. strumieniowe bazy danych5. temporalne bazy danych

37

Podstawowe funkcje bazy danych to:

• projektowanie rekordówo nazwa polao ugo polao 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 systemzarz dzania danymi. Jednak w cis ej nomenklaturze przez baz danych rozumiemy zbiór danychzarz dzany przez system zarz dzania danymi. System zarz dzania danymi zapewnia metody dost pu dodanych.

System Zarz dzania Baz Danych

System Zarz dzania Baz Danych, SZBD (ang. Data Base Management System, DBMS) nazywany teserwerem baz danych lub systemem baz danych, SBD to oprogramowanie b system informatyczny

cy do zarz dzania komputerowymi bazami danych. Systemy baz danych mog by sieciowymiserwerami 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.

38

SZBD dzia aj ce w architekturze klient-serwer

Wi kszo obecnie spotykanych systemów dzia a w trybie klient-serwer, gdzie baza danych jestudost pniana klientom przez SZBD b cy serwerem. Serwer baz danych mo e udost pnia daneklientom 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 bywspó 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 dotworzenia, modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych.

zyk SQL jest j zykiem deklaratywnym. Decyzj o sposobie przechowywania i pobrania danychpozostawia si systemowi zarz dzania baz danych DBMS.

Jest to j zyk programowania opracowany w latach siedemdziesi tych w firmie IBM. Sta si onstandardem w komunikacji z serwerami relacyjnych baz danych. Wiele wspó czesnych systemówrelacyjnych baz danych u ywa do komunikacji z u ytkownikiem SQL, dlatego mówi si , e korzystanie zrelacyjnych baz danych, to korzystanie z SQL-a. Pierwsz firm , która w czy a SQL do swojegoproduktu komercyjnego, by Oracle. Dalsze wprowadzanie SQL-a, w produktach innych firm, wi za o sinieroz 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 OrganizacjNormalizacyjn (ISO) i jej cz onka, Ameryka ski Narodowy Instytut Normalizacji (ANSI). Wczesnewersje 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. Zczasem jednak systemy komputerowe uleg y integracji i rynek zacz domaga si aplikacji oraz ich

39

funkcji faktycznie wspó pracuj cych z wieloma ró nymi bazami danych. Pojawi a si potrzeba okre leniastandardu 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 stotakimi nazwami jak "back end", "engine", czy te "motor/silnik bazy danych". Przechowuje on dane orazzapewnia ich pobieranie i aktualizacje w odpowiedzi na pobierane instrukcje w SQL-u.

Uzupe nieniem serwera jest zazwyczaj "front end", "middleware" czy te "fronton" - narz dziaupraszczaj ce komunikacj z serwerem i wyposa one w mechanizmy pozwalaj ce wykorzysta pobranedane. Nale do nich mechanizmy generowania i obs ugi formularzy oraz raportów, j zyki czwartejgeneracji (4GL), graficzne j zyki zapyta , narz dzia konstrukcyjne u ytkownika, oprogramowanie doprezentacji multimedialnych, systemy tworzenia hipertekstu, systemy CAD/CAM, arkusze kalkulacyjne,jak równie interfejsy dost pu bezpo redniego. Wszystkie one wykorzystuj , do komunikacji z serwerem iwykonywania za jego po rednictwem ró nych operacji, j zyk SQL. Serwer odpowiada zaprzechowywanie, porz dkowanie i pobieranie danych, zapewnia ich integralno , bezpiecze stwo orazzabezpiecza przed ewentualnymi konfliktami mi dzy u ytkownikami.

Formy SQL-a

Z technicznego punktu widzenia, SQL jest podj zykiem danych. Oznacza to, e jest on wykorzystywanywy cznie do komunikacji z baz danych. Nie posiada on cech pozwalaj cych na tworzenie kompletnychprogramó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 celubezpo redniego pobierania lub wprowadzania informacji do bazy. Przyk adem mo e by zapytanieprowadz ce do uzyskania zestawienia aktywno ci kont w miesi cu. Wynik jest wówczasprzekazywany 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 , podczasktórej pracy jest wykorzystywany. Nie ulega zmianom w sensie zachowania niezmiennej tre ciinstrukcji, które jednak zawiera mog odwo ania do zmiennych lub parametrów przekazuj cychwarto 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 owegoinnego j zyka. Wi kszo aplikacji pisana jest w takich j zykach jak C++ czy Java, jedynieodwo ania do bazy danych realizowane s w SQL. W tej odmianie statycznego SQL-a doprzenoszenia warto ci wykorzystywane s zmienne.

2. zyk modu ów. W tym podej ciu modu y SQL czone s z modu ami kodu w innymzyku. 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 topierwotne podej cie, zaproponowane w standardzie SQL. Embedded SQL zosta dooficjalnej specyfikacji w czony nieco pó niej.

3. Dynamiczny kod SQL (Dynamic SQL) generowany jest w trakcie pracy aplikacji. Wykorzystujesi go w miejsce podej cia statycznego, je eli w chwili pisania aplikacji nie jest mo liweokre lenie tre ci potrzebnych zapyta - powstaje ona w oparciu o decyzje u ytkownika. T formSQL generuj przede wszystkim takie narz dzia jak graficzne j zyki zapyta . Utworzenieodpowiedniego zapytania jest tu odpowiedzi na dzia ania u ytkownika.

Wymagania tych trzech form ró ni si i znajduje to odbicie w wykorzystywanych przez niekonstrukcjach j zykowych. Zarówno statyczny, jak i dynamiczny SQL uzupe niaj form autonomiczn

40

cechami odpowiednimi tylko w okre lonych sytuacjach. Wi kszo j zyka pozostaje jednak dlawszystkich form identyczna.

Sk adnia SQL

ycie SQL, zgodnie z jego nazw , polega na zadawaniu zapyta do bazy danych. Zapytania mo nazaliczy 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 asnychinstrukcji, 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 tychpracowników, których pensja jest wi ksza ni 2000 (WHERE pensja > 2000) i sortuje wynik malej cowed ug sta u pracy (ORDER BY staz DESC).

41

INSERT INTO pracownicy (imie, nazwisko, pensja, staz) VALUES ('Jan', 'Kowalski',5500, 1);

Dodaje do tabeli pracownicy (INTO pracownicy) wiersz (rekord) zawieraj cy dane pojedynczegopracownika.

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 (floatod 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. 255znaków.

SQL:2003

W roku 2003 przedstawiono SQL:2003 – nowy standard j zyka SQL. opublikowano w Sigmod RecordVol.33 Nr.1 Marzec 2004. Jest to g ównie poprawione SQL:1999 z wyj tkiem cz ci SQL/XML orazkilku dodatkowych w ciwo ci.

W SQL:2003 wprowadzono:

1. Nowe typy danych (BIGINT, MULTISET oraz XML)2. Usuni to typy BIT oraz BIT VARYING3. Rozszerzenia w sposobie wywo ywania procedur4. Poszerzono instrukcj CREATE TABLE (CREATE TABLE { LIKE | AS } )5. Wprowadzono instrukcj MERGE6. Wprowadzono nowy obiekt schematu – generator sekwencji7. Wprowadzono dwa nowe typy kolumn – identyfikatory oraz generowane8. Retrospektywne sprawdzanie wi zów integralno ci9. Rozszerzenia dla OLAP w formie wbudowanych funkcji (skalarnych i agreguj cych)10. Klauzula WINDOW

42

Prowadzone s równie prace nad alternatywnymi j zykami zapyta opartymi na SQL. Przyk ademtakiego j zyka mo e by j zyk ci ych zapyta CQL lub j zyk SQL wyposa ony w mo liwoprzetwarzania 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 danychIBM 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 1982rozwi 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 000firmach 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 realizacjizapyta w oparciu o do wiadczenia z przesz ci. Optymalizator LEO uwzgl dnia fizyczne aspektyinstalacji DB2 (ilo i wydajno procesorów, pami operacyjn dost pn dla bazy, wydajno dysków)

43

oraz zgromadzone wcze niej informacje o samych danych, tzw. statystyki. Statystyki okre laj zakresinformacji o danych, jakimi powinna dysponowa baza, by najefektywniej obs wykonywanezapytania SQL. Optymalizator DB2 mo e zosta wprowadzony w tryb uczenia si , który pozwolisamoczynnie przygotowa profile statystyk na podstawie danego obci enia. Dzi ki tej funkcjonalno ciznacz co mo e by skrócony czas strojenia systemu, ale tak e baza mo e elastycznie dostosowa si dopó niejszych zmian w aplikacji oraz w ciwie zareagowa na znaczny przyrost danych. OptymalizatorDB2 wykorzystuje wiele opatentowanych algorytmów pozwalaj cych na przepisywanie z onychzapyta 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 zapytaDB2 wybiega znacznie poza mo liwo konkurencyjnych baz. Pozwala nie tylko optymalizowazapytania skierowane do bazy DB2, ale tak e rozproszone zapytania z wykorzystaniem innych systemówbaz danych (np. Oracle, MsSQL, itd.). Tak jak pokazano na poni szym rysunku tabele innych systemówbaz danych mog by obs ugiwane jak lokalne tabele DB2.

DB2 gromadzi w tzw. globalnym katalogu informacje o zdalnych tabelach i podczas optymalizacji bierzepod uwag tak e aspekty zdalnej bazy (np. indeksy za one na tabeli, wielko tabel, wydajno zdalnejbazy, buforowanie zdalnych obiektów).

Do innych unikalnych funkcjonalno ci mo na tak e zaliczy :

• Wielowymiarowe klastrowanie danych (ang. Multidimensional Clustering) pozwalaj ce nafizyczn organizacj danych na dysku, zgodnie ze zdefiniowanymi kombinacjami pól

• Budowanie rozwi za klastrowych w architekturze „Shared-nothing” z mo liwo ci do czania do1000 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 bezutraty po czenia do bazy danych (HADR)

• Zintegrowane mechanizmy replikacji transakcji (tak e dwukierunkowej) z wykorzystaniem kolejkikomunikatów WebSphere MQ

• Po czenie autonomicznych cech samo-zarz dzania bazy z mo liwo ci pe nej kontroliadministratora:

o pami mo e by dynamicznie alokowana, przy czym administrator mo e narzuciokre lone ograniczenia, co do maksymalnej wielko ci zaalokowanej pami ci dlaodseparowania obci enia

o dla wybranych tabel administrator mo e zdefiniowa dowoln liczb puli buforów bpozostawi jedn i zda si na optymalizacj bazy

o w ka dym momencie administrator mo e dynamicznie obni priorytet dzia aj cychoperacji administracyjnych, tak e tych wyzwalanych automatycznie.

Microsoft SQL Server

Microsoft SQL Server (MS SQL) to komercyjny system zarz dzania baz danych, wspierany irozpowszechniany 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 odznaczasi lepsz wydajno ci , niezawodno ci i skalowalno ci . Przede wszystkim s tu zaimplementowanewszelkie mechanizmy wp ywaj ce na bezpiecze stwo operacji (m.in. wyzwalacze i transakcje).

44

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 systemuoperacyjnego Linux, Windows i wielu innych. Mo e by u ywany bez rejestrowania lub wnoszeniajakichkolwiek op at w dowolnych zastosowaniach, równie komercyjnych.

Serwer jest rozwijany na bazie kodu ród owego serwera InterBase 6.0 udost pnionego przez firmInprise Corp (obecnie znana jako Borland Software Corp) w lipcu 2000 roku na podstawie licencjiInterBase Public License 1.0. Nowe modu y dodane do serwera obj te s licencj Initial Developer'sPublic 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 azmieniona na Mozilla Firefox.

MySQL

MySQL to obok PostgreSQL najpopularniejszy z wolnodost pnych silników relacyjnych baz danych. Wodró nieniu jednak od rozwijanego przez spo eczno open-source PostgreSQL-a, MySQL tworzony jestprzez 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 szyczas MySQL nie obs ugiwa nawet transakcji, co by o zreszt g ównym argumentem przeciwników tegosilnika bazodanowego (najcz ciej zwolenników PostgreSQL) – w nowszych wersjach (>=4) jest jednakzaimplementowana wi kszo istotnych funkcji, a z ka nowsz wersj , wsparcie SQL staje si corazbardziej kompletne.

Cieszy si natomiast opini jednego z szybszych serwerów bazodanowych, dzi ki czemu znakomicienadaje 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 wwersji 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 serwerabazodanowego 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 tomi 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,

45

• 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 popularnerodowisko 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 posiadawbudowane wewn trzny j zyk tworzenia procedur sk adowanych PL/SQL - b cy proceduralnieobudowanym j zykiem SQL. Jako j zyka tworzenia procedur sk adowanych w bazach danych Oracle (odwersji 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 archiwalnychdzienników powtórze , trybu pracy bazy danych)

• dzienników powtórze - przechowuj powtórzon informacj na temat przeprowadzonych wsystemie 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 pmaj wszystkie procesy obs uguj ce instancj ) oraz ze struktur prywatnych dost pnych tylko dlaprocesów, które te struktury zaalokowa y.

Podstawow struktur pami ciow jest SGA czyli System Global Area lub Shared Global Area zale nieod nazewnictwa. W sk ad SGA wchodz :

• Shared Pool

46

• 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 cy struktur przechowuj kodwykonywalny procesów Oracle.

Poza strukturami wspó dzielonymi dost pna jest przestrze PGA czyli Program Global Area. PGA jestdost 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 wersji10g 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

47

mo e by dodatkowo rozszerzany o opcje np. takie jak: partycjonowanie tabel, RAC, zaawansowanebezpiecze 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) orazograniczona 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 bazydanych Oracle nie ró ni ca si niczym w stosunku do Oracle Standard Edition poza ograniczeniamilicencyjnymi 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ówjednoj drowych lub jednego procesora dwuj drowego.

Oracle Express Edition (nie nale y jej myli z wielowymiarow baz danych Oracle Express) jestdarmow ale bardzo ograniczon (mi dzy innymi wykorzystanie jednego procesora, wykorzystaniemaksymalnie 1GB RAM, obs uga maksymalnie 4GB danych u ytkownika) edycj SZBD Oracle. OracleExpress Edition jest prezentowana po raz pierwszy w wersji 10gR2 i znajduje si jeszcze w fazie testówbeta.

Oracle Personal jest edycj w pe ni funkcjonaln , kompatybiln z dowoln wersj rodziny relacyjnychbaz 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 zwprowadzeniem do niego adekwatnych dla edycji ogranicze . W wersjach wcze niejszych silniki wersjiStandard oraz Enterprise by y tworzone osobno.

PostgreSQL

PostgreSQL to, obok MySQL i Firebird, jeden z trzech najpopularniejszych wolnodost pnych systemówzarz dzania relacyjnymi bazami danych. Pocz tkowo opracowywany na Uniwersytecie KalifornijskimBerkeley i opublikowany pod nazw Postgres. W miar rozwoju i zwi kszania funkcjonalno ci, bazadanych otrzyma a nazwy Postgres95 i ostatecznie PostgreSQL, aby upami tni pierwowzór orazzaznaczy 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

48

Indeksy

W PostgreSQL zaimplementowano obs ug wielu typów indeksów takich jak B-drzewo, Hash, R-drzewo iGiST. 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. Wyzwalaczemog by definiowane w PL/pgSQL, PL/Perl, PL/Python lub PL/Tcl.

Inne cechy

Silnik ten zawiera wiele obiektowych rozszerze takich jak mo liwo definiowania nowych typówpodstawowych, nowych operatorów i dziedziczenia typów tablic.

Posiada zaawansowany system transakcji, mo liwo dodawania funkcjonalno ci dzi ki modu omzawartym w contribie.

Jednym z pierwszorz dnych celów twórców PostgreSQL jest jak najwi ksza zgodno ze standardemSQL.

PostgreSQL jest dost pny na wiele platform, m.in. Linux i Windows. Od 8 listopada 2005 aktualn wersjjest 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 biurowegoMicrosoft Office dla rodowiska Windows.

Bazy danych Access s zapisywane w pojedynczych plikach. Jest to wygodne w przypadku prostychzastosowa , jednak kosztem wydajno ci, wielodost pno ci oraz bezpiecze stwa danych. Aby unikntakich problemów, Access mo na pod czy do zewn trznego ród a danych (np. serwera [Microsoft SQLServer]] lub PostgreSQL). W takim przypadku Access spe nia rol graficznego interfejsu dlazewn 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 ceanalizy oraz przetwarzania danych. Microsoft Access mo na równie wykorzysta do szybkiegoprototypowania aplikacji bazodanowych.

Dost p do baz danych utworzonych w Microsoft Acess wymaga posiadania programu Access b tenapisania osobnego programu z u yciem zewn trznych narz dzi. Wyj tkiem jest najbardziej rozbudowanawersja Developer umo liwia te tworzenie gotowej aplikacji zawartej w jednym pliku wykonywalnym.

49

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 obiektysystemowe, 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 QueryLanguage). Zosta a stworzona przez Richard'a Hipp'a i jest dost pna na licencji public domain. Projektzosta rozpocz ty w roku 2000.

Biblioteka implementuje silnik SQL, która daje mo liwo u ywania bazy danych bez konieczno ciuruchamiania osobnego procesu RDBMS, co w wielu zastosowaniach jest najpraktyczniejszymrozwi 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 interfejsshellowy. Baza mo e czy si przez ODBC. Zawarto bazy danych przetrzymywana jest w jednympliku (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 transakcjeACID oraz wi kszo standardu SQL 92. SQLite jest cz sto wykorzystywany w wi kszych aplikacjachoraz w systemach obs ugi relacyjnych baz danych takich jak Kexi.

Bazy danych zapisywane s jako pliki binarne. Ich bezpiecze stwo jest oparte na zabezpieczeniachoferowanych przez u ywany system plików. Istnieje te projekt oferuj cy szyfrowanie baz danych SQlitena 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 jakMySQL, a wydajno SQLite w porównaniu z serwerami baz danych MySQL oraz PostgreSQL jestbardzo wysoka.

50

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; FoxSofware zosta w czony do Microsoftu w 1992 a program w dalszych wersjach otrzyma przyrostekVisual. Ostatnia wersja FoxPro (2.6) pracowa a pod systemami Mac OS DOS, Windows i Unix: VisualFoxPro 3.0, pierwsza wersja Visual wspiera a jedynie platformy Mac i Windows, a pó niejsze wersje jutylko Windows.

FoxPro jest jednym z j zyków zwanych xBase, które wywodz si od dBase: pozosta e to Clipper, dBase iRecital.

51

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 akomisja b dzie widzia a, e jeste przygotowana/yJ .

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 Windowsoraz MacOS X, lecz mog zosta uruchomione na innych systemach (GNU/Linux, FreeBSD itp.) zapomoc 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 tworzonychprzez niego plików sta si de facto standardem, który musz obs ugiwa konkuruj ce produkty. Filtryeksportu i importu dla tego formatu zosta y wmontowane w wiele procesorów tekstu, takich jak AbiWordczy 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 jakdodawanie grafik do dokumentu, chocia specjalizowany program b dzie si niew tpliwie nadawa dotego lepiej. W kolejnych latach dodano mi dzy innymi obs ug wielu u ytkowników, porównywaniedokumentó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 komunikacyjnymzapewniaj cym ujednolicone miejsce do zarz dzania poczt e-mail, kalendarzami, kontaktami orazinnymi informacjami osobistymi i zespo owymi.

http://pl.wikipedia.org/wiki/Microsoft_PowerPointhttp://pl.wikipedia.org/wiki/Microsoft_Accesshttp://pl.wikipedia.org/wiki/Microsoft_OneNotehttp://pl.wikipedia.org/wiki/Microsoft_FrontPage

Przez wiele lat Microsoft Office wiód prym w tej klasie programów na komputery typu desktop. Od roku1998 darmow alternatyw dla pakietu firmy Microsoft sta si pakiet typu open source firmowanypocz tkowo przez firm Sun - Pocz tkowo StarOffice, teraz OpenOffice.org.

52

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 ówczesnejwersji 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). Obecnieró 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 1999firma 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 dofirmy) powo uj c jednocze nie do ycia projekt OpenOffice.org. OOo stanowi bezp atn alternatyw dlaMicrosoft Office, ale mo na go te kupi : zwykle w cen wersji pude kowej jest wliczony koszt us ugiwsparcia 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 ugirelacyjnych baz danych (OpenOffice.org Base), unowocze niony zosta interfejs wywodz cy si jeszcze zpakietu StarOffice. Arkusz kalkulacyjny zosta rozszerzony do 64K wierszy (tyle, ile ma MicrosoftExcel), znacznie udoskonalono te program prezentacyjny Impress. Administratorzy otrzymaj narz dziado sieciowej instalacji pakietu. Nowo ci jest wreszcie OpenDocument - unormowany, otwarty formatplikó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.