Регистрозависимость идентификаторов в lua

Здесь обсуждается всё, что касается макросов.
Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Регистрозависимость идентификаторов в lua

Post by Max Rusov » Sun 07 Oct, 2012 22:46

А есть надежда, что будет поддерживаться MCTL_GETLASTERROR? А то очень неудобно ошибки искать.

Shmuel
Posts: 5908
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel » Sun 07 Oct, 2012 23:01

Max Rusov wrote:А есть надежда, что будет поддерживаться MCTL_GETLASTERROR? А то очень неудобно ошибки искать.
Будет, но поскольку Lua возвращает только номер строки с ошибкой, то ErrPos будет просто числом а не COORD. Также не будет ErrCode.
На самом деле никаких особых трудностей с этим быть не должно, просто откладывал всё время "на потом".

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Max Rusov » Sun 07 Oct, 2012 23:21

А то, что при вызове MacroControl c MSSC_CHECK никак не диагностируются ошибки вызова неправильных функций: qwerty(1) - это поправимо, или это особенность LUA, типа позднее связывание какое-нибудь?...

Shmuel
Posts: 5908
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel » Sun 07 Oct, 2012 23:30

Max Rusov wrote:А то, что при вызове MacroControl c MSSC_CHECK никак не диагностируются ошибки вызова неправильных функций: qwerty(1) - это поправимо, или это особенность LUA, типа позднее связывание какое-нибудь?...
Да, именно позднее связывание. В макроязыке было фиксированное количество функций, причём их имена не могли меняться во время исполнения, поэтому такая проверка была возможна. В Lua имя функции не фиксировано, может динамически меняться (и сами функции могут создаваться во время исполнения программы).

P.S. Существуют инструменты для "статического анализа" программ на Lua, они позволяют вылавливать некоторые подобные ошибки.

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Max Rusov » Sun 07 Oct, 2012 23:36

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

Shmuel
Posts: 5908
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel » Sun 07 Oct, 2012 23:43

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

Max Rusov
Posts: 3632
Joined: Wed 23 Nov, 2005 11:11
Location: Москва-Питер
Has thanked: 1 time
Been thanked: 10 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Max Rusov » Sun 07 Oct, 2012 23:50

Ну в C то ошибки находятся при компиляции. А для скриптового языка с поздним связыванием - регистро-чувствительность очень странное решение...

Shmuel
Posts: 5908
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel » Sun 07 Oct, 2012 23:58

Max Rusov wrote:Ну в C то ошибки находятся при компиляции. А для скриптового языка с поздним связыванием - регистро-чувствительность очень странное решение...
Могу согласиться (из своего опыта), что такие ошибки случаются и, действительно, обнаруживаются "поздно". Но регистронезависимость тут не спасёт, можно ведь делать и другие ошибки в написании имён, и они тоже будут обнаруживаться "поздно".

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

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by Kildor » Mon 08 Oct, 2012 03:57

По поводу регистрочувствительности
«Программа должна быть максимальна лояльна к входным данным и максимально строга к выходящим».
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman » Mon 08 Oct, 2012 05:24

Это аргумент в пользу регистро-независимости языков? Почему тогда столько языков регистро-зависимых (наверное, даже большинство)?

Холивар это все :) Но тема популярная, вот тут много интересных вещей попалось (англ.)
http://stackoverflow.com/questions/5032 ... -sensitive

Пара шуточных "одно и то же?" оттуда:
IAmNowHere или IAmNowhere?
ExpertSexChange или ExpertsExchange?

Имею дело с разными подходами практически одновременно, то и дело переключаясь, например: С++, С#, R, JavaScript и CMD, PowerShell, SQL. Никаких особых проблем ни там, ни там не вижу. И трудно сказать, что лучше. Для шеллов в Виндовс, наверное, логично, что они игнорируют регистр, инфраструктура как бы навязывает.

Вот и с языком программирования обычно идет некоторая подпорочная инфраструктура. Как правило, она имеет имеет тот же подход к регистру, что и сам язык. Пример: таблицы в регистро-зависимом Lua - регистро-зависимые, а в регистро-независимом PowerShell - регистро-независимые (по умолчанию имеется в виду, настроить можно все, наверное).

В общем, раз Lua регистро-зависимый (это само по себе не плохо и не хорошо, просто факт), то удобно эту концепцию иметь "по умолчанию" на максимум вещей и в нашем его применении. Проще задействовать имеющиеся подпорки, меньше помнить конвенций (проще одну - всё регистро-зависимо, во всяком случае, этого следует ожидать по умолчанию), и т.п.

Shmuel
Posts: 5908
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel » Mon 08 Oct, 2012 05:46

Kildor wrote:По поводу регистрочувствительности
«Программа должна быть максимальна лояльна к входным данным и максимально строга к выходящим».
Вот только считать ли саму программу входными данными?

В Macro2Lua конвертере пришлось проявить особую лояльность к переменной %Comment. Помимо регистронезависимости, конвертер разрешает первой букве быть как ASCII "C", так и русской "С" в UTF-8 (такие макросы мне попадались), а также разрешает вариант написания с одним "m".

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by Kildor » Mon 08 Oct, 2012 05:52

Проблема в том, что помимо луы, у нас ещё есть багаж из существующих макросов и привычек набитых на этих макросах. А макросы у нас всю жизнь были регистронезависимыми.
Если уж выдрали старое и привычное, правильнее сделать так, чтоб переход был удобен для людей, пользующих фар ради макросов.

PS: А почему не expert_sex_change? Уж точно не перепутаешь, и тоже имеет полное право на жизнь.

> Вот только считать ли саму программу входными данными?
Всегда считал макрос, даже очень навороченный лишь входными данными. Скажем как и HTML.

А что, в луе нельзя использовать UTF-8 переменные, только аски?
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman » Mon 08 Oct, 2012 05:54

Переход делается один раз, и он болезненный и так. А жить с этим нам долго, надеюсь. Взвесь, стоит ли ради перехода жертвовать перспективой.
А что, в луе нельзя использовать UTF-8 переменные, только аски?
Можно, в этом треде я уже спрашивал.

User avatar
NightRoman
Posts: 5911
Joined: Fri 18 Aug, 2006 13:52
Location: Cambridge, UK
Has thanked: 10 times
Been thanked: 14 times
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by NightRoman » Mon 08 Oct, 2012 05:57

Всегда считал макрос, даже очень навороченный лишь входными данными. Скажем как и HTML.
Всегда считал, что это программа, даже если самый простой. Холивар.

Shmuel
Posts: 5908
Joined: Thu 23 Mar, 2006 21:36
Location: Israel
Has thanked: 23 times
Been thanked: 228 times

Re: Spring — внедрение Lua в качестве макроязыка

Post by Shmuel » Mon 08 Oct, 2012 06:11

NightRoman wrote:
А что, в луе нельзя использовать UTF-8 переменные, только аски?
Можно, в этом треде я уже спрашивал.
Нет, это не так, тут видимо какое-то недопонимание было.
Из Lua-мануала:
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.
По крайней мере, у меня на машине вариант с переменной в UTF-8 не компилируется.

Kildor
Posts: 1515
Joined: Wed 16 Mar, 2005 06:26
Location: Новосибирск
Been thanked: 1 time
Contact:

Re: Spring — внедрение Lua в качестве макроязыка

Post by Kildor » Mon 08 Oct, 2012 06:17

> Всегда считал, что это программа, даже если самый простой. Холивар.
Какой холивар? Просто мнение-подход к.

> Переход делается один раз, и он болезненный и так. А жить с этим нам долго, надеюсь. Взвесь, стоит ли ради перехода жертвовать перспективой.
Для этого мне нужно знать аргументы к такому вот ограничению.
Плюсы в нечувствительности к регистру я знаю и вижу. А вот запоминание всех этих «PPanel.Bof», «APanel.LFN», «panel.setposidx», «PPanel.CurPos» на мой взгляд являет собою весьма мартышкину работу, при отсутствии должных средств к автозаполнению и подсказкам.
Нет, это не так, тут видимо какое-то недопонимание было.
То есть — нельзя? Это грустно.
Ты мне не выкай!
«ФарФорум не для пользователей!»
Upd:
P.S. Я просто поддерживаю беседу.» © Народ.

xmpp:kildor@jabber.ru

Post Reply

Return to “Обсуждение макросов”