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