Как быстро должен быть переведенный язык сегодня? - PullRequest
5 голосов
/ 17 мая 2010
  • Является ли скорость (основная / единственно возможная) реализация интерпретируемого языка программирования критерием сегодня?

  • Каков оптимальный баланс между скоростью и абстракцией?

  • Должны ли языки сценариев полностью игнорировать все мысли о производительности и просто следовать концепциям быстрой разработки, читабельности и т. Д .?

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

Ответы [ 7 ]

2 голосов
/ 17 мая 2010

Я не понимаю, почему кто-то написал переводчика в эти дни. Есть две отличные виртуальные машины, CLR (+ DLR) и JVM. Это просто написать компилятор для любой среды выполнения, и тогда вы получите преимущество взаимодействия с огромным количеством существующего кода, плюс фантастические стандартные библиотеки, а также JIT-компиляторы, которые сделают скорость вашего языка не проблема во многих случаи (конечно, быстрее, чем у любого переводчика.)

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

2 голосов
/ 17 мая 2010

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

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

1 голос
/ 17 мая 2010

Так быстро, как нужно разработчику.

Нет правил, просто нужно кормить.

0 голосов
/ 17 мая 2010

Я бы лично выбрал язык с отличным API. Если вы посмотрите на Lua, 90% кода, написанного людьми на Lua C, - это просто шаблон. Если бы появился более медленный язык с гораздо лучшим C ++ API, я бы сразу переключился на него.

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

0 голосов
/ 17 мая 2010

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

Оптимальный баланс между скоростью и абстракцией зависит от типа решаемых задач. Компьютерное время обычно менее ценно, чем время людей, но оба они чего-то стоят. Полностью пренебрегая компьютерным временем, все равно полезно учитывать, сколько времени будет потрачено всего людьми, работающими и ожидающими результатов; пользователи языка должны быть максимально счастливы, когда общее время кодирования + выполнения сведено к минимуму. (Удельный вес по зарплатам программистов и пользователей, если вы хотите сделать максимально сильное экономическое обоснование.)

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

0 голосов
/ 17 мая 2010
  1. Да
  2. Это зависит от того, как ваш язык предназначен для использования.
  3. Нет. Нет причины, по которой нельзя создать быстро читаемый язык, который вряд ли может служить оправданием для игнорирования производительности.

Вы действительно должны сами ответить на эти вопросы, исходя из целей своих экспериментов.

0 голосов
/ 17 мая 2010

Нет единственного ответа на такой вопрос. Ни один ответ не может относиться ко всем возможным целям и аудиториям.

Вероятно, самым важным фактором, который следует принимать во внимание, является то, намереваетесь ли вы, чтобы язык был в основном автономным или использовался в сочетании с чем-то другим. Если вы напишите что-то вроде Lua, которое предназначено в первую очередь (или исключительно) для использования вместе с чем-то другим (C в случае Lua), тогда скорость станет гораздо менее актуальной и интересной. Если вы пишете что-то, что используется в первую очередь само по себе, скорость начинает иметь гораздо большее значение.

...