Чому Python, а не Lua? [зачинено]


45

Чому Python був підтриманий Google і став настільки швидко популярним, а Lua цього не зробив?

Чи знаєте ви, чому Луа залишився на задньому плані?


3
Люа любить робити вигляд, що масиви, а словники - це одне і те ж, і він отримує довжину, яка може не тільки повернути неправильні результати, але й недетерміновані результати. Я не знаю, в чому причини Googles, але це є достатньою причиною, щоб я не любив це.
Steve314

4
Мені Python простіше кодувати, приємніше і має більше можливостей. Деякі приклади з моїх голов: генератори стають першокласним громадянином в Python ( yield), а Lua потребує більш громіздких налаштувань. Індексація списку Python [::]- це величезний плюс. У Python є законні класи та успадкування. Так, Lua швидше, але мені дуже подобається писати код Go для використання в Python, коли важлива швидкість.
Френк Брайс

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

@FrankBryce ви отримали це назад. Генератори Python - це підмножина коренів Lua. Дивіться inf.puc-rio.br/~roberto/docs/MCC15-04.pdf
квітня

Відповіді:


37

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

Через мету, щоб Lua була маленькою, існує лише дуже крихітна стандартна бібліотека, яка має лише функцію голих кісток.

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

Такі речі, як багатопотокова передача, регулярні вирази, незалежні від платформи методи доступу до файлів і навіть бітові операції (до 5.2), все є "не включеними", оскільки вони роблять Lua набагато більшим і повільнішим. Впевнені, що ти можеш зробити так, щоб бібліотеки робили це, але тоді вони мають незалежних обслуговувачів та рівнів якості.

Не зрозумійте мене неправильно. Я люблю Луа з тих же причин, які я щойно перераховував.


54

Просто: у Lua більше "нішевих" цілей, ніж у Python .

Вважається, що Python є корисним як загальна мова програмування. Отже, це корисно у багатьох випадках. Він охоплює багато відомих типів додатків, але не вступає безпосередньо в конкуренцію з іншими мовами, які можуть бути націлені на конкретні обмеження, але простота його синтаксису.

Lua цілком орієнтований на вбудовану мову сценарію. Початкова мета, навіть якщо вона використовується в інших контекстах, як, наприклад, системи побудови; має бути вбудованим у програмне забезпечення та дозволити легку реалізацію функцій та структур скрипта для домену. Він настільки мінімалістичний, що його можна використовувати навіть на дуже обмеженому обладнанні (я використовував Lua на NintendoDS), він легкий, простий у використанні, швидкий, і така мінімалістична мова, але вважається розширеним, що багато діалекту (імпорт парадигм, як об’єкт-орієнтація) доступні. Це настільки портативний (ANSI C), що ви можете використовувати його на будь-якому вбудованому апаратному забезпеченні з пристойним об'ємом пам'яті для сучасного вбудованого програмного забезпечення (якщо я добре пам’ятаю, за замовчуванням lua vm становить близько 400 К і майже ніколи не зростатиме, якщо ви не циклічно створюєте об'єкти ...).

Отже, Lua спочатку використовується в контексті, де потрібно вбудувати мову сценарію для своєї програми .

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

Просто Python використовується в більшій кількості, ніж Lua. Наскільки я знаю, окрім Android (який надає підтримку Java та рідної мови), Google не є вбудованою програмною компанією, тому Lua їм не потрібен всюди, а Python корисний для всього, що вони роблять (веб, система побудови , спілкування, веб та веб).

Python використовується в багатьох іграх і для вбудованих сценаріїв, але він важчий і повільніше, ніж Lua. Синтаксис Python робить його більш підходящим для великих ігор, які багато покладаються на скриптовану інформацію в їхній ігровій структурі (не впевнений, що я там зрозумілий, але просто думаю, що якщо вам потрібна "справжня повноцінна мова" для сценаріїв, вбудовування Python може бути гарна ідея, якщо вистава для вас прекрасна). Python не був зроблений для вбудовування, тому це добре. Еквівалент Python, який спрямований на вбудовування в C ++, - Falcon.

Для кращого порівняння, деякі мови, націлені на вбудовування та намагаються мати більш повний синтаксис, ніж мінімалістичний Lua, і змагаються за продуктивність: ChaiScript, AngelScript, Io ...

До речі, я бачив нові системи збирання, такі як PreMake або Bam, використовують Lua як мову файлів збірки. Ідея полягає в тому, що він легкий і добре відомий розробникам ігор (головна проблема - побудова систем у розробці ігор). То, можливо, це ще один домен, де Lua може бути більш вдячний. Це, звичайно, більш зручно для користувачів, ніж синтаксис CMake ....


4
Я думаю, що ціль Lua як вбудованої мови, ймовірно, є головним фактором. Але навіть все-таки я вважаю, що "популярність" мови має менший розмір щодо фактичного дизайну чи можливостей самої мови і більше питання "правильного часу, потрібного місця" (див., Наприклад, PHP).
Дін Хардінг

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

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

Lua використовується в основному як вбудована мова, але це мова програмування загального призначення, наприклад, ви можете робити CGI-скрипт з mod_lua. Я міг би змінити своє питання, чому Луа залишився вбудованою мовою?
BenjaminB

Тому що це його походження. Ви можете використовувати його як мову загального призначення так, як ви можете використовувати php також для загальних цілей. Ви також можете використовувати Perl, щоб зробити те саме. Але їхнє походження робить свої орієнтації. Знову ж таки, їх початкове призначення робить їх менш корисними, ніж інші мови для мов загального призначення. У Lua відсутня якась функціональна мова, яка буде простою у користуванні системою GUI для прикладів, наприклад, орієнтація на об’єкти (яку ви можете легко додати, але це не рідна мова). Переконайтеся, що ви бачите різницю між мовою, спочатку створеною для конкретних цілей, та загальною. Усі вони так чи інакше мають обмеження.
Клаїм

4

З Lua можна все робити, це створено як мову сценаріїв для розширення програм? Так, але це далеко не обмежується ним, є багато бібліотек для Lua, і за допомогою потрібних інструментів (FFI або tolua LuaJIT) ви навіть можете використовувати на ньому бібліотеку C / C ++. Причиною, завдяки якій Python більше використовується в моїй точці зору, є лише вік, Python використовується в якості перших мов у багатьох коледжах і школах, більше людей, які знають Python, ніж Lua, і набагато простіше знайти хорошу бібліотеку для Python ніж для Луї, бо мова більш зріла. Крім того, я не знаю багато про Python, але наскільки я знаю, легко приховати свій код від кінцевого користувача, що в Lua, це не так просто, я прав?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.