Регистрозависимость идентификаторов в lua
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Регистрозависимость идентификаторов в lua
А есть надежда, что будет поддерживаться MCTL_GETLASTERROR? А то очень неудобно ошибки искать.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Spring — внедрение Lua в качестве макроязыка
Будет, но поскольку Lua возвращает только номер строки с ошибкой, то ErrPos будет просто числом а не COORD. Также не будет ErrCode.Max Rusov wrote:А есть надежда, что будет поддерживаться MCTL_GETLASTERROR? А то очень неудобно ошибки искать.
На самом деле никаких особых трудностей с этим быть не должно, просто откладывал всё время "на потом".
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Spring — внедрение Lua в качестве макроязыка
А то, что при вызове MacroControl c MSSC_CHECK никак не диагностируются ошибки вызова неправильных функций: qwerty(1) - это поправимо, или это особенность LUA, типа позднее связывание какое-нибудь?...
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Spring — внедрение Lua в качестве макроязыка
Да, именно позднее связывание. В макроязыке было фиксированное количество функций, причём их имена не могли меняться во время исполнения, поэтому такая проверка была возможна. В Lua имя функции не фиксировано, может динамически меняться (и сами функции могут создаваться во время исполнения программы).Max Rusov wrote:А то, что при вызове MacroControl c MSSC_CHECK никак не диагностируются ошибки вызова неправильных функций: qwerty(1) - это поправимо, или это особенность LUA, типа позднее связывание какое-нибудь?...
P.S. Существуют инструменты для "статического анализа" программ на Lua, они позволяют вылавливать некоторые подобные ошибки.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Spring — внедрение Lua в качестве макроязыка
Понятно, жаль. Это особенно неудобно, в связи с регистро-чувствительностью функций. Написание макроса превращается в головоломку "попробуй угадай регистр". Можно, хотя бы, сделать макрос регистро-нечувствительным?
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Spring — внедрение Lua в качестве макроязыка
Мне кажется, эти опасения несколько преувеличены. Просто, видимо, привычка писать на Паскале сказывается. Те, кто пишет на Си, не считают это головоломкой. Как сказал NightRoman (в вольном пересказе), макрос пишется один раз, а используется долгое время, поэтому даже лучше, если регистр переменной для всех макросов будет одинаковый.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Spring — внедрение Lua в качестве макроязыка
Ну в C то ошибки находятся при компиляции. А для скриптового языка с поздним связыванием - регистро-чувствительность очень странное решение...
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Spring — внедрение Lua в качестве макроязыка
Могу согласиться (из своего опыта), что такие ошибки случаются и, действительно, обнаруживаются "поздно". Но регистронезависимость тут не спасёт, можно ведь делать и другие ошибки в написании имён, и они тоже будут обнаруживаться "поздно".Max Rusov wrote:Ну в C то ошибки находятся при компиляции. А для скриптового языка с поздним связыванием - регистро-чувствительность очень странное решение...
Компилятор в Си и других языках - да, обнаруживает ошибки синтаксиса, но не обнаруживает логических ошибок. В любом случае, необходимо тщательное тестирование программ. И вот тут-то происходит выравнивание, т.е. относительное неудобство "позднего связывания" не вносит значительного вклада в общие трудозатраты. Ну и повторюсь - существуют инструменты "статического анализа" и для Lua.
-
- Posts: 1515
- Joined: Wed 16 Mar, 2005 06:26
- Location: Новосибирск
- Been thanked: 1 time
- Contact:
Re: Spring — внедрение Lua в качестве макроязыка
По поводу регистрочувствительности
«Программа должна быть максимальна лояльна к входным данным и максимально строга к выходящим».
«Программа должна быть максимальна лояльна к входным данным и максимально строга к выходящим».
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.
xmpp:kildor@jabber.ru
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.
xmpp:kildor@jabber.ru
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Spring — внедрение Lua в качестве макроязыка
Это аргумент в пользу регистро-независимости языков? Почему тогда столько языков регистро-зависимых (наверное, даже большинство)?
Холивар это все Но тема популярная, вот тут много интересных вещей попалось (англ.)
http://stackoverflow.com/questions/5032 ... -sensitive
Пара шуточных "одно и то же?" оттуда:
IAmNowHere или IAmNowhere?
ExpertSexChange или ExpertsExchange?
Имею дело с разными подходами практически одновременно, то и дело переключаясь, например: С++, С#, R, JavaScript и CMD, PowerShell, SQL. Никаких особых проблем ни там, ни там не вижу. И трудно сказать, что лучше. Для шеллов в Виндовс, наверное, логично, что они игнорируют регистр, инфраструктура как бы навязывает.
Вот и с языком программирования обычно идет некоторая подпорочная инфраструктура. Как правило, она имеет имеет тот же подход к регистру, что и сам язык. Пример: таблицы в регистро-зависимом Lua - регистро-зависимые, а в регистро-независимом PowerShell - регистро-независимые (по умолчанию имеется в виду, настроить можно все, наверное).
В общем, раз Lua регистро-зависимый (это само по себе не плохо и не хорошо, просто факт), то удобно эту концепцию иметь "по умолчанию" на максимум вещей и в нашем его применении. Проще задействовать имеющиеся подпорки, меньше помнить конвенций (проще одну - всё регистро-зависимо, во всяком случае, этого следует ожидать по умолчанию), и т.п.
Холивар это все Но тема популярная, вот тут много интересных вещей попалось (англ.)
http://stackoverflow.com/questions/5032 ... -sensitive
Пара шуточных "одно и то же?" оттуда:
IAmNowHere или IAmNowhere?
ExpertSexChange или ExpertsExchange?
Имею дело с разными подходами практически одновременно, то и дело переключаясь, например: С++, С#, R, JavaScript и CMD, PowerShell, SQL. Никаких особых проблем ни там, ни там не вижу. И трудно сказать, что лучше. Для шеллов в Виндовс, наверное, логично, что они игнорируют регистр, инфраструктура как бы навязывает.
Вот и с языком программирования обычно идет некоторая подпорочная инфраструктура. Как правило, она имеет имеет тот же подход к регистру, что и сам язык. Пример: таблицы в регистро-зависимом Lua - регистро-зависимые, а в регистро-независимом PowerShell - регистро-независимые (по умолчанию имеется в виду, настроить можно все, наверное).
В общем, раз Lua регистро-зависимый (это само по себе не плохо и не хорошо, просто факт), то удобно эту концепцию иметь "по умолчанию" на максимум вещей и в нашем его применении. Проще задействовать имеющиеся подпорки, меньше помнить конвенций (проще одну - всё регистро-зависимо, во всяком случае, этого следует ожидать по умолчанию), и т.п.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Spring — внедрение Lua в качестве макроязыка
Вот только считать ли саму программу входными данными?Kildor wrote:По поводу регистрочувствительности
«Программа должна быть максимальна лояльна к входным данным и максимально строга к выходящим».
В Macro2Lua конвертере пришлось проявить особую лояльность к переменной %Comment. Помимо регистронезависимости, конвертер разрешает первой букве быть как ASCII "C", так и русской "С" в UTF-8 (такие макросы мне попадались), а также разрешает вариант написания с одним "m".
-
- Posts: 1515
- Joined: Wed 16 Mar, 2005 06:26
- Location: Новосибирск
- Been thanked: 1 time
- Contact:
Re: Spring — внедрение Lua в качестве макроязыка
Проблема в том, что помимо луы, у нас ещё есть багаж из существующих макросов и привычек набитых на этих макросах. А макросы у нас всю жизнь были регистронезависимыми.
Если уж выдрали старое и привычное, правильнее сделать так, чтоб переход был удобен для людей, пользующих фар ради макросов.
PS: А почему не expert_sex_change? Уж точно не перепутаешь, и тоже имеет полное право на жизнь.
> Вот только считать ли саму программу входными данными?
Всегда считал макрос, даже очень навороченный лишь входными данными. Скажем как и HTML.
А что, в луе нельзя использовать UTF-8 переменные, только аски?
Если уж выдрали старое и привычное, правильнее сделать так, чтоб переход был удобен для людей, пользующих фар ради макросов.
PS: А почему не expert_sex_change? Уж точно не перепутаешь, и тоже имеет полное право на жизнь.
> Вот только считать ли саму программу входными данными?
Всегда считал макрос, даже очень навороченный лишь входными данными. Скажем как и HTML.
А что, в луе нельзя использовать UTF-8 переменные, только аски?
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.
xmpp:kildor@jabber.ru
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.
xmpp:kildor@jabber.ru
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Spring — внедрение Lua в качестве макроязыка
Переход делается один раз, и он болезненный и так. А жить с этим нам долго, надеюсь. Взвесь, стоит ли ради перехода жертвовать перспективой.
Можно, в этом треде я уже спрашивал.А что, в луе нельзя использовать UTF-8 переменные, только аски?
- NightRoman
- Posts: 6184
- Joined: Fri 18 Aug, 2006 13:52
- Location: Cambridge, UK
- Has thanked: 32 times
- Been thanked: 62 times
- Contact:
Re: Spring — внедрение Lua в качестве макроязыка
Всегда считал, что это программа, даже если самый простой. Холивар.Всегда считал макрос, даже очень навороченный лишь входными данными. Скажем как и HTML.
-
- Posts: 6836
- Joined: Thu 23 Mar, 2006 21:36
- Location: Israel
- Has thanked: 41 times
- Been thanked: 530 times
Re: Spring — внедрение Lua в качестве макроязыка
Нет, это не так, тут видимо какое-то недопонимание было.NightRoman wrote:Можно, в этом треде я уже спрашивал.А что, в луе нельзя использовать UTF-8 переменные, только аски?
Из Lua-мануала:
По крайней мере, у меня на машине вариант с переменной в UTF-8 не компилируется.Names (also called identifiers) in Lua can be any string of letters, digits, and underscores, not beginning with a digit. This coincides with the definition of names in most languages. (The definition of letter depends on the current locale: any character considered alphabetic by the current locale can be used in an identifier.) Identifiers are used to name variables and table fields.