Java's Cover

Оригинал Перевод

Апрель 2001

Это эссе явилось развитием бесед с несколькими разработчиками на тему предвзятого отношения к Java. Это не критика Java, а скорее, наглядный пример «хакерского радара».

Со временем, хакеры развивают нюх на хорошие — или же плохие — технологии. Полагаю, может оказаться интересным попробовать изложить причины, по которым Java кажется мне сомнительной.

Кто-то из прочитавших расценивал это как заслуживающую внимания попытку написать о чем-то, о чем раньше никто не писал. Другие же предостерегали, что я пишу о вещах, в которых ничего не смыслю. Так что на всякий случай, хотел бы уточнить, что я пишу не о Java (с которой я никогда не работал), но о «хакерском радаре» (о котором много размышлял).


Выражение «не судите книгу по обложке» возникло во времена, когда книги продавались в чистых картонных обложках, которые покупатель переплетал по своему вкусу. В те дни вы ничего не могли сказать о книге по ее обложке. С тех пор, однако, издательское дело сильно продвинулось, и современные издатели прилагают немало усилий, чтобы обложка могла сказать о многом.

Я провел немало времени в книжных магазинах, и полагаю, научился понимать все, что хотят сказать мне издатели, а возможно, и кое-что еще. Большую часть времени, которую я проводил вне книжных магазинов, я провел перед экранами компьютеров, и полагаю, научился, в какой-то степени, судить о технологиях по их обложкам. Это может быть слепой удачей, но мне удалось избежать нескольких технологий, оказавшихся по-настоящему плохими.

Одной из таких технологий оказалась для меня Java. Я не написал ни одной программы на Java, и ограничился лишь поверхностным изучением документации, однако у меня есть чувство, что ей не суждено стать слишком успешным языком. Я могу ошибиться — делать предсказания о технологиях опасное дело. И тем не менее, своего рода свидетельство эпохи — вот почему мне не нравится Java:

1. Чрезмерный энтузиазм. Настоящие стандарты не требуется навязывать. Никто не пытался продвигать C, Unix или HTML. Истинные стандарты устанавливаются задолго до того, как большинство людей о них услышит. На радаре хакера Perl выглядит не меньше Java благодаря исключительно своим достоинствам.

2. Java метит невысоко. В оригинальном описании Java, Гослинг прямо говорит, что Java была создана, чтобы не вызывать затруднений у программистов, привыкших к Си. Она была разработана, чтобы стать очередным C++: С с несколькими идеями, заимствованными из более продвинутых языков. Как создатели ситкомов, фастфуда или туристических туров — создатели Java осознанно разрабатывали продукт для людей, не настолько умных, как они сами. Исторически, языки, разрабатываемые для использования другими людьми, оказывались неудачными: Кобол, PL/1, Паскаль, Ада, C++. Удачными, однако, оказывались те, которые создатели разрабатывали для себя: C, Perl, Smalltalk, Lisp.

3. Скрытые мотивы. Кто-то однажды сказал, что мир был бы лучшим местом, если бы люди писали книги только тогда, когда у них было бы что сказать, вместо того, чтобы писать тогда, когда им хочется написать книгу. Аналогично, причина, по которой мы все время слышим о Java не в том, что нам пытаются сообщить что-то о языках программирования. Мы слышим о Java как о части плана Sun по противоборству Microsoft.

4. Никто ее не любит. Программисты на C, Perl, Python, Smalltalk или Lisp влюблены в свои языки. Я никогда не слышал, чтобы кто-либо признавался в любви к Java.

5. Люди вынуждены использовать ее. Многие из тех, кого я знаю и кто использует Java, делают это по необходимости. Они считают, что это позволит им получить финансирование, или думают, что это понравится клиентам, либо это решение менеджмента. Это умные люди; если бы технология была бы хороша, они использовали бы ее добровольно.

6. Это блюдо многих поваров. Лучшие языки программирования были разработаны маленькими коллективами. Java управляется комитетом. Если она окажется удачным языком, это будет впервые в истории, когда комитет создаст такой язык.

7. Она бюрократична. Из того немногого, что я знаю о Java, создается впечатление, что существует множество протоколов для того, чтобы сделать что либо. По-настоящему хорошие языки не такие. Они позволяют делать вам что угодно и не стоят у вас на пути.

8. Искусственная шумиха. Сейчас Sun пытается сделать вид, что Java управляется сообществом, что это открытый проект, как Perl или Python. И однако, развитие контролируется огромной компанией. Так что язык рискует оказаться таким же унылым убожеством, что и все, выходящее из недр крупной компании.

9. Она создана для крупных организаций. У крупных компаний разные цели с хакерами. Компаниям нужны языки, обладающие репутацией подходящих для больших команд посредственных программистов. Языки с характеристиками вроде ограничителей скорости на грузовиках U-Haul, предостерегающих дураков от нанесения слишком большого ущерба. Хакеры не любят языки, говорящие с ними свысока. Хакерам нужна мощь. Исторически, языки, созданные для крупных организаций (PL/1, Ada) проигрывали, тогда как языки, созданные хакерами (C, Perl) выигрывали. Причина: сегодняшний малолетний хакер — завтрашний CTO.

10. Она нравится не тем людям. Программисты, которыми я больше всего восхищаюсь, в целом не в восторге от Java. Кому она нравится? Костюмам, тем, кто не видит разницы между языками, но постоянно слышит о Java в прессе; программисты в больших компаниях, захваченные идеей найти что-то лучшее, чем даже C++; всеядные преддипломники, которым понравится все, что позволит им получить работу (или окажется на экзамене). Мнение этих людей меняется с направление ветра.

11. У ее родителя тяжелые времена. Бизнес модель Sun атакуется с двух фронтов. Дешевые процессоры Intel, используемые в настольных компьютерах, стали достаточно быстры и для серверов. И FreeBSD, похоже, становится такой же хорошей ОС для серверов, как и Solaris. В своей рекламе Sun подразумевает, что вам понадобятся сервера Sun для приложений промышленного уровня. Если бы это было правдой, Yahoo первым бы занял очередь, чтобы купить Sun. Но когда я там работал, там использовались сервера на Intel и FreeBSD. Это сулит мрачное будущее Sun. И если Sun пойдет вниз, неприятности могу утащить на дно и Java.

12. Любовь Министерства Обороны. Министерство Обороны поощряет использование Java разработчиками. И это выглядит как самый дурной знак из всех. Министерство Обороны выполняет прекрасную (хотя и недешевую) работу по защите страны, они обожают планы, процедуры и протоколы. Их культура полностью противоположна хакерской; в вопросах программного обеспечения они склонны делать неверные ставки. Последним языком программирования, в который влюбилось Министерство Обороны, была Ada.

Учтите, это — не критика Java, но критика ее обложки. Я не знаю Java достаточно хорошо, чтобы чтобы она мне нравилась или не нравилась. Я всего лишь пытаюсь объяснить, почему не стремлюсь изучать Java.

Отбрасывать язык, даже не попытавшись программировать на нем может показаться поспешным. Но это то, что приходится всем программистам. Технологий слишком много, чтобы изучить их все. Приходится научиться судить по внешним признакам, будет ли оно стоить вашего времени. С такой же поспешностью я отбросил Cobol, Ada, Visual Basic, IBM AS400, VRML, ISO 9000, протокол SET, VMS, Novell Netware и CORBA — помимо прочих. Они просто не приглянулись.

Возможно, в случае Java я ошибаюсь. Возможно, язык, продвигаемый одной крупной компанией в целях противоборства с другой, разработанный комитетом для основной массы, с раздутой до небес шумихой и любимый Министерством Обороны тем не менее, окажется опрятным, красивым и мощным языком, на котором я буду программировать с радостью. Возможно. Но очень сомнительно.