Будущее по знаком Java
[EN]

Будущее по знаком Java?

Для разработчика выбор языка программирования не имеет особого значения — все они устроены примерно одинаково, и то, что написано на одном языке, всегда может быть переписано на другом. Здесь все определяют требования заказчика и случайные привычки, а вовсе не мифические преимущества одного над другим. Например, когда-то страницы в Сети были сплошь по-английски — просто потому, что Интернет родился в Америке и тащил на себе груз технологических традиций; по мере широкого распространения Уникода локализованный контент быстро вытеснил английский язык из национальных доменов. А сегодня средства автоматического перевода (при всем их несовершенстве) позволяют бродить по сайтам вообще без знания языка; впрочем, без особого напряга можно построить и по-настоящему многоязычный сайт.

Java изобрели в Sun Microsystems в качестве корпоративного языка — главным образом, с целью получить некоторое рыночное преимущество в эпоху, когда Microsoft успешно завоевывала мир довольно простыми и удобными творениями. Беспрецедентная рекламная кампания, развернутая Sun по поводу Java, была подхвачена всеми приверженцами Unix (которые тоже почуяли серьезную опасность) — и принесла свои плоды: на некоторое время Java стал стандартом de facto для коммерческих приложений и особенно Web-сервисов. Позже новый владелец, Oracle, попытался возобновить агрессивное продвижение Java — но на этот раз без особого успеха, поскольку к тому времени появилось много альтернативных систем разработки, в том числе бесплатных. Тем не менее, популярность Java, а потом и JavaScript (еще одно мощное конкурентное оружие Sun), практически уничтожили шансы Microsoft на завоевание Web (а значит, вообще всей информационной отрасли).

В 1990-х Java с помпой преподносили как универсальный язык будущего, который призван заменить все остальные языки — а новые процессоры предлагалась затачивать под непосредственную интерпретацию байт-кода Java, понемногу избавляясь от традиционных наборов инструкций. По счастью, эта идея оказалась для индустриальных целей совершенно неподходящей — большинство производителей оборудования были против, и в конце концов будущее под знаком Java превратилось в отдаленную память о кошмаре прошлого.

Если серьезно, ничего радостного в этом языке нет. Ему не хватает элегантности и краткости; он требует трудоемких поиском обходных путей ради преодоления его врожденной неуклюжести; он почти не допускает расширения, заимствования выразительных средств у других языков; его практически невозможно адаптировать под индивидуальные нужды. Впрочем, когда все богатство мира пытаются свести к одной-единственной парадигме (класс) — можно ли ожидать чего-то еще?

Пропагандисты Java всячески раздувают миф о переносимости. Да, существуют реализации Java для любых платформ — однако в реальности Java не более переносим, чем Fortran, Basic или C++. Появилось множество плохо совместимых между собой версий Java, потом широкий спектр JVM, по-разному интерпретирующих один и тот же код. Исходная идея Java была далека от равноправия всех операционных сред — язык предназначался для подавления конкурентов, как попытка навязать им чуждую для них идеологию и не дать развиваться в других направлениях. Пожалуйста — покупайте только системы, авторизованные для работы с Java, — и у вас не будет проблем с совместимостью. Длинная серия судебных исков против Microsoft и некоторых других компаний, позволяющих себе отклониться от "истинного" духа Java (а также "подлинного" JavaScript, "стандартного" HTML и т. д.) наглядно иллюстрируют глубинный замысел строителей светлого будущего под знаком Java.

В наши дни идея промежуточного уровня между машинным кодом и высокоуровневым языком программирования стала практически общим местом. Большинство современных языков предполагают преобразование в некий "байт-код" — который потом уже можно компилировать или интерпретировать. Переносимость приложений и служб напрямую увязывается со стандартом этого внутреннего представления. В начале 1960-х этот подход основательно отработан в СССР. Был предложен унифицированный низкоуровневый синтаксис программирования для ряда широко распространенных в то время советских компьютеров — а прикладные программисты получили гамму специализированных языков высокого уровня, оптимизированных под определенный круг задач. Эти языки обозначались просто буквами греческого алфавита; самые известные из них — Альфа и Эпсилон. Гораздо позже та же идея легла в основу платформы .NET от Microsoft, где разные языки программирования (C#, Visual Basic, F#) транслируются в общий промежуточный язык и могут пользоваться одними и теми же библиотеками подпрограмм.

Такой вещи как полная переносимость в природе не бывает. Качественный код можно написать на любом языке — но никакая платформа не может гарантировать практическую поддержку всех его достоинств. В идеале каждый разработчик должен иметь возможность собрать свой индивидуальный набор инструментов, сочетая разнородные элементы любых языков, платформ и операционных сред. Все это могло бы интегрироваться с иерархией интерфейсов, позволяющих обеспечить совместную работу и обмен данными. Объективной основой совместимости и переносимости может стать только единая организация практических задач, общие принципы компьютерной архитектуры, проблемно-ориентированные протоколы коммуникации и типовые форматы данных.

Насущная потребность в гибких и настраиваемых под конкретного разработчика средствах программирования привела к появлению разного рода расширений (препроцессоров, встроенных скриптов и т. д.). Быстрый прогресс в области автоматизированной разработки компиляторов, возможно, скоро вернет нас в старинные времена VAX VMS, когда допускалась свободное языкотворчество, гибкая настройка языковых средств под себя. Иерархическая организация языков программирования и скриптов, включая идеологию промежуточного кода, призвана значительно облегчить эту задачу. Что ж, в конце концов, Java — это шаг в правильном направлении, и только дикая коммерция подпортила перспективы разумного совершенствования. Но в каком-то смысле, в Java тоже брезжит кусочек будущего — в единстве с другими созидателями, а не вопреки им.


[Компьютеры] [Наука] [Унизм]