Является ли Lua основой, прежде всего, устоявшихся идей на языке программирования?

Lua занимает хорошее место в пространстве языков, которые могут быть встроены. Являются ли основные идеи Lua дизайном новых идей от разработчиков, или Lua в первую очередь хорошо выполненная комбинация хорошо известных идей?

Сравнение свойств и особенностей Lua с другими PL особенно уместно.

Ответ 1

Это очень интересный вопрос. Моя дневная работа - изучать языки программирования, а Lua будет тщательно изучать. Я бы сказал, что о очень немногих других языках (возможно, Icon и CLU). Обратите внимание, что это язык в целом, а не отдельные особенности, что делает Lua настолько достойным изучения.

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

И. Для получения подробной информации лучшим источником ответа на этот вопрос является статья The Evolution of Lua, которая появилась на третьем симпозиуме ACM по истории языков программирования. Но я добавлю несколько комментариев.

  • Использование Lua-таблиц как единственного изменчивого неатомного типа данных было изобретено командой Lua. Они были вдохновлены событиями в CLU, и я считаю, что они знали о подобной работе в Awk и Icon, но уточнение в этой степени является важным вкладом команды Lua.

    Таблицы также имеют очень эффективную реализацию, которая была изобретена командой Lua.

  • Функциональные возможности Lua имеют ту же семантику, что и Scheme, но Lua имеет уникальную реализацию первоклассных функций, которые, я думаю, они должны представить для публикации в Journal of Functional Programming.

  • API для внедрения был значительно усовершенствован на протяжении многих лет. Его основной отличительной особенностью является то, что пользовательские абстрактные типы могут полностью участвовать в встраивании. Это свойство, которое делает Lua API превосходнее API Tcl, например. На протяжении многих лет API Lua претерпел значительные улучшения, в том числе с момента его первой публикации в версии 2.5. Дизайнеры Lua заслуживают здесь большой заслуги.

  • Технология сбора мусора является стандартной.

  • Lua coroutines представляют собой новый подход к некоторым очень старым идеям. Новый подход считается достойным публикации в ACM Transactions на языках программирования и системах, поэтому я снова думаю, что команда Lua заслуживает оригинальности.

  • Метаданные Lua связаны с общим метаобъектом Lisp.

Я думаю, что успех Lua проистекает из уникальной комбинации сильных сторон команды Lua:

  • Если вы прочитали документ HOPL, вы увидите, что команда Lua хорошо знала о многих событиях на языках программирования и смогли выбрать из лучших идей. Большинство разработчиков популярных языков сценариев были любителями и не были так хорошо информированы.

  • Lua великолепно спроектирован таким образом, что куски очень хорошо сочетаются с отличным соотношением мощности к весу. Это стало результатом многого улучшения с течением времени, и PUC-Rio желала, чтобы команда Lua работала над дизайном и внедрением языка, а не измельчала огромное количество бумаг. Эта работа не могла быть выполнена в североамериканском университете.

  • Lua великолепно спроектирован. Реализация просто потрясающе хорошо. Эта отчасти отличная работа великих инженеров и отчасти возможность постоянно пересматривать дизайн за 15-летний период.

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

Ответ 2

Lua поддерживает функциональное программирование и основан на Prototype-based стиль программирования, который является гибким и мощным.

ИМО это интересный язык.

Если вы хотите прочитать некоторые мысли о наследовании прототипа, я предлагаю вам прочитайте статью Steve Yegge Публикация блога Universal Design.

Ответ 3

Lua невелик, общий код - всего лишь десятки тысяч строк в ANSI C. (Python имеет десятикратные строки кода).

Lua очень стабилен, или, скажем, язык исправлен.

У Луи хорошая инженерия. Его код легко читать и взламывать. (также потому, что маленький)

Его лицензия позволяет делать то, что вы хотите.

Написание C-расширений в Lua проще других языков, например Python.

Ответ 4

Там Lambda The Ultimate история, Small is Beautiful: дизайн Lua, обсуждающий недавний разговор Роберта Иерусульского в одноименном Стэнфорде, В настоящее время дискуссия сосредоточена на преимуществах наличия таблиц в качестве единственной структуры данных контейнеров; до сих пор мало что было сказано в другой части разговора, касающейся интерфейса Lua C.

Ответ 5

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