Na pierwszy rzut pójdzie PHP, które dominowało u mnie przez ostatnie dwa lata. Jeśli chodzi o tworzenie jakiegoś narzędzia "na teraz", jest on po prostu niezrównany. Mnóstwo bibliotek służących do różnych celów oraz składnia typowego języka skryptowego wzorowanego na C/C++ to doskonałe połączenie. Przydaje się tu w szczególności obsługa zmiennych, których nie trzeba deklarować i nie mają predefiniowanego typu. Jednak choć w teorii jest to język "powszechnego użytku", czarno na białym widać, że projektuje się go pod kątem WWW, przez co jego zastosowania w charakterze języka do pisania "normalnych" programów są mocno ograniczone. Dla uproszczenia wolę go łączyć z przeglądarką.
Java. Nie programowałem może w niej za dużo, ale mam wyrobione zdanie. Język jest ciekawie zaprojektowany i naprawdę mi się podoba. Jeśli zna się już programowanie, po paru dniach z pomocą dokumentacji osiąga się ciekawe rezultaty. Java wypada słabiej, jeśli weźmiemy pod uwagę wydajność. Edytor tekstu NetBeans w niej napisany, zajął CAŁE 512 MB pamięci RAM, wykorzystał wszystką moc procesora i omal nie zawiesił bardzo stabilnego skądinąd Windowsa XP. A przecież to jest "tylko" edytor. IDE do Delphi stworzone w normalnym, kompilowanym języku, bez trudu działało na 64 MB RAM na procesorze z zegarem 600 mHz. Niech to wystarczy za porównanie. Nie podoba mi się też sposób zarządzania obiektami. Kompletnie nie mogę pojąć, dlaczego stosowany jest Garbage Collector do usuwania "nieużywanych" obiektów, skoro można użyć rozwiązania zastosowanego w PHP - kiedy nie ma zmiennych wskazujących na obiekt, jest on niepotrzebny i idzie do usunięcia. Przynajmniej nie powodowałoby to marnotrawienia pamięci wtedy, gdy trzeba jej mnóstwo przydzielać i zwalniać, a swego czasu mi się ktoś żalił, gdyż natrafił na taki właśnie problem.
Kończąc języki poniekąd interpretowane, przechodzimy do kompilowanych. Assembler - wiadomo. Piszemy niemal bezpośrednio w kodzie maszynowym, co jest toporne, ale w niektórych sytuacjach zbawienne. W normalnej pracy wykorzystujemy tzw. język wyższego poziomu, czyli C. Ma on swój klimat i w większości przyzwoitą składnię (dziwne są tylko wskaźniki, które trzeba wstawiać w nawiasy), ale "opakowanie", czyli standardowy zestaw bibliotek, woła o pomstę do nieba. Odnoszę wrażenie, że projektował go masochista z 20-letnim stażem po ciężkim dniu w pracy. W praktyce wygląda to tak, że jak już uporasz się z podstawowymi problemami (już konwersja liczby na ciąg tekstowych może przyprawić o mdłości), jesteś tak wyczerpany, że odechciewa ci się pisać właściwej części. C++ ma już bardziej obiektowy interfejs, który jest całkiem przyjazny. Jednak jako że jest to rozwinięcie C, dziedziczone są też jego wady, m.in. beznadziejny system linkowania, który lubi marudzić. Po przeciwnej stronie skali stoi tutaj Pascal. Jego projektant pomyślał o możliwości dzielenia kodu źródłowego na mniejsze pliki i "domyślnie" przewidział tworzenie tzw. modułów. Również pakiet podstawowych funkcji jest przyjemny w użytkowaniu. Nie zdarzyło mi się mieć do niego jakichś większych pretensji. Tak się jednak składa, że tutaj z kolei ludzie mają pretensje do składni. Oparta na zwyczajnych angielskich słowach, może wydawać się nazbyt rozwlekła, a czasem prowadzi do pomyłek (np. nie ma rozróżnienia między identyfikatorem zmiennej, a funkcji/procedury bez parametrów). Tak samo brakuje jej niektórych podstawowych struktur, m.in. operatora ++.
Jaki jest mój werdykt? Marzy mi się język, który połączy w sobie elegancję pascalowych bibliotek oraz niektóre elementy jego składni (moduły, ujednolicone tworzenie typów) z "tą lepszą" częścią składni C/C++. Kto wie... znając moje zamiłowanie do kompilatorów i wszelkiej maści przetwarzaczy tekstu może kiedyś stworzę coś takiego? Czas pokaże.






Napisał darkspirit w czwartek, 22 września 2005 o 20:15
noi przydałaby się obsłguga obiektów niczym w javie ;)