Spirala chaosu

Nie ma chyba innej niż języki programowania dziedziny informatyki, w której tak duże znaczenie miałyby: mody, zwyczaje wyniesione z uczelni, sympatie i antypatie, tradycje i przypadek. 6)

Historycznie można tu wyróżnić trzy zjawiska:

* fenomen powstałego na początku lat 70. języka C, który, nie bez powodu, bywa określany jako najlepszy język wysokiego poziomu wśród asemblerów i najlepszy asembler pośród języków wyższego poziomu, 7)

* powstanie w połowie lat 70. języka SEQUEL, który stał się podstawą stosowanego do dziś języka SQL

* ponowny wzrost zainteresowania językiem Cobol, co jest zapewne wynikiem prac związanych z problemem roku 2000 oraz inicjatywy firmy Fujitsu, która nadała temu językowi możliwości porównywalne z np. językiem Visual Basic.

Z punktu widzenia rozważanej tu koncepcji spiralnego rozwoju niektórych dziedzin informatyki charakterystyczny jest przykład języka BASIC 8), powstałego w roku 1964. Język ten miał być z założenia łatwy i umożliwiający prostą konwersację z komputerem. Miał on dawać się przenosić bez żadnych zmian między różnymi komputerami. Warunek przenośności realizowano drogą tzw. interpretacji, czyli tłumaczenia programu na język maszynowy bezpośrednio w trakcie wykonywania. Zaletę tę jednocześnie uznano za największą wadę tego języka, gdyż każdorazowe tłumaczenie w trakcie wykonywania marnotrawiło cenną wówczas moc obliczeniową komputerów. Zarówno z tej przyczyny, jak i z powodu ograniczonych możliwości, poza kilkoma wyjątkami, język ten nie wyszedł poza banalne zastosowania akademickie.

Początek utrzymującej się do dziś popularności języka BASIC przypadł na rok 1975, kiedy to B. Gates i P. Allen stworzyli wersję tego języka dla komputera Altair, wyposażonego w mikroprocesor Intel 8080. 9)

Właściwy renesans tego języka nastąpił w latach 80., kiedy to BASIC stał się podstawowym narzędziem programowania komputerów domowych i osobistych, na których - z oczywistych powodów - nie występował problem zabierania mocy obliczeniowej innym użytkownikom, a decydujące znaczenie miała prostota języka. Zagubiono jednak przy tym cechę jego uniwersalności, tworząc liczne, niezgodne ze sobą narzecza firmowe.

Koncepcja interpretacji języka w trakcie każdego wykonania programu bądź tłumaczenia go do postaci uniwersalnego, również podlegającego interpretacji, quasi-kodu maszynowego jest podstawą języków stosowanych obecnie w programach przesyłanych w Internecie w celu zaprezentowania informacji na ekranie. W ten sposób wykonywane są wszystkie polecenia napisane w tzw. językach znacznikowych i tak działają tzw. wirtualne maszyny języka Java. 10)

Cechą odróżniającą programy w językach znacznikowych jest to, że ich polecenia łączą się ze strumieniem danych, na których działają, tworząc z nimi całość.

Powrót do koncepcji interpretacji programów umożliwił ich przenoszenie między różnymi komputerami działającymi z odmiennymi systemami operacyjnymi. Źródłem problemów może tu się stać odchodzenie od wzorcowych wersji tych języków na rzecz własnych rozwiązań lansowanych przez poszczególnych producentów lub organizacje. Dzieje się tak już z językiem XML, który nie zdążył jeszcze wejść do szerszego stosowania.

Języki programowania dzielono wg różnych kryteriów klasyfikacyjnych. Jednym z nich jest podział na języki przeznaczone do rozwiązywania złożonych zadań obliczeniowych (np. Fortran) i do przetwarzania danych (np. Cobol). Ponieważ podział ten utrudniał wykorzystanie specjalistów i zwiększał koszty szkolenia, niedogodność tę próbowano zlikwidować opracowując uniwersalny język, dobrze nadający się do wszelkich rodzajów zastosowań. Powstał w ten sposób język o nazwie PL/1 (Programming Language One, określany również jako PL/1).

W przeciwieństwie do innych języków, opracowano go bardzo szybko: prace nad koncepcją rozpoczęto w roku 1963, a już rok później wydano pierwszą oficjalną wersję. Według danych amerykańskich, ok. 1% (licząc w punktach funkcyjnych) stosowanych obecnie w USA programów napisano w tym języku.

Przyczyna tego niepowodzenia wydaje się oczywista: stworzenie programu wykonującego złożone obliczenia naukowo-techniczne wymaga rozumienia istoty problemu, którego taki program dotyczy. Do tego zaś często potrzeba lat badań i pracy. Z tego powodu łatwiej np. uczonemu nauczyć się programowania komputera niż zawodowemu programiście zgłębić arkana wiedzy specjalistycznej z pewnej dziedziny nauki.

Niewielki jest postęp w zakresie metod opisu rzeczywistości w sposób potrzebny do działania narzędzi informatycznych. Opisy te są dotąd mało precyzyjne i nie nadążają za zmianami w realnym świecie. Co więcej - ta sama rzeczywistość w odniesieniu do różnych potrzeb jest opisywana na różne, nie przystające sposoby, pozostające na odmiennym poziomie szczegółowości i aktualności.

Obiektowe techniki tworzenia programów, które miały radykalnie zmienić ten stan, zderzyły się z barierą mentalnościową, mimo że wydają się bliższe rzeczywistości od technik sekwencyjnych, rozkładających ją na tysięczne szczegóły utrudniające widzenie całości. Potwierdza to opinię, że szerokie stosowanie technik obiektowych wymaga zmiany pokoleniowej wśród programistów.

Niedoskonałość informatycznych metod opisu rzeczywistości staje się jeszcze bardziej widoczna w przypadku metod przechowywania informacji. Model relacyjny, który swego czasu okazał się niemal objawieniem 11), w swej realizacji fizycznej stosuje często dekompozycję do poziomu najmniejszych szczegółów.

Celnie i dowcipnie określa to powiedzonko: nie ma żadnego powodu, aby rozbierać samochód na części przed każdym wstawieniem go do garażu tylko po to, aby go ponownie składać przed następnym użyciem. Pozostając w konwencji tego przykładu - nie wiadomo również, co zrobi taki samochód potraktowany jako obiekt i sam wstawiający się do garażu, którego wnętrze jest przed nami ukryte.

Pewne niedostatki relacyjnego modelu odwzorowania struktury i przechowywania danych uwidoczniły się również w wyniku rozwoju dziedziny określanej ogólną nazwą hurtowni danych. Obejmuje ona kilka różnych technik, których ostatecznym celem jest złożona analiza wzajemnych zależności między informacjami. Największe możliwości daje tu możliwie najdalej posunięta atomizacja danych, co oznacza, że analizie takiej poddaje się ilości danych niespotykane dotąd w żadnych innych zastosowaniach. To zaś powoduje, że struktura tych danych i sposób ich zapisu mają decydujące znaczenie dla sprawności, a często w ogóle wykonalności całego procesu.


TOP 200