Это эссе выросло из разговоров с несколькими другими программистами о том, почему Java вызывает подозрения. Это не критика Java! Это исследование того, как работает хакерское чутьё.
Со временем у хакеров развивается нюх на хорошие (и плохие) технологии. Я подумал, что было бы интересно попытаться записать, почему Java показалась мне подозрительной.
Некоторые люди, прочитавшие это, считают, что это интересная попытка написать о том, о чём раньше никто не писал. Другие говорят, что у меня будут неприятности из-за того, что я якобы пишу о вещах, в которых не разбираюсь. Поэтому, на всякий случай, позвольте мне пояснить: я пишу здесь не о Java (которую я никогда не использовал), а о хакерском чутье (о котором я много думал).
Афоризм «не суди о книге по обложке» возник в те времена, когда книги продавались в простых картонных обложках, чтобы каждый покупатель мог переплести их по своему вкусу. В те дни о книге действительно нельзя было судить по обложке. Но издательское дело с тех пор шагнуло вперёд: современные издатели упорно трудятся над тем, чтобы по обложке как раз и можно было судить о книге.
Я провожу много времени в книжных магазинах и чувствую, что к настоящему моменту научился понимать всё, что издатели хотят мне сказать о книге, и, возможно, даже чуточку больше. Время, которое я не проводил в книжных магазинах, я в основном проводил перед компьютерами, и мне кажется, что я в какой-то степени научился судить о технологиях по их «обложке». Возможно, это просто удача, но я уберёг себя от нескольких технологий, которые оказались настоящей дрянью.
Пока что Java кажется мне дрянью. Я никогда не писал программ на Java, лишь мельком просматривал справочники по ней, но у меня есть предчувствие, что она не станет особо успешным языком. Возможно, я ошибаюсь; делать прогнозы о технологиях — опасное занятие. Но, как бы то ни было, в качестве своего рода капсулы времени, вот почему мне не нравится, как выглядит Java:
1. Её слишком активно раскручивают. Настоящие стандарты не нуждаются в рекламе. Никому не приходилось продвигать C, Unix или HTML. Настоящий стандарт, как правило, уже успевает утвердиться к тому моменту, когда о нём слышит большинство людей. На экранах хакерских радаров Perl столь же велик, как и Java, или даже больше, исключительно благодаря собственным достоинствам.
2. У неё низкая планка. В оригинальном техническом описании Java Гослинг прямо говорит, что Java создавалась так, чтобы не быть слишком сложной для программистов, привыкших к C. Она создавалась как ещё один C++: C плюс несколько идей, позаимствованных из более продвинутых языков. Подобно создателям ситкомов, фастфуда или пакетных туров, разработчики Java сознательно проектировали продукт для людей, которые не так умны, как они сами. Исторически сложилось так, что языки, созданные для использования другими людьми, оказывались плохими: Cobol, PL/I, Pascal, Ada, 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/I, Ada), проиграли, а хакерские языки (C, Perl) победили. Причина проста: сегодняшний подросток-хакер — это завтрашний технический директор.
10. Она нравится не тем людям. Программисты, которыми я восхищаюсь больше всего, в массе своей не в восторге от Java. Кому же она нравится? Корпоративным пиджакам, которые не отличают один язык от другого, но знают, что постоянно слышат о Java в прессе; программистам из крупных компаний, которые поражены тем, что существует нечто даже лучшее, чем C++; и студентам-натасчикам, готовым любить всё, что может помочь получить работу («а это будет на экзамене?»). Мнения этих людей меняются с каждым дуновением ветра.
11. Её создатель в затруднительном положении. Бизнес-модель Sun подрывается на двух фронтах. Дешёвые процессоры Intel того же типа, что используются в настольных компьютерах, сейчас более чем достаточно быстры для серверов. А FreeBSD, похоже, ничуть не уступает Solaris в качестве серверной ОС. Реклама Sun намекает, что для задач промышленного масштаба вам нужны именно серверы Sun. Если бы это было правдой, Yahoo стояла бы первой в очереди за серверами Sun; но когда я работал там, все серверы были машинами на Intel под управлением FreeBSD. Это не сулит ничего хорошего будущему Sun. Если у Sun возникнут неприятности, они могут потянуть Java на дно за собой.
12. Она нравится Министерству обороны. Министерство обороны США призывает разработчиков использовать Java. Это кажется мне самым убийственным признаком из всех. Министерство обороны отлично (хотя и дорого) справляется с защитой страны, но они обожают планы, процедуры и протоколы. Их культура прямо противоположна хакерской; в вопросах программного обеспечения они обычно делают неверную ставку. В прошлый раз, когда Министерству обороны действительно понравился язык программирования, это была Ada.
Имейте в виду, это не критика Java, а критика её обложки. Я недостаточно хорошо знаю Java, чтобы любить её или не любить. Это лишь объяснение того, почему я не горю желанием её изучать.
Отказ от языка ещё до того, как вы попробовали написать на нём хоть одну программу, может показаться легкомысленным. Но это то, что приходится делать всем программистам. В мире слишком много технологий, чтобы изучить их все. Приходится учиться по внешним признакам определять, какие из них стоят вашего времени. Точно так же легкомысленно я в своё время отмёл Cobol, Ada, Visual Basic, IBM AS400, VRML, ISO 9000, протокол SET, VMS, Novell Netware и CORBA, среди прочих. От них просто дурно пахло.
Возможно, в случае с Java я ошибаюсь. Возможно, язык, продвигаемый одной крупной компанией с целью подорвать позиции другой, разработанный комитетом для аудитории «мейнстрима», расхваленный до небес и любимый Министерством обороны, каким-то чудом окажется чистым, красивым, мощным языком, программировать на котором мне бы понравилось. Такое может быть, но это представляется весьма маловероятным.