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