newsmode
search
Меню
arrow_back Назад

Java's Cover

auto_awesomeКраткое саммари

Эссе Пола Грэма (апрель 2001 года) — это не критика самого Java, а разбор того, как работает «радар хакера»: чутьё опытных программистов на хорошие и плохие технологии. Грэм признаётся, что никогда не писал на Java и судит лишь «по обложке», и приводит двенадцать признаков, которые вызывают у него подозрение: язык слишком агрессивно раскручивают, он «нацелен низко» (Gosling по его словам проектировал Java как ещё один C++ для не самых сильных программистов), у него есть скрытый мотив — план Sun подорвать Microsoft, его никто не любит, людей заставляют им пользоваться, его делает комитет, он бюрократичен и рассчитан на крупные организации. Грэм проводит контраст между языками «для других» (Cobol, PL/I, Pascal, Ada, C++) и языками «для своих создателей» (C, Perl, Smalltalk, Lisp), и замечает, что Java нравится «не тем» людям — пиджакам, программистам больших компаний и студентам. Он также указывает на проблемы Sun (дешёвые серверы Intel на FreeBSD против Solaris) и на симпатию Министерства обороны к Java как на самый тревожный признак — последним языком, который полюбило DoD, был Ada. В заключение он подчёркивает, что отбрасывает технологии «по запаху», как раньше отмахнулся от Cobol, Ada, Visual Basic, CORBA и других, и допускает, хоть и считает это крайне маловероятным, что в случае Java может ошибаться.

April 2001

Апрель 2001

This essay developed out of conversations I've had with
several other programmers about why Java smelled suspicious. It's not
a critique of Java! It is a case study of hacker's radar.

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

Over time, hackers develop a nose for good (and bad) technology.
I thought it might be interesting to try and write down what
made Java seem suspect to me.

Со временем у хакеров вырабатывается нюх на хорошие (и плохие) технологии. Мне показалось интересным попробовать записать, что именно заставило меня заподозрить неладное в Java.

Some people who've read this think it's an interesting attempt to write about
something that hasn't been written about before. Others say I
will get in trouble for appearing to be writing about
things I don't understand. So, just in
case it does any good, let me clarify that I'm not writing here
about Java (which I have never used) but about hacker's radar
(which I have thought about a lot).

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

The aphorism "you can't tell a book by its cover" originated in
the times when books were sold in plain cardboard covers, to be
bound by each purchaser according to his own taste. In those days,
you couldn't tell a book by its cover. But publishing has advanced
since then: present-day publishers work hard to make the cover
something you can tell a book by.

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

I spend a lot of time in bookshops and I feel as if I have by now
learned to understand everything publishers mean to tell me about
a book, and perhaps a bit more. The time I haven't spent in
bookshops I've spent mostly in front of computers, and I feel as
if I've learned, to some degree, to judge technology by its cover
as well. It may be just luck, but I've saved myself from a few
technologies that turned out to be real stinkers.

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

So far, Java seems like a stinker to me. I've never written a Java
program, never more than glanced over reference books about it,
but I have a hunch that it won't be a very successful language.
I may turn out to be mistaken; making predictions about technology
is a dangerous business. But for what it's worth, as a sort of
time capsule, here's why I don't like the look of Java:

Пока что Java кажется мне дрянью. Я никогда не писал программ на Java, никогда не делал больше, чем бегло проглядывал справочники по нему, но у меня есть подозрение, что он не станет очень успешным языком. Может оказаться, что я ошибаюсь; делать предсказания о технологиях — занятие опасное. Но, как бы там ни было, в качестве своего рода капсулы времени, вот почему мне не нравится, как Java выглядит:

1. It has been so energetically hyped. Real standards don't have
to be promoted. No one had to promote C, or Unix, or HTML. A real
standard tends to be already established by the time most people
hear about it. On the hacker radar screen, Perl is as big as Java,
or bigger, just on the strength of its own merits.

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

2. It's aimed low. In the original Java white paper, Gosling
explicitly says Java was designed not to be too difficult for
programmers used to C. It was designed to be another C++: C plus
a few ideas taken from more advanced languages. Like the creators
of sitcoms or junk food or package tours, Java's designers were
consciously designing a product for people not as smart as them.
Historically, languages designed for other people to use have been
bad: Cobol, PL/I, Pascal, Ada, C++. The good languages have been
those that were designed for their own creators: C, Perl, Smalltalk,
Lisp.

2. Он нацелен низко. В оригинальном white paper по Java Gosling прямо говорит, что Java был спроектирован так, чтобы не быть слишком трудным для программистов, привыкших к C. Он задумывался как ещё один C++: C плюс несколько идей, взятых из более продвинутых языков. Подобно создателям ситкомов, или фастфуда, или пакетных туров, проектировщики Java сознательно создавали продукт для людей не таких умных, как они сами. Исторически языки, спроектированные для использования другими людьми, оказывались плохими: Cobol, PL/I, Pascal, Ada, C++. Хорошими же были те языки, которые проектировались для самих их создателей: C, Perl, Smalltalk, Lisp.

3. It has ulterior motives. Someone once said that the world would
be a better place if people only wrote books because they had
something to say, rather than because they wanted to write a book.
Likewise, the reason we hear about Java all the time is not because
it has something to say about programming languages. We hear about
Java as part of a plan by Sun to undermine Microsoft.

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

4. No one loves it. C, Perl, Python, Smalltalk, and Lisp programmers
love their languages. I've never heard anyone say that they loved
Java.

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

5. People are forced to use it. A lot of the people I know using
Java are using it because they feel they have to. Either it's
something they felt they had to do to get funded, or something they
thought customers would want, or something they were told to do by
management. These are smart people; if the technology was good,
they'd have used it voluntarily.

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

6. It has too many cooks. The best programming languages have been
developed by small groups. Java seems to be run by a committee.
If it turns out to be a good language, it will be the first time
in history that a committee has designed a good language.

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

7. It's bureaucratic. From what little I know about Java, there
seem to be a lot of protocols for doing things. Really good
languages aren't like that. They let you do what you want and get
out of the way.

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

8. It's pseudo-hip. Sun now pretends that Java is a grassroots,
open-source language effort like Perl or Python. This one just
happens to be controlled by a giant company. So the language is
likely to have the same drab clunkiness as anything else that comes
out of a big company.

8. Он псевдомодный. Sun теперь делает вид, будто Java — это низовая, open-source инициатива по созданию языка, как Perl или Python. Только вот этот язык случайно оказался под контролем гигантской компании. Так что у него, скорее всего, будет та же серая неуклюжесть, что и у всего остального, что выходит из большой компании.

9. It's designed for large organizations. Large organizations have
different aims from hackers. They want languages that are (believed
to be) suitable for use by large teams of mediocre programmers--
languages with features that, like the speed limiters in U-Haul
trucks, prevent fools from doing too much damage. Hackers don't
like a language that talks down to them. Hackers just want power.
Historically, languages designed for large organizations (PL/I,
Ada) have lost, while hacker languages (C, Perl) have won. The
reason: today's teenage hacker is tomorrow's CTO.

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

10. The wrong people like it. The programmers I admire most are
not, on the whole, captivated by Java. Who does like Java? Suits,
who don't know one language from another, but know that they keep
hearing about Java in the press; programmers at big companies, who
are amazed to find that there is something even better than C++;
and plug-and-chug undergrads, who are ready to like anything that
might get them a job (will this be on the test?). These people's
opinions change with every wind.

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

11. Its daddy is in a pinch. Sun's business model is being undermined
on two fronts. Cheap Intel processors, of the same type used in
desktop machines, are now more than fast enough for servers. And
FreeBSD seems to be at least as good an OS for servers as Solaris.
Sun's advertising implies that you need Sun servers for industrial
strength applications. If this were true, Yahoo would be first in
line to buy Suns; but when I worked there, the servers were all
Intel boxes running FreeBSD. This bodes ill for Sun's future. If
Sun runs into trouble, they could drag Java down with them.

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

12. The DoD likes it. The Defense Department is encouraging
developers to use Java. This seems to me the most damning sign of
all. The Defense Department does a fine (though expensive) job of
defending the country, but they love plans and procedures and
protocols. Their culture is the opposite of hacker culture; on
questions of software they will tend to bet wrong. The last time
the DoD really liked a programming language, it was Ada.

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

Bear in mind, this is not a critique of Java, but a critique of
its cover. I don't know Java well enough to like it or dislike
it. This is just an explanation of why I don't find that I'm eager
to learn it.

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

It may seem cavalier to dismiss a language before you've even tried
writing programs in it. But this is something all programmers have
to do. There are too many technologies out there to learn them
all. You have to learn to judge by outward signs which will be
worth your time. I have likewise cavalierly dismissed Cobol, Ada,
Visual Basic, the IBM AS400, VRML, ISO 9000, the SET protocol, VMS,
Novell Netware, and CORBA, among others. They just smelled wrong.

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

It could be that in Java's case I'm mistaken. It could be that a
language promoted by one big company to undermine another, designed
by a committee for a "mainstream" audience, hyped to the skies,
and beloved of the DoD, happens nonetheless to be a clean, beautiful,
powerful language that I would love programming in. It could be,
but it seems very unlikely.

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