Стал ли какой-либо язык популярным для чего-то, кроме его предназначения?

70

Возьмите этот сценарий:

  • Программист создает язык для решения какой-то проблемы.

  • Затем он выпускает этот язык, чтобы помочь другим решить подобные проблемы.

  • Другой программист обнаруживает, что на самом деле это намного лучше для какой-то другой категории проблем.

  • Благодаря этому новому приложению язык становится популярным в первую очередь для этого приложения.

Есть ли случаи, когда это происходит на самом деле?

Иными словами, имеет ли предназначение языка какое-либо отношение к его фактическому использованию или становится ли оно популярным? Это важно даже , что язык есть рекламируемые цели?

Jon Purdy
источник
4
Ваш пример HTML не совсем соответствует тому, что вы ищете, технические документы настолько отличаются от любых других документов? Основная цель HTML по-прежнему та же, что и в 1989 году, - предоставить документам простые средства для ссылок друг на друга. ИМХО HTML - полная противоположность тому, что вы на самом деле ищете.
Яннис
5
Учитывая длинный список ответов; может быть, интереснее обратный вопрос: какой (популярный) язык используется только по прямому назначению?
Яап
@ Яннис: Хороший вопрос. Это не лучший пример, и в любом случае его можно аргументировать. Отредактировано, чтобы удалить.
Джон Пурди
@Jaap: я тоже так думал!
leonbloy
2
Я могу ошибаться в этом, но я почти уверен, что большинство языков не используются в соответствии с намерениями их создателей. Я думаю, что основной причиной этого является то, что посторонние не знают, для чего он должен использоваться, что помогает им быть более непредубежденными в отношении потенциала, которым обладает язык.
Кеннет

Ответы:

118

Лисп . Маккарти изначально определил Лисп в статье, чтобы показать, что нескольких простых обозначений достаточно для построения полного языка Тьюринга. Он был удивлен, обнаружив, что Lisp может быть реализован в машинном коде (Стив Рассел сделал первую реализацию интерпретатора Lisp). Лисп широко используется для программирования ИИ.

aufather
источник
70
+1, Лисп не был задуман как язык программирования! Я не думаю, что вы можете превысить это.
Килиан Фот
7
OTOH, можно утверждать, что LISP был разработан для использования на границе между программированием и математикой, и он остается там.
MSalters
1
Я полагаю, что Маккарти использовал Лисп в качестве примера в своих классах и намеревался написать для него компилятор, но однажды на уроке упомянул, что при ручном кодировании функции eval будет реализован интерпретатор, но, конечно, «никто на самом деле этого не хочет».
Стивен А. Лоу
Мои друзья из Lisper говорят мне, что он больше не используется в искусственном интеллекте, но он все еще имеет применение повсюду .
Greyfade
111

Изначально Java была предназначена для программирования встраиваемых систем. Из Википедии "Ява изначально была разработана для интерактивного телевидения" . Но он стал очень популярным для приложений и веб-программирования.

aufather
источник
4
Да. Не могу поверить, что я не думал об этом. Возможно, это канонический пример ... хотя это не значит, что я пока не удивлюсь.
Джон Перди
Хотя была ли когда-либо выпущена Java для встроенной работы (до появления встроенной Java, которая появилась скорее после ее продвижения в сети)?
Марчин
Важнейшим элементом дизайна в Java была возможность запуска ненадежного кода.
13
история еще хуже: а) она была предназначена для встраиваемых систем. Б) но никогда не видел свет, пока он не может быть встроен в веб-страницы. C) он не получил никакого уважения, пока не использовался для «корпоративных» веб-приложений, и D) он, наконец, был встроен во многие телефонные ОС; но не как аппаратный контроллер, а платформа с графическим интерфейсом.
Хавьер
Уже более 10 лет существует проект по его доставке на телеприставки
Bill K
32

Lua был разработан в первую очередь как язык конфигурации, и в итоге нашел нишу как самый популярный язык сценариев для игр (потому что он маленький, быстрый, мощный, переносимый, легко расширяемый и встраиваемый, с удобным синтаксисом). World of Warcraft, самая популярная игра, в которой он используется, даже не используется для настройки, вместо этого используется XML.

грязевой
источник
... и теперь с LuaJIT он находит все большее применение в приложениях для обработки в реальном времени
Хавьер
2
Не совсем en.wikipedia.org/wiki/Lua_%28programming_language%29
Лукаш Мадон
@lukas: "Не совсем" что ? Обратите внимание, что его предшественники, SOL и DEL, даже не имели потока управления, они были просто языками конфигурации. Lua был расширением этих языков конфигурации для включения поддержки программирования.
Грязь
«Lua был разработан в первую очередь как язык конфигурации», я бы сказал, как язык программирования.
Лукаш Мадон
7
Возможно, мне следовало бы сказать «предназначение», а не «задуман как». Целевое назначение в том, чтобы использовать Lua , где были использованы SOL и DEL. Это были языки конфигурации, в которых пользователи начинали нуждаться в функциях программирования. Lua был создан, чтобы удовлетворить эту потребность. Как утверждают сами авторы , «широкое распространение Lua в играх стало для нас неожиданностью. У нас не было разработки игр в качестве цели для Lua». Это в значительной степени именно то, что искал ОП, нет?
Грязь
32

Первоначальное намерение Ларри Уолла для Perl заключалось в создании « универсального языка сценариев Unix для упрощения обработки отчетов », а страница руководства описывает язык так:

Perl - это интерпретируемый язык, оптимизированный для сканирования произвольных текстовых файлов, извлечения информации из этих текстовых файлов и печати отчетов на основе этой информации.

И, конечно, справочная страница также сообщает нам, что Perl означает « Практическое извлечение» и «Язык отчетов» (фактическое имя - это неправильное написание исходного названия « Перл» , измененное, когда Уолл обнаружил уже существующий язык PEARL ).

С тех пор Perl прошел большой путь, поскольку это язык, на котором боги сотворили вселенную .

введите описание изображения здесь

Яннис Ризос
источник
23
Нужно исправить это: Патологически эклектичный мусорный листер
Ричард
3
Существует более одного способа unabbrev! Very
Любое сокращение от Perl на самом деле является обратным.
CanSpice
1
@DarkTemplar То, как я интерпретирую это, заключается в том, что Perl подкрался почти везде. С давних пор Perl стал очень популярным веб-языком, чрезвычайно популярным языком сценариев, несколько популярным многоцелевым языком, его синтаксис регулярных выражений стал чем-то определенным, породил другой язык (php) и т. Д. Плюс комический также ссылается на lisp, который является общепринятым ответом на вопрос, поэтому я подумал, что это забавное (хотя и неточное) описание отношений между двумя языками (один - мечтательный, другой - тот, который люди фактически используют).
Яннис
1
@DarkTemplar Yeap. Он входит в первую десятку индекса TIOBE . Конечно, вы не должны относиться к индексу TIOBE очень серьезно, он довольно относителен и субъективен. Но все же хороший показатель популярности языка.
Яннис
28

Я предполагаю, что JavaScript вписывается и в этот вопрос, потому что я не думаю, что Брендан Айх, еще во времена Netscape, когда-либо думал, что будущие версии его LiveScript будут использоваться для создания сегодняшних так называемых веб-«приложений».

JavaScript перешел от простой проверки форм и переноса изображений к мощному инструменту, который способен конкурировать с автономными приложениями как по функциональности, так и по красоте.

К сожалению, я думаю, что многие все еще считают это игрушкой.

Андреас Греч
источник
31
Интересно то, что он движется к тому, чтобы стать языком ассемблера в Интернете. Другими словами, на каких других языках компилируются и исполняются. Я не верю, что Брендан Эйч ожидал этого .
3
есть что добавить: это не просто язык сценариев на стороне клиента. Многие проекты, такие как node.js или Rhino, используют javascript в качестве языка на стороне сервера
gion_13
Просто любопытно, но что такое «язык сценариев на стороне клиента» и «язык на стороне сервера» .......?
Темный тамплиер
@DarkTemplar. На сервере запускается серверный язык сценариев, и его выходные данные отправляются в браузер. Клиентский язык сценариев отправляется в браузер как есть и запускается там. (Конечно, серверный язык может использоваться для вывода клиентского языка, если хотите.) Единственный язык, который работает в большинстве браузеров, - это javascript.
TRiG
19

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

Было бы интересно, если бы в будущем появилось больше языков из мира телекоммуникаций, пересекающих свои линии с миром ИТ и развившихся оттуда, особенно языки, изначально предназначенные для моделирования и проверки протоколов.

UUlum
источник
И не было ли это одним из вдохновителей для node.js?
dodgy_coder
Не думай, что это подходит. Причина, по которой Эрланг был изобретен для телефонии, заключается в том, что им нужен общий динамический язык параллелизма. Это все еще так.
Алан Бальеу
15

Паскаль. Создан для обучения программированию.

Неревар
источник
3
Хех, это многое объясняет ...
тыкай
2
@poke: Из проклятия , я знаю.
Неревар
Хе-хе, я вижу, что ты там сделал.
Труфа
Эй, может кто-нибудь, пожалуйста, объясните этот ответ? Лол. Я нуб!
Темный тамплиер
@ Темный тамплиер: taoyue.com/tutorials/pascal/history.html
Неревар
14

Изначально PHP означал персональную домашнюю страницу , но сегодня используется и для нескольких веб-приложений несколько больших размеров.

Яап
источник
18
Конечно, крупнейший пользователь PHP, Facebook, во многих отношениях все еще находится на рынке персональных домашних страниц.
Яап
3
«PHP / FI был создан Расмусом Лердорфом в 1995 году, изначально как простой набор скриптов Perl для отслеживания доступа к его онлайн-резюме». Это долгий путь, детка.
Ник
Хотя PHP по-прежнему в значительной степени является веб-языком, он подвергся некоторому изменению роли: PHP должен был быть встроен в виде небольших фрагментов внутри HTML, тогда как многие проекты теперь генерируют строки HTML внутри PHP. Им все еще нужен <?phpтег в начале файла!
Варбо
14

Я совершенно уверен, что VBScript не предназначен для написания вредоносных программ, хотя это очень распространенное использование для него.

оборота user16764
источник
1
Это немного грубо, ты не думаешь. Java и C имеют свою долю вредоносного ПО.
Джереми
@JChild: с момента вашего комментария прошло несколько лет. Однако даже тогда защита VB была очень странной вещью.
Маг
@Magus Это даже не VB. Это VBScript. Вы знаете, файлы с расширениями .vbs. Те, которые вы автоматически предполагаете, это вирусы, когда вы их видите.
user16764
13

Изначально разработанный как метод создания более общего кода, мета-программирование на C ++ оказалось завершенным и по сей день используется для значительного улучшения языка C ++ с помощью таких библиотек, как boost.

Джейсон Маккаррелл
источник
8
... и довести программистов C ++ до слез с чрезмерно долгим временем сборки ;-)
quant_dev
8
и ужасающие сообщения об ошибках.
DeadMG
11

Бейсик - еще один известный случай. Его название ( универсальный символьный код инструкции для начинающих ) намекает на его происхождение как языка для учащихся, но с тех пор оно немного выросло.

MSalters
источник
24
хех - Microsoft заменила «новичка» на «бизнес» и сосала миллионы
Стивен А. Лоу
11

VHDL и Verilog (также известный как VerilogHDL) изначально предназначались для описания цифровых схем и компонентов. Они использовались в качестве формы документации и для моделирования поведения компонентов. Позже, Synopsys и другие разработали технологию, которая могла бы преобразовать (подмножество) эти описания в сетевые списки шлюзов, которые, в свою очередь, могут быть использованы для создания реального оборудования.

VHDL и Verilog называются языками описания оборудования (HDL) по историческим причинам. Сегодня они фактически используются в качестве языков проектирования аппаратных средств (та же аббревиатура).

Philippe
источник
Хорошая, реальная модель, управляемая разработкой
Jaap
@Mark Да, VHDL - это высокоскоростная интегральная схема, язык описания оборудования. Verilog - это совершенно другой язык. Verilog иногда также называют Verilog HDL. en.wikipedia.org/wiki/Verilog
Филипп
2
QHDL очень похож на VHDL и используется для описания схем для квантовых компьютеров. Я не могу себе представить язык, уходящий так далеко от его происхождения.
Марк Бут
@ Mark Wow, это интересно "QHDL"! Google показывает много шума. У вас есть ссылка?
Филипп
1
Я узнал об этом на отличной сессии «Квантовые вычисления для программистов» Пола Блэка на конференции ACCU 2011. Его слайды находятся по адресу accu.org/content/conf2011/…
Марк Бут
10

ML начинал как язык для разработки и написания сценариев для проверки теорем. Это был «метаязык» доказателя теорем.

Райан Калпеппер
источник
Хорошо. Стоит отметить, что причина того, что это правильный ответ, состоит в том, что его основное приложение теперь - компиляторы и другие подобные языковые инструменты (по крайней мере, насколько я знаю).
Джон Пурди
6
+1, но сказать, что ML стал «очень популярным», немного
натянуто
Возможно, но в дополнение к своим непосредственным пользователям сегодня, это влияло почти на каждый типизированный язык, который последовал за ним.
Райан Калпеппер
7

C
Первоначально он был разработан для использования с операционной системой Unix. Но Язык стал настолько популярным, что даже Денис Ричи был удивлен.
В своей знаменитой книге The C язык программирования . Ричи заявляет, что «он вышел далеко за пределы своего происхождения как язык операционной системы UNIX». и как он был удивлен, когда он стал популярным языком для разработки приложений.

Рейнджер
источник
11
Ну, изначально он был разработан для разработки систем и низкоуровневых приложений кроссплатформенным способом. Он остается созвучным своим первоначальным целям, несмотря на свою популярность, поэтому он не подходит.
Джон Перди
3
@Jon Ну, это как-то подходит, поскольку переросло свою цель, став самым простым способом выстрелить себе в ногу.
Яннис
1
@ Яннис: Хаха, правда. Но я спрашиваю о языках, основная цель которых полностью изменилась, а не о тех, которые просто расширились, чтобы охватить больше целей.
Джон Перди
Я бы добавил, что C стал популярным как один из основных языков для запутанных конкурсов кода.
Питер Г.
Разве это не было разработано для реализации операционной системы?
Никко
3

Первоначально C ++ был разработан как «C с классами» для облегчения объектно-ориентированного программирования на C ++.

Затем были предоставлены шаблоны в более поздней версии, чтобы обеспечить реализацию строго типизированных контейнерных классов. Позже было замечено, что эти шаблоны на самом деле составляют полный на Тьюринге язык программирования во время компиляции.

Как следствие, многие приложения теперь используют C ++ не как объектно-ориентированный язык программирования, а как язык программирования на основе алгоритмов, который в значительной степени опирается на полиморфизм во время компиляции и метапрограммирование.

Конрад Рудольф
источник
7
Но C ++ предназначен для общего назначения и используется как язык общего назначения.
BenjaminB
@ Ubiquité Я не думаю, что C ++ действительно был разработан как язык общего назначения. Или, скорее, он был разработан для использования в разных целях (но в частности системного программирования). Но он не был предназначен для работы с несколькими парадигмами .
Конрад Рудольф
На самом деле, мультипарадигмальная природа присуща его дизайну, просто благодаря болтовым свойствам OO на C, сохраняя при этом возможность использовать его более процедурные функции, где это уместно.
Джон Перди
@ Джон, хорошо, я признаю это. Тем не менее, общее программирование и шаблонное метапрограммирование не были среди этих функций. И в настоящее время C ++ является одним (и, возможно, основным) языком, который поддерживает эти функции.
Конрад Рудольф
Очень верно. Ад, поддержка общего программирования и constявляются этими две наиболее важными причинами , которые я использую C ++.
Джон Перди
2

ADA - изначально разработан по контракту DoD для авионики. Хотя он по-прежнему используется в этом приложении, он также популярен, например, для промежуточного программного обеспечения в реальном времени.

Vartec
источник
5
Он был построен как язык общего назначения. Министерство обороны хотело, чтобы язык использовался для всего, чтобы уменьшить количество используемого языка.
BenjaminB
Это довольно весело. Ада был языком, явно созданным с целью уменьшения количества различных языков. По этой метрике («разработанной с одной целью, используемой для другой») Ada должна быть выбрана в верхней части списка с Lisp, другим языком против языка.
Джаред Апдайк
2

«Имеет ли предназначение языка какое-либо отношение к его фактическому использованию или становится ли оно популярным?»

Я не думаю, что предназначение языка имеет большое значение для его фактического использования и популярности: есть несколько замечательных языков, которые были изначально разработаны, чтобы быть инновационными, гибкими и универсальными, но никогда не становились настолько широко используемыми или популярными, за исключением очень специализированные вертикальные рынки - например, Eiffel. OTOH, Basic, Pascal, C и т. Д. Доминировали в ландшафте в течение многих лет, хотя изначально они предназначались для ограниченных, специфических целей.

Маркетинговые / финансовые и вспомогательные соображения ИМО всегда играли главную роль в распространении и распространении определенных языков. Например: Borland предлагает TurboPascal и упаковывает, продвигает и поддерживает его. MS предлагает C # и пакеты, продвигает и поддерживает его. В результате эти языки стали популярными, возникла сторонняя инструментальная индустрия, и все больше и больше разработчиков и предприятий пользуются популярностью.

Но за последние несколько лет языки и инструменты openSource меняют динамику, и теперь языки становятся популярными в большей степени на основе «заслуг», чем маркетинга - например, Ruby, Python и Perl. Но это не из-за «намерения» изобретателей, а из-за того, что язык обладает потенциалом для расширения и целесообразного использования.

Майки
источник
2

Я не думаю, что есть популярный язык, который не был переназначен по своему первоначальному замыслу. Даже C изначально был написан для создания портативной ОС (Unix).

Любая попытка написать действительно общий язык программирования без особой цели, вероятно, потерпит неудачу из-за отсутствия сдержанности и сосредоточенности.

Билл К
источник
Постскриптум - это вездесущий (почти на каждом компьютере и принтере), но используется только для печати графики. Хотя можно утверждать, что он был повторно использован при использовании в PDF.
13-е
1

Я слышал, что Ruby был задуман как язык для написания стихов, оказалось, что в нем можно написать и довольно красивый код!

Я буду прямо с тобой. Я хочу, чтобы ты плакал. Плакать. Сладко хныкать. Эта книга - острое руководство по Ruby. Это означает, что код настолько красив, что слезы проливаются. Это означает галантные сказки и мрачные истины, которые вы просыпаетесь на следующее утро в объятиях этой книги.

оборота Тинко
источник
2
Звучит интересно. Любой источник?
Anto
Ссылка на Ruby приводит вас к книге, которая была написана, чтобы научить Ruby художественным способом. Мой ответ - шутка со ссылкой на ту книгу, в которой утверждается, что написание Ruby похоже на поэзию. В действительности можно сказать, что Ruby был разработан как язык программирования общего назначения, но это вдохновило (некоторых) людей смотреть на код Ruby как на поэзию.
Тинко