[PL] Ulubiony język programowania


Zastanawiałem jaki tytuł nadać temu wpisowi, powyższy mi nie pasuje, ale niech zostanie 🙂

Nie pasuje mi, bo sugeruje, że mam jakiś ulubiony język. Nic bardziej błędnego - dawno temu już wyrosłem z flame'ów o jedyny słuszny język. Tego typu retoryka jest dla mnie tak zabawnie pustosłowna jak kłocenie się dwóch zacietrzewionych technokratów z preferencjami w schemacie: Windows vs. Linux, DirectX vs. OpenGl i tak dalej.

Jednak na DDJ znalazłem artykuł, przez który taki a nie inny temat i tytuł na kolejny wpis nasunął mi się sam w sobie.

Nie chcę też pytać czy sami macie jakiś "ulubiony" język. W tym temacie ja mam uniwersalną odpowiedź: Dobry programista potrzebuje tylko trochę czasu na naukę, ćwiczenia i popełnianie błędów i powinien umieć nauczyć się każdego języka i platformy. Ba moim zdaniem dobry programista raz na rok powinien spróbować nowego języka choćby dla paru pierdółek na własne potrzeby, aby poczuć czy ten cały hype czy też jego własna ciekawość ma sens przy poważniejszych zadaniach.

To co natomiast można by analizować i o czym w skrócie jest artykuł u Dobbs'a to popularność języków.

Nie wiem jak was, ale mnie parę wniosków nie zaskakuje:
1) C/C++ traci na sile (cyt. "C and C++ are definitely losing ground")

Nihil novi.. Po mojej stronie sam ostatnio przez chwilową nawrotkę na C/C++ poczułem jak cierpię 🙂 Przyznam się skrycie, że ciągle jeszcze ten wspomniany wcześniej "TheFramework" rozwijam i jestem na etapie add-in'a do Visual Studio, który będzie wspierał mój własny silniczek do unit testów.

W zasadzie sam nie wiem po co go piszę 🙂 pewnie tylko dlatego, że "mogę" 🙂 bo google/live.com dało by mi parę gotowych rozwiązań. Drugi powód to fakt, że chciałbym się nauczyć sprawnie robić add-in'y do VS.Net. Jaki by nie był powód, mniejsza o to.. 🙂

Po tych zabawach z C++, dla mnie to Assembler naszych czasów. Assembler - ponieważ jedyny sens jaki widzę w wykorzystaniu tego języka to pisanie nisko-poziomowych systemowych "rzeczy". Na dalszy wakacyjny etap zabaw z C++ nabyłem nawet "Windows via C/C++ 5th ed." napisaną przez Jeffreya Richtera oraz Christophe'a Nassare.

Jak wstepnie przekartkowałem sobie książkę, to w ramach jednozdaniowej recenzji już mogę stwierdzić, że to dla mnie silniejsza programistycznie aktualizacja Windows Internals Russinovicha. API ewoluwowało. Mamy czasy 64bitów, Windowsa Visty oraz Server 2008. Mamy czasy procesorów wielordzeniowych i silniejszego nacisku na SMP. Mamy zmiany w zarządzaniu wirtualną pamięcią. Te wszystkie rzeczy są uwzględnione w wyżej wymienionej książce i tak porównując tematy z Windows Internals pozwoliłem sobie ją podsumować dokładnie w ten sposób.

Na temat C/C++ nie chcę się powtarzać więc może przejdziemy do następnych wniosków z artykułu.

2) Python w pierwszej 10tce najpopularniejszych. (cyt. "Only Python entered the top 10, replacing COBOL")

No w takim zestawieniu (z COBOLEM) to tak nieskromnie stwierdzę: najwyższa pora?!
Na temat COBOLa to jakiś czas temu czytałem ciekawy artykuł w CrossTalku, który odnalazłem dzięki blogowi Joel on Software.
Na temat tego wpisu już zresztą też napisałem jakiś czas temu komentarz.
Nie wiem jak wy, ale ja "przeleciałem" całe studia i COBOLa na oczy nie widziałem (a przynajmniej świadomie nie zauważyłem). Mój okres akademicki to przełom ostatnich wieków.

Wracając do Pythona, ostatnio często wdaję się w dysputy na ten temat, choć od razu przyznam, że wielkim specem od Pythona nie jestem. Jakoś nie mam zaufania do języków dynamicznych (może się starzeję :>).

Język ma jednak dużego hype'a i z ciekawości po prostu zapytam - jeśli go wykorzystujecie to do jakich typów rozwiązań? Ja pythonowe rozwiązania, które miały ręce i nogi widziałem głównie w Web'ie, platformie do skryptów z wykorzystaniem dla adminów i także w gamedevie do skryptowania AI (na przemian z LUA).

Ostatnio rozmawiałem z jednym takim młodym pasjonatem programowania, który nie mógł zrozumieć że nie zgadzam się z nim, że Python to najlepsiejszy język programowania do wszystkiego co można sobie wyobrazić. Z drugiej strony nie miał chyba szans na podanie takich argumentów, które choć trochę by mnie przekonały (zwłaszcza z nastawianiem, że nie ma takiej jednej rzeczy, która jest najlepsza do wszystkiego :D).

Zatem pytanie pozostaje otwarte, ponieważ dostrzegam popularność, aczkolwiek jako osoba, która jako praktyk w projektach zatrzymała się na patternach, OOP/OOD i platformach zarządzanych przyznam, że lubię w takich dyskusjach robić za "pionizator" 🙂

3) W niedalekiej przyszłości dominować będą Java, C# i Visual Basic (cyt. "I expect in five years time there will be two main languages: Java and C#, closely followed by good-old Visual Basic")

To mnie akurat nie zaskakuje i jeśli miałbym inwestować swój czas w coś co ma realne pokrycie na rynku pracy to raczej patrzyłbym głównie na te 3 języki (przy aplikacjach biznesowych oczywiście :>)

Java i C# naprawiają to, co nie działało w C++ i są już dojrzałymi platformami z solidnym wsparciem dostawców. Jakby kogoś dziwiło dlaczego tutaj jest Visual Basic to dam swoją własną odpowiedź, gdy sam zaczynałem pracę te lata temu. Z pasją i fanboyostwem na C/C++, z dziecinnym, demoscenowym uporem na nazywanie wszystkiego "lame" co nie mieści się w moich ramkach "eleet" wpadłem w sidła firmy, w której rozwijano solidny i duży system magazynowy napisany w Visual Basicu 5, potem zmigrowany do 6 (pod koniec lat 90tych).

Powiem tak. Na początku oniemiałem i nie mogłem uwierzyć, że jakikolwiek komercyjny produkt może być napisany w Visual Basicu. Potem oczywiście zająłem się pracą i odkryłem, że pisze się szybko, w porównaniu z alternatywnymi rozwiązaniami RAD platforma jest intuicyjna, elastyczna, pozwala debugować w locie. Dostawałem garbage collector i namiastkę platformy zarządzanej, która nie miała takiego narzutu na wydajność jaką wtedy oferowała Java. Jak podsumowałem wszystkie za/przeciw to doszedłem do wniosku, że jedyne co mam przeciwko to moje prywatne "fiu bziu" i "widzi mi się". Spasowałem i zacząłem bronić VB wszędzie gdzie mogłem 🙂

Czasy się trochę zmieniły, ale naturalną ścieżką migracji dla starych aplikacji w VB jest VB.Net. Zostaje swoboda i elastyczność a dochodzi potęgą .NET Framework i interoperability z innymi językami w ramach .NET i COM. Cóż więcej chcieć aby zbudować siłę i wdrożyć nowego programiste do pracy w tydzień?
No przecież jak ktoś śmiga w C/C++ i nie nauczy się Basic'a "w tydzień" to przecież sam sobie w oczy w lustrze nie spojrzy 😀

Podsumowując, spojrzałem na omawiany w artykule indeks TIOBE.
Trochę podumałem, trochę się też pozaskakiwałem..

Pozycję Pole Position i na dalszych pozycjach w miarę zgodne z wydźwiękiem artykułu.
Wybauszyłem oczy jak zobaczyłem język, który nazywa się "D". Od razu miałem skojarzenia z Amigą i tamtejszym wynalazkiem, który myślałem, ze nazywał się właśnie D. Tamten język z tego co pamiętam jednak nazywał się "E", więc napewno rozmawiamy o czymś innym, tak czy siak czy ja coś przespałem czy jakiś niszowy język się tam przebija?

Więcej takich nazw języków i niedługo się w literkach zgubię: C, C++, D, E, F#, J#.. pycha 🙂

Interesujący wzrost TIOBE zaznaczony jest przy Pascalu oraz FoxPro.

Z naszej strony (Microsoft) Visual FoxPro stał sie projektem community luźno puszczonym w świat. Z rynku raczej widzę poszukiwania drogi wyjścia z tej technologii (w czym jakby co chętnie pomogę :>).

Pascal wydzielony od Delphi.. czyżby wszyscy twórcy rogue-like'ów napisanych w FreePascalu opanowali świat? 😀

No nic.. odnośniki macie, więc można sobie samemu podumać. Tylko proszę, nie miejcie ulubionego języka, który jest najlepszy do wszystkiego 😀

[Za to mam nadzieję, że macie ulubioną platformę jako całość potrzebną do wykonania zleconych wam zadań]

Przy okazji (za w czasu) Miłego Długiego Weekendu wam życzę.
Mój jest spod znaku przeprowadzki ze stolycy na podwarszawską wieś. No zobaczymy jak to przeżyję 🙂



Comments (8)

  1. Łukasz says:

    Fajny wpis, a jak już piszesz o długim weekendzie.. to mój jest spod znaku matura 🙂

  2. Powodzenia w egzaminach zatem! :). Weź dwa dlugopisy jako twój backup plan. Wszyscy wredni wokół zawsze życzą, aby Ci się pierwszy połamał. Co jak się połamie? 😀

  3. @rel says:

    Łukasz: powodzenia

    co do języków bardzo ciekawy wpis. Osobiście mam pewne preferencje co do języków ale wynikają one głównie z możliwości zrobienia sobie krzywdy w danym języku – dlatego od zawsze byłem przeciwnikiem C/C++ i szalikowcem Pascala potem Javy a teraz C# VB też nie jest kiepski ale ostatnio pokazał mi się z brzydkiej strony o czym mam nadzieję wkońc u uda mi się opisać na swoim "blogu"

  4. To czekam na wpis na blogu zatem i linka, abym mógł się zapoznać 🙂

    Szalikowiec Pascala – to brzmi bardzo groźnie 🙂

  5. Witam,

    Też czytałem ten artykuł o językach. Bardzo podoba mi się F#, niestety nawał pracy w C#, PHP, MySQLu, TSQLu oraz Silverlight i XNA jakoś niepozwala zająć się językami funkcyjnymi na poważnie.

  6. Liosan says:

    Fajna analiza… ale dość jednostronna – istnieją inne zastosowania języków programowania niż biznesowe. Np w kwestii gier komputerowych C++ trzyma się bardzo mocno; być może ustąpi w przeciągu paru lat C# lub Javie, ale to jest raczej rzędu 10 ni 5 lat.

  7. Jasne 🙂

    Wcześniej gdy pisałem o swojej nawrotce na C++ wspomniałem, że jednym z nielicznych solidnych ratunków dla C++ jest właśnie gamedev.

    Tylko MS solidnie pracuje nad tym aby przygotować grunt pod poważną platformę zarządzaną dla gamedev (XNA), ale to jeszcze długo pewnie zanim będzie to miało szanse zabić native programming (jeśli w ogóle) :>

  8. michal.m.pl małpa gmail.com says:

    Witam!

    Co do "D" to całkiem przyjemny język, właśnie sie go uczę. To jakby poprawione C++, nie jest kompatybilny wstecz z C/C++, ale da sie  podobno jakoś te kody łączyć (pewnie na poziomie bytecodu). Ma garbage collector, prawdziwe moduły, bogątą i szybką biblioteke standardową (właściwie 2 – oficjalną i lepszą społecznościową). Interfejsy i całą masę innych rzeczy których w C/C++ brakowało. warto poczytać:

    http://www.digitalmars.com/d/

    Jest prawie tak szybki jak C/C++:

    http://shootout.alioth.debian.org/gp4sandbox/benchmark.php?test=all&lang=dlang&lang2=gpp

    Co do programowania funkcyjnego F# to tak naprawdę microsoftowa wersja OCamla. Polecam oryginał ;). nie wiem czemu na studiach pomijają teraz prawdziwe programowanie funkcyjne, można sobie sporo czasu zaoszczędzić dzięki temu. W wersji "maszynowej" jest niewiele wolniejszy od C++ – można sprawdzić na tej stronce z linku powyżej. Co ciekawe OCaml pozwala pisać aplikacje jednocześnie obiektowo, proceduralnie i funkcyjnie, dodatkowo ma ide podobne do pythona, a programy można kompilować do bytecodu, kodu maszynowego, albo uruchamiać jako skrypty. Ma też bogata bibliotekę standardowa z Tk włącznie. Pisałem ten sam program w Pythonie i OCamlu i ta 2 wersja wyszła sporo krótsza. 😉

    Python też jest spoko, jeśli ktoś narzeka na mała wydajność języków skryptowych to niech poczyta o Pyrexie. ;P

Skip to main content