Okładka Javy

Kwiecień 2001

Ten esej powstał na podstawie rozmów, które odbyłem z kilkoma innymi programistami na temat tego, dlaczego Java wydawała mi się podejrzana. To nie jest krytyka Javy! To studium przypadku radaru hakera.

Z czasem hakerzy wykształcają nosa do dobrej (i złej) technologii. Pomyślałem, że może być interesujące spróbować opisać, co sprawiło, że Java wydawała mi się podejrzana.

Niektórzy, którzy to czytali, uważają, że jest to interesująca próba napisania o czymś, o czym wcześniej nie pisano. Inni mówią, że będę miał kłopoty za to, że piszę o rzeczach, których nie rozumiem. Więc, na wszelki wypadek, gdyby to miało jakiś pożytek, pozwólcie, że wyjaśnię, że nie piszę tutaj o Javie (której nigdy nie używałem), ale o radarze hakera (o którym dużo myślałem).


Aforystyczne powiedzenie „nie oceniaj książki po okładce” wywodzi się z czasów, gdy książki sprzedawano w prostych kartonowych okładkach, które każdy nabywca oprawiał według własnego gustu. W tamtych czasach nie można było ocenić książki po okładce. Ale wydawnictwo od tego czasu poczyniło postępy: dzisiejsi wydawcy ciężko pracują, aby okładka była czymś, po czym można ocenić książkę.

Spędzam dużo czasu w księgarniach i czuję, jakbym do tej pory nauczył się rozumieć wszystko, co wydawcy chcą mi powiedzieć o książce, a może nawet trochę więcej. Czas, którego nie spędziłem w księgarniach, spędziłem głównie przed komputerami i czuję, jakbym do pewnego stopnia nauczył się oceniać technologię również po okładce. Może to tylko szczęście, ale uratowałem się przed kilkoma technologiami, które okazały się prawdziwymi bublami.

Jak dotąd Java wydaje mi się bublem. Nigdy nie napisałem programu w Javie, nigdy nie zerknąłem na podręczniki o niej, ale mam przeczucie, że nie będzie to zbyt udany język. Mogę się mylić; przewidywanie dotyczące technologii to niebezpieczne zajęcie. Ale za to, co jest warte, jako rodzaj kapsuły czasu, oto dlaczego nie podoba mi się wygląd Javy:

  1. Jest tak energicznie promowana. Prawdziwe standardy nie wymagają promocji. Nikt nie musiał promować C, Uniksa ani HTML. Prawdziwy standard jest zazwyczaj już ustalony, gdy większość ludzi o nim słyszy. Na radarze hakera Perl jest tak duży jak Java, a nawet większy, tylko dzięki swoim zaletom.

  2. Jest skierowana nisko. W oryginalnym białym papierze Javy Gosling wyraźnie mówi, że Java została zaprojektowana tak, aby nie była zbyt trudna dla programistów przyzwyczajonych do C. Została zaprojektowana jako kolejne C++: C plus kilka pomysłów zaczerpniętych z bardziej zaawansowanych języków. Podobnie jak twórcy sitcomów, taniego jedzenia czy wycieczek zorganizowanych, projektanci Javy świadomie projektowali produkt dla ludzi mniej inteligentnych od siebie. Historycznie rzecz biorąc, języki zaprojektowane dla innych ludzi były złe: Cobol, PL/I, Pascal, Ada, C++. Dobre języki to te, które zostały zaprojektowane dla ich twórców: C, Perl, Smalltalk, Lisp.

  3. Ma ukryte motywy. Ktoś kiedyś powiedział, że świat byłby lepszym miejscem, gdyby ludzie pisali książki tylko dlatego, że mają coś do powiedzenia, a nie dlatego, że chcą napisać książkę. Podobnie, powodem, dla którego ciągle słyszymy o Javie, nie jest to, że ma ona coś do powiedzenia o językach programowania. Słyszymy o Javie jako części planu Sun mającego na celu podważenie pozycji Microsoftu.

  4. Nikt jej nie kocha. Programiści C, Perl, Python, Smalltalk i Lisp kochają swoje języki. Nigdy nie słyszałem, żeby ktoś powiedział, że kocha Javę.

  5. Ludzie są zmuszeni do jej używania. Wielu ludzi, których znam, używa Javy, ponieważ czują, że muszą. Albo dlatego, że czuli, że muszą coś zrobić, aby zdobyć fundusze, albo dlatego, że myśleli, że klienci będą tego chcieli, albo dlatego, że kazali im to zrobić kierownictwo. To są inteligentni ludzie; gdyby technologia była dobra, użyliby jej dobrowolnie.

  6. Ma zbyt wielu kucharzy. Najlepsze języki programowania były rozwijane przez małe grupy. Java wydaje się być zarządzana przez komitet. Jeśli okaże się dobrym językiem, będzie to pierwszy raz w historii, kiedy komitet zaprojektował dobry język.

  7. Jest biurokratyczna. Z tego, co wiem o Javie, wydaje się, że istnieje wiele protokołów do wykonywania zadań. Naprawdę dobre języki tak nie działają. Pozwalają zrobić to, co chcesz, i zejść z drogi.

  8. Jest pseudo-modna. Sun udaje teraz, że Java jest oddolnym, otwartym projektem językowym, jak Perl czy Python. Ten akurat jest kontrolowany przez gigantyczną firmę. Więc język prawdopodobnie będzie miał tę samą nudną toporność, co wszystko inne, co wychodzi z dużej firmy.

  9. Jest zaprojektowana dla dużych organizacji. Duże organizacje mają inne cele niż hakerzy. Chcą języków, które są (uważa się) odpowiednie do użytku przez duże zespoły przeciętnych programistów – języków z funkcjami, które, podobnie jak ograniczniki prędkości w ciężarówkach U-Haul, zapobiegają wyrządzaniu przez głupców zbyt dużych szkód. Hakerzy nie lubią języka, który mówi do nich protekcjonalnie. Hakerzy chcą po prostu mocy. Historycznie rzecz biorąc, języki zaprojektowane dla dużych organizacji (PL/I, Ada) przegrywały, podczas gdy języki hakerów (C, Perl) wygrywały. Powód: dzisiejszy nastoletni haker to jutrzejszy CTO.

  10. Lubią ją niewłaściwi ludzie. Programiści, których najbardziej podziwiam, nie są w większości zafascynowani Javą. Kto lubi Javę? Biznesmeni, którzy nie odróżniają jednego języka od drugiego, ale wiedzą, że ciągle słyszą o Javie w prasie; programiści w dużych firmach, którzy są zdumieni, że istnieje coś jeszcze lepszego niż C++; oraz studenci, którzy chętnie polubią wszystko, co może im zapewnić pracę (czy to będzie na egzaminie?). Opinie tych ludzi zmieniają się z każdym wiatrem.

  11. Jej ojciec jest w tarapatach. Model biznesowy Sun jest podważany na dwóch frontach. Tanie procesory Intel, tego samego typu, co używane w komputerach stacjonarnych, są teraz wystarczająco szybkie dla serwerów. A FreeBSD wydaje się być co najmniej tak dobrym systemem operacyjnym dla serwerów jak Solaris. Reklamy Sun sugerują, że potrzebujesz serwerów Sun do zastosowań przemysłowych. Gdyby to było prawdą, Yahoo byłoby pierwszym w kolejce po Suny; ale kiedy tam pracowałem, serwery były wszystkie maszynami Intel z uruchomionym FreeBSD. To źle wróży przyszłości Sun. Jeśli Sun wpadnie w kłopoty, może pociągnąć ze sobą Javę.

  12. DoD ją lubi. Departament Obrony zachęca deweloperów do używania Javy. To wydaje mi się najbardziej miażdżącym znakiem ze wszystkich. Departament Obrony wykonuje dobrą (choć kosztowną) robotę w obronie kraju, ale kocha plany, procedury i protokoły. Ich kultura jest przeciwieństwem kultury hakera; w kwestiach oprogramowania będą skłonni postawić na złe rozwiązanie. Ostatnim razem, gdy DoD naprawdę polubił język programowania, był to Ada.

Należy pamiętać, że nie jest to krytyka Javy, ale krytyka jej okładki. Nie znam Javy wystarczająco dobrze, aby ją polubić lub nie polubić. To tylko wyjaśnienie, dlaczego nie czuję się chętny do jej nauki.

Może się wydawać lekkomyślne odrzucenie języka, zanim jeszcze spróbowało się w nim napisać programy. Ale to coś, co wszyscy programiści muszą robić. Istnieje zbyt wiele technologii do nauczenia się ich wszystkich. Trzeba nauczyć się oceniać po zewnętrznych oznakach, które będą warte naszego czasu. Podobnie lekkomyślnie odrzuciłem Cobol, Adę, Visual Basic, IBM AS400, VRML, ISO 9000, protokół SET, VMS, Novell Netware i CORBA, między innymi. Po prostu pachniały źle.

Może się zdarzyć, że w przypadku Javy się mylę. Może się zdarzyć, że język promowany przez jedną dużą firmę w celu podważenia pozycji innej, zaprojektowany przez komitet dla odbiorcy „mainstreamowego”, wychwalany pod niebiosa i uwielbiany przez DoD, mimo to okaże się czystym, pięknym, potężnym językiem, w którym pokochałbym programować. Może się tak zdarzyć, ale wydaje się to bardzo mało prawdopodobne.