|
Rozdzia� I - Wst�p
Historia j�zyk�w programowania rozpoczyna si� w epoce ta�m perforowanych i komputera Eniac. Jednak w tym opracowaniu analiza tego zagadnienia oparta b�dzie o j�zyki programowania u�ywane na komputerach osobistych. W�r�d nich najstarszym j�zykiem programowania jest Fortran. J�zyk ten by� wielokrotnie udoskonalany, st�d jego wersje: Fortran II, Fortran IV, Fortran 77 i ostatnio Fortran 90. Jest on do dzi� niezwykle popularny w�r�d fizyk�w. Jednocze�nie jest j�zykiem wyj�tkowo �le skonstruowanym. Za j�zykiem Fortran przemawia olbrzymia ilo�� gotowych procedur numerycznych - w tym j�zyku programy s� pisane ju� od ponad 30 lat . Okre�laj�ca go norma ANSI 3.9 powsta�a w 1966 roku. Przekonanie o jego szczeg�lnej przydatno�ci w rozwi�zywaniu problem�w numerycznych wynika z istnienia bardzo dobrych kompilator�w tego j�zyka. Komplementarnym do Fortranu mia� by� Basic - prosty j�zyk do nauki programowania. Basic zosta� zastosowany w pierwszych komputerach domowych, takich jak Spectrum czy Commodore C64, jako podstawowy �rodek porozumiewania si� z maszyn�. Odmiana Visual Basic jest lansowana przez firm� Microsoft jako �atwy i szybki spos�b na tworzenie aplikacji w systemie operacyjnym tej firmy. Z za�o�enia Basic by� j�zykiem nieefektywnym w obliczeniach, lecz znacznie wygodniejszym dla programist�w, zw�aszcza pocz�tkuj�cych. Fortran mia� s�u�y� do powa�nych oblicze� - Basic to pisania kr�tkich, klikunastolinijkowych, programik�w. Pierwszym j�zykiem o solidnych podstawach teoretycznych mia� by� Algol. Algol si� jednak nie przyj��, chocia� w�a�nie od niego wywodzi si� wi�kszo�� wsp�czesnych j�zyk�w programowania.
J�zyk Pascal zosta� stworzony jako j�zyk dydaktyczny, gdy� Basic nie pozwala� na programowanie strukturalne i �atwe operowanie na dynamicznych strukturach . W praktyce sta� si� j�zykiem do wszystkiego i do dzisiaj jest jednym z najbardziej lubianych, cho� ma wiele ogranicze� tylko po to, aby pocz�tkuj�cy programista unikn�� pewnych typowych b��d�w.
Programowanie strukturalne, kt�re zrewolucjonizowa�o tworzenie oprogramowania, opiera si� na bardzo prostej zasadzie: dziel i rz�d�. Du�y problem rozbija si� na kilka mniejszych. Te rozbija si� na jeszcze mniejsze. I tak dalej. Zalet� programowania strukturalnego jest mo�liwo�� tworzenia programu zespo�owo: ka�dy konkretny programista dostaje pewn� cz�� zadania do rozwi�zania. Standardowy j�zyk Pascal nie wspiera jednak programowania obiektowego. Istniej� r�ne dialekty, w tym obiektowo zorientowane, ale s� one nieprzeno�ne. W praktyce oznacza to, �e np. ucz�c si� Delphi, wi��emy si� z jedn� firm� i jednym typem komputera. Tym samym jest prawdopodobne, �e napisany przez nas program nie b�dzie poprawnie pracowa� po kilkunastu latach czy te� na innej platformie (tj. kiedy stare komputery b�d� zast�powane nowymi).
J�zyk Pascal ogranicza inwencj� programisty i brak w nim standaryzacji procesu ��czenia z bibliotekami. Pisz�cemu program wolno tylko to, co kompilator uzna za bezpieczne. W praktyce "zwyk�y" Pascal jest zbyt kr�puj�cy. Brak mo�liwo�ci do��czania bibliotek uniemo�liwia korzystanie z gotowych procedur, o ile nie s� one dost�pne w formie tekstu �r�d�owego. Konkurencyjnym w stosunku do Pascala j�zykiem programowania by� j�zyk C. Jest to j�zyk bardzo prosty w konstrukcji, niezbyt �atwy w u�yciu, niezbyt teoretycznie konsekwentny w sk�adni, lecz bardzo praktyczny. Jest podstawowym j�zykiem programowania w systemie Unix od lat siedemdziesi�tych. W nim jest napisane j�dro systemu Linux. Tak�e firma Microsoft uwa�a j�zyk C za fundament dla swojego systemu Windows. Obecnie jest jednak ju� nieco przestarza�y.
J�zyk C ewoluowa� w j�zyk C++, nazywany j�zykiem programowania lat dziewi��dziesi�tych. J�zyk C++ jest j�zykiem s�u��cym do programowania obiektowego. Co ciekawe, rozbudowane C++ jest j�zykiem znacznie �atwiejszym w u�yciu ni� "czyste" C i pozwala �atwo, po jedynie drobnych i automatycznych modyfikacjach, adaptowa� kod �r�d�owy pierwotnie napisany w Fortranie, Algolu czy Pascalu. Naturalne jest wi�c przechodzenie w o�rodkach naukowych zajmuj�cych si� fizyk� z j�zyka Fortran na C++ jako na de facto j�zyk standardowy, jak to np. ma miejsce w CERN. Pewnym zagro�eniem dla j�zyka C++ mo�e by�, podobny do niego, j�zyk Java. Przewaga Javy nad C++ le�y w lepszym podej�ciu do programowania wsp�bie�nego. Java powsta�a niedawno, nic wi�c dziwnego, �e uda�o si� jej autorom stworzy� j�zyk XXI wieku. Jedynym problemem, jaki jest zwi�zany z j�zykiem Java, jest polityka licencyjna firmy Sun, b�d�cej formalnie w�a�cicielem tego j�zyka - cokolwiek by to mog�o oznacza�. Istnieje wiele innych j�zyk�w programowania, takich jak Prolog, Oberon, Python, Forth czy Ada, kt�rych nie b�d� przedstawia�. Liczb� j�zyk�w programowania oceniano na ponad 200 ju� 20 lat temu i nie istnieje �adna przeszkoda, aby nie powstawa�y ci�gle nowe.
J�zyk programowania to inaczej j�zyk opisu algorytm�w przeznaczonych do wykonywania na komputerze. J�zykiem programowania nazywa si� maszynowo-ukierunkowanym (j�zyk niskiego poziomu), gdy odzwierciedla list� rozkaz�w komputera ( asembler), a maszynowo-niezale�nym ( j�zyk wysokiego poziomu), gdy nie jest zwi�zany z okre�lonym typem komputera (komputer wymaga wyposa�enia go w translator okre�lonego j�zykiem programowania). Ze wzgl�du na spos�b przedstawienia algorytmu obliczeniowego rozr�nia si�: j�zyk programowania imperatywnego, funkcyjnego i j�zyk programowania w logice. J�zyki programowania imperatywne (np. Pascal, C, Modula, Cobol) charakteryzuje u�ycie instrukcji, w przypadku j�zyka niskiego poziomu zwanych rozkazami, jako jednostek wykonawczych. Wyra�aj� one czynno�ci sk�adaj�ce si� na wykonanie programu. J�zyki programowania funkcyjne (np. Lisp, Hope) s� systemami notacyjnymi dla wyra�ania funkcji, umo�liwiaj�cymi obliczanie ich warto�ci. Przedstawiana funkcja jest wyra�eniem zbudowanym z wyra�e� przyj�tych za pierwotne poprzez stosowanie specyficznych dla danego j�zyka operator�w, np. pozycji, wskazania argument�w i in. J�zyki programowania w logice (np. Prolog) s� systemami notacyjnymi do zapisywania relacji i formu� logicznych. Wykonanie programu przebiega jako proces weryfikacji prawdziwo�ci okre�lonej formu�y lub relacji.
Gdy j�zyk programowania pozwala na tworzenie pewnych jednostek (zw. obiektami), wi�zanie ich w r�ne struktury oraz dokonywanie na nich innych, specyficznych dla danego j�zyka, operacji - to m�wi si� o j�zyku programowania obiektowego (np. Smalltalk, Simula, Loglan, C++). Obiektami mog� by� ci�gi instrukcji (zw. wtedy wsp�programami), grupy danych, struktury graficzne wy�wietlane na monitorze (np. okienka) i inne. Ze wzgl�du na spos�b komunikacji z komputerem j�zyki programowania dzieli si� na niekonwersacyjne (wi�kszo��), w kt�rych ca�y program wprowadza si� do komputera przed rozpocz�ciem jego wykonywania, oraz konwersacyjne (np. Basic), w kt�rych wprowadza si� okre�lony zwrot j�zykowy (instrukcj� lub pytanie) i w zale�no�ci od reakcji komputera wykonuje si� kolejny krok itd.
J�zyki programowania dzieli si� przede wszystkim pod wzgl�dem stopnia zaawansowania:
- J�zyki pierwszej generacji - s� to j�zyki maszynowe, czyli j�zyki procesor�w. Instrukcje s� w nich zapisywane w postaci liczb binarnych.
Przyk�adowy kod programu:
111010100000000000001111111111111111100010011101100000000010100000001
- J�zyki drugiej generacji - j�zyki symboliczne, asemblery. J�zyki niskiego poziomu, pod wzgl�dem sk�adni to�same z maszynowymi, z t� r�nic� �e zamiast liczb u�ywa si� tu �atwiejszych do zapami�tania mnemonik�w.
Przyk�adowy kod programu:
jmp ffff:0
mov ax, bx
add ax, 1
Nale�y doda�, i� pod wzgl�dem znaczenia kod ten jest jednoznaczny z kodem binarnym przedstawionym w poprzednim punkcie (tylko dla procesor�w z grupy 80x86).
- J�zyki trzeciej generacji - j�zyki wysokiego poziomu, proceduralne (imperatywne). W j�zykach tych jedna instrukcja jest t�umaczona na kilka instrukcji procesora, najcz�ciej od 5 do 10. Pierwszym j�zykiem tego typu by� ALGOL. Do tej grupy nale�� mi�dzy innymi: FORTH, BASIC - j�zyki niestrukturalne, Pascal, C, FORTRAN - j�zyki strukturalne, C++, Java - j�zyki zorientowane obiektowo.
Przyk�adowy kod:
if(!x)
{
printf("Nie wolno dzieli� przez zero\n");
return 1;
}
- J�zyki czwartej generacji - j�zyki bardzo wysokiego poziomu, nieproceduralne (deklaratywne). Korzystaj�c z tych j�zyk�w programista skupia si� na problemie, a nie na sposobie jego rozwi�zania (j�zyki zorientowane problemowo, ang. task oriented languages). Syntaktyka wielu j�zyk�w czwartej generacji przypomina sk�adni� j�zyka naturalnego. S� one cz�sto u�ywane do dost�pu do baz danych. Przyk�adem j�zyka z tej grupy jest: SQL.
Przyk�adowy kod:
SELECT Nazwa FROM "Faktura.db" WHERE Cena > 1000
- J�zyki pi�tej generacji - j�zyki sztucznej inteligencji, j�zyki system�w ekspertowych. J�zyki najbardziej zbli�one do j�zyka naturalnego. Przyk�adem j�zyka pi�tej generacji jest PROLOG.
|