• Nie Znaleziono Wyników

Kryterium „techniczne”

Rozdział 1. Historia i ewolucja języków programowania/

1.1 Oprogramowanie – program komputerowy – aplikacja (dylematy pojęciowe) 13

1.2.2 Kryterium „techniczne”

Optyka „techniczna” jest optyką potrzeb – wymagań programistów i „zwykłych”

użytkowników komputera, profesjonalistów i amatorów. Poszczególne „produkty”, tworzące kulturę, przyczyniają się do ułatwiania życia, upraszczania procedur codziennych czynności.

Zanim powstały komputery znane nam w obecnej formie, pragnienie automatyzacji obliczeń matematycznych, zawiodło ludzi do stworzenia kolejnych quasi-informatycznych wynalazków. Podświadomie planowano stworzyć maszynę, która będzie w przyszłości stanowić matrycę ludzkiej kultury (jak pisze Jay David Bolter: „Dzisiaj komputer stale służy za metaforę ludzkiego umysłu lub mózgu: psycholodzy mówią o wejściu i wyjściu, czasami nawet o hardware i software mózgu; lingwiści traktują język ludzki tak, jakby był kodem programowym, a wszyscy mówią o nauczeniu komputerów >>myślenia<<”38). Cyfrowa

37 E. Sapir: Kultura, język, osobowośd…, op. cit., s. 42.

38 J. D. Bolter: Człowiek Turinga…, op. cit., s. 40.

natura niektórych pojęć czy zjawisk, wymagała odpowiedniego zaplecza technicznego (i paradoksalnie – humanistycznego spoiwa).

Zanim przejdę do najważniejszej części tego rozdziału – prezentacji języków programowania – spróbuję krótko opisać kluczowe idee zrealizowane w wyszczególnionych przeze mnie czterech kamieniach milowych ewolucji oprogramowania. Są to:

1. „Testy”

2. „Inspiracje”

3. „Epoka maszyn/ świt ery komputera”

4. „Cyfrowe mosty - języki programowania”.

Ad. 1. Etap „testów” wiąże się z wynalezieniem mechanizmu z Antykihtiry z czasów Starożytnej Grecji (150-100 r. p.n.e.) oraz pierwszego programowalnego automatu perkusyjnego stworzonego w 1206 roku przez arabskiego wynalazcę imieniem Al-Jazari39. Pierwsze z urządzeń (zasługujące na szczególną uwagę ze względu na stopień innowacji) służyło do – popularnych w ówczesnych czasach – obliczeń astronomicznych. Ten niezwykle precyzyjnie skonstruowany mechanizm, składał się z ok. 37 kół zębatych: „tarcza z przodu wskazywała ruch Słońca i Księżyca na tle zodiaku oraz egipskiego kalendarza, którego używali Grecy. Z tyłu były dwie tarcze. Jedna pozwalała synchronizować kalendarz słoneczny z księżycowym, a druga przewidywać zaćmienia Słońca i Księżyca” 40 . Wykorzystanie tego urządzenia skracało czas, jaki człowiek musiałby poświęcić na wykonanie niezbędnych obliczeń w sposób „analogowy” i otwierało przestrzeń interpretacji dla potencjalnych wynalazków i tym samym kierunku rozwoju kultury.

39 Wikipedia: Programowanie komputerów - historia programowania. *dostęp: 20.07.2013+. URL:

<http://pl.wikipedia.org/wiki/Programowanie_komputer%C3%B3w>.

40 W. Pastuszka: Mechanizm z Antykithiry - najnowocześniejsze urządzenie starożytności. *dostęp: 20.07.2013+.

URL: <http://archeowiesci.pl/2006/11/30/mechanizm-z-antykithiry-najnowoczesniejsze-urzadzenie-starozytnosci/>.

1.1 Mechanizm z Antykithiry (wizualizacja)

(źródło: http://greeceinfo.files.wordpress.com/2012/04/extra_87450_sxedio.jpg)

Ad. 2. Krosno tkackie, które zostało zaprojektowane w 1805 roku przez Josepha Marie Jacquarda, oparte na metodzie sterowania nitkami za pomocą kart perforowanych, stanowiło kilka wieków później niewątpliwą inspirację dla Hermana Holleritha z IBM. W tym samym okresie Charles Babbage podjął próbę zaprojektowania komputera mechanicznego. Jak opisuje ten fakt Bolter: „zaprojektował on najpierw Maszynę Różnicową, kalkulator z trybami oparty na Newtonowskiej metodzie wykonywania operacji całkowania; inny inżynier wykonał działający prototyp. Babbage zaczął marzyć o czymś nieporównanie większym: o Maszynie Analitycznej, o komputerze mechanicznym, który mógłby być programowany dla wszystkich rodzajów problemów matematycznych. [...] Gdyby Maszyna Analityczna została zbudowana, byłby to rzeczywiście pierwszy komputer, lecz Babbage próbował wykroić z mechanizmu urządzenie, które w istocie należy do wieku elektroniki. Odrzucenie przezeń ograniczeń materiałów i technologii, dostępnych w jego czasach, jest typowe dla wizjonera”41.

Opis mechanicznego komputera Babbage‟a oraz pierwszy algorytm zostały stworzone przez Adę Lovelace, która jest uznawana za pierwszą „programistkę” w historii (warto zaznaczyć, że od jej imienia wywodzi się nazwa jednego z języków programowania). Pomysły projektowania i programowania maszyn – pierwszych „komputerów”, zainicjowały w umysłach wynalazców potomnych początki idei ery cyfrowej.

41 J. D. Bolter: Człowiek Turinga…, op. cit., s. 68.

1.2 Karta perforowana z mechanizmu Jacquarda oraz „komputer” Babbage'a (źródło: https://web.duke.edu/isis/gessler/topics/jacquard-cards-cu.jpg;

http://www.computerhistory.org/babbage/common/img/welcome-babbageengine.jpg)

Ad. 3. W „epoce maszyn” w XX wieku, zaimplementowane zostały wszystkie te inspiracje i założenia, które tkwiły głęboko w rdzeniu kultury i czekały na możliwość odpowiedniego skanalizowania. Kultura cyfrowa przyszłości oczekiwała na „skok” w swojej dziedzinie, odpowiedni gest inicjacji. „W rozwoju komputerów teoria poprzedzała praktykę. Manifestem nowego elektronicznego ładu był artykuł On Computable Numbers (O liczbach obliczalnych) opublikowany przez matematyka i logika Alana M. Turinga w 1936 roku. Zanim zbudowano pierwszy całkowicie programowalny komputer, Turing określił istotę oraz teoretyczne ograniczenia maszyn logicznych. Przedstawił on symboliczny opis, który ujawniał jedynie ich strukturę logiczną, nie mówiąc nic o realizacji fizycznej tejże struktury (przez przekaźniki, lampy próżniowe czy tranzystory). Maszyna Turinga, jak opis ów jest nazwany, istnieje tylko na papierze jako wykaz reguł [...]”42. Działanie, zarówno urządzenia (służącego do analizy algorytmów, wyobrażanego jako nieskończenie długa taśma podzielona na kratki z głowicą przesuwającą się nad tą taśmą) zaprojektowanego przez Turinga, jak i kontynuacji tego pomysłu (z 1945 roku) w postaci architektury von Neumanna, skupia się w jednej z największych obsesji XX wieku – taśmie montażowej43. Zmienność to credo tej nowej kultury (jak zauważa Bolter: „geniusz maszyny von Neumanna kryje się w tym, że i program (rozkazy operacyjne), i dane są zapisane w tym samym kodzie binarnym i razem wprowadzane do pamięci. Takie kodowanie sprawia, że program może być równie łatwo

42 Ibidem, s. 41.

43 Ibidem, s. 71; Bolter pisze o maszynie von Neumanna, że „*...+ jest ona najwyższą odmianą taśmy

montażowej, manipulującą porcjami informacji z szybkością światła”; Zob. również: Ford. Ewolucja produkcji masowej. *dostęp: 20.07.2013+. URL: <http://www.ford.pl/O_firmie/Dziedzictwo/Ewolucja_produkcji>.

zmieniony jak dane, w rzeczywistości nie ma między nimi logicznej różnicy”)44. Wniosek?

Automatyzacja, upraszczanie, przyspieszenie komunikacji – potrzeby te zrodziły idee pierwszych komputerów. Reszta pozostała w „rękach” rozwoju elektroniki.

Schemat 1.5 Schemat działania maszyny Turinga (źródło: http://zti.polsl.pl/pi/Program/images/przyklady/m_t_sch.gif)

Schemat 1.6 Architektura von Neumanna

(źródło: http://pldocs.docdat.com/pars_docs/refs/196/195660/195660_html_mad56ec5.jpg)

Realizacja „snów o potędze” rozpoczęła rozpoczęła się wraz ze skonstruowaniem pierwszych układów elektronicznych złożonych z lamp próżniowych (do historii przeszedł również rok 1949, w któym to wynaleziono tranzystor). Stworzone dla niezawodnego, wszechstronnego działania45, były one ówczesnymi „jednostkami prędkości kultury”. To właśnie na fundamencie technicznym lamp elektronowych zbudowany został pierwszy komputer ABC (Atanasoff-Berry Computer – maszyna do układania równań algebraicznych

44 Ibidem, s. 75.

45 Ibidem, s. 69.

liniowych) 46 oraz ENIAC (Electronic Numerical Integrator And Computer – wykorzystywany m.in. do obliczeń związanych z balistyką, projektowania broni jądrowej, prognozowania pogody, badania promieniowania kosmicznego) 47 . Technologia wygenerowała komunikację, komunikacja z kolei (języki programowania), zaczęła wymagać odpowiedniego medium – karty perforowanej, dziedzictwa Josepha Jaquarda, wykorzystywanej aż do lat 80.

1.3 Maszyna ABC i ENIAC

(źródło: http://www.computermuseum.li/Testpage/Atanasoff-ABC-Computer-1941.gif;

http://s7.computerhistory.org/is/image/CHM/500004289-03-01?$re-zoomed$)

1.4 Karta perforowana – „gwiazda” epoki

(źródło: http://pclab.pl/zdjecia/artykuly/uran/Zarys%20historii%20nosnikow%20informacji%20cz1/karta-perforowana.jpg)

Ad. 4. W finalnym etapie dla zaplecza technicznego stworzone zostało medium komunikacji - języki programowania. Ich najważniejsze informacje i cechy zebrałam w poniższej tabeli:

46 Wikipedia: Atanasoff-Berry_Computer. *dostęp: 20.07.2013+. URL: <http://pl.wikipedia.org/wiki/Atanasoff-Berry_Computer>.

47 Wikipedia: ENIAC. *dostęp: 20.07.2013+. URL: <http://pl.wikipedia.org/wiki/ENIAC>.

Język

1954-1957 John Backus wieloparadygmatowy obliczenia naukowo-inżynierskie,

Pascal 1970 Niklaus Wirth strukturalny cele edukacyjne/

narzędzie do nauki

Xerox PARC interaktywne środowisko programistyczne, obsługa okien, maszyna wirtualna

C 1972 Dennis Ritchie imperatywny

(proceduralny) C++ 1983 Bjarne Stroustrup wieloparadygmatowy jeden z

najpopularniejszych

Objective-C 1983 Tom Love, Brad Cox

obiektowy APLIKACJE DLA

URZĄDZEŃ MOBILNYCH

Perl 1987 LarryWall wieloparadygmatowy

(obiektowy,

Visual Basic 1991 Tom Button imperatywny rosnąca popularność

Java 1995 James Gosling obiektowy aplikacje (mobilne,

serwerowe), gry;

oprogramowanie dla dekoderów TV, systemów nawigacji, drukarek

Java Script 1995 Brendan Eich skryptowy/

wieloparadygmatowy

strony internetowe (poprawa

funkcjonalności, interaktywność) PHP 1995 Rasmus Lerdorf wieloparadygmatowy generowanie stron

internetowych w

internetowe

C# 2000 Anders Hejlsberg obiektowy aplikacje

Visual Basic.NET 2001 Microsoft skryptowy aplikacje

internetowe,

2002 Anders Hejlsberg obiektowy tworzenie aplikacji internetowych, zastosowanie praktyczne: Skype, Total Commander

Tabela 1.1. Charakterystyka języków programowania (ujęcie chronologiczne) - źródło: opracowanie własne na podstawie:

o Krótka historia języków programowania. [dostęp: 22.07.2013]. URL:

<http://nt.interia.pl/komputery/news-krotka-historia-jezykow-programowania,nId,679861,nPack,1>;

wyróżniamy następujące paradygmaty programowania: strukturalny (hierarchiczne dzielenie kodu na bloki, wejście-wyjście)48, proceduralny (analogicznie: podział kodu na procedury), obiektowy (zbiór obiektów komunikujących się ze sobą w celu wykonania zadania)49, imperatywny (zapis sekwencji instrukcji)50

48 Wikipedia: Programowanie strukturalne. *dostęp: 22.07.2013+. URL:

<http://pl.wikipedia.org/wiki/Programowanie_strukturalne>.

49 Wikipedia: Programowanie obiektowe. *dostęp: 22.07.2013+. URL:

<http://pl.wikipedia.org/wiki/Programowanie_obiektowe>.

50 Wikipedia: Programowanie imperatywne. *dostęp: 22.07.2013+. URL:

<http://pl.wikipedia.org/wiki/Programowanie_imperatywne>.

język wieloparadygmatowy - możliwość stosowania różnych stylów programowania (np. w przypadku języka C++ - programowanie proceduralne, obiektowe, generyczne).

Komentarz do tabeli:

Podstawowe języki programowania, odpowiadające na poszczególne potrzeby technologii, krystalizowały się aż do późnych lat 80. Obok języków wieloparadygmatowych, szczególnie popularne były języki imperatywne, stopniowo budowano podstawy dla języków obiektowych (np. Objective-C) oraz narzędzia obsługi przyszłych interfejsów graficznych (Smalltalk). Poszukiwano swoistych uniwersalizmów, tworzono podwaliny pod naukę języków programowania (BASIC).

Przełom nastąpił w początku lat 90., w okresie kształtowania się internetu i graficznych interfejsów użytkownika (wykorzystanie Visual Basic). Tu, szczególną popularność zyskały języki skryptowe np. Java Script – dynamizujące interakcję w sieci oraz obiektowe – przeznaczone dla projektowania aplikacji. Intensywnie korzystano z dziedzictwa „lingwistyki cyfrowej”, generowano również nowe, bardziej odporne i elastyczne hybrydy językowe (np.

C#, Visual Basic.NET, Delphi), przyjazne środowiska programistyczne, doskonalono komunikację i powstałe produkty.

Wysunięte przeze mnie wnioski stanowią pewne uogólnienie i służą głównie wyeksponowaniu najważniejszej tendencji: programowaniu aplikacji w oparciu o paradygmat obiektowy, wskazaniu na swego rodzaju „zwrot”, który nastąpił w wyniku gwałtownego rozwoju internetu i rynku urządzeń mobilnych.

Powiązane dokumenty