ТЕМ, ЧТО НА НИХ НЕВОЗМОЖНО ПРОГРАММИРОВАТЬ
Существует около 8 500 языков программирования (не удивляйтесь, данные не преувеличены), однако, несмотря на такое разнообразие, число языков, на которых пишет большинство, с трудом переваливает за десяток. Причин, почему тот или иной язык не стал популярным, ничуть не меньше, чем самих языков. Это и распри между их создателями, и плохо организованный процесс продажи, и появление новых технологий, и просто откровенная «кривизна».
В этой статье мы рассмотрим 12 языков программирования, которые не пользуются популярностью среди разработчиков, а также причины этой «нелюбви».
ALGOL 68: ALGOrithmic Language 1968
Язык получил звание «самой великолепной комбинации успеха в теории и провала на практике» среди языков программирования. ALGOL 68 – язык, созданный в качестве альтернативы существовавшему уже на тот момент ALGOL 60. Это детище печально известного сообщества «бунтарей», у которых отлично получалось вызывать в программистской среде сплетни и агрессию по отношению к себе. Хотя язык сам по себе сейчас практически не используется, он служит вечным напоминанием потомкам о том, как не надо делать «креатив». ALGOL 68 был первым языком (и, надо признаться, и по сей день остается одним из очень немногих), официальная спецификация которого появилась раньше, чем реализация.
Правда, спецификация эта была совершенно нечитабельной и немедленно принесла проекту репутацию чересчур «навороченного».
То, что ALGOL 68 и в самом деле был сложным, громоздким и содержал в себе множество загадочных операторов, так же верно, как и то, что это был первый действительно универсальный язык. Именно он стал «идейным вдохновителем» для создателей С и Bourne Shell. Благодаря ALGOL 68 параллельная обработка данных упростилась до такой степени, что даже современные языки типа Java и С++ до сих пор не добрались до его уровня.
ALGOL 68 скоропостижно скончался, так и не успев толком пожить. Благодаря невнятности спецификации членам комитета разработчиков ничего не стоило утопить проект еще до того, как люди смогли реально оценить его достоинства и недостатки.
brainfuck
Не удивляйтесь, это не ругательство, а название реально существующего языка программирования, причем несмотря на то что это имя собственное, в названии нет заглавных букв. Brainfuck можно назвать самым непрактичным из когда-либо созданных языков. Целью создателей было бросить вызов программистам, разработав язык с самым маленьким компилятором (на тот момент были экземпляры размером менее 200 байт).
Сам язык состоял из восьми команд (> < + - . , [ ]), а программа представляла собой сочетание этих команд, выполнявшихся последовательно (подчиняясь некоторым исключениям). Если же в программе появлялись символы, не являющиеся командой, они воспринимались как комментарии. Представьте себе, какая скукотища писать «Hello World!» на brainfuck!:
++++++++++[>+++++++>++++++++++>
+++>+<<<<-]>++.>+.+++++++..+++.
>++.<<+++++++++++++++.>.+++.——.
——--.>+.>.
Не трудно догадаться, что brainfuck никогда не был конкурентом Java или С++ (по вполне очевидным причинам). Если вы мазохист, попробуйте написать что-нибудь на brainfuck. Поверьте, больше чем на 15 минут вас не хватит, потому что в противном случае вас постигнут необратимые повреждения головного мозга.
Befunge
Befunge – злейший враг компиляторов. До недавнего времени программы, написанные на нём, практически невозможно было скомпилировать. Все команды языка представляют собой одиночные символы. Что еще забавнее, в Befunge версии 97-го года практически каждый символ является командой. Befunge отличается от прочих языков программирования, поскольку программа представляет собой двухмерную таблицу, в которой программист может размещать элементы управления, перемещая их с помощью стрелок влево, вправо, вверх или вниз. Достаточно взглянуть на код программы «Hello World», и головная боль вам обеспечена:
vv < <
2
^ v<
v13v4
^ ^
> >?> ?>5^
v v
v97v6
v v<
8
. > > ^
^<
Благодаря своей сложности, Befunge никогда не мог быть ничем, кроме упражнения для мозгов его создателя, и, к счастью, он только для этого и был задуман. Так что не удивительно, что программных решений, реализованных на этом языке, крайне мало, и тот факт, что он был разработан для узкоспециализированного сектора рынка, делает его несостоятельность менее трагичной.
REBOL: Relative Expression Based Object Language
Как вы думаете, что общего между песнями “Livin La Vida Loca”, “Mambo No. 5″ и языком REBOL? Все они взлетели на вершину славы в 1999 году, продержались там около месяца и благополучно потеряли звание «крутых».
REBOL ворвался на арену программирования как абсолютно универсальный язык. Программы, написанные на нем, запускались из-под 38 различных операционных систем, он отлично работал с Интернет-приложениями. Плюс к тому, он стартовал с замечательной репутацией. Что же произошло дальше?
REBOL погубило два фактора. Во-первых, тот факт, что конечный пользователь должен был вручную установить интерпретатор и хорошенько «поплясать с бубном», чтобы синхронизировать его с приложением, обеспечивал языку однозначное неприятие в массах. Во-вторых, те пользователи, которые все же выбрали для себя REBOL, с появлением .NET убедились, что большинство преимуществ, которые предоставлял язык, никому не нужны и откровенно устарели. На нынешней стадии развития программирования REBOL рассматривается как сервисный язык и используется в основном для «домашних» разработок.
Простой и понятный пользователю, REBOL является примером довольно серьезного языка, во главе разработок которого не стоял пресловутый «конечный пользователь». Тот факт, что он не получил широкого распространения, указывает прежде на то, что дальнейшие разработки языка недостаточно быстро показались на горизонте, и это в конечном счете ускорило провал REBOL.
ColdFusion
ColdFusion (он же язык разметки ColdFusion или CFML) был провозглашен новым грандиозным языком Web-разработок, ставящим себя в один ряд с ASP.NET и Java Enterprise. Ожидалось, что ColdFusion станет весьма популярным благодаря своей простоте и доступности для начинающих программистов. CFML использует теги (наподобие HTML). Программа на нем не требует никакой определенной формы написания, что очень помогает новичкам и не очень аккуратным программистам, постоянно забывающим о закрывающих тегах и заглавных буквах.
Довольно удивительно, что ColdFusion так быстро потерял популярность, учитывая простоту использования и, так сказать, HTML-наследственность. Гибель ColdFusion произошла не из-за ошибки в продвижении его как языка программирования, и не из-за каких-то особенных недостатков при его разработке. Он просто был вытеснен ASP.NET и PHP (который предложил людям интеграцию с MySQL и, что сыграло решающую роль, абсолютную халяву).
Java2k
Java2k – это вероятностный, недетерминированный язык программирования. По утверждению его создателя, он имитирует истинную сущность вселенной, в которой не может быть достоверности, только вероятность (гениальное заявление!). Говоря попросту, это означает, что вызов даже встроенных функций гарантирует лишь 90% вероятности, что функция выполнит то, что вам требуется. У каждой функции существует две реализации, и контролировать, какая из них будет задействована, у вас нет никакой возможности. Получается, что разработанная программа при каждом запуске будет работать по-разному.
Зачем, спрашивается, создавать язык, который целенаправленно выдает случайные результаты? Очевидно, что на нем нельзя написать ничего более или менее существенного. Цитируя создателей языка, они придумали Java2k, «потому что обычная java – это не прикольно». На самом же деле язык появился на свет, чтобы заставить программистов пошевелить мозгами, пытаясь написать на Java2k программу, выдающую предсказуемый результат.
Учитывая тот факт, что программировать придётся в условиях полной непредсказуемости, даже программка «Hello World» будет выглядеть нереально круто. Попробуйте.
Любой язык, выдающий непрогнозируемые результаты для встроенных функций не может использоваться для создания практических приложений, за исключением, может быть, каких-то простейших программ. Поэтому, если вам где-то попадется что-нибудь, написанное на Java2k, будьте уверены – это дело рук очень умного программиста, которому просто было нечем заняться.
INTERCAL
В фильме «Говорящие с ветром» с Николосом Кейджем американские морские пехотинцы используют переводчиков с языка навахо для передачи секретных сообщений, потому что на этом языке можно только говорить – у него нет письменной формы. То же и с INTERCAL – правда, с точностью до наоборот.
Этот комичный язык – сплошная мистика. Он создавался как насмешка над небезызвестными FORTRAN и COBOL (да, язык достаточно древний). Руководство к языку содержало в себе раздел «Миндалина». Как пояснялось в ссылке к разделу, все мануалы содержат раздел «Приложения» (по-английски «аппендикс»), поэтому создатели приняли решение включить в свою документацию какую-нибудь другую удаляемую часть человеческого тела – скажем, миндалины.
В языке используются модификаторы типа «ПОЖАЛУЙСТА». Если в программе он используется не достаточно часто, она не принимается компилятором как «недостаточно вежливая». Если же наоборот он появляется слишком часто, компилятор отвергает её как «чересчур вежливую». Но самое печальное в этой истории то, что, несмотря на наличие оценки вежливости, эта особенность не была нигде документирована.
INTERCAL, в соответствии с критерием Тьюринга, достаточен для того, чтобы быть практически используемым языком программирования. Это значит, что, в принципе, язык работает, но если вам когда-нибудь придет в голову что-нибудь на нем написать, советую сразу обратиться к психиатру. Если окажется, что с рассудком у вас всё в порядке, приготовьтесь потратить на программирование кучу времени. Знаменитое решето Эратосфена, часто используемое в качестве «контрольной» задачи, было запущено на рабочей станции SPARCStation-1 фирмы SUN. Выполненная на языке C, эта программа завершилась менее чем за полсекунды. У программы на INTERCAL на получение результата ушло 17 часов.
VRML: Virtual Reality Modeling Language
Дословно переводится как «язык моделирования виртуальной реальности» (читается «вермал»). Разработанный SGI, VRML был призван принести в Интернет через телефонную линию невиданную ранее трехмерную среду – графический эквивалент Nintendo 64. Обещание было столь революционным, что NASA одобрила и приняла этот язык. В связи с этим он и не ушел в широкие массы. Вообще, если задуматься, это была хорошая идея – не дать VRML подняться. Кто знает, пережили ли бы мы еще одну ловушку для армии ламеров, активизирующих миллионы халявных компакт-дисков, которые в 1997 году были выкачаны через Интернет.
В отличие от некоторых языков из нашего списка, VMRL привлек достаточно большую аудиторию и по сей день имеет потенциал для ее расширения. На пике своей популярности в 1997 году VMRL использовался в домашних страничках и на некоторых 3D-сайтах вроде «CyberTown». Что убило VRML, так это тот факт, что SGI реструктурировал подразделение, занимавшееся этими разработками, и продал его компании Computer Associates, которая не стала им заниматься.
В настоящее время VRML используется в образовательном процессе, исследованиях и прочих областях, где особенно ценится высокая детализация. Но в целом, VRML – это еще один пример отличной продукции, которую на пике популярности не продвинули и не распространили должным образом.
SMIL: Synchronized Multimedia Integration Language
SMIL (произносится как «смайл») был создан в основном для представления мультимедийного (не потокового) контента через Интернет. Компания Real Networks создала этот язык для обеспечения таких реально важных нужд, как синхронизация текста и видео (например, субтитры в караоке) или звука и Flash-изображения. Результатом работы SMIL стала возможность создавать полноценную (хотя и не очень чистую) передачу видео, используя лишь скудную пропускную способность телефонного кабеля.
Несмотря на наличие конкурентов от Microsoft, SMIL оставался все-таки более мощной альтернативой. Но что действительно гарантировало SMIL второстепенное положение среди языков, это появление широкополосных каналов Интернет-соединения. С распространением широкополосных сетей и с приходом их в среднестатистические дома пропала необходимость в языке, способном создавать убогий эквивалент потокового видео.
Отказавшись плыть по течению, SMIL стал хорошим примером того, как можно оказаться не в то время и не в том месте. Если бы SMIL появился в тот момент, когда коммутируемый доступ к Интернет только начинал покорять Америку, у него был бы шанс получить ту долю популярности, которую он, как революционер, безусловно, заслуживает. В настоящее время SMIL находит применение в некоторых портативных устройствах, одной из функций которых является отправка MMS (мультимедийная альтернатива текстовым сообщениям).
Haskell
По сравнению с большинством «провальных» представителей нашего списка, Haskell можно назвать довольно популярным языком. Но несмотря на толпу его фанатов (маленькую, но сильную и, главное, очень громкую), Haskell всю свою жизнь был языком-неудачником.
Тот факт, что это – непревзойденный по своей функциональности и самый располагающий к лени язык, говорит о том, что, создавая и запуская различные версии программы на Haskell, вы можете добиться огромного роста производительности. Благодаря таким уникальным понятиям, как монады и классы типов, написание некоторых функций на Haskell многократно облегчается.
Однако то, что сделало Haskell таким уникальным, привело к неприятию его в обществе. Есть ряд серьезных проблем, связанных с функциональным программированием и так называемыми «ленивыми» вычислениями, которые в Haskell проявляют себя в полной мере. Кроме того, тонкости и нюансы синтаксиса, которые опытные программисты могут использовать в свою пользу, новичка только путают, мешая ему как следует отладить код.
Все вышеперечисленные особенности по отдельности не представляют большой опасности, однако, собранные вместе, они погубили Haskell. Несмотря на уникальные характеристики, которые мог предложить язык, существование таких дружественных по отношению к пользователю средств, как, скажем, MATLAB, заставило программистов, ищущих баланс между стоимостью и эффективностью, отвернуться от Haskell. И поскольку начинающие программисты «подсаживались» на более популярные языки, ряды адептов Haskell пополнялись крайне медленно, что давало повод утверждать: этот язык никогда не достигнет популярности своих более доступных для «чайников» конкурентов.
Delphi
Delphi – это «паскализированная» версия Visual Basic. Отдавая должное прошлой популярности Delphi-программирования, было бы нечестно включать его в наш список языков-призраков. Однако, поскольку Delphi за такой короткий промежуток времени свалился с вершины славы в пучину почти полного забвения, было бы также нечестно утверждать, что Delphi достиг-таки предсказанной ему в середине-конце 90-х годов популярности.
Язык программирования Delphi – это прямой потомок Turbo Pascal (его даже часто называют объектным Pascal). Для всех, писавших на Visual Basic 3.0, инструменты Delphi не будут в новинку.
Учитывая, что это объектно-ориентированный язык, созданный с целью облегчения разработки программ под Windows, падение Delphi с пьедестала славы не стало последствием повышенной сложности языка для программистов без опыта. Не сказать, чтобы написать «Hello World» на Delphi было бы проще, чем на любом другом языке, однако и не настолько сложно, чтобы стоило из-за этого отвернуться от него.
Настоящим убийцей Delphi стал Visual Basic 6. С 4-й и 5-й версиями, надо отметить, еще как-то удавалось бороться, поскольку существовал ряд вещей, которые на Delphi было сделать легче, чем на Visual Basic. Но 2003 год стал годом восхождения платформы .NET, и Delphi начал свое плавное погружение во мрак. VB просто-напросто не нуждался в альтернативе, и поэтому продолжение падения Delphi оказалось неизбежным.
PowerBuilder
Подождите кривить лицо, изображая свое отношение к этому слову. Поверьте, что PowerBuilder (он же «PB») все еще используется в сотнях организаций по всему миру. Но даже самые ярые его приверженцы вынуждены согласиться, что сейчас значимость PowerBuilder уже совсем не та, что в 1996 году. PowerBuilder был создан как простой в применении графический клиент-серверный инструмент, поддерживающий соединение с наиболее известными реляционными базами данных (к примеру, Oracle). В целом, проект достиг огромного успеха, что позволило компании-учредителю Powersoft выйти в свет.
PowerBuilder был атакован одновременно с трех сторон. Интернет-бум, появление Delphi и возвышение Visual Basic – это три фактора, ставших началом его конца. Средства начали уходить на web-проекты на Visual Basic, «дельфийцев» стало значительно больше, чем людей, знающих PowerBuilder… Приговор был подписан.
В крахе PowerBuilder не стоит искать никакого для себя урока. Это серьезный язык, который просто был вытеснен с рынка новыми технологиями и изменяющимися условиями выживания.
Заключение
Языки программирования вынуждены преодолевать те же самые трудности, что и многие фирмы и новые идеи. Зачастую успех языка программирования зависит не только от его характеристик и применяемых технологий, но и от появления в нужном месте в нужное время. Успех языка может быть столь же непостоянным, сколь непредсказуемыми могут быть причины его провала. В этой статье вы узнали о 12 языках программирования (из нескольких тысяч), которые в один прекрасный день выпали из списка популярных, оставив после себя одни лишь воспоминания.
Перевод статьи “Ghosts in the Machine: 12 Coding Languages That Never Took Off”
Выполнен http://blog.progopedia.ru/.