Пол Грэм про Java и «хакерские» языки программирования (2001)

Original author: Paul Graham
  • Translation
image

Это эссе явилось развитием бесед с несколькими разработчиками на тему предвзятого отношения к 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 я ошибаюсь. Возможно, язык, продвигаемый одной крупной компанией в целях противоборства с другой, разработанный комитетом для основной массы, с раздутой до небес шумихой и любимый Министерством Обороны тем не менее, окажется опрятным, красивым и мощным языком, на котором я буду программировать с радостью. Возможно. Но очень сомнительно.

За перевод спасибо: Denis Mitropolsky

P.S.


Support the author
Share post
AdBlock has stolen the banner, but banners are not teeth — they will be back

More
Ads

Comments 19

    +2
    жесть, поставить C++ на уровень Паскаль и Кобол…
      +1
      Плюсы многие хардкорщики ругают
        +2
        Кто эти многие «хардкорщики»? Назови хоть один язык который не ругают.
        С++ это язык с гиганским комьюнити, в группу по стандартизации которого входят все самые крупные IT компании. Ему уже больше 20 лет и он всё ещё продолжает активно развиваться и использоваться во всех областях. Ни один язык не охватывает такое количество отраслей и не имеет такой поддержки со стороны IT индустрии
        • UFO just landed and posted this here
            0
            Назови хоть один язык который не ругают.

            Тот, которым никто не пользуется.
        +5

        Некромантия — вытащить статью из 2001 года. С тех пор и Java изменилась, и сообщество, да и сам Пол Грэм, возможно, тоже.

          +1
          Не, ну отчего же. Наоборот, очень полезно оценить, чего как правило стоят подобные прогнозы.
        • UFO just landed and posted this here
            0

            Я не думаю, что Страуструп не программирует на C++.

              +4
              1. «Настоящие стандарты не требуется навязывать» — да какая разница, если навязывание пройдет успешно.
              2. «языки… оказывались неудачными — Кобол, С++. Удачными: Perl, Smalltalk» — мда-а…
              3. «Мы слышим о Java как о части плана Sun по противоборству Microsoft» — да ладно! По сравнению с предыдущими (кроме Delphi), это было большим шагом вперед. Грэм этого не разглядел?
              4. «Никто ее не любит» — хобби не всех может прокормить. А работа — может.
              5. «Люди вынуждены использовать ее» — противоречит «однако у меня есть чувство, что ей не суждено стать слишком успешным языком».
              6. «Если она окажется удачным языком, это будет впервые в истории, когда комитет создаст такой язык» — самое смешное, что это вообще почти самый популярный язык.
              7. «По-настоящему хорошие языки не такие. Они позволяют делать вам что угодно и не стоят у вас на пути.» — всё понятно, Грэм никогда не работал над большими проектами в больших командах.
              8. «И однако, развитие контролируется огромной компанией» — противоречит п.6.
              9. «Компаниям нужны языки, обладающие репутацией подходящих для больших команд посредственных программистов» — противоречит «сегодняшний малолетний хакер — завтрашний CTO».
              10. «Она нравится не тем людям» — главное, что она нравится «большим компаниям».
              11. «И если Sun пойдет вниз, неприятности могу утащить на дно и Java.» — уж конечно, одинокого хакера вниз утащить невозможно.
              12. «Последним языком программирования, в который влюбилось Министерство Обороны, была Ada» — вот оказывается кто убил Аду…
              Но в целом интересно написано. Чувствуется хакер…
                –5
                1. В том, что программист не будет получать удовлетворение от своей работы и будет выгорать.
                2. С++ же вырвиглазный с его бесконечными <<<>>>, он существует для реализации бизнес логики, достаточно эффективно для процессора. При этом он не слишком эффективен для бизнеса, но посредственным программистам восстающим против системы, нужно ведь на чём то писать? Си они не осиливают.
                3. Для хакера нынешние шаги вперёд это дорога в болото. Язык для толпы codemonkey, не имеющих широких взглядов. Тебе не нужно ничего знать, blackbox всё сделает за тебя!
                4. Опять же речь о прошлом, когда именно хакеры строили фундамент цифрового мира.
                5. Вынужденный использовать Java хакер не долго продержится на этой работе. Грэм явно недооценил эффективность бизнеса на труде codemonkey.
                6. Опять же за счёт засилия codemonkey. JavaScript самый популярный язык в мире. Это удачный язык?
                7. А раньше это и не было нужно! Все потребности легко удовлетворялись быстрым и компактным ПО.
                9. И компании добились своего получив огромный международный рынок посредственных программистов. Нынешние CTO просто более опытные посредственности, а не выросшие юные хакеры. А гениев для нестандартных задач, днём с огнём не сыщешь. Как и самих задач, ведь при помощи фреймворков, обезьянок и мощного железа, можно добиться почти всего.
                10. И поэтому победило по численности. Но это не значит, что хакеры будут это использовать.
                11. Хакеры вполне заменимы. Огромный фреймворк заменить гораздо дороже и развивать его самостоятельно нельзя. Он чужая интеллектуальная собственность.
                12. Оно умерло потому, что кроме мин.обороны США не нравилось никому, в том числе и бизнесу.
                  +1
                  1. Есть разные программисты. И не всегда интерес разработчика только в каком-то новом хакерском решении. Многие получают достаточное удовольствие только от создания бизнес-логики.
                  2. Здесь Пол говорит, что «неудачные» — значит «невостребованные». С++ невостребован?
                  3. Ну тогда надо прямо заявлять, что вы хакер и ваша работа — это труд в одиночку над хрен пойми чем.
                  4. Да нет, Пол как раз собирается предсказывать будущее.
                  5. Сама попытка устроить хакера на работу над большими проектами уже довольно смешная. Это-же очевидно любому школьнику.
                  6. В этом пункте речь не о дизайне языка, а о его успешности/востребованности, будучи разработанным крупной компанией. И Java и JavaScript полностью опровергают теорию Пола.
                  7. Опять «в прошлом». Пол же ванговать собирался, разве нет?
                  9. Так речь про несправедливость мира, или про возможную популярность Джавы?
                  10. Та кого волнуют хакеры, когда речь идет про корпоративное ПО?
                  11. Огромный популярный фреймворк обладает большой ценностью, как рабочий инструмент, поэтому его достаточно легко продать другим владельцам.
                  12. Вот тут у меня недостаточно информации. Про проблемы Ады еще Вирт говорил, но деталей, почему она не взлетела, я не встречал (может потому, что не очень искал).

                  Вот интересно, сейчас «хакеры» где востребованы?
                  • UFO just landed and posted this here
                      0
                      Я именно в смысле «невзломщика» и имел в виду.
                      0
                      Нормально доступный GNAT появился только году в 1995м. Многие до сих пор используемые проекты датируются годами появления до 1995го.

                      Те, кто развалил СССР, тоже удружили. У нас с Европой была другая школа программирования, и языку Ада там было хорошее место. Десятки своих трансляторов, и у Венгрии ещё закупали. Без нас Европа пала под натиском американской школы.
                  0
                  напомните пожалуйста, автопилот «Бурана» на чём был написан?
                  +1

                  Прочитал пару обзацев про "кино это не смотрел, но оно говно" и про "С++ неудачный язык" и дальше не смог. Зачем публиковать тут этот бред, даже для 2001 года?

                    +2
                    Мне запомнилась статья о Java в Мир ПК 1998 года: «Java: гадание на кофейной гуще». Тогда шёл оочень большой хайп о Java. Вот кусок из этой статьи где приводится тогдашняя оценка Никлауса Вирта:
                    Самое главное в этой ситуации — критически оценивать реальные возможности Java. Однако этому мешает раздутая вокруг него шумиха. Приведу лишь одну цитату из статьи в специализированном журнале, ориентированном на профессиональных программистов и выпускаемом под эгидой IEEE
                    Computer Society [16]:
                    «Java — это настоящий язык-трудяга. Это не результат чьей-то диссертации, это язык для работы. Java покажется очень знакомым самым разным программистам, поскольку мы предпочитаем делать проверенные вещи. <...>
                    Итак, что же такое Java? Java ощущаешь как игривый и гибкий язык. Вы можете создавать с его помощью такие вещи, которые сами являются гибкими. Java ощущаешь как детерминированный язык. Если вам хочется, чтобы он что-то сделал, то просто попросите его об этом. В нем не видится ничего опасного: вы можете спокойно попробовать что-то сделать, и если окажетесь неправы, то быстро получите сообщение об ошибке. Java ощущаешь как очень богатый язык. Мы постарались снабдить его большой библиотекой классов. Поэтому не откладывайте дело в долгий ящик, а садитесь за компьютер и пишите свой код.»

                    Не складывается ли впечатление, что перед вами выдержка из рекламного объявления? А ведь эти слова, опубликованные летом 1997 г., принадлежат Джеймсу Гослингу, не только автору Java, но и человеку, который защитил диссертацию в известном университете Карнеги-Меллон, связанную с проектом Andrew Windows System, и который ныне является вице-президентом компании Sun Microsystems.
                    «Представьте себе, — не в силах сдержать возмущение, комментирует приведенную цитату Вирт, — что эти слова были написаны в 60-е годы, и замените слово „Java“ на слово „Алгол“. Автора сочли бы человеком психически ненормальным, слова его большей частью чужды науке и не имеют с ней ничего общего. Сегодня никто даже не возмущается, нет никакой реакции от „научного“ сообщества. Как же низко могла пасть „информатика“? И это делается с молчаливого одобрения такой уважаемой организации, как IEEE Computer Society?»

                    Где спустя годы стали кошерный Оберон и где сомнительно распиаренная Java? Корпоративный фактор не дооценили.

                    Only users with full accounts can post comments. Log in, please.