Что движет внедрением новых языков программирования или нет? [закрыто]

12

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

DeadMG
источник
2
Шанс и корпоративная поддержка - большой фактор. steve-yegge.blogspot.com/2007/02/next-big-language.html
Работа
3
Неподходящий вопрос для этого форума
Райан
Ну, для одного это не форум. И для двоих, я думаю, что это вполне соответствует руководящим принципам для субъективного вопроса.
DeadMG
1
Принятие языка программирования обратно связано с количеством хипстеров, которые его используют.

Ответы:

18

Если бы кто-нибудь действительно знал, они были бы очень богатыми людьми.

Тем не менее, вот мое предположение:

Доступность

BASIC - ужасный маленький язык, который появился на (всех?) ПК, когда они только появились. Apple II (стандартный компьютер для многих вузов) и ATARI 400/800 (первый супер дешевый домашний компьютер) поставлялись с BASIC.

Если у вас был компьютер с UNIX (система AT & T V или Berkeley), у вас был C. Если вы хотели запрограммировать компьютер, это то, что вам нужно было использовать.

РЕДАКТИРОВАТЬ : С появлением и повсеместным распространением сети, это требование превращается в:

  1. Сколько дистрибутивов Linux упаковывают последнюю копию и насколько хорошо они поддерживают ее актуальность? Доступны ли сторонние библиотеки аналогичным образом для установки?
  2. Легко ли установить в Windows (XP | Vista | 7,8 ...)?
  3. Покрыты ли Mac / iOS-платформы?
  4. Может ли это быть установлено без помех на устаревшем Unix?
  5. И после установки, насколько легко получить доступ к сторонним библиотекам и можно ли легко их обновить?

Легкость перехода

Ява является хорошим примером здесь. Если вы знали программирование на C, то Java не была далеко впереди, и все же она давала многие функции, которых не хватало в C, и C ++ не смог обеспечить чисто.

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

Perl был объединением C, awk, sed и других утилит Unix в одном комплекте. До его появления большинство системного администрирования выполнялось с помощью сценариев оболочки, склеивающих все вместе неудовлетворительным образом. Объединение всего процесса в один процесс со структурами данных и контролем над C-подобным языком было настоящей находкой.

Заполняет потребность

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

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

Аналогично для LISP и символических манипуляций.

Python вырос из необходимости «лучшего» Perl. (Я здесь предвзятый, поэтому не буду больше говорить.)

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

Адвокация, Пользовательская база, Добавленный код

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

Многие языки имеют культ личности за создателем (ями) языка, и мы все знаем, кто они.

Фортран имеет огромные наборы проверенного и проверенного математического кода; то же самое для Java и веб / системная интеграция / MVC-системы; то же самое для Perl и CPAN; то же самое для T E X и управления документами; и т.п.

Это фактор

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


Во всяком случае, это мое лучшее предположение, почему некоторые делают это. Что касается того, почему некоторые не ... ну, если они не соответствуют вышеуказанным критериям, возможно, поэтому они потерпели неудачу.

unpythonic
источник
1
Определяющим фактором в большинстве ваших критериев является корпоративная поддержка . Ява, возможно, выиграла, например, за простоту перехода, но без того, чтобы кто-то, готовый взорвать на это миллионы, из года в год, как часть их плана мирового господства, неясно, что это могло бы изменить. Итак, вы правы, очень богатые знают ответ на этот вопрос :-)
jaybee
4
@jaybee - не уверен, что корпоративная поддержка со стороны создателей языка обязательно помогла. Фортрану и С не особо помогли выходцы из IBM / ATT. Ссылка на Oracle, похоже, активно вредит Java. Basic, Perl, Python, Ruby и т. Д. За ними не было корпораций. Внутренняя поддержка со стороны пользователя / клиента важна, но это следует вскоре после того, как она станет повсеместной.
Мартин Беккет
1
@ Мартин Беккет: у вас может быть точка. Хотя я действительно думаю, что, хотя для того, чтобы язык достиг критической массы, может потребоваться согласование всех видов планет, «современный» способ привести эти планеты в соответствие, похоже, состоит в том, чтобы сжечь деньги. Например, Марк использует Haskell в качестве примера - у него может быть отличная вокальная база пользователей, но GHC выигрывает множество аргументов за них. Компиляторы, такие как GHC, стоят денег.
Джейби
@jaybee - много удачи. Но для крутых новых веб-языков это может быть маркетинговый навык создателя / раннего пользователя, вот что имеет значение.
Мартин Беккет
11

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

Джава

  • Автоматическое управление памятью (сравните с C ++ и C)
  • Язык / API, встроенный в Threading
  • Работает на виртуальной машине (это означает, что разработчики могут использовать Windows на машинах разработки для тестирования и развертывания приложения без изменений в Linux / Unix).
  • Сетевое программирование намного проще, чем на языках, которые были наиболее популярны раньше (C ++ и C), и Java был выпущен, когда Интернет стал популярным.

PHP

  • Сделайте веб-разработку легкой
  • Встроенная поддержка для подключения к базам данных MySQL
  • Компиляция не требовалась, и было легко включить скрипты прямо в ваши HTML-файлы.

JavaScript

  • Только язык для веб - браузеров.
  • Веб-браузеры все чаще используются в качестве тонких клиентов (веб-приложений).
  • Мобильный код - прост в развертывании и не требует установки

Objective-C

  • Язык среды Mac OS X и iPhone. И iPhone имел огромный успех.

Рубин

  • Вместе с Ruby on Rails - веб-средой, значительно упростившей крупномасштабную веб-разработку с помощью MVC.

C #

  • Язык для сред Windows за последние десять лет. Почти все API-интерфейсы Microsoft просты в использовании с C #, например, Winforms, WPF и WCF.

ActionScript

  • Только язык для Addobe Flash / Flex, который имел огромный успех для медиа - контента в сети Интернет и то , что JavaScript не мог справиться.

Erlang

  • Параллельность и отказоустойчивость - у Erlang была уникальная модель для обеспечения параллелизма и отказоустойчивости систем. Начал быть полезным для индустрии телекоммуникаций, позже был открыт и привлек интерес крупных интернет-компаний, которым также требовалась отказоустойчивость.
Jonas
источник
1
Модель параллелизма Эрланга не уникальна, она просто отличается от той, что используется уродливыми императивными языками :). Скала имеет тот же тип. Точно так же Clojure и Haskell специализируются на STM.
альтернатива
4
@mathepic: Да, но все эти языки новее, чем Erlang. Так что в начале это было уникально для Эрланга - как и для почти всех языковых функций, которые я перечислил. Хорошие идеи стоит украсть.
Джонас
1
C # - это язык .net. Я думал, что Windows на самом деле написана на C ++. Я ошибаюсь в этом. Я бы сказал, что C # стал популярным благодаря использованию языка, который люди уже знали (C), с новой структурой, которая упростила разработку мощных приложений с помощью мощного, простого в использовании инструмента редактора, учитывающего потребности разработчиков и фактическое использование.
SoylentGray
1
@Chad C # не имеет ничего общего с C
альтернатива
1
@mathepic - я работал над программированием на C, C ++ и C #. Я могу сказать, что C # все еще сохраняет свои корни c, насколько Nomeclature. Конечно, он вышел за пределы C, что не означает, что он не использует язык.
SoylentGray
5

Я буду циником: деньги и буду с этим, маркетинг.

Не случайно C # поддерживается Microsoft, Java - Oracle, Objective C - Apple. Только Google Go пока что не поднял.

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

Карра
источник
Должен согласиться и расширить: модные слова, управленческая привлекательность, громкие имена, захватывающее звучание функций. Если вы не согласны, я просто назову одно имя: КОБОЛ.
SF.
1
C # и Obj-C не столько поддерживаются, сколько «обязательны». Сложно программировать приложения для Windows на c ++ только с помощью API, предоставляемого MSFT, и AFAIK разрешен только obj-C по крайней мере на мобильных платформах Apple. С другой стороны, иск Oracle к производителям Android может навредить Java
Мартин Беккет
1
@Martin - Вы в значительной степени правы WRT Obj-C. Технически, вы можете использовать такие вещи, как Appcelerator Ttanium, чтобы использовать другие языки для написания приложений, но он все равно преобразуется в Obj-C для развертывания (и это была борьба за то, чтобы получить даже это). Apple запретит все остальное (даже PhoneGap прошел тонкую грань).
Шона
3

С одной стороны, это маркетинг, точнее презентации, блоги и т. Д. Важно иметь функции, к которым обычные программисты могут относиться и видеть преимущества по сравнению с тем, что они знают (Java против C ++ - сборщик мусора против управления памятью). И последнее, но не менее важное - иметь низкий барьер для входа - примеры, хорошую документацию, беспроблемную установку, хорошее сообщество и поддержку, динамичное развитие.

Габриэль Щербак
источник
1

Почти все языки имели нетривиальные, реальные программы решения проблем, написанные с использованием их очень рано.

Unix был написан на C, как и инструменты на Unix, когда C был очень молодым и развивающимся.

Anaconda (программа установки RedHat) была написана на Python, когда Python был молодым и не пользовался популярностью сегодня.

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

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

vpit3833
источник