2010-01-21 5 views
4

Это может быть глупый вопрос, но все же я иду вперед и спрашиваю его. В настоящее время я вижу новые динамические языки, такие как Groovy, которые разрабатываются для JVM, и такие языки, как Ruby, приобретают известность.Каковы проблемы, требующие создания нового языка программирования?

Кажется, что каждый из них решает различные недостатки существующих языков.

Есть ли какие-либо проблемы или проблемы, которые не решаются ни одним из существующих языков?

+3

Это должен быть вопрос вики – AutomatedTester

+0

Пожалуйста, отметьте это сообщество wiki, прежде чем оно закрывается, потому что это не вопрос. – slebetman

+0

сделано - отмечено как сообщество wiki – Hari

ответ

5

Новые языки возникли по ряду причин:

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

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

Редактировать: Важно помнить, что когда дело доходит до «проблем», это часто субъективно. Многие считают управление памятью проблемой, вызвавшей рост сбора мусора. Не все согласны.

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

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

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

Наконец, ни один язык не подходит для всех задач. Как то, что мы хотим делать с изменениями программ, так же как и на языках. Теперь веб-разработка является огромной силой в программировании. Это было не 10-15 лет назад. Полезные функции для веб-разработки не обязательно совпадают с написанием супертяжелых настольных приложений, так что языки тоже развиваются.

+0

Но, конечно, будут проблемы, которые повторяются во всех языках, например, управление памятью или простота, с которой мы можем работать со списком в pytho, в отличие от Java. Я просто хотел собрать небольшой список таких проблем. – Hari

7

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

  1. Новые парадигмы программирования, например. объектно-ориентированное программирование, аспектно-ориентированное программирование и т. д.
  2. Доменные языки, например. веб-разработки, языков программирования и т. д.
  3. Личные предпочтения

Любой язык имеет свои недостатки, ни один язык не может быть совершенным. C - низкий уровень, поэтому, как правило, это не самый приятный язык для программирования, скажем, веб-сайт, с другой стороны, я бы не хотел программировать ОС в php, это было бы катастрофой и т. Д.

+0

Хорошо, поэтому процедура привела к ООП, так что мы можем преодолеть проблемы maintinaing больших кодовых баз и написать код, отражающий каждый день абстракции. Таким образом, возможно, что новый язык развивается, так что он легко программируется для облака или позволяет говорить о распределенных системах? – Hari

+2

Для распределенных систем посмотрите, скажем, Erlang. –

+0

@ Хари это не тот случай, когда ООП строго лучше процедурного, для некоторых проблемных областей ООП очень хорош, но для других это может быть очень плохой подход. На самом деле это тоже вопрос вкуса. – wich

1

I думаю, что это в основном для удобства. Например, возьмем C++ или Assembly; насколько я знаю, любые проблемы могут быть решены с их помощью, но сложнее проблемы могут быть сложными, поскольку, например, когда вы создаете приложение для форм Windows, вам, естественно, не нравится, что вам нужно поиграть с указателями; это просто занимает много вашего драгоценного времени и энергии.

Другим очень хорошим примером является экспериментальный язык программирования для .NET, Axum, который позволяет сделать потоки очень удобными.

Кроме того, специализированные языки программирования обеспечивают большую эффективность в определенных областях; подумайте о SQL (я знаю, что это не «настоящий» язык программирования, но я думаю, что это хороший пример).

Кстати, все это весело для тех, кто делает это ради радости (а также деньги, конечно); Я часто экспериментирую с другими языками программирования, отличными от тех, которые мне нужны, потому что они просто разные и интересные. Создание компиляторов и переводчиков также является очень интересной и сложной задачей для некоторых людей.

+0

Что не реально в SQL? Oracle и MS сделали это «Выберите 2 + 3 в сумму»; -> – Kugel

2

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

Мы также видим тенденцию к смешению парадигм , например. все больше и больше объектно-ориентированных языков теперь включают элементы из функциональной парадигмы. Это требует большого количества проб и ошибок, пока не будет найдена идеальная смесь. Рассмотрим, например, Scala, которые содержат много идей на одном языке. Или Clojure, который передает транзакции прямо на язык.

Такая идеальная смесь , вероятно, никогда не будет существовать, будет подвержена мнению и вкусу, и поэтому мы продолжим предлагать новые абстракции для работы с программированием.

+0

Что случилось с языками FOOL? В начале 90-х годов предполагалось, что это язык под названием «Рай», который объединил бы функциональные, объектно-ориентированные и логические (FOOL) парадигмы. – Kensai

0

В некоторых случаях новые языки программирования полезны для использования новых аппаратных архитектур. Например, использование массивной параллельной мощности графического процессора намного проще с использованием специально разработанного для этого языка.

+0

есть ли какой-либо язык для использования мощности GPU? – Hari

+0

обратите внимание на библиотеки, такие как CUDA (для nvidia), они никоим образом не унифицированы. – Kugel

Смежные вопросы