Dziś jest piątek, 9 stycznia 2009 roku (z kalendarza...)

Języki programowania

Icon

22.09.2005, 19:24

Przegląd

Komentarze (19)

Powrót

W związku z moim niedawnym powrotem do Pascala postanowiłem zainaugurować nową kategorię porównaniem języków programowania, z jakimi miałem dotąd do czynienia. Nadmienię, że są to języki z różnych dziedzin, a ja nie staram się uchwycić przydatności ich zastosowania, ale łatwość użycia, intuicyjność i prostotę.

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.

Powrót

Komentarze

Napisał Zyx w niedzielę, 25 września 2005 o 16:49

Cudi -> Pascal i C - owszem. Dla nich to poszukuję alternatywy, a ty mi tu jakieś "pseudokompilowane" C# podrzucasz :).

Napisał splatch w poniedziałek, 26 września 2005 o 16:06

@alien Na fedorze wszystko muli. Albo inaczej, jeśli instalowałeś z automatu to nie masz SWAPa i prawdopodobnie przez brak przestrzeni do wymiany danych większe aplikacje zpowalniają cały komputer. CO do tego, że java jest fuj - chyba nie (znasz|doceniasz) możliwości tego języka. Zauważ, że można w nim tworzyć wszytko od aplikacji wielowątkowych i okienkowych (ten chwalebny swing;), przez aplikacje i serwery sieciowe po gry czy skrypty. Możliwości na prawdę pokaźne, do tego przejrzysta składnia, i ulepszona obsługa tego, co było w złe w C++ i częściowo Smalltalku (teoretycznie).

Napisał alienjr w poniedziałek, 26 września 2005 o 17:04

urlhttp://www.go-mono.com/faq.html#patents/url Jakieś jednak realne zagrożenie jest. :/ Tak, tak Novell oficjalnie wypowiadał się, że jeżeli któraś część kodu mono będzie naruszała jakiś patent od razu zostanie usunięta, ale czy tak łatwo będzie ja zastąpić ? A co jak ktoś napisze aplikacje pod mono używające jakieś opcji, która w nastepnej wersji mono zostanie usunięta ? Wcale nie jest tak słodko jakby się mogło wydawać. Tak pisanie przeglądarki w C# pod mono i w pythonie to dwie, jedne z najprostszych cwiczen (a jak, ze przydatnych) jakie robiłem ucząc sie programowania. :)

Napisał alienjr w poniedziałek, 26 września 2005 o 19:25

Splatch: Moze nie od razu wszystko muli, ale tak to prawda Fedora jest dość wolna (ale ja nie potrzebuje superszybkiego systemu operacyjnego). Partycjonowałem dysk na innym systemie, przed instalacją Fedory i mam swapa. A co do javy, to masz racje, nie znam jej, ale widziałem róznice w szybkosci działania aplikacji napisanych w mono i w javie.

Strona 2 z 2 :: 1 2

Skomentuj

NickInformacja
E-mailTylko do użytku wewnętrznego.
WWWNie zapomnij o http://
LayoutNapisz tu, czy widzisz dzienny czy nocny layout.
WpisFormatowanie wiki
Internauto, pamiętaj! Wolność to nie samowola - dbaj o kulturę wypowiedzi oraz dyskusji w sieci.

Na Zyxist.com panuje swoboda wyrażania opinii oraz krytyki pod dowolnym adresem. Jedyny warunek: musi być ona kulturalna i rzeczowa. Na chamstwo, prostactwo lub jawne obrażanie kogokolwiek nie ma tu miejsca i takie komentarze są bardzo szybko usuwane. Jeśli zamierzasz polemizować z treścią wpisu, wpierw uważnie ją przeczytaj.

© Tomasz "Zyx" Jędrzejewski 2005 - 2009 | Wykonanych zapytań: 2 | Serwer wirtualny zapewnia