






 
Strona:
22
Współpraca
i reklama !
|
|
Krótka
historia programowania
Słyszeliście zapewne o takich językach programowania
jak Pascal, C++, Basic itp. Ale czy wiecie jakie były ich początki. Gdy
kilkanaście miesięcy temu zaczynałem uczyć się programować zainteresowała
mnie również historia software’u, czyli kiedy, w jakich okolicznościach
powstawały pierwsze programy i jaką spełniały pierwotnie funkcje.
Pierwsze maszyny ( te najpierwsze nie wiele
miały wspólnego z obecnym PC, jak np. pierwsza maszyna zdolna do obliczeń
matematycznych, zajmująca cały pokój, składająca się z trybów, osi i kół
zębatych, wymyślona przez Ch. Babbage’e [1792 – 1871 r.] )
programowane były nie poprzez wymianę „softu” , lecz przez
fizyczną wymianę układu(ów) elektronicznych. Czasami odbywało się to
przez przestawienie odpowiednich przełączników, pokręteł itp. Można
szybko wywnioskować, że była to metoda bardzo kosztowna, dość powolna, o
ograniczonych możliwościach. Tak samo wprowadzane były do ówczesnych
maszyn wszelkiego rodzaju dane. Dane jednak szybko z biegiem czasu „pożerały”
coraz więcej i więcej miejsca, przez co to „fizyczne”
programowanie stało się bezużyteczne. Zastąpiły je taśmy i dziurkowane
karty. Później owe karty przeznaczono także do przechowywania danych.
Stanowiło to duży postęp w
stosunku do wcześniejszej metody. Wymiana karty lub taśmy była tańsza,
szybsza, łatwiejsza, przez co wymiana informacji a zarazem praca z taką
maszyną była dużo sprawniejsza. Od
tej pory jednak pojawił się nowy problem, mianowicie „przydało by się”
aby te pierwotnie komputery umiały nawiązać kontakt z taśmami i
dziurkowanymi kartami, i tak pojawiły się pierwsze języki programowania,
zastosowane w celach tworzenia metod komunikacji między ww urządzeniami.
Powstawały kolejne generacje języków oprogramowania ( o nich niżej ).
Pierwsze programy były dosyć trudne w użyciu i prymitywne. Jak zapewne każdy
wie komputer posługuje się kodem/językiem binarnym, trudno by było
programiście napisać cokolwiek wklepując z klawiatury same zera i jedynki,
( co prawda mógł wklepywać jeszcze dane
w systemie heksadecymalnym, ale nie było to wielkie ułatwienie ).
Powstały dlatego kompilatory i interpretery, tłumaczące reguły,
instrukcje, polecenia itp. obecne w każdym języku oprogramowania, swoją
budową przypominające ludzką mowę ( mowę za dużo powiedziane, czytaj
polecenia, jak np. „print”, „int”, „var”,
„average” itd. ) na język
binarny zrozumiały dla maszyn. Jednym z pierwszych języków programowania był
asembler. Język ten jest bardzo trudny, jego znajomość była/jest domeną
wysokiej klasy inżynierów informatyki. Jednak jako język symboliczny (
zamiast pisać określone instrukcje posługując się 0/1 lub „heksami”
przypisano im określone symbole – znaki mnemotechniczne, wymagające w
celu zrozumienia przez komputer użycia kompilatora/interpretera ) spowodował,
że programy stały się czytelniejsze. Asembler miał kilka poważnych wad
m.in. ścisłe związanie z maszyną dla której był napisany, z czego wynikała
jego trudność ( programiści piszący a asemblerze muszą znać dobrze budowę
procesora każdej klasy, rejestrów itp. ). Obecnie rzadko piszę się
aplikacje w tym środowisku ( choć krytyczne sekcje programów nadal są
pisane w nim, z racji jego szybkości, stabilności, dokładne dostosowanie do
maszyny, minimalne zużycie pamięci ). Później pojawił się języki
wysokiego poziomu, wykorzystywane do dzisiaj. Pierwsze języki tego typu
pojawiły się w latach 50-tych i 60-tych np. APL,
COBOL, FORTRAN. W wyniku dalszego
rozwoju powstały m.in. PASCAL i C i jego następca C++. Pojawiła się również
JAVA, język stworzony do zastosowań internetowych, możliwy do zastosowania
na różnych systemach, pozwalający także na tworzenie skomplikowanych
aplikacji. W raz z Internetem powstał HTML,
wypierany dzisiaj ponoć przez XML. Wraz z pojawieniem się języków
wysokiego poziomu, a właściwie ich wizualnych następców ( Visual Basic,
Delphi, C++ Borlanda czy Microsoftu), programowanie przestało być umiejętnością
wyłącznie informatyków – trafiło pod przysłowiowe
„strzechy”. Dzisiaj
każdy użytkownik komputera ma możliwość poznania danego języka, a dzięki
obiektowemu interfejsowi jest to nawet proste. Powracając jednak nieco do
historii trzeba wspomnieć, że decydujący wpływ na rozwój aplikacji zarówno
tych tworzonych w językach niskiego poziomu jak wysokiego miał system
operacyjny. W 1981 r. pojawił się pierwszy komputer osobisty – IBM PC,
wyposażony w MS-DOS. Jednak programowania w interfejsie znakowym było dosyć
trudne a rezultaty nie efektowne. Prawdziwa rewolucja nastąpiła w latach
1983-1984, kiedy to Apple Computer wyposażył jako pierwszy na świecie swój
komputer ( Macintosha ) w system operacyjny z graficznym interfejsem użytkownika.
Jednocześnie Microsoft w listopadzie 1985 r. wypuścił na rynek swój system
operacyjny z takim interfejsem – Microsoft Windows 1.0. Obecnie istnieje
moda ma działanie „antywindowsowe”, system ten stał się tematem
licznych żartów, ( niektóre są całkiem słuszne ) trzeba jednak przyznać,
że Microsoft ze swoimi produktami odegrał ogromną role w rozwoju technik
programistycznych na platformę PC. Wszystkie wersje Windows-a posiadają
bardzo przydatne dla programistów funkcje np. przełomowe API (Application
Programming Interface), biblioteki DLL, komponenty te znacznie ułatwiły
tworzenie aplikacji. Pierwsze
wersje Windows-a przeznaczone były dla procesorów wykorzystujących
instrukcje 16-bitowe ( stąd Win16 ), mimo trochę archaicznego interfejsu jak
na dzisiejsze czasy, był to wielki postęp w stosunku do DOS-a. Pojawiły się
wkrótce procesory wykorzystujące architekturę 32-bitową, ( co stanowiło
kolejny krok w rozwoju programowania) jednak pierwsze wersje Windows jej nie
obsługiwały – były one tylko nakładką na stary DOS. Programowanie
32-bitowe wymusiło powstanie takich systemów jak OS/2 IBM ( 1990 r. ), działających
bez DOS-a. Dopiero w maju 1983 r. pojawił się Windows NT, jako 32-bitowy
system operacyjny przeznaczony dla zastosowań sieciowych. Natomiast wersja
Windows 95 była pierwszym 32-bitowym systemem dla zastosowań domowych ze
stajni Microsoft-u. Wówczas rozpowszechniło się programowanie obiektowe
– OOP, 32-bitowe ( programowanie obiektowe znane było już w latach
80-tych). Widać więc, że ta firma nadawała duży trend w rozwoju systemów
programistycznych. Samo programowanie obiektowe ogromnie ułatwiło cały
proces powstawania aplikacji. Kto miał kiedykolwiek kontakt z tego typu rozwiązaniem,
na pewno doceni istnienie obiektów, klas dziedziczenie, polimorfizm, zwłaszcza
możliwość korzystania z VCL (Visual Component Library). Ci
którzy nie spotkali z OOP i VCL, niech sobie wyobrażą np. notatnik.
Chcąc taki notatnik zapisać np. w Delphi wystarczy przeciągnąć myszką
kilka komponentów ( komponenty odzwierciedlają poszczególne elementy
programu np. komponent „OpenDialog” przedstawia ikonę otwartego
folderu, chcąc dodać do programu funkcje otwierania dokumentów należy umieścić
ten komponent w oknie i dopisać krótki kod) z paska programu, upuścić je w
oknie projektowanego programu, dopisać krótki kod i mamy gotowy program ( w
praktyce nieco trudniejsze ). Dzięki gotowym komponentom nie musimy definiować
każdego przycisku i pola w programie, wystarczy wziąć gotowy komponent, i
napisać tylko jak ma się on zachowywać. Powracając do historii, w latach
60-tych nastąpiło jeszcze jedno wydarzenie mające ogromną rolę w rozwoju
języków programowania. Powstało mianowicie programowanie strukturalne. W dużym
skrócie polega ono na używaniu trzech głównych instrukcji sterujących:
bloku sekwencji, instrukcji warunkowej If-Then-Else, pętli warunkowej
While-Do, ważną cechą jest to że programowanie strukturalne nie korzysta z
polecenia GOTO (idź do) stosowanego powszechnie w pierwszych językach.
Programowanie strukturalne wykorzystywane jest do dziś na wielką skalę.
Podsumowując ten 40-50 letni rozwój jeżyków
programowania, można wyróżnić w nich pięć różniących się generacji (
niektórzy nie uznają nazwy czwarta generacja , stąd można spotkać się z
określeniem „ czterech generacji”)
1.
Pierwsza generacja.
Programowanie odbywało się w kodzie binarnym. Każdy komputer operuje
własnym kodem – określony jako język maszynowy lub wewnętrzny.
Programowanie było trudne, ponieważ programista musiał dostosować się do
budowy konkretnej maszyny
2.
Druga generacja.
Ciągowi zer i jedynek przypisano łatwiejsze do zrozumienia znaki
mnemotechniczne.
Narodziły się w ten sposób języki symboliczne, zwane asemblerami
3. Trzecia
generacja.
Do trzeciej generacji zalicza się ję1zyki wysokiego poziomu. Zastąpiły
one system symboliczny z
asemblera, wprowadzając instrukcje zbliżone do języka ludzkiego.
4. Czwarta generacja.
Składa
się na nią szereg narzędzi, które umożliwiają budowę prostych programów
przez zestawienie prefabrykowanych modułów. Uważa się jednak, że nie są
to języki w ścisłym słowa tego znaczeniu, gdyż często stanowią języków
istniejących. Proponuje się aby tego terminu używać na określenie
programowania obiektowego (OOP).
5. Piąta
generacja
Nazwę tą stosuje się do określenia języków przeznaczonych do
tworzenia aplikacji
imitujących ludzką inteligencję ( sztuczna inteligencja )
Można by się zastanowić co czeka nas w przyszłości.
Na przełomie roku 2001/2002 Miscrosoft planuje wydanie pierwszego systemu
64-bitowego ( pierwszego z pośród swoich produktów, bo przecież system
Unix czy BeOS korzystają już z architektury 64-bit.) Być może już
zapowiadany na ten rok Whistler ukaże się w tej wersji. Można się
spodziewać, że przyniesie to nowe rozwiązania programistyczne. Ta sama
firma wprowadziła również nowy język C# ( czyt. c shark) związany z
projektem .NET. Język ten jest o tyle ciekawy, że ponoć ma kompilować
wszystkie obecne języki programowania ( wyłączając JAVE). Czyżby kolejna
próba stworzenia języka ogólnego, uniwersalnego. Obecnie techniki
programowania rozgałęziły się i tworzą można powiedzieć dwie grupy.
Pierwsza to języki przeznaczone na potrzeby tworzenia aplikacji. Druga to języki
wykorzystywane w sieci. Króluje HTML. Sami jednak spotkaliście się z PHP,
ASP itp. Następcę HTML upatruje się we wspomnianym XML, który nadaje się
do tworzenia dużych internetowych baz danych. Myślę także, że java będzie
częściej wykorzystywana, z racji swej uniwersalności.
Kryj Łukasz
xboy@poczta.wp.pl
|