Чи стала якась мова популярною для чогось іншого, ніж її цільове призначення?


70

Візьміть цей сценарій:

  • Програміст створює мову, щоб вирішити якусь проблему.

  • Потім він випускає цю мову, щоб допомогти іншим вирішувати подібні проблеми.

  • Інший програміст виявляє, що насправді набагато краще для деяких категорій проблем.

  • Завдяки цій новій програмі мова стає популярною насамперед для цієї програми.

Чи є випадки цього насправді?

Інакше кажучи, чи має цільове призначення мови якесь відношення до того, як вона насправді використовується, чи стає вона популярною? Чи навіть важливо, щоб мова мала рекламну мету?


4
Ваш приклад HTML насправді не відповідає тому, що ви шукаєте, чи настільки різні технічні документи, ніж будь-який інший документ? Основна мета HTML досі така ж, як і в 1989 році, - забезпечити прості засоби для документознавства. IMHO HTML - це абсолютно протилежне тому, що ви насправді шукаєте.
янніс

5
Враховуючи довгий список відповідей; можливо, цікавіше протилежне запитання: яка (популярна) мова використовується просто за призначенням?
Яап

@Yannis: Добрий момент. Це не найкращий приклад, і його можна насправді аргументувати будь-яким способом. Відредаговано для видалення.
Джон Перді

@Jaap: Я думав те саме!
leonbloy

2
Я можу помилитися в цьому, але я впевнений, що більшість мов не використовуються для того, що планували їх творці. Я думаю, що великою причиною цього є те, що сторонні люди не знають, для чого це слід використовувати, що допомагає їм бути більш відкритими щодо потенціалу, який має мова.
Кеннет

Відповіді:


118

Лісп . Маккарті спочатку вказав Ліспа в документі, щоб показати, що декількох простих позначень достатньо для побудови цілісної повноцінної мови. Він з подивом виявив, що Lisp може бути реалізований в машинному коді (Стів Руссел зробив першу реалізацію інтерпретатора Lisp). Lisp широко використовується для програмування AI.


70
+1, Lisp не призначений бути мовою програмування! Я не думаю, що ти можеш досягти цього.
Кіліан Фот

7
OTOH, можна стверджувати, що LISP був розроблений для використання на кордоні між програмуванням і математикою, і він залишається там.
MSalters

1
Я вважаю, що Маккарті використовував Лісп як приклад у своїх класах і мав намір написати для нього компілятор, але одного дня в класі згадував, що вручну кодування функції eval буде реалізовуватися інтерпретатор, але, звичайно, "ніхто насправді цього не хоче робити"
Стівен А. Лоу

Мої Lisper друзі кажуть мені , що це не використовується в AI так багато більше, але вона все ще має застосування всюди .
greyfade

111

Java спочатку була призначена для програмування вбудованих систем. З Вікіпедії "Java спочатку була розроблена для інтерактивного телебачення" . Але він став надзвичайно популярним для програмування додатків та веб-програм.


4
Ага. Не можу повірити, що я не думав про це. Це, мабуть, канонічний приклад ... хоча це не означає, що я ще не здивуюсь.
Джон Перді

Хоча, чи справді Java була випущена за вбудовану роботу (до вбудованої Java, яка з'явилася швидше після її просування в Інтернеті)?
Марцін

Найважливішим елементом дизайну Java стала можливість запуску ненадійного коду.

13
історія ще гірша: А) вона була призначена для вбудованих систем. Б) але ніколи не побачив світ, поки його не вдалося вбудувати у веб-сторінки. C) він не отримав поваги до тих пір, поки не використовувався для «корпоративних» веб-додатків і D) нарешті вбудований у багато ОС телефону; але не як апаратний контролер, натомість це платформа GUI.
Хав'єр

Існує проект, щоб перенести його на приставки вже більше 10 років - шукайте OCAP або tru-2way
Білл К

32

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


... а тепер із LuaJIT він знаходить все більше використання в додатках для обробки в режимі реального часу
Хав'єр


@lukas: "Не дуже" що ? Зауважте, що його попередники, SOL і DEL, навіть не мали керуючого потоку, вони були суто конфігураційними мовами. Lua - це розширення цих мов конфігурації, щоб включити підтримку програмування.
Грязьова

"Lua був розроблений головним чином як мова конфігурації", я б сказав як мова програмування.
Лукаш Мадон

7
Можливо, я мав би сказати «за призначенням», а не «розробленим насамперед як». Основна мета - використовувати Lua там, де використовуються SOL та DEL. Це були мови конфігурації, в яких користувачі починали вимагати функцій програмування. Для задоволення цієї потреби був створений Lua. Як заявили самі автори , "Широке прийняття Lua в іграх стало для нас несподіванкою. У нас не було розробки ігор як цілі для Lua". Це майже саме те, що шукала ОП, ні?
Грязьова

32

Первісний намір Ларрі Уолла щодо perl полягав у тому, що " універсальна мова сценаріїв Unix полегшила обробку звітів ", а сторінка man описує мову як:

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

І звичайно, сторінка man також повідомляє нам, що Perl означає Практичне вилучення та мову звітів (фактична назва - неправильне написання оригінальної назви Pearl , зміненої, коли Wall виявив уже існуючу мову PEARL ).

З того часу Перл пройшов довгий шлях, оскільки це мова, з якої боги вибудували Всесвіт .

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


23
Слід виправити це: Патологічно еклектичний лістер сміття
Річард

3
Існує не один шлях до унаббреву! Дуже

Будь-яка абревіатура для Perl насправді є назвою.
CanSpice

1
@DarkTemplar Я так трактую, що Perl прокрався - це майже скрізь. З цього покірного початку perl перетворився на дуже популярну веб-мову, надзвичайно популярну мову сценаріїв, дещо популярну багатоцільову мову, її синтаксис регулярного вираження став чимось остаточним, народив іншу мову (php) тощо. Плюс комічний також згадується lisp, що є прийнятою відповіддю на запитання, тому я подумав, що це веселе (хоч і неточне) змалювання відносин двох мов (одна - мрійлива, а інша - якою користуються насправді люди).
янніс

1
@DarkTemplar Yeap. Він знаходиться в першій десятці індексу TIOBE . Звичайно, ви не можете сприймати індекс TIOBE дуже серйозно, це досить відносно і суб'єктивно. Але все ж хороший показник популярності мови.
янніс

28

Я б здогадався, що JavaScript вписується і в це питання, тому що я не думаю, що Брендан Ейх, ще за часів Netscape, ніколи не уявляв, що майбутні версії його LiveScript будуть використовуватися для створення сьогоднішніх так званих веб-додатків.

JavaScript перейшов від простої перевірки форми та перекидання зображень на потужний інструмент, який здатний конкурувати офлайн-програми, як за функціональністю, так і за красою.

На жаль, хоча, я думаю, багато хто все ще вважають це іграшкою.


31
Цікавим є те, що він рухається до того, що це мова збирання Інтернету. Іншими словами, те , що інші мови скомпільовані вниз і стратили. Я не вірю , Брендан Ейч очікується , що .

3
є що додати: це не просто сценарна мова на стороні клієнта. Багато проектів, таких як node.js або носоріг, використовують JavaScript як серверну мову
gion_13

Просто цікаво, але що таке "сценарій мови на стороні клієнта" порівняно з "мовою на стороні сервера" .......?
Темний тамплієр

@DarkTemplar. На сервері виконується мова скриптів на стороні сервера, а її вихід надсилається в браузер. Мова сценаріїв на стороні клієнта надсилається до браузера таким, яким він є, і запускається там. (Звичайно, мова серверної мови може використовуватися для виведення мови на стороні клієнта, якщо ви хочете.) Єдиною мовою, яка працює в більшості браузерів, є JavaScript.
TRiG

19

Ерланг. Це було винайдено дуже давно в лабораторіях Ericsson для розробки програм телефонії, ймовірно, для їх ліній комутації та пристроїв доступу. Зараз він перетворився на багатообіцяючу динамічну загальну мету з цікавою концепцією паралельності.

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


І хіба це не було одним із натхнень для node.js?
dodgy_coder

Не думайте, що це кваліфікується. Причина, що Ерланг був винайдений для телефонії, - це те, що їм потрібна загальна мова динамічної одночасності. Все одно це.
Alan Baljeu

15

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


3
Хе, це багато що пояснює…
ткнути

2
@poke: Прокляття , я знаю.
Неревар

Хе-хе, я бачу, що ти там робив.
Труфа

Гей, може хтось пояснить цю відповідь? Лол. Я ноб!
Темний тамплієр


14

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


18
Звичайно, найбільший користувач PHP, Facebook, багато в чому залишається на ринку персональних домашніх сторінок.
Яап

3
"PHP / FI був створений Расмусом Лердорфом у 1995 році, спочатку як простий набір сценаріїв Perl для відстеження доступу до його онлайн-резюме". Довгий шлях, дитино.
нікфф

У той час як PHP все ще дуже є веб-мовою, він зазнав деякої зміни функції: PHP мав бути вбудований у вигляді невеликих фрагментів всередині HTML, тоді як багато проектів генерують HTML-рядки в PHP. Вони все ще потребують <?phpтегу на початку файлу!
Варбо

14

Я цілком впевнений, що VBScript не призначений для написання шкідливих програм, хоча це надзвичайно поширене використання.


1
Це трохи суворо, ти не думаєш. Java та C мали неабияку частку шкідливих програм.
Джеремі

@JChild: Минуло кілька років з часу Вашого коментаря. Однак навіть захист VB було дуже дивною справою.
Маг

@Magus Це навіть не VB. Це VBScript. Знаєте, файли з розширеннями .vbs. Ті, які ви автоматично припускаєте, - це віруси, коли їх бачите.
user16764

13

Спочатку розроблений як метод зробити код більш загальним, мета-програмування шаблонів на C ++ виявилося завершеним, і донині використовується для значного вдосконалення мови C ++ через такі бібліотеки, як boost.


8
... і довести програмістів C ++ до сліз із надто довгими
термінами

8
і жахливі повідомлення про помилки.
DeadMG

11

BASIC - ще один відомий випадок. Це ім'я ( Код символічної інструкції для початківців ) натякає на його походження як мову, яка навчається, але з цього часу вона виросла зовсім небагато.


24
хе - мікрософт замінив "початківців" на "бізнес" і досяг успіху мільйонами
Стівен А. Лоу

11

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

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


Приємна реальна модель, що керується розвитком
Jaap

@Mark Так, VHDL - це високошвидкісна інтегральна схема, мова опису апаратних засобів. Верилог - це зовсім інша мова. 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 став "дуже популярним", це трохи розтягнення
nikie

Можливо, але, окрім своїх прямих користувачів сьогодні, він вплинув майже на кожну введену мову, яка з’явилася після неї.
Райан Калпеппер

7

C
Спочатку він був розроблений для використання в операційній системі Unix. Але Мова стала такою популярною, що навіть Денніс Річі здивувався.
У своїй знаменитій книзі Мова програмування C . Рітчі стверджує, що "він поширився далеко за межі свого походження як мова операційної системи UNIX". і як він здивувався, оскільки це стало популярною мовою для розробки додатків.


11
Ну, спочатку він був розроблений для розробки систем та додатків низького рівня в крос-платформному режимі. Він залишається співзвучним своїм початковим цілям, незважаючи на популярність, тому не підходить.
Джон Перді

3
@Jon Добре це підходить, оскільки це переросло його мету, ставши найпростішим способом застрелити себе в ногу.
янніс

1
@Yannis: Ха-ха, правда. Але я запитую про мови, основне призначення яких змінилося вкрай, а не про ті, які просто переросли в більші цілі.
Джон Перді

Я додам, що C став популярним як одна з найпростіших мов для неясних конкурсів кодів.
Петро Г.

Хіба це не було розроблено для реалізації операційної системи?
Нікко

3

Спочатку C ++ був розроблений як "C з класами" для полегшення об'єктно-орієнтованого програмування в C ++.

Потім шаблони були надані в більш пізній версії, щоб забезпечити реалізацію сильно типізованих класів контейнерів. Лише пізніше було помічено, що ці шаблони фактично є мовою програмування повного часу компіляції.

Як наслідок, зараз багато програм використовують C ++ не як об'єктно-орієнтовану мову програмування, а як алгоритми, орієнтовані на алгоритми, які в значній мірі покладаються на поліморфізм та метапрограмування під час компіляції.


7
Але C ++ призначений для загального призначення і використовується як мова загального призначення.
БенджамінB

@ Ubiquité Я не думаю, що C ++ дійсно був розроблений як мова загального призначення. А точніше, він був розроблений для використання для різних цілей (але зокрема системного програмування). Але він не був розроблений для роботи з декількома парадигмами .
Конрад Рудольф

Насправді, характер мульти-парадигми притаманний його дизайну, просто завдяки закріпленню функцій ОО на C, зберігаючи при цьому можливість використовувати її більш процедурні функції.
Джон Перді

@ Jon OK, я визнаю це. Однак загальне програмування та метапрограмування шаблонів не було серед цих особливостей. І на сьогодні C ++ є однією (і, мабуть, основною) мовою, яка підтримує ці функції.
Конрад Рудольф

Дуже правильно. Пекло, підтримка загального програмування і constє цими дві найбільш важливими причинами , які я використовую C ++.
Джон Перді

2

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


5
Він був побудований як мова загального призначення. Міністерство охорони здоров'я бажало використовувати мову для всього, щоб зменшити кількість використовуваної мови.
БенджамінB

Це досить весело. Ада була явно створеною мовою, щоб зменшити кількість різних мов там. За цією метрикою ("розроблена з однією метою, використовується для іншої") Ада має бути проголосована вгорі списку разом з ще однією антимовною мовою Lisp.
Jared Updike

2

"чи має цільове призначення мови якесь відношення до того, як вона насправді використовується, чи стає вона популярною?"

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

ІМО маркетингові / фінансові та міркування щодо підтримки завжди відігравали важливу роль у поширенні та поширенні певних мов. Наприклад: Borland придумує TurboPascal та пакети, продає і підтримує його. MS придумує C # та пакети, продає та підтримує їх. В результаті ці мови стали популярними, з'явилися сторонні інструментальні галузі, і все більше і більше розробників і підприємств стрибають на прокладці.

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


2

Я не думаю, що існує популярна мова, яка не була перероблена з її первісного наміру. Навіть C спочатку було написано, щоб зробити портативну ОС (unix).

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


постскрипт - всюдисущий (майже на кожному комп’ютері та принтері), але використовується лише для друку графіки. Хоча можна стверджувати, що він був перероблений під час використання у форматі PDF.
13річ

1

Я чув, що Рубі був розроблений як мова для написання віршів, виявилось, що ви можете також вписати в неї досить гарний код!

Я буду з тобою прямо. Я хочу, щоб ти плакала. Плакати. Щоб солодко скиглити. Ця книга - гострий путівник Рубі. Це означає, що настільки красивий код, що проливають сльози. Це означає галантні казки та похмурі істини, які ти прокинувся наступного ранку в обіймах цієї книги.


2
Звучить цікаво. Будь-яке джерело?
Анто

Посилання на Рубі перенесе вас до книги, яка була написана для того, щоб навчити Рубі художньому способу. Моя відповідь - це жарт щодо тієї книги, яка стверджує, що писати Рубі - це як поезія. Насправді можна сказати, що Рубі був розроблений як мова програмування загального призначення, але це надихнуло (деяких) людей сприймати код Рубі як поезію.
Tinco
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.