[PL] Przyszłość języków. Wypowiedź Bruce’a Eckela, a .NET Framework


Przeczytałem sobie całkiem ciekawy artykuł jednej z osób, którą kiedyś uważałem za personę świata C++/Java. Piszę, że uważałem, ponieważ z tego świata dawno wypadłem w związku z tym trudno mi jakkolwiek oceniać.

Mowa o Bruce Eckel’u, autorze takich książek jak Thinking in C++ czy Thinking in Java.
Autor tego artykułu wywnioskował, że podobnie jak C++ także i Java jako język programowania przejdzie do historii i będzie musiał ustąpić miejsca językom nowszej generacji. Bruce cieszy się jednak bo stwierdza, że architektura JVM pozwala na łatwą migrację do nowszego języka przy zachowaniu istniejącej platformy.

Fajnie, tylko dla mnie żyjącego w świecie .NET Framework nie brzmi to jak jakakolwiek nowość. Już pierwsze .NET Framework w postaci CLR miało takie założenia. .NET Framework od samego początku jest niezależne językowo wprowadzając najpierw całą rodzinę języków, które albo są naturalną ewolucją spuścizny historycznej Microsoft (VB.Net), albo nowymi bytami stworzonymi jako core aktualnej wersji platformy (C#), czy też elementy języków z innych platform pomocne przy migracji (J#). Nie było problemu, aby zrezygnować z języków, które się w praktyce nie przyjęły (J#) czy bez żadnej bolączki dla platformy i jej ciągłości wprowadzać nowe, jak np. języki dynamiczne, o których wspomina Bruce Eckel (Python czy Ruby). Po prawdzie .NET Framework 4.0, który na starcie ma wspierać 16 języków programowania jest dla mnie dowodem na stabilność i dojrzałość tego zamysłu.

Jeśli Bruce Eckel (jak wspomniałem dla mnie przynajmniej historyczny spec od Javy) wyraża optymizm, że Java dopiero jest gotowa na przyjęcie takiego podejścia pokazuje mi nic innego jak fakt, że są jednak trochę z tyłu.

Kiedyś miałem takie podejście do swojego kunsztu programowania, że “dobry programista raz na rok powinien poznać nowy język programowania”. Dla zabawy, dla nauki, dla być może kolejnego projektu.. jakkolwiek prawda jaka się za tym kryje to fakt, że nie ma najlepszego języka programowania, zawodowy programista powinien umieć szybko i sprawnie manewrować pomiędzy nimi, jak lingwista czy zwykły poliglota w komunikacji między różnymi narodami tak programista powinien być takim poliglotą w kwestii komunikacji z komputerem. .NET Framework polubiłem te lata temu właśnie dlatego, że w odpowiedzi na tak postawiony problem dostawałem: a pisz sobie w czym chcesz, byle na końcu było spójne rozwiązanie.

Po treści tego artykułu, napisanego właśnie przez Bruce’a doszedłem do wniosku, że albo świat Javy wg. niego nagle się obudził z jakiegoś snu, albo może Bruce Eckel coś przespał i nagle dokonał jakiegoś “odkrycia”. Prawda pewnie jak zwykle pewnie jest po środku.

Link do źródeł:
http://www.artima.com/weblogs/viewpost.jsp?thread=252441


Comments (4)

  1. Dziękujemy za publikację – Trackback z dotnetomaniak.pl

  2. Kuba (Gutek) napisał komentarz, którego (nie mam pojęcia czemu) Community Server nie przyjął.

    Uczciwie i bez zmian przeklejam a odniosę się do niego już w osobnym własnym komentarzu:

    —-

    Co do tego ze .NET jest do przodu. to nie prawda. My dopiero dochodzimy do mozliwosci kozystania z takich jezykow jak Ruby, Python, F# itp itd. W opariu i virtual machine Javy juz od dawna powstaja jezyki takie jak chociazby cytowany przez Eckela Groovy.

    Raczej bym powiedzial, ze srodowisko .NET wkoncu zauwazylo iz takie cos moze istniec i moze byc przydatne.

    Fajnie ze MS tez to zauwazyl i stworzyl DLR, ktory znaczaco ulatwia pisanie nowego jezyka.

    Ale to ze .NET wyprzedzil Jave to troche niepoprawne stwierdzenie. Eckel zreszta nie mowi ze dopiero teraz jest to co sie dzieje, ale to juz sie dzialo od kiedy powstala virtualna maszyna Javy. na tym polega roznica pomiedzy srodowiskiem open source a zamknietym jak .NET.

    Wiec przykro mi Danielu 🙂 ale w .NET to mamy od "roku" zas w Javie od zawsze 🙂

    Zreszta przyklad jezyka Python, wkoncu autor uwazal ze na Javie bedzie to lepiej dzialalo swojego czasu bo zreszta sam kozystal z implementacji Python na wirtualnej maszynie. Dopiero potem jak zobaczyl ze na .NET to nawet szybko dziala to MS go zatrudnil 🙂

    Czyli MS byl z tylu a teraz dogania wychodzad na przod z takimi rzeczami jak DLR jak i gotowymi implementacjami jezykow F#, IronRuby, IronPython itp itd. i fajnie 🙂

    Gutek

    —-

  3. Kuba,

    Nie chciałem wcale wykazać który język jest do przodu, a który do tyłu tylko tak zaciekawiła mnie refleksja Eckela, który wieszczy Javie śmierć i jedyną nadzieję widzi na poziomie JVM.

    Jak wspomniałem prawda zapewne jest po środku i nie chcę się sprzeczać, która platforma jest lepsza, a która jest gorsza.

    Nie chcę się też sprzeczać o to czy .NET jest zamknięty a Java otwarta (od roku or so?) bo to jest argument wydaje mi się nie fair.

    Specyfikację .NET ma otwartą, powstają otwarte alternatywy, jak chcesz zobaczyć jak .NET wygląda od środka to źródła też zobaczyć każdy może. Że core jest rozwijany tylko przez Microsoft to tylko wynik takiej a nie innej strategii firmy. Sun miał podobną jeszcze do niedawna zanim oddał źródła Javy społeczności. Period.

    To co mnie zdziwiło to fakt, z którym się z Tobą nie zgadzam trochę albo się nie zrozumieliśmy. CLR od samego początku zaklada architektonicznie niezależność od konkretnego języka programowania. To, że niedawno powstał DLR i dodatkowe języki to tylko naturalna konsekwencja rozwoju platformy.

    To wcale nie oznacza, w przypadku .NET, że to z automatu tym starym wieszczy się śmierć. Istniejące języki dostają w prezencie nowe elementy, które czasem są miłe, czasem mogą śmiecić kod a czasem po prostu nie zauważamy różnicy. Przez uwzględnienie w architekturze tego ważnego elementu od samego początku .NET mam na myśli, że to nie tylko byte kod i garbage collector jest wspólnym mianownikiem dla nich, ale własnie szeroko rozumiany fundement platformy, który CLR pokrywa. Dlatego wypowiedź Bruce’a Eckela mnie trochę zadziwiła jako bądź co bądź specjalistę ze świata Javy, który to tak albo uprościł, albo w tej wypiedzi odkrył koło na nowo ;).

    Bruce wieszczy śmierć Javie (jako językowi programowania), a C# przez takie a nie inne założenia rozwija się w najlepsze. Nie chcę znów polemizować, który język jest lepszy, a który gorszy.. it really doesn’t matter. Natomiast sam fakt, że język ma umrzeć i pozostanie tylko z niego legacy kod stwierdził i Eckel i prasa:

    http://www.businessweek.com/technology/content/dec2005/tc20051213_042973.htm

    już dawno temu, więc pytanie do Ciebie jeśli dobrze jeszcze nadąrzasz za zmianami w Javie czy zmiana języka spowoduje tam bezbolesne przejście na te "nowe języki" tak aby rozwijane od dawna aplikacje i rozwiązania mogły być dalej rozwijane w jakimkolwiek języku kolejne pokolenia programistów będą chciały je dalej rozwijać?

  4. brainless says:

    Jeśli Bruce Eckel (jak wspomniałem dla mnie przynajmniej historyczny spec od Javy) wyraża optymizm, że Java dopiero jest gotowa na przyjęcie takiego podejścia pokazuje mi nic innego jak fakt, że są jednak trochę z tyłu.

    A w którym miejscu Bruce stwierdza, że Java "dopiero jest gotowa", bo chyba umknęło mi to ;-P

    A tak w ogóle, to troszkę nadinterpretujesz ten artykuł.

    Jak każdy język (C# i VB też) Java na pewno odejdzie lub przekształci się w coś Javopodbnego ale opartego na nowych elementach, w które zostaną wyposarzone języki programowania.

    Moim zdaniem Java raczej nie była do tyłu, sprawdź sobie kiedy powstała Java a kiedy .NET.

    Do tego dochodzi ważna kwestia: czy twoim zdaniem .NET jest na prawdę przenośny?

    Co z tego, że nie jest związany z językiem, skoro jest związany z platformą.

    Do tego, to 16 języków to jest bardziej propaganda. Nie dajcie się zwariować ;-P

    IronRuby to jeszcze zabawka.

    A co do "pisz sobie w czym chcesz" to też troszkę przesadzasz.

    W poważnej pracy liczy się tylko język, ale także wsparcie IDE, dodatkowych narzędzi itd.

    Weźmy np. Boo. Język jest super, ale wspracie Visual Studio na prawde marne.

    Weźmy np. R#. Bardzo długo nawet VB.NET to był obywatel drugiej kategorii !!!

    Moim zdaniem jeśli ktoś myśli poważnie o .NET, to póki co ma do wyboru C# lub VB.NET, reszta to na razie zabawki, których firmy robiące software (zwłaszcza w PL) nie zauważą jeszcze baaardzo długo.

    Co do utrzymywania starego kodu, to nie ma znaczenia czy to będzie kiedyś Java czy "starty dobry" C#, bo nikt nie będzie podchodził z entuzjazmem do starych technologi (kiedy odejdą za 10, 15 lat)

Skip to main content