środa, stycznia 06, 2010

Java, JavaScript, Python, C++, C#? co ma przyszłość?

Teraz wiadomo Java rządzi w aplikacjach Enterprise, C++ też sobie dobrze poczyna.
Ale co w przyszłości? Czego warto się uczyć?

Java
Java mimo swych zalet ma dwie wady, Swinga i to, że źródła są ciężkawe. Ten sam algorytm zakodowany w Java'ie i C++ wygląda zwykle lepiej w C++ :-)
Zmiany w Java 7, czyli np. operator czy jak to nazwać ;-) diamentowy <> powinien uczytelnić kod, jest szansa, że do języka wejdą też domknięcia czy upraszczając sprawę metody anonimowe ;-) Przydałoby się chyba jeszcze przeciążanie operatorów.
Moja rekomendacja: Jak nie znasz Java'y albo znasz tak sobie to warto się jej uczyć :-) Jeśli już znasz to pogłębiaj swoją wiedzę. Ciągle liczę, że Sun czy teraz Oracle da Java'ie kopa w górę i usprawni Swinga [bo to jest bardzo zacna biblioteka, dużo pozwala zrobić i jest ładna, ale żeby dobrze używać Swinga trzeba się z niego doktoryzować, a i tak w końcu się poddajesz i tworzysz GUI przy pomocy edytora prawie WYSIWYG [prawie bo oczywiście to, że w edytorze są takie, a nie inne wymiary wcale nie musi oznaczać, że w ostatecznym wyglądzie będzie tak samo].
Ale w zastosowaniach Enterprise Java będzie pewnie jeszcze jakiś czas królować np. dzięki bezwładności ;-) choć szybkość i przenośność też będą miały wpływ [i to większy :-)]. Java ma też to do siebie, że żeby w niej pisać trzeba być w miarę dobrym programistą [to wynik wnioskowania ;-) Ja piszę w Java'ie, ja z definicji jestem dobrym programistą ;-) czyli dobrzy programiści piszą w Java'ie ;-) [tak zdaję sobie sprawę z luk w tym rozumowaniu ;-)]]

JavaScript
JavaScipt jest wielki [mówię głównie o tym co widać z ECMAScript w przeglądarkach bo to jednak nadal jego główna emanacja ;-)], miło by było gdyby dodano do niego [i do HTMLa] parę rzeczy takich jak np. możliwość pracy na wyższym poziomie abstrakcji w GUI, coś w takim stylu, że chcę stworzyć diva z tekstem i guzikami w środku, to zamiast tworzyć np. DIV przez document.createElement użyłbym:
div = new DivElement(); div.add(new TextElement("Napis"));
button = new Button("tekst guziczka",function(){
div.style.display="none";
});
div.style.top=300;
div.style.left=300;
div.style.display="block";

Sam HTML mógłby się za to nabawić jakichś bardziej przyjaznych developerom elementów, takich jak nieśmiertelny ;-) ComboBox
Moja rekomendacja: Podobnie jak Java, na dodatek różne straszne rzeczy w stylu Flasha też używają ECMAScript ;-) Czy się to komu podoba czy nie JavaScript staje się coraz ważniejszy. Ziszcza się to czego chciałem 10 lat temu ;-) czyli przenosi się wiele działań serwera na stronę klienta, bo w końcu po co przesyłać klientowi wygląd całej strony jak można przesłać same dane, a JavaScript sobie wygeneruje zawartość strony? [z dumą podkreślę, że 10 lat temu sam na to wpadłem :-) i tak działa w dużej części BuffyPedia :-)]
Przez to JavaScript powoli acz skutecznie staje się podstawowym językiem sieci :-)

Python
Python jest fajny, ale mimo wszystko udziwniony ;-) Ja mam zawsze problem gdy w nim pisze przy użyciu notatnika czy czegoś podobnego bo strasznie dużo muszę się napisać i strasznie dużo spacji wstawić czy tabów ;-)
Toż IF z ELSE są straszne:
if number==1:
print("1");
else:
print("coś innego")

4 linijki na 1 prostego IFa to strasznie dużo ;-)
Moja rekomendacja: podpadnę pewnie, ale mimo wszystko, choć momentami jest to przyjemny język to chyba nie warto w niego inwestować zbyt wiele czasu, do WEBa wygodniej użyć np. Java'y, C# czy PHP, do aplikacji okienkowych praktycznie wszystko się lepiej nadaje, pozostają skrypty i np. proste serwerki, miło sobie to pokodować, ale czy jest to opłacalna inwestycja? Wątpię.

C++
C++ jest szybki, elegancki i piekielnie trudny. W C było prościej, w C++ to się komplikuje, szczególnie w sytuacji gdy masz pecha pisać dla MS Windows i używać musisz Microsoftowej notacji węgierskiej......... C++ zyskałby chyba BARDZO dużo gdyby ktoś go ściął w taki sposób, że zamiast 48 typów do trzymania tekstu byłby 1, no może 2 ;-)
Moja rekomendacja: Nie wiem jak wy, ale ja ciągle się chcę C++ nauczyć i to tylko z powodu "bo wypada", i takiego że gdybym chciał np. wziąć udział w pisaniu Firefoksa, OpenOffice.org czy Chrome to musiałbym użyć C++, skoro takie wspaniałe programy są pisane w C++ to ten język musi być wart nauki.

C#
C# jest ble, taki miks Java'y z Delphi, w którym pewnie dla przekory zdecydowano się zastosować inną konwencję nazewniczą i rozwalić wszystko w dziwny sposób po dziwnych bibliotekach przypisując wszystko praktycznie na stałe do jednego systemu operacyjnego [tak, wiem, jest Mono, ale ile znacie aplikacji w .NET, które działają na .NET Frameworku pod Windows i Mono pod Linuksem i wyglądają i działają tak samo?]. Jednak mimo mojej niechęci ;-) muszę przyznać, że C# się stara.
Moja rekomendacja: zagryźć zęby i się uczyć. Tak, człowiek może czuć się odrobinę brudny ;-) ale powiedzmy wprost nie ma prostszego sposobu na mały okienkowy programik niż napisać go w C#. Z jednej strony w miarę czytelny język, z drugiej WinForms, które są po prostu dobre i wygodne. Co ważne gdy umiesz napisać aplikację okienkową w WinForms to prawie natychmiast potrafisz też napisać podobną aplikację na cokolwiek z Windows Mobile [które podobno jest w odwrocie, ale to już inna historia], umiejętność korzystania z ASP.NET też łatwo wchodzi ;-)

Co tam jeszcze jest?

PHP
Moja rekomendacja: zostaw, nie warto, te 8 lat temu to było coś, ale teraz? I nie chodzi o sam język [choć obrzydliwego $ przed zmiennymi mu nie daruję ;-)], a o developerów. Każdy dzieciak, który zakodował więcej iż 100 linii w PHP go "zna", a przez to ktoś kto zna go świetnie i umie w nim czarować [podobno pierwsza wersja GMAILa czy Google Calendar była napisana w PHP] jest automatycznie klasyfikowany do grupy tych wannabe programistów.
Inna sprawa do czego go chcesz używać, przecież do zrobienia prostej stronki sklepu nie będziesz używać kolosów w stylu Java'y czy ASP.NET, zrobisz to elegancko w PHP i użyjesz MySQLa do trzymania danych. Czyli PHP tak jak chcesz robić takie rzeczy. Ja nie chcę więc dla mnie jest na nie :-)

Ruby
Moja rekomendacja: brak zdania, sam język mi się nie podoba, ale to tylko problem "estetyki" i jak będzie trzeba to się go nauczę :-) Inna sprawa, że Ruby jest z nami od 15 lat i nadal nie jest wiodącą technologią [.NET wypłynął w 2002 roku i jest już o wiele bardziej popularny], są jednak Railsy, które mają 5 czy 6 lat i coś tam zrobiły na rynku. Więc nie mam zdania, warto się przyglądać chyba ;-)

Delphi
W Delphi pisałem długo, choć przyznaję, że nieumiejętnie ;-) za dużo w tym było Turbo Pascala, a za mało Object Pascala ;-)
Moja rekomendacja: niby szybkie, niby fajne środowisko, ale chyba sam Borland w nie nie wierzył bo jak jeszcze była ich to zabili Kyliksa i nie ma wersji dla Linuksa [OK, inna sprawa, że się wtedy sam Borland przejechał na tym hypie Linuksowym, kiedy to Linux już miał wchodzić pod strzechy, tylko, że nie wszedł, i teraz nie jest w stanie gonić nawet Mac'a który ma od 4 do 8 razy większy udział w rynku desktopów] przez co jesteś uwiązany/uwiązana do Windows, co w przypadku np. softu serwerowego jest do bani. Bo w pewnym momencie staniesz przed wyborem czy porzucić swój kod i użyć czegoś bardziej przenośnego, czy pisać drugi produkt czy może udać, że poza Windows nic nie istnieje ;-) [OK, jest np. Free Pascal Compiler, czy Lazurus [który chyba jest tym samym, ale głowy nie dam ;-)] ale jakoś szczególnie popularne nie są].

Objective-C
Na Apple bez tego ani rusz. Sam język to tak na pierwszy rzut oka taki mutant z C, C++, C# i Java'y ;-)
Moja rekomendacja: chyba warto, nie znam, ale może to być źródło pewnego dochodu ;-) bo jak chcesz pisać na iPhone'a to nie masz innego wyjścia niż Objective-C [OK, są inne wyjścia, ale nie tak dobre], do tego to jest super ważny język dla MacOS'a.

VisualBasic
Koszmar, zawsze twierdziłem i twierdzę, że jeśli programista ma złe uczynki na sumieniu to po śmierci w piekle będzie programował w VisualBasic'u ;-)
Moja rekomendacja: omijać szerokim łukiem. Jeśli już chcesz to użyj C#. Swego czasu Sun próbował tworzyć [czy kilku inżynierów z Suna raczej] coś w stylu własnego VisualBasica........ na szczęście projekt chyba umarł ;-)


Podobne postybeta
HP7 bez manifestu ;-)
Najkrótsza droga do przyszłości - Polymer ;-)
A jednak Pythona warto ;-)
"Kodowanie" na Chrome OS ;-)
Swing - największe zło Java'y ;-)