Oberon space

General Category => Общий раздел => Тема начата: ilovb от Ноябрь 06, 2012, 05:38:31 pm

Название: Lua
Отправлено: ilovb от Ноябрь 06, 2012, 05:38:31 pm
Все больше присматриваюсь к этому чуду, и все больше понимаю что это тот инструмент, который мне нужен. Дико жалею, что для плотного знакомства пока не хватает времени.

Сделал тут очередное исследовательское гугление:
Lua distributions (Lua + libraries for certain platforms) (http://lua-users.org/wiki/LuaDistributions)
Lua libraries or libraries with a Lua binding (http://lua-users.org/wiki/LibrariesAndBindings)
Utilities for use with Lua: source processors, builders, debuggers, profilers, etc (http://lua-users.org/wiki/LuaTools)
and more... (http://lua-users.org/wiki/LuaAddons)

wiki: Lua Directory (top level directory of all Lua content at this wiki) (http://lua-users.org/wiki/LuaDirectory)

Ленивым мастайщикам сюда... :P (http://code.google.com/p/luaforwindows/)

Редактор/дежучер LuaEdit (http://luaforge.net/projects/luaedit/)

LÖVE - движок для разработки 2D игр на Lua (http://love2d.ru/)
Самое известное поделие на нем Mari0 (http://habrahabr.ru/post/139376/)

ps Lua сегодня стал тем, чем мог бы стать Oberon. Легкий мощный прикладной язык, с хорошим окружением и документацией.
Название: Re: Lua
Отправлено: vlad от Ноябрь 06, 2012, 06:10:07 pm
ps Lua сегодня стал тем, чем мог бы стать Oberon. Легкий мощный прикладной язык, с хорошим окружением и документацией.

Прототипное ООП (как в жабаскрипте) очень настораживает. Настолько сильно настораживает, что хочется закопать не открывая :)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 06, 2012, 06:15:33 pm
Да ладно, я вон в одынэсах вообще без ООП  ;D
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 06:25:50 pm


Прототипное ООП (как в жабаскрипте) очень настораживает. Настолько сильно настораживает, что хочется закопать не открывая :)
Вы многого хотите от скриптового ЯП ( я еще могу понять дули в сторону екма скрипта - там есть фундаментальная необходимость доступа к сложным обьектам браузера )... здесь же OOP скорее левая фича... а для скриптования (с точки зрения пользователя) он гораздо более удобен чем тот же тикл. хотелось бы конечно иметь строгую типизацию (пусть даже выводимую)...
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 06:28:36 pm
да ... мне очень понравилось то, что массивы там индексируются с единицы
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 06:39:39 pm
Вы многого хотите от скриптового ЯП ( я еще могу понять дули в сторону екма скрипта - там есть фундаментальная необходимость доступа к сложным обьектам браузера )
что бы быть точнее - развитие технологий потребовало исполнения от екма скрипта того, на что он первоначально не был предназначен... (например гуй браузерный приложений... который без ооп  сделать эффективно затруднительно -30 % экономии в  обьеме кода штука весомая)
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 06:42:17 pm
Да ладно, я вон в одынэсах вообще без ООП  ;D
а нахрен по большому счету он сдался... если нужно получить доступ к внешним обьектам ... это делается через шарпейное апи...
Название: Re: Lua
Отправлено: vlad от Ноябрь 06, 2012, 06:48:40 pm
да ... мне очень понравилось то, что массивы там индексируются с единицы

Да, мы знаем, что у тебя пунктик на идексацию массивов ;)

P.S. Тогда еще один минус, за нечеловеческую индексацию массивов. Точно закопать :)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 06, 2012, 06:49:30 pm
ps Lua сегодня стал тем, чем мог бы стать Oberon. Легкий мощный прикладной язык, с хорошим окружением и документацией.

Прототипное ООП (как в жабаскрипте) очень настораживает. Настолько сильно настораживает, что хочется закопать не открывая :)

Нет там прототипного ООП, и вообще ООП нет. Там, я бы сказал, ТОП (таблично ориентированное программирование). Идеалогия проста как тапок - все есть таблица (кроме примитивных типов).

Желающие могут конечно изобразить на Луа подобие того подобия ООП что есть в С++/Java/Delphi/Oberon/С#. Но я в этом смысла не вижу.
Название: Re: Lua
Отправлено: vlad от Ноябрь 06, 2012, 06:53:39 pm
Вы многого хотите от скриптового ЯП ( я еще могу понять дули в сторону екма скрипта - там есть фундаментальная необходимость доступа к сложным обьектам браузера )... здесь же OOP скорее левая фича... а для скриптования (с точки зрения пользователя) он гораздо более удобен чем тот же тикл. хотелось бы конечно иметь строгую типизацию (пусть даже выводимую)...

Для доступа к объектам ООП как раз не надо. Глубинного понимания от автора ЯП основ ООП не требуется (хотя вот в перле, например, даже такая простая вещь выглядит ужасно).
А вот когда самому надо создавать объекты... много объектов... тогда прототипы идут лесом.

P.S. Я уже говорил - в питоне сделали человеческое ООП (при всей скриптовости и динамичности ЯП).
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 06:54:06 pm


Нет там прототипного ООП, и вообще ООП нет. Там, я бы сказал, ТОП (таблично ориентированное программирование). Идеалогия проста как тапок - все есть таблица (кроме примитивных типов).

Желающие могут конечно изобразить на Луа подобие того подобия ООП что есть в С++/Java/Delphi/Oberon/С#. Но я в этом смысла не вижу.
1.Угу.. и это создает определенные неудобства при отображении в него внешних обьектов... но у меня первокурсник справился с этим самостоятельно...
2. Ну нет... говенисто же будет
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 06:55:00 pm
Вы многого хотите от скриптового ЯП ( я еще могу понять дули в сторону екма скрипта - там есть фундаментальная необходимость доступа к сложным обьектам браузера )... здесь же OOP скорее левая фича... а для скриптования (с точки зрения пользователя) он гораздо более удобен чем тот же тикл. хотелось бы конечно иметь строгую типизацию (пусть даже выводимую)...

Для доступа к объектам ООП как раз не надо. Глубинного понимания от автора ЯП основ ООП не требуется (хотя вот в перле, например, даже такая простая вещь выглядит ужасно).
А вот когда самому надо создавать объекты... много объектов... тогда прототипы идут лесом.


P.S. Я уже говорил - в питоне сделали человеческое ООП (при всей скриптовости и динамичности ЯП).
ну, ну -- я же уточнил позицию в  сообщении ниже..
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 06:58:25 pm
да ... мне очень понравилось то, что массивы там индексируются с единицы

Да, мы знаем, что у тебя пунктик на идексацию массивов ;)

P.S. Тогда еще один минус, за нечеловеческую индексацию массивов. Точно закопать :)
НДА ,  Губанов на вас не хватает ...ФОШИСТВУЮЩИЙ вы СИшлепок  ;D
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 07:05:22 pm
http://avchernov.livejournal.com/312.html (http://avchernov.livejournal.com/312.html)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 06, 2012, 07:06:00 pm
Все больше присматриваюсь к этому чуду, и все больше понимаю что это тот инструмент, который мне нужен. Дико жалею, что для плотного знакомства пока не хватает времени.

...

ps Lua сегодня стал тем, чем мог бы стать Oberon. Легкий мощный прикладной язык, с хорошим окружением и документацией.
Я, и особенно моя сестра, сие чудо весьма неплохо изучили. Если говорить о грамматике, то несмотря на краткость записи в РБНФ (оно по метрикам того же Свердлова, в плане минималистичности, рвет Оберон как тузик грелку) язык достаточно заковыристый. Одни строковые многострочные литералы чего стоят (попробуйте ка написать лексер).

В плане же конечного программиста, Луа, не подходит для масштабных проектов в силу двух причин:
1) динамическая типизация (рефакторинг == Ад).
2) ограниченные выразительные возможности языка (все есть таблица - ничем не лучше, чем все есть Объект в классическом ООП), следовательно код получается либо многословным, либо не понятным, причем ошибки неверного использования абстракций которые наворочали через таблица, из за пункта (1) не выявляются до тех пор пока программу не запустишь.

Скажем у питона мерзкий пункт (1) остается, зато вот пункта (2) уже практически нет. А у Оберона наоборот - пункта (1) нет, а пункт (2) во всей красе.

Луа отлично подходит для написания мелких и очень мелких программок льдьми которым некогда тратить время на "серьезные" ЯП. Теми же геймдизайнерами например. Порог вхождения низок, и язык ориентирован на обработку табличных данных, которые типичны для игр (внимание, таблицы не подразумевают SQL где-то рядом! равно как и реляционку тоже не подразумевают).
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 07:06:32 pm
"Си-шный рептилоид-технофошист" - что бы не соврать...
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 07:10:54 pm
.... язык достаточно заковыристый. Одни строковые многострочные литералы чего стоят (попробуйте ка написать лексер).

ну да ... только лексеры на нем и писать...  ;) нашли "типичную" задачу, для себя и сестры...
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 06, 2012, 07:19:11 pm
.... язык достаточно заковыристый. Одни строковые многострочные литералы чего стоят (попробуйте ка написать лексер).

ну да ... только лексеры на нем и писать...  ;) нашли "типичную" задачу, для себя и сестры...
Не НА нем, а ДЛЯ него.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 07:24:28 pm

Не НА нем, а ДЛЯ него.
и что за блажь ..? из  серии не признаю ЯП для которого не написал свой лексер, или еще круче.. не считаю, что человек разбирается в ЯП если он не написал для него свой лексер... - на фиг он сдался -обосрался тому кто решает на нем предусмотренные для него задачи?
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 06, 2012, 07:31:51 pm

Не НА нем, а ДЛЯ него.
и что за блажь ..? из  серии не признаю ЯП для которого не написал свой лексер, или еще круче.. не считаю, что человек разбирается в ЯП если он не написал для него свой лексер... - на фиг он сдался -обосрался тому кто решает на нем предусмотренные для него задачи?
Научная работа по стохастическим грамматикам. Луа был одним из предметов исследования (точнее исходники на луа писанные). Парсер/лексер - это часть инструментария для сбора данных. Стандартные парсеры/лексеры не подходят по ряду причин.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 07:34:16 pm

Не НА нем, а ДЛЯ него.
и что за блажь ..? из  серии не признаю ЯП для которого не написал свой лексер, или еще круче.. не считаю, что человек разбирается в ЯП если он не написал для него свой лексер... - на фиг он сдался -обосрался тому кто решает на нем предусмотренные для него задачи?
Научная работа по стохастическим грамматикам. Луа был одним из предметов исследования (точнее исходники на луа писанные). Парсер/лексер - это часть инструментария для сбора данных. Стандартные парсеры/лексеры не подходят по ряду причин.
это не ответ на вопрос... почему вы ilovb (который примеряется к Луне как пользователь) предложили написать лексер.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 06, 2012, 07:44:55 pm
2 valexey

А я и не говорю что Lua это мана небесная. Мне собсна оберон больше/дальше/выше  ;)
Но! На Lua можно взять и решить свою локальную задачу при минимальных трудозатратах, а на обероне хрен. И работать оно будет везде.

Я б начхал вообще на все эти ruby, python, lua, js и т.д., если бы был человечий фреймворк на CP + интерфейсы + делегаты + 32/64 + работает везде + дебагер/профайлер + библиотеки + бинды к кошерным либам + многопоточность... но это фантастика при текущем положении дел.

Каждый раз я берусь исследовать очередной язык... и понимаю что Oberon как язык (с некоторыми оговорками) много лучше чем весь этот современный stuff. Лучше хотя бы в том смысле, что я реально понимаю Вирта, когда читаю "Прожект". Понимаю почему делалось так, а не иначе, вижу шевеление его извилин  :)

Когда я смотрю на Lua и вижу такое в документации:
Цитировать
x, y = y, x
меня начинает подташнивать... Ну вот нахрена? Решение локальной проблемы... Фича ради фичи...
И я не вижу там вообще каких то идей/стиля/философии. Это салат из фич (хоть и достаточно простой салат)
Стильный язык - это Оберон. Там ничего не сделано просто так. Каждая часть языка имеет свое место в философии разработки по Вирту. Хорошая это философия или плохая не важно. Важно что Оберон как язык - это целостная/непротиворечивая концепция, рожденная в башке инженера.

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

Но у Оберона есть один фатальный недостаток - он мертв. А тот же Lua живее всех живых и в принципе терпим как язык.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 07:53:13 pm
Важно что Оберон как язык - это целостная/непротиворечивая концепция, рожденная в башке инженера.

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


ну не одними инженерами умножаются программисты.. (лично я до недавнего времени считал , что им одна дорога- в дракоманы - если верить тезисам дракологов)  а насчет концепций.. - все обьект (Руби) - разве не стильно  ;)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 06, 2012, 07:54:18 pm
Вот кстати недавно задумался о том, что BB идеально подходит для написания компонент для 1С (да да там компонентная архитектура). Но вот ведь незадача... оно должно работать и на linux и под 64...

А вот Lua бери и стреляй себе по задачам как из пулемета.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 06, 2012, 07:56:49 pm
Вот кстати недавно задумался о том, что BB идеально подходит для написания компонент для 1С (да да там компонентная архитектура). Но вот ведь незадача... оно должно работать и на linux и под 64...

А вот Lua бери и стреляй себе по задачам как из пулемета.
Луа... для написания компонент "как из пулемета"?.... нда.. стильно.  ;) как гуйный фреймворк.. в екма скрипте
Название: Re: Lua
Отправлено: ilovb от Ноябрь 06, 2012, 08:04:56 pm
... а насчет концепций.. - все обьект (Руби) - разве не стильно  ;)

Может быть... не знаю. Не достаточно с ним знаком чтобы судить.
Но его вроде сам автор позиционирует как набор свистоперделок на все случаи жизни.
Имхо там даже перебор. Посмотреть хотя бы на список методов у массивов. Этож пипец.
На мой взляд массив должен иметь удобный конструктор, обходиться форычем, сам сортироваться и быстро искаться... точка. Большинство остальных фич пишутся самостоятельно за пять минут, на свой вкус, раз и навсегда. Вот в 1С прикрутили бы конструктор и сортировку... и меня бы это полностью устраивало.

Из реально стильных языков известных мне могу упомнить только Lisp.
Возможно Python еще... но там тоже не без странностей.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 06, 2012, 08:10:47 pm
Луа... для написания компонент "как из пулемета"?.... нда.. стильно.  ;) как гуйный фреймворк.. в екма скрипте

Ну а чо?  :D
Есть куча задач, которые нереально решить в 1С. А тут вон чуваки забадяжили компоненту для взаимодействия 1с и lua-скриптов. И пожалста весь инструментарий lua доступен.
Хочешь парсить? Бери LPeg и юзай.
Хочешь труляля? Бери Lтруляля и юзай на здоровье...  ;D
Хочешь чтоб это под 64 linux сервером работало... Пожалста.

Чем не пулемет?  :)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 06, 2012, 09:14:07 pm
Lua для игр и не только (http://itcs.3dn.ru/publ/programmirovanie/lua_dlja_igr_i_ne_tolko_chast_1/8-1-0-63)
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 02:22:53 am

Ну а чо?  :D

То , что обычно скриптовые языки предназначены для "склейки" компонент и реализации нетребовательной к производительности мелкой одноразово используемой доп. функциональности. Ну а если вы хотите "мутить" компоненты.. для 1с то вам в общем случае (для удобства использования) придется делать отображать навороченные структуры (входящие в эти компоненты)  в структуры 1с  и наоборот -  это возможно, процесс описан в руководстве.. но мне он не понравился.  Да.. ссылка ниже.. для детсадовцев.
Название: Re: Lua
Отправлено: albobin от Ноябрь 07, 2012, 04:01:53 am
На мой взляд массив должен иметь удобный конструктор, обходиться форычем, сам сортироваться и быстро искаться... точка.
Так это же MUMPS! Конструктора удобного правда нет, но и неудобного тоже, вообще нет никакого - не нужен :)
Название: Re: Lua
Отправлено: Geniepro от Ноябрь 07, 2012, 04:27:39 am
Когда я смотрю на Lua и вижу такое в документации:
Цитировать
x, y = y, x
меня начинает подташнивать... Ну вот нахрена? Решение локальной проблемы... Фича ради фичи...
Эта фича необходима в языках с развитыми средствами паттерн-матчинга, типа хаскеля. Там это трактуется как конструирование/деконструирование значений...
Название: Re: Lua
Отправлено: Geniepro от Ноябрь 07, 2012, 04:29:35 am
На мой взляд массив должен иметь удобный конструктор, обходиться форычем, сам сортироваться и быстро искаться... точка.
Так это же MUMPS! Конструктора удобного правда нет, но и неудобного тоже, вообще нет никакого - не нужен :)
А как же там массивы создаются?
Название: Re: Lua
Отправлено: albobin от Ноябрь 07, 2012, 04:41:23 am
А как же там массивы создаются?
Путем помещения в массив данных :)
MUMPS - безтиповый язык.
  Set language("MUMPS")="The best"
Вот и появился массив language c единственной пока записью (индекс="MUMPS",  данные="The best")


Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 04:49:21 am
Так это же MUMPS! Конструктора удобного правда нет, но и неудобного тоже, вообще нет никакого - не нужен :)
не... синтаксис эпохи ограниченных возможностей железа... Создатели 1с  же клепали свой скрипт язык для того , что бы им могли пользоваться "типичные одынэсники".. , пупсом из ожидаемой категории пользователей просто никто не будет пользоваться.  :D
Название: Re: Lua
Отправлено: albobin от Ноябрь 07, 2012, 04:58:25 am
.. , пупсом из ожидаемой категории пользователей просто никто не будет пользоваться.  :D
MUMPS на вторых ролях из гордости и сам не станет :)
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 05:00:15 am
.. , пупсом из ожидаемой категории пользователей просто никто не будет пользоваться.  :D
MUMPS на вторых ролях из гордости и сам не станет :)
  как и все пупсы...  :D
Название: Re: Lua
Отправлено: albobin от Ноябрь 07, 2012, 05:10:27 am
как и все пупсы...  :D
Не-а, я сравниваю MUMPS c хорошим выдержанным коньяком. Все в один голос говорят - он клопами пахнет :)
Название: Re: Lua
Отправлено: Peter Almazov от Ноябрь 07, 2012, 05:51:43 am
Есть куча задач, которые нереально решить в 1С.
"Огласите, пжалуйста, весь список."

Впрочем, я, кажется, догадался...
Искусственный интеллект?
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 06:03:06 am
как и все пупсы...  :D
Не-а, я сравниваю MUMPS c хорошим выдержанным коньяком. Все в один голос говорят - он клопами пахнет :)
не только.. дешевый  три бочки советской эпохи тоже вонял  :D -
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 07:07:36 am
Есть куча задач, которые нереально решить в 1С.
"Огласите, пжалуйста, весь список."

Впрочем, я, кажется, догадался...
Искусственный интеллект?

Да взять хоть работу с сетью, с мультимедиа, с двоичными данными и т.д. Сегодня все это решается внешними средствами, ибо встроенных в платформе нет.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 07:43:42 am
Никак не могу сделать в Sublime Text 2 вывод Lua в консоль.  :(
В SciTE все замечательно работает по F5, но этот редактор мне не нравится.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 08:59:00 am

Эта фича необходима в языках с развитыми средствами паттерн-матчинга, типа хаскеля. Там это трактуется как конструирование/деконструирование значений...
Поясните, плиз, необходимость... не догоняю.. с моей точки зрения   паттерн-матчинг  - всего лишь (более менее естественое) расширение оператора выбора.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 09:03:07 am

Да взять хоть работу с сетью, с мультимедиа, с двоичными данными и т.д. Сегодня все это решается внешними средствами, ибо встроенных в платформе нет.
нафигассе... если к вашим услугам вся мощь платформы .net...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 09:11:58 am
Чегой???  :o
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 09:14:17 am
Чегой???  :o
Как чегой... :D разве  сейчас "одынеска" не под .net?
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 09:16:12 am
Нет конечно.  :)

Одынэска сама себе .net
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 09:18:16 am
Нет конечно.  :)
   :o тогда сорри...  хорошо , но тогда то что она работает только с MSSQL - тоже миф?
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 09:26:36 am
Кто вам такое сказал?

Вся информация по платформе тут:
http://v8.1c.ru/overview/Platform.htm

Цитировать
Хранение данных в собственной СУБД или в Microsoft SQL Server, PostgreSQL, IBM DB2 или Oracle Database.

ps Количеству заблуждений на счет 1С нет предела однако... O_o
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 09:29:20 am
Кто вам такое сказал?

Вся информация по платформе тут:
http://v8.1c.ru/overview/Platform.htm

Цитировать
Хранение данных в собственной СУБД или в Microsoft SQL Server, PostgreSQL, IBM DB2 или Oracle Database.
да лет 5 назад знакомый "одынэсник" пустил слух о том, что одынэску решили полностью интегрировать в инфраструктуру .net ...  ой ой ой ,прокол, однако  ;D
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 09:40:19 am
Нет конечно.  :)

Одынэска сама себе .net
как же, сами сказали, что  сетевых компонент .нет
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 09:46:39 am
А при чем тут сетевые компоненты? Это ведь не отличительная черта .net
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 09:57:03 am
На мой взляд массив должен иметь удобный конструктор, обходиться форычем, сам сортироваться и быстро искаться... точка.
Так это же MUMPS! Конструктора удобного правда нет, но и неудобного тоже, вообще нет никакого - не нужен :)

Мне в 1С не хватает такого конструктора:
А =  Новый Массив {1,4,5,1,2,3,7,4,2,3}
Сейчас делается так:
А = Новый Массив;
А.Добавить(1);
А.Добавить(4);
А.Добавить(5);
А.Добавить(1);
А.Добавить(2);
А.Добавить(3);
А.Добавить(7);
А.Добавить(4);
А.Добавить(2);
А.Добавить(3);
это дико неудобно.
Название: Re: Lua
Отправлено: Geniepro от Ноябрь 07, 2012, 10:05:51 am

Эта фича необходима в языках с развитыми средствами паттерн-матчинга, типа хаскеля. Там это трактуется как конструирование/деконструирование значений...
Поясните, плиз, необходимость... не догоняю.. с моей точки зрения   паттерн-матчинг  - всего лишь (более менее естественое) расширение оператора выбора.
Паттерн-матчинг -- это прежде всего разборка (деконструирование) значения. Ну и его можно ещё и для ветвления использовать...
f = (1, 2) -- Конструируем пару (tuple) из двух чисел
(x, y) = f -- Разбираем обратно

main = do
    print x
    print y
Main> :main
1
2
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 10:07:14 am
А при чем тут сетевые компоненты? Это ведь не отличительная черта .net
потому, что там как в Греции - есть все! (собственно мне  в то время идея интеграции 1с в эту платформу казалась вполне естественной, что я даже не стал проверять.. тем более что мне это было по -пистолету)
Название: Re: Lua
Отправлено: Peter Almazov от Ноябрь 07, 2012, 10:10:36 am
С помощью web-сервисов 1С прекрасно интегрируется со всем, в т. ч. и с .Net'ом.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 10:10:51 am

Эта фича необходима в языках с развитыми средствами паттерн-матчинга, типа хаскеля. Там это трактуется как конструирование/деконструирование значений...
Поясните, плиз, необходимость... не догоняю.. с моей точки зрения   паттерн-матчинг  - всего лишь (более менее естественое) расширение оператора выбора.
Паттерн-матчинг -- это прежде всего разборка (деконструирование) значения. Ну и его можно ещё и для ветвления использовать...
f = (1, 2) -- Конструируем пару (tuple) из двух чисел
(x, y) = f -- Разбираем обратно

main = do
    print x
    print y
Main> :main
1
2
  блин .. как то не вяжется со смыслом используемых слов... а вот http://en.wikipedia.org/wiki/Pattern_matching (http://en.wikipedia.org/wiki/Pattern_matching) вполне...
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 10:12:16 am
С помощью web-сервисов 1С прекрасно интегрируется со всем, в т. ч. и с .Net'ом.
это вторая доп. прослойка..  - если считать саму . net  первой над системными библиотеками...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 10:16:51 am
С помощью web-сервисов 1С прекрасно интегрируется со всем, в т. ч. и с .Net'ом.

Есть и такое:
http://infostart.ru/public/20035/
раз уж речь зашла.

Но это все внешние средства. А с любым внешним средством проблем на порядок больше, чем с родными механизмами.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 10:33:28 am
ну да ... а  Луа , конечно вами классифицируется как средство внутреннее...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 10:39:18 am
Тоже внешнее.

Я какбэ отвечал Петру в контексте этого поста:
http://oberspace.dyndns.org/index.php/topic,366.msg9924.html#msg9924
если что...  ;)
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 10:45:39 am
а...  ну Луны. есть  Луа -интерфейс. прослойка под дот... меня более смущает ваша  идея пулеметом писать на нем СЛОЖНЫЕ (программные ) компоненты и низкоуровневые библиотеки... - мои мозги она выносит почище пулемета... :)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 10:48:43 am
Цитировать
СЛОЖНЫЕ (программные ) компоненты и низкоуровневые библиотеки
Ого! Я такое сказал?  :o
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 10:52:31 am
 :o http://oberspace.dyndns.org/index.php/topic,366.msg9908.html#msg9908 (http://oberspace.dyndns.org/index.php/topic,366.msg9908.html#msg9908) это конечно  были не вы...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 10:53:39 am
И хде там мои слова про
Цитировать
СЛОЖНЫЕ (программные ) компоненты и низкоуровневые библиотеки
??? ?
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 10:55:48 am
 ;D смущает "низкоуровневые библиотеки" - тык это ваш ответ на вопрос Петра.... (чего нет в 1с) - ссылку давать?   ;D
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 11:04:55 am
Слово "низкоуровневые" я тоже не употреблял...

Короче вы меня неправильно поняли.

Есть задачки (не сложные и не низкоуровневые), для решения которых в 1с нет средств. Например для решения задачи нужны регулярки, а в 1С их тютю. Вот тут и нужно что-то вроде Lua.
Или например языковых средств 1С не хватает (там довольно примитивный язык), тогда можно часть задачи закодить на Lua.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 11:23:20 am
Слово "низкоуровневые" я тоже не употреблял...

Короче вы меня неправильно поняли.

Есть задачки (не сложные и не низкоуровневые), для решения которых в 1с нет средств. Например для решения задачи нужны регулярки, а в 1С их тютю. Вот тут и нужно что-то вроде Lua.
Или например языковых средств 1С не хватает (там довольно примитивный язык), тогда можно часть задачи закодить на Lua.
  не берите в голову.. просто у нас в Челябинске погода на редкость мерзкая.. ну и скучно...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 11:27:25 am
У нас во Владимире тоже  :)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 07, 2012, 12:17:45 pm
Есть задачки (не сложные и не низкоуровневые), для решения которых в 1с нет средств. Например для решения задачи нужны регулярки, а в 1С их тютю. Вот тут и нужно что-то вроде Lua.
В Си и С++ тоже как бэ регулярок нет. Но если их там нет, то они там сразу есть, ибо либы пишутся для них элементарно.

Ниужели ни один 1Сник не написал на 1С либу для регулярок? Это же пишется просто и весело.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 12:33:44 pm
Регулярки на 1С?  ;D
ню ню
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 07, 2012, 12:36:13 pm
Регулярки на 1С?  ;D
ню ню
В смысле? 1С не полон по тьюрингу? У нем нет строк?
Название: Re: Lua
Отправлено: Valery Solovey от Ноябрь 07, 2012, 12:42:32 pm
Думаю, тормозить будет. Один скриптовый язык поверх другого.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 12:43:23 pm
2 valexey
В смысле в 1с один из самых медленных интерпретаторов:
http://oberspace.dyndns.org/index.php/topic,248.msg6004.html#msg6004
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 07, 2012, 12:49:27 pm
2 valexey
В смысле в 1с один из самых медленных интерпретаторов:
http://oberspace.dyndns.org/index.php/topic,248.msg6004.html#msg6004
Эмм.. А как они этого добились? И что в том исходнике означают магические строчки:
MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
MSScriptControl.Language = "javascript";
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 07, 2012, 12:50:05 pm
Думаю, тормозить будет. Один скриптовый язык поверх другого.
Язык регулярных выражений не является скриптовым языком.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 12:57:58 pm
2 valexey
В смысле в 1с один из самых медленных интерпретаторов:
http://oberspace.dyndns.org/index.php/topic,248.msg6004.html#msg6004
Эмм.. А как они этого добились?
Думаю что максимально тупой реализацией в лоб.  ;D

И что в том исходнике означают магические строчки:
MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
MSScriptControl.Language = "javascript";

COM-сервер виндозного скриптового движка.

ps Первый раз встречаю программиста не знающего что это  ;D
Яблочник...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 01:03:17 pm
Вот кстати тоже пример чего нельзя сделать средствами 1С - замерять время в миллисекундах  :) (заветная функция в последней бета-версии только появилась)
Название: Re: Lua
Отправлено: Valery Solovey от Ноябрь 07, 2012, 01:05:53 pm
Язык регулярных выражений не является скриптовым языком.
Я образно сказал. Шаблон регулярного выражения можно считать текстом программы, а конечный автомат, разбирающий эту строку и сопоставляющий с ней какую-то другую строку - интерпретатором. Если этот автомат реализовать средствами скриптового языка, то и получится, что в одном интерпретаторе запущен скрипт, реализующий работу другого интерпретатора, который в свою очередь выполняет свой скрипт.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 07, 2012, 01:12:17 pm
MSScriptControl = Новый COMОбъект("MSScriptControl.ScriptControl");
MSScriptControl.Language = "javascript";

COM-сервер виндозного скриптового движка.

ps Первый раз встречаю программиста не знающего что это  ;D
Яблочник...
Не, юниксоид :-)

На самом деле я вижу что это COM-объект, но зачем оно тут? У вас там что? 1С выполняется поверх JS?
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 01:22:34 pm
Там просто юзается жабаскриптовский Date().getTime()

Функция ПолучитьВремяВМиллисекундах()
  Возврат MSScriptControl.Eval("new Date().getTime()");
КонецФункции
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 07, 2012, 01:54:38 pm
Там просто юзается жабаскриптовский Date().getTime()

Функция ПолучитьВремяВМиллисекундах()
  Возврат MSScriptControl.Eval("new Date().getTime()");
КонецФункции

А сколько это будет все выполняться, если выкинуть внутренний цикл? Интересно сколько вся эта толстая обвязка жрет.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 03:22:50 pm
Запускал по пять раз:

1С:Предприятие 8.3.2.163 (бета-версия) от 28.09.2012
Код
Procedure PressExecuteButton(Button)
   
    Start = CurrentUniversalDateInMilliseconds();
   
    For i = 0 To 2000000 Do       
        a = 123;
    EndDo;
   
    End = CurrentUniversalDateInMilliseconds() - Start;
   
    Message(End);
   
EndProcedure
Лог:
9 026
9 477
9 166
9 045
9 150

BlackBox Component Builder 1.6-rc6
Красноярская сборка 16 октября 2012
Код:
MODULE MyTime;
    IMPORT Log;
   
    PROCEDURE Do*;
    VAR
        a, i: INTEGER;
    BEGIN
        FOR i := 0 TO 2000000 DO
            a := 123;
        END;
    END Do;
   
BEGIN

END MyTime.Do
Лог:
16 миллисек
16 миллисек
15 миллисек
16 миллисек
15 миллисек

Lua for windows v5.1.4-46
http://code.google.com/p/luaforwindows/
Код:
t1 = os.time()
for i = 1, 2000000 do
    a = 123
end
print(os.time() - t1)
Лог (в секундах):
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0
>Exit code: 0
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0
>Exit code: 0
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0
>Exit code: 0
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0
>Exit code: 0
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0
>Exit code: 0


В BlackBox время замерял с помощью:
меню -> разработка -> засечь время выполнения

Как в Lua мерить миллисекундами так и не нашел.

ps машинка: HP ProBook 4520s (Core i3 M380 2.53GHz)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 07, 2012, 03:42:43 pm
Как в Lua мерить миллисекундами так и не нашел.
http://stackoverflow.com/questions/463101/lua-current-time-in-milliseconds
require "socket"
print("Milliseconds: " .. socket.gettime()*1000)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 03:45:23 pm
Я уже нашел  :) Правда немного иначе:

Цитировать
[os.clock] - gets the approximate number of seconds of CPU time used by the program. This function is implemented in terms of the ANSI C clock [1] function, and the precise meaning of this value is implementation specific. For example, on Linux, clock gives "CPU time" [2][3], which only counts the time in which the process is actively using the CPU and does not count time executing other processes or waiting for I/O. CPU time may be less than the real time ("wall clock time"). On Windows, clock counts real (wall clock) time since the start of the process [4]. On Windows and Linux, the resolution on clock is on the order of milliseconds, which is more precise than the time function, but on other systems it may be only one second resolution. The clock value will also wrap around on overflow, depending on the size of the data type used to represent clock_t. Sometimes this function is more useful than os.time for benchmarking: local clock = os.clock(); local t1 = clock(); dosomething() local dt = clock() - t1 .
http://lua-users.org/wiki/DateAndTime


Код:
t1 = os.clock()
for i = 1, 2000000 do
    a = 123
end
print(os.clock() - t1)
Лог:
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0.063
>Exit code: 0
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0.076
>Exit code: 0
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0.072
>Exit code: 0
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0.074
>Exit code: 0
>lua -e "io.stdout:setvbuf 'no'" "Test.Lua"
0.068
>Exit code: 0
Название: Re: Lua
Отправлено: vlad от Ноябрь 07, 2012, 03:46:00 pm
Никак не могу сделать в Sublime Text 2 вывод Lua в консоль.  :(
В SciTE все замечательно работает по F5, но этот редактор мне не нравится.

У него там похоже какая-то бага. Я такое тоже наблюдал - часть вывода съедается. Возможно какой-то неправильный символ в аутпуте или еще что. Но всегда можно сделать ручками (запуск процесса и вывод его аутпута).
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 07, 2012, 03:51:48 pm
Никак не могу сделать в Sublime Text 2 вывод Lua в консоль.  :(
В SciTE все замечательно работает по F5, но этот редактор мне не нравится.

У него там похоже какая-то бага. Я такое тоже наблюдал - часть вывода съедается. Возможно какой-то неправильный символ в аутпуте или еще что. Но всегда можно сделать ручками (запуск процесса и вывод его аутпута).
У sublime вообще с аутпутами беда. Вот запустил я прогу, она возьми и выдай 100 мегабайт текста (или там бесконечность - тупо зациклилось), а сублим возьми и грохнись в результате. Особенно этим грешит аддон сублимов который делает вид что он Shell.
Название: Re: Lua
Отправлено: Peter Almazov от Ноябрь 07, 2012, 03:54:00 pm
Запускал по пять раз:
Тесты ни о чем.
Где вызов Lua из 1С?
Название: Re: Lua
Отправлено: vlad от Ноябрь 07, 2012, 03:55:04 pm
Сейчас делается так:
А = Новый Массив;
А.Добавить(1);
[/quote]

Гы! Это ж самый что ни на есть труЪ оберон-вэй ;)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 03:59:14 pm
Запускал по пять раз:
Тесты ни о чем.
Где вызов Lua из 1С?

А это тут причем? Я сравнивал скорость интерпретаторов 1С и Lua, ну и компилятора BB.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 03:59:54 pm
злой вы Vlad, однако - рушите идеал "стильности" у человека  :)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 04:02:36 pm
2 vlad
Ну я и не считаю себя православным оберонщегом  ;)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 05:11:38 pm
Никак не могу сделать в Sublime Text 2 вывод Lua в консоль.  :(
В SciTE все замечательно работает по F5, но этот редактор мне не нравится.

У него там похоже какая-то бага.

Вот у меня в точности такая хрень:
http://www.askdev.ru/question/10733/Sublime-Text-2-Building-Python-%D0%BF%D1%83%D1%81%D1%82%D0%BE%D1%82%D0%B0/
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 06:14:19 pm
Победил:
http://postimage.org/image/vkbrpp60b/

Проблема была в том, что у меня каталог пользователя был назван кириллицей.
Как оказалось у меня и package control по той же причине не хотел заводиться.

В общем чтобы кодить на Lua в Sublime Text 2 нужно сделать следующее.
1. Скачать и установить редактор:
http://www.sublimetext.com/2
2. Установить Package Control:
http://wbond.net/sublime_packages/package_control/installation
3. В редакторе нажимаем "ctrl+shift+p", далее в окне поиска пишем "Lua", и выбираем из найденного LuaDev
Можно и ручками установить (там есть readme):
https://github.com/rorydriscoll/LuaSublime
4. Создаем и сохраняем новый файл с расширением *.lua
5. Пишем код и давим F7 (или ctrl+B) чтобы запустить.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 06:24:29 pm
3. В редакторе нажимаем "ctrl+shift+p", далее в окне поиска пишем "Lua", и выбираем из найденного LuaDev

вернее так:
3. В редакторе нажимаем "ctrl+shift+p", пишем "install", в найденном выбираем "Install Package",
далее в окне поиска пишем "Lua", и выбираем из найденного LuaDev
Название: Re: Lua
Отправлено: ilovb от Ноябрь 07, 2012, 07:46:35 pm
Смешные однако зарплаты у Lua-кодеров  ;D
http://www.poisk-rabot.ru/save/Programmist_LUA/9807888/
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 07, 2012, 08:07:06 pm
Смешные однако зарплаты у Lua-кодеров  ;D
http://www.poisk-rabot.ru/save/Programmist_LUA/9807888/
Дык низкий порог вхождения (опытные не нужны) + на луа обычно ничего сверхсерьезного не пишут (то есть еще и ответственности никакой).
Название: Re: Lua
Отправлено: DIzer от Ноябрь 07, 2012, 08:51:20 pm

Проблема была в том, что у меня каталог пользователя был назван кириллицей.
Как оказалось у меня и package control по той же причине не хотел заводиться.

так, я говорил про нее... у меня из - за этого не компилировались си - программы...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 08, 2012, 10:39:35 am
Человечий форыч няшка  ::)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 08, 2012, 11:49:09 am
Quine?
for line in io.lines("c:\\test.lua") do
    print(line)
end
Название: Re: Lua
Отправлено: Geniepro от Ноябрь 08, 2012, 12:03:56 pm
Quine?
for line in io.lines("c:\\test.lua") do
    print(line)
end

Вот уж и правда пффф! Аж целый цикл забубенить пришлось! о_О
То ли дело Хаскель:
main = putStrLn =<< readFile "Quine.hs"))
Название: Re: Lua
Отправлено: ilovb от Ноябрь 08, 2012, 04:52:26 pm
Универсальность табличного подхода впечатляет.
Обход массива форычем:
m = {9,8,7,6,5,4,3,2,1}
for key, value in pairs(m) do
    print(key, "-", value)
end
Лог:
1    -    9
2    -    8
3    -    7
4    -    6
5    -    5
6    -    4
7    -    3
8    -    2
9    -    1

Однако такая форма записи для обхода массива слишком громоздка.

Вот в питоне просто и лаконично:
a = [9,8,7,6,5,4,3,2,1]
for i in a:
    print(i)


А в Lua лучше обычным for
m = {9,8,7,6,5,4,3,2,1}
for i=1, #m do
    print(m[i])
end
Название: Re: Lua
Отправлено: ilovb от Ноябрь 08, 2012, 05:58:29 pm
Забавно что кроме pairs есть еще ipairs, которая больше подходит для массивов.

pairs - Возвращает все пары (ключ, значение) независимо от типа ключа и не гарантируя какого либо порядка обхода.

ipairs - Возвращает все пары (индекс, значение), где индекс - это целочисленный ключ(ключи с другими типами просто пропускаются). При обходе массива следующий элемент получается прибавлением 1 к текущему индексу, и если такого ключа нет в таблице, то цикл прекращается.

пример pairs:
t = {[1] = 200, [2] = 300, [6] = 400, [13] = 500}
for k, v in pairs(t) do
    print(k, "-", v)
end
лог:
1    -    200
2    -    300
13   -    500
6    -    400

пример ipairs:
t = {[1] = 200, [2] = 300, [6] = 400, [13] = 500}
for k, v in ipairs(t) do
    print(k, "-", v)
end
лог:
1    -    200
2    -    300

Ну и еще примерчик:
t = {[1] = 200, ["АХТУНГ!"] = 300, [2] = 400, [3] = 500}
for i, v in ipairs(t) do
    print(i, "-", v)
end
лог:
1    -    200
2    -    400
3    -    500

Чудно...  :D

пруфлинк (http://www.luafaq.org/#T1.10)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 08, 2012, 06:36:02 pm
Как и полагается скриптовому языку няшная сортировка в комплекте:  8)

print("Сортируем массив чисел")

a = {9,5,1,3,2,6,7,4,8}
table.sort(a)
for i = 1, #a do
    print(a[i])
end

print("Сортируем массив чисел используя свою функцию сравнения")

function comp(a, b)
    return a > b
end

a = {9,5,1,3,2,6,7,4,8}
table.sort(a, comp)
for i = 1, #a do
    print(a[i])
end

print("Сортируем массив строк используя свою функцию сравнения")

function comp(a, b)
    return a < b
end

a = {"З","Д","А","В","Б","Е","Ё","Г","Ж"}
table.sort(a, comp)
for i = 1, #a do
    print(a[i])
end

лог:
Сортируем массив чисел
1
2
3
4
5
6
7
8
9
Сортируем массив чисел используя свою функцию сравнения
9
8
7
6
5
4
3
2
1
Сортируем массив строк используя свою функцию сравнения
Ё
А
Б
В
Г
Д
Е
Ж
З
Название: Re: Lua
Отправлено: ilovb от Ноябрь 08, 2012, 08:14:18 pm
-- O_o

function f1(...)
    for k, v in pairs{...} do
        print(v)
    end
end

f1(1,2,3,4,5,6,7,8,9)

--log:
--[[
1
2
3
4
5
6
7
8
9
--]]

--------------------------------

-- O_O

function f2(a, b, c)
    print(a)
    print(b)
    print(c)
end

a = {1,2,3}

f2(unpack(a))

--log:
--[[
1
2
3
--]]
Название: Re: Lua
Отправлено: ilovb от Ноябрь 08, 2012, 08:49:54 pm
Сравнение производительности языковых VM (Universal bytecode VM comparison) (http://a-jelly.livejournal.com/384459.html)

Цитировать
Недавно я задался вопросом сравнения производительности bytecode виртуальных машин (VM). Таких как JVM, LLVM, .Net, etc.
Прямое сравнение трудно было произвести по нескольким причинам. Во-первых, нужен был подходящий набор тестов, который хоть как-то покрывает предоставляемые VM функции. Во-вторых, нужно было найти язык, который бы компилировался в байт-код всех тех VM, которые я хотел протестировать, и наконец - нужно было просто выкроить время. Не прошло и полгода, как я решил эти проблемы, хоть и не в полной мере.


В качестве языка для примеров я выбрал Lua (5.1), т.к. компиляторы в байткод с него существуют для всех интересных мне машин. В качестве же тестов я взял исходники с The Computer Language Benchmarks Game, и кое-где доработал их рашпилем (правда, должен заранее сказать, что не знаю Lua). Предпочтение отдавалось "straightforward" реализациям, не имеющим системных завязок и минимально зависящим от библиотек языка. Понятно, что несложно приделать к любому языку быстродействующую библиотеку (к примеру на С), но тогда сравниваться будет совсем не то, что нам нужно.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 09, 2012, 08:02:56 am
afxLua - MS Windows API Library (http://luaforge.net/projects/jaslatrix/)

Цитировать
afxLua is an add-on library for Lua on MS Windows System that has this functionality File Management, Manipulate Registry, Console IO function, Windows Manipulation, Mouse Emulation, Clipboard, Dll function loader, System Information & Many more ...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 09, 2012, 09:23:16 am
LuaForge Project Catalog (http://luaforge.net/projects/)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 09, 2012, 11:01:35 am
Graphical User Interface Toolkits (http://lua-users.org/wiki/GraphicalUserInterfaceToolkits)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 09, 2012, 08:53:49 pm
Язык программирования Lua. Учебник для начинающих (http://big.vip-zone.su/doc/devel/lua.xml)

Цитировать
Введение


Основным мотивом для написания этого текста стало отстутствие на просторах интернета какого-либо внятного учебника по Lua, для чайников и не только, причем на русском языке. Документация на русском есть, а с чего начать - непонятно. Есть хорошая книжка - "Programming in Lua" (причем нужно именно 2-е издание), но ее почему-то даже в электронном виде нигде нет. Мне удалось найти только препринт 1-го издания, и разумеется на английском. После двухгодичной разработки скриптов для хабов на Lua стало ясно, что уж "для чайников" я и сам руководство сделаю. Через некоторое время после осознания этого факта появился черновик, который долгое время оставался совсем убогим и кратким, и вот только сейчас он становится похож на учебник. Отмечу также, что на просторах интернета много различных статей вида "как на Lua сделать что-то эдакое", но полного подробного учебника пока что не наблюдается. Либо встречаются руководства для продвинутых, которые уже что-то знают и хотят "расшИрить и углУбить" (с) свои знания. Итак, приступим-с...
Название: Re: Lua
Отправлено: DIzer от Ноябрь 11, 2012, 10:13:59 am
  1
Название: Re: Lua
Отправлено: ilovb от Ноябрь 11, 2012, 11:15:10 am
Попробовал замутить ООП:  :)
function new(class, subclass)
    local subclass = subclass or {}
    setmetatable(subclass, class)
    class.__index = class
    return subclass
end

function instanceof(object, class)   
    local mt = getmetatable(object)
    while mt ~= nil do
        if mt.__index == class then
            return true
        end
        mt = getmetatable(mt.__index)
    end
    return false
end
--------------------------------------------------------------

-- определяем класс
A = {
    field1 = 0, -- поле со значением по умолчанию
    get1 = function(self) -- метод
        return self.field1
    end
}

-- определяем расширение A
B = new(A, {
    field2 = 0, -- новое поле
    get2 = function(self) -- новый метод
        return self.field2
    end
})

-- определяем расширение B
C = new(B, {
    field3 = 0, -- новое поле
    get2 = function(self) -- переопределяем метод
        return self.field3
    end
})

-- тестируем

a = new(A)
b = new(B)
c = new(C)

-- значения по умолчанию
print("a.field1", a.field1)
print("b.field1", b.field1)
print("b.field2", b.field2)
print("c.field1", c.field1)
print("c.field2", c.field2)
print("c.field3", c.field3)

a.field1 = 1
b.field1 = 2
c.field1 = 3
c.field3 = 4

print("a:get1()", a:get1())
print("b:get1()", b:get1())
print("b:get2()", b:get2())
print("c:get1()", c:get1())
print("c:get2()", c:get2())

print("instanceof(a, A)", instanceof(a, A))
print("instanceof(b, A)", instanceof(b, A))
print("instanceof(c, A)", instanceof(c, A))
print("instanceof(a, C)", instanceof(a, C))

--Log:
--[[
a.field1    0
b.field1    0
b.field2    0
c.field1    0
c.field2    0
c.field3    0
a:get1()    1
b:get1()    2
b:get2()    0
c:get1()    3
c:get2()    4
instanceof(a, A)    true
instanceof(b, A)    true
instanceof(c, A)    true
instanceof(a, C)    false
--]]
Название: Re: Lua
Отправлено: trurl от Ноябрь 12, 2012, 01:23:08 pm
Одни строковые многострочные литералы чего стоят (попробуйте ка написать лексер).
А что сложного то? Тупо сканируешь до соответствующей скобки.
Название: Re: Lua
Отправлено: Berserker от Ноябрь 12, 2012, 06:19:41 pm
Я разочаровался в скриптовых языках до предела. Написал на PHP сканер текста, буферный построитель строк, лексический анализатор для 1С и модуль подсветки. Сделал первый шаблон раскраски по примеру Sublime Text2: Monokai. И что вы думаете? Код на 1С, объёмом 5667 байт красится...0.7 секунд. Занавес.

Причина, как выяснилось сегодня, довольно банальна. Ну нет в PHP человеческих массивов и символов. Есть только упорядоченные словари и строки. Функция count, возвращающая число элементов словаря,  как ни странно, но медленная. Функции ord и chr тоже. Изменение символа в строке очень дорогая операция. Теперь понимаю, почему форумные движки предпочитают монструозные циклические очистки и регулярки. Сам PHP (Ruby, вставьте своё) крайне медленный, а вот оптимизированные функции на Си обладают скоростью, которая сглаживает общее впечатление. Только начинка-то остаётся.

Готовый пример (http://bers.heroes35.net/highlight_1c/example.html)
Демо для скармливания 1С кода (http://bers.heroes35.net/highlight_1c/)

P.S. В демо остался ошибочный замер времени, не обращайте внимания.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 06:29:41 pm
Тык у вас раскраска, а не  подсветка..
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 06:38:27 pm
а вот у http://pascalabc.net/WDE/ (http://pascalabc.net/WDE/)  - подсветка (жабоскриптовая)...
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 07:02:33 pm
Далее...
Я разочаровался в скриптовых языках до предела. Написал на PHP сканер текста, буферный построитель строк, лексический анализатор для 1С и модуль подсветки. Сделал первый шаблон раскраски по примеру Sublime Text2: Monokai. И что вы думаете? Код на 1С, объёмом 5667 байт красится...0.7 секунд. Занавес.


если вы  попробуете запустить на таких обьемах текста  скажем модуль подсветки С. Губанова (ББ , слепленный по "классической" схеме)  - на вполне высокопроизводительном компилируепмом ЯП (КП)  - то производительность ее (подсветки) , вас НЕПРИЯТНО удивит (как удивила меня в свое время...)  ;) - так что  не торопитесь делать выводы...
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 07:09:59 pm
ЗЫ конечно я рассматриваю код в несколько тысяч строк... - 5 килобайт - это 200 -400 строк.. фигня  даже для PABCовой  подсветки...
Название: Re: Lua
Отправлено: Berserker от Ноябрь 12, 2012, 07:18:52 pm
Для 1С есть динамическая раскраска (подсветка), но глючная и на регулярках.
P.S.  По указанной ссылке раскраска на мой взгляд довольно примитивная и на трёхсотстрочном коде заметны тормоза перерисовки.

Цитировать
если вы  попробуете запустить на таких обьемах текста  скажем модуль подсветки С. Губанова (ББ , слепленный по "классической" схеме)  - на вполне высокопроизводительном компилируепмом ЯП (КП)  - то производительность ее (подсветки) , вас НЕПРИЯТНО удивит (как удивила меня в свое время...)   - так что  не торопитесь делать выводы...
Можно понять сложности, вызванные обновлением DOM или GUI. Тяжело понять сложности, когда генерируешь статичный html. Тут в пример можно привести Delphi, в миг собирающий проекты среднего размера.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 07:25:27 pm

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

Цитировать
Можно понять сложности, вызванные обновлением DOM или GUI. Тяжело понять сложности, когда генерируешь статичный html. Тут в пример можно привести Delphi, в миг собирающий проекты среднего размера.
  ... как сказать... я вот например, не смог понять почему  большой модуль в исходниках ББ (5-10 т. строк... точно не помню) СТАТИЧЕСКИ раскрашивался (не подсвечивался!!!) у Сергея пару секунд...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 12, 2012, 07:37:39 pm
Чет у меня это демо вот так красит:   ???
http://imglink.ru/show-image.php?id=aa2ef05033e46bb4486b240f1a00435d
Название: Re: Lua
Отправлено: ilovb от Ноябрь 12, 2012, 07:42:08 pm
  ... как сказать... я вот например, не смог понять почему  большой модуль в исходниках ББ (5-10 т. строк... точно не помню) СТАТИЧЕСКИ раскрашивался (не подсвечивался!!!) у Сергея пару секунд...

Там проблема в ББ, а не в коде Сергея. Я тоже писал в ББ разукрашку и знаю в чем там проблема.  :)

И кстати раскрасить сложнее (по ресурсам) чем подсветить
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 07:48:22 pm

И кстати раскрасить сложнее (по ресурсам) чем подсветить
  ;) Не знаю на счет ресурсов (как пользователя , меня они не трахают).. но если с раскрашивалками  там худо бедно есть варианты, то с динамикой я видел только у Сергея (и тот корявый с точки зрения конечного пользователя).
Название: Re: Lua
Отправлено: ilovb от Ноябрь 12, 2012, 07:51:33 pm
У Сергея там только видимость динамики на сколько я помню  :)
Впрочем он сам наверно прокомментирует.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 07:56:36 pm
вся наша жизнь - реалистичная видимость, по большому счету.. я не против нее (видимости) в данном случая... если не вижу различий. Но мне охота послать на х. мудаков которые утверждают.. дескать "подсветка  не нужна ибо многие ее делали но отказались от использования"-  потому, что то что они делали , действительно нафиг здалось - обосралось...
Название: Re: Lua
Отправлено: vlad от Ноябрь 12, 2012, 07:59:02 pm
Я разочаровался в скриптовых языках до предела. Написал на PHP сканер текста, буферный построитель строк, лексический анализатор для 1С и модуль подсветки. Сделал первый шаблон раскраски по примеру Sublime Text2: Monokai. И что вы думаете? Код на 1С, объёмом 5667 байт красится...0.7 секунд. Занавес.

Не знаю PHP, но могу предположить что:
1. Используются сугубо низкоуровневые (а-ля обероновские) приемы при работе с массивами (последовательностями). Например, используется WHILE там, где на самом деле самое место для "встроенной" find/indexOf. И т.п.
2. Что касается конкретно строк, то во всех приличных ЯП они немодифицируемые (потому как их трудно реализовать эффективно в протвном случае). Поэтому даже если ЯП (PHP) позволяет их модифицировать, то скорее всего эффективнее будет использовать что-то другое (например, сначала перегнать строку в массив, совершить все манипуляции, затем обратно перегнать массив в строку).
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 08:03:12 pm
Vlad - ваша оценка... возможно ли на екма скрипте сделать нормально -работающую динамическую подсветку (ЯП уровня оберона) -  на текстах обьемом в 3 -5 тыс. строк?
Название: Re: Lua
Отправлено: ilovb от Ноябрь 12, 2012, 08:09:12 pm
Berserker, я вот не совсем понял какая задача решалась.
Сгенерить html с разукрашеным кодом 1С?

Типа этого?:
http://infostart.ru/public/19856/
Название: Re: Lua
Отправлено: vlad от Ноябрь 12, 2012, 08:11:47 pm
Vlad - ваша оценка... возможно ли на екма скрипте сделать нормально -работающую динамическую подсветку (ЯП уровня оберона) -  на текстах обьемом в 3 -5 тыс. строк?

Очень расплывчатая постановка задачи :) Полноценно распарсить (согласно синатксису оберона) - можно за < 100 мс на современном десктопе.
Название: Re: Lua
Отправлено: Berserker от Ноябрь 12, 2012, 08:15:23 pm
ilovb, windows-1251 кодировка отображается как utf-8 почему-то. И можно пример кода, на котором пробовали?

Цитировать
Не знаю PHP, но могу предположить что:
1. Используются сугубо низкоуровневые (а-ля обероновские) приемы при работе с массивами (последовательностями). Например, используется WHILE там, где на самом деле самое место для "встроенной" find/indexOf. И т.п.
2. Что касается конкретно строк, то во всех приличных ЯП они немодифицируемые (потому как их трудно реализовать эффективно в протвном случае). Поэтому даже если ЯП (PHP) позволяет их модифицировать, то скорее всего эффективнее будет использовать что-то другое (например, сначала перегнать строку в массив, совершить все манипуляции, затем обратно перегнать массив в строку).
Я выложу исходники после того, как соптимизирую, что смогу. Сканер текста перенесён с Паскаля, так же как и ряд функций (set для множеств, in - для проверки вхождения в множество). Собственно, была попытка классической ступенчатой разработки. И всё хорошо, за исключение скорости. В остальном Вы, конечно, правы, хотя в PHP строки ANSI-однобайтовые и можно было ряд оптимизаций сделать, в том числе и для односимвольных констант.

Цитировать
Berserker, я вот не совсем понял какая задача решалась.
Сгенерить html с разукрашеным кодом 1С?
Да. Практикум по 1С для студентов генерируется из продвинутого markdown-синтаксиса в html, готовый для загрузки на сервер. Соответственно и подсветка тоже на PHP. Ранее была на highlighter.js.

P.S. Без регистрации скачать разукрашку не удаётся.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 08:16:52 pm
Vlad - ваша оценка... возможно ли на екма скрипте сделать нормально -работающую динамическую подсветку (ЯП уровня оберона) -  на текстах обьемом в 3 -5 тыс. строк?

Очень расплывчатая постановка задачи :) Полноценно распарсить (согласно синатксису оберона) - можно за < 100 мс на современном десктопе.
что  же тогда мы будем иметь  верхнюю границу реагирования в эти же 0.1 секунды... на  3 -5 тыс. строках... - а что?  работать можно вполне комфортно..
Название: Re: Lua
Отправлено: ilovb от Ноябрь 12, 2012, 08:27:09 pm
А у меня вот ST2 разукрашивает 0,5м вообще без тормозов  ;D ;D ;D

Но опять же повторюсь. Чтобы подсветить ресурсы не нужны. Если структура данных в памяти выбрана правильно, то редактор знает контекст который вы правите и просто выставляет цвет слова реалтайм. Т.е. когда исходник уже в памяти, то парсинг происходит только на очень маленьких участках в месте правки. Ресурсы нужны только при загрузке исходника.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 12, 2012, 08:30:10 pm
А у меня вот ST2 разукрашивает 0,5м вообще без тормозов  ;D ;D ;D

Но опять же повторюсь. Чтобы подсветить ресурсы не нужны. Если структура данных в памяти выбрана правильно, то редактор знает контекст который вы правите и просто выставляет цвет слова реалтайм. Т.е. когда исходник уже в памяти, то парсинг происходит только на очень маленьких участках в месте правки. Ресурсы нужны только при загрузке исходника.
;D а я повторюсь,   ИМХО  никого эти ресурсы особо не волнуют в современной реальности.... на подобных задачах.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 12, 2012, 08:55:06 pm
ilovb, windows-1251 кодировка отображается как utf-8 почему-то. И можно пример кода, на котором пробовали?
...
Это у меня хром гонит.
Проверил в IE9 - все работает  :)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 07:45:34 am
Как и полагается скриптовому языку няшная сортировка в комплекте:  8)

print("Сортируем массив чисел")

a = {9,5,1,3,2,6,7,4,8}
table.sort(a)
for i = 1, #a do
    print(a[i])
end

print("Сортируем массив чисел используя свою функцию сравнения")

function comp(a, b)
    return a > b
end

a = {9,5,1,3,2,6,7,4,8}
table.sort(a, comp)
for i = 1, #a do
    print(a[i])
end

print("Сортируем массив строк используя свою функцию сравнения")

function comp(a, b)
    return a < b
end

a = {"З","Д","А","В","Б","Е","Ё","Г","Ж"}
table.sort(a, comp)
for i = 1, #a do
    print(a[i])
end
Я таки дико извиняюсь, но при чем тут скриптовость? Вообще у скриптовых языков, как раз, функции высшего порядка встречаются не так уж и часто, ибо не нужны (скриптовые задачки мелкие - построение собственных абстракций нафик не нужно).

А то что тут написано, и на плюсах делается элементарно и, тащемто, не менее, а возможно и более, компактно:
#include <algorithm>
#include <iostream>
#include <string>

using namespace std;

int main() {
    cout << "Сортируем массив чисел\n";
    vector<int> a = {9,5,1,3,2,6,7,4,8};
    sort(a.begin(), a.end());
    for (auto i : a)
        cout << i << endl;

    cout << "Сортируем массив чисел используя свою функцию сравнения\n";
    a = {9,5,1,3,2,6,7,4,8};
    sort(a.begin(), a.end(), [](int a, int b){return a>b;});
    for (auto i : a)
        cout << i << endl;

    cout << "Сортируем массив строк используя свою функцию сравнения\n";
    vector<string> s = {"З","Д","А","В","Б","Е","Ё","Г","Ж"};
    sort(s.begin(), s.end(), [](string a, string b){return a<b;});
    for (auto i : s)
        cout << i << endl;
    return 0;
}
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 08:10:25 am
Сравнение с плюсами не интересно  :)
И так понятно что на cpp  можно все  ;)
Давай на Oberon  ;D

Скриптовый язык ценится не наличием фич, а простотой и легкостью их использования.

Мне на изучение Lua хватило 3 дней. А сколько ты изучал cpp?  ;)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 08:32:08 am
Я таки дико извиняюсь, но при чем тут скриптовость? Вообще у скриптовых языков, как раз, функции высшего порядка встречаются не так уж и часто, ибо не нужны
tcl, python, lua, ruby, js...  :P

И вообще:
Сценарный язык (http://ru.wikipedia.org/wiki/%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA)

Мы с тобой кажется о разных вещах говорим.  ;)
Я имею в виду не командно-сценарные языки, а прикладные и универсальные (по терминологии wiki)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 08:38:22 am
Я таки дико извиняюсь, но при чем тут скриптовость? Вообще у скриптовых языков, как раз, функции высшего порядка встречаются не так уж и часто, ибо не нужны
tcl, python, lua, ruby, js...  :P

И вообще:
Сценарный язык (http://ru.wikipedia.org/wiki/%D0%A1%D1%86%D0%B5%D0%BD%D0%B0%D1%80%D0%BD%D1%8B%D0%B9_%D1%8F%D0%B7%D1%8B%D0%BA)
А универсальные это уже не скриптовые языки, а языки общего назначения. Отличий от того же С++ в общем то и нет.

Мы с тобой кажется о разных вещах говорим.  ;)
Я имею в виду не командно-сценарные языки, а прикладные и универсальные (по терминологии wiki)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 08:46:36 am
Сравнение с плюсами не интересно  :)
И так понятно что на cpp  можно все  ;)
Давай на Oberon  ;D

Скриптовый язык ценится не наличием фич, а простотой и легкостью их использования.

Мне на изучение Lua хватило 3 дней. А сколько ты изучал cpp?  ;)
Ну, во-первых не три дня, а во вторых так считать нельзя. :-)

Сколько языком пользуешься столько и изучаешь его. Я например Оберон изучаю чуть менее чем С++. С 2005го года. И постоянно что-то новенькое вылазит. Вот недавно Влад там забавное отковырял очередное...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 08:52:44 am
Мне на изучение Lua хватило 3 дней.
Вот именно что три.  :) Причем половину этого времени я курил ООП.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 09:00:11 am
Мне на изучение Lua хватило 3 дней.
Вот именно что три.  :) Причем половину этого времени я курил ООП.
Да, сложно курить то, чего там нет :-)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 09:01:30 am
Quine?
for line in io.lines("c:\\test.lua") do
    print(line)
end
Это не Quine. По определению.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 09:08:55 am
Цитата: valexey
Да, сложно курить то, чего там нет :-)

Ну да. Но там в языке есть поддержка прототипного ООП. Нужно некоторое время чтобы понять как этим пользоваться и как можно организовать классическое ООП. К тому же русские источники не айс. А первоисточник (http://www.lua.org/pil/) на ангельском... хотя как оказалось на довольно простом ангельском.

В общем могу сэкономить кучу времени тому, кто собрался изучать Lua:
НЕ ЧИТАЙТЕ НИЧЕГО КРОМЕ Programming in Lua by Roberto Ierusalimschy  ;D
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 09:10:01 am
Quine?
for line in io.lines("c:\\test.lua") do
    print(line)
end
Это не Quine. По определению.
Я в курсе  ;D (там вообще-то классическая PFFF шутка  ;) )
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 09:15:34 am
Цитата: valexey
Да, сложно курить то, чего там нет :-)

Ну да. Но там в языке есть поддержка прототипного ООП. Нужно некоторое время чтобы понять как этим пользоваться и как можно организовать классическое ООП.
И как там организовать асинхронную посылку сообщений от объекта к объекту, сообщения содержащие, в том числе, всякие там блоки кода? :-) Мы ведь про классическое ООП, которое в Smalltalk'e? ;-)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 09:18:35 am
Не не не...  :)  Я про то, что в CP, Java, cpp и т.д.
В смолтоке я сам мало что понимаю  ;D
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 09:23:20 am
Не не не...  :)  Я про то, что в CP, Java, cpp и т.д.
В смолтоке я сам мало что понимаю  ;D
А, ну так это и не ООП вовсе ;-)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 09:31:38 am
Кстати, valexey, а при чем там функции высших порядков? На Oberon'е ведь тоже можно POINTER передать параметром...
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 09:33:40 am
Кстати, valexey, а при чем там функции высших порядков? На Oberon'е ведь тоже можно POINTER передать параметром...
POINTER на ЧТО? ;-)

Чтобы сделать полноценную типобезопасную функцию sort, нужно чтобы она принимала в качестве одного из параметров именно функцию (указатель на функцию) определенного типа. А не void*.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 09:52:36 am
Ну типа так:

MODULE SmartTest;
IMPORT
    Log := StdLog;
TYPE
    P = PROCEDURE(a, b: INTEGER): BOOLEAN;

PROCEDURE Comp(a, b: INTEGER): BOOLEAN;
BEGIN
    RETURN a < b;
END Comp;

PROCEDURE Sort(func: P);
VAR
    a, b: INTEGER;
    res: BOOLEAN;
BEGIN
    a := 1;
    b := 2;
    res := func(a, b);
    Log.Bool(res);
END Sort;
   
PROCEDURE Do*();   
BEGIN
    Sort(Comp)
END Do;
   
BEGIN
END SmartTest.Do

То же самое что и в луашной сортировке... не?  ???
Название: Re: Lua
Отправлено: DIzer от Ноябрь 13, 2012, 09:56:18 am

Мне на изучение Lua хватило 3 дней. А сколько ты изучал cpp?  ;)
КРАЙНЕ не корректное сравнение..
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 09:59:38 am
Ну типа так:

MODULE SmartTest;
IMPORT
    Log := StdLog;
TYPE
    P = PROCEDURE(a, b: INTEGER): BOOLEAN;

PROCEDURE Comp(a, b: INTEGER): BOOLEAN;
BEGIN
    RETURN a < b;
END Comp;

PROCEDURE Sort(func: P);
VAR
    a, b: INTEGER;
    res: BOOLEAN;
BEGIN
    a := 1;
    b := 2;
    res := func(a, b);
    Log.Bool(res);
END Sort;
   
PROCEDURE Do*();   
BEGIN
    Sort(Comp)
END Do;
   
BEGIN
END SmartTest.Do

То же самое что и в луашной сортировке... не?  ???

Не. Луашная функция Table.sort сортирует не только целые числа. Попробуй ка этой же функцией SmartTest.Sort, не изменяя её исходник, отсортировать массив строк.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 10:01:12 am

Мне на изучение Lua хватило 3 дней. А сколько ты изучал cpp?  ;)
КРАЙНЕ не корректное сравнение..

Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 10:04:40 am
Ну типа так:

MODULE SmartTest;
IMPORT
    Log := StdLog;
TYPE
    P = PROCEDURE(a, b: INTEGER): BOOLEAN;

PROCEDURE Comp(a, b: INTEGER): BOOLEAN;
BEGIN
    RETURN a < b;
END Comp;

PROCEDURE Sort(func: P);
VAR
    a, b: INTEGER;
    res: BOOLEAN;
BEGIN
    a := 1;
    b := 2;
    res := func(a, b);
    Log.Bool(res);
END Sort;
   
PROCEDURE Do*();   
BEGIN
    Sort(Comp)
END Do;
   
BEGIN
END SmartTest.Do

То же самое что и в луашной сортировке... не?  ???

Не. Луашная функция Table.sort сортирует не только целые числа. Попробуй ка этой же функцией SmartTest.Sort, не изменяя её исходник, отсортировать массив строк.

Ну так мы все таки про обобщенку или фвп?

ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 10:05:14 am
Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P
Потому, что если бы ты пользовался Lua со, скажем, 2004 года, то ты бы его к текущему моменту изучал не 3 дня, а 8-9 лет (lua, как и с++, развивается, и тот что был в 2004 году не является тем что сейчас). И исходник ты написал бы для этой задачи в точности такой же.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 13, 2012, 10:06:46 am
Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P
Потому, что если бы ты пользовался Lua со, скажем, 2004 года, то ты бы его к текущему моменту изучал не 3 дня, а 8-9 лет (lua, как и с++, развивается, и тот что был в 2004 году не является тем что сейчас). И исходник ты написал бы для этой задачи в точности такой же.
  :D  ;)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 10:07:40 am
Ну так мы все таки про обобщенку или фвп?

ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...
А ты видел хоть один язык где декларировались HOF но при этом не было бы обобщенки? ;-) Одно с другим тесно связано.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 10:12:00 am
Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P
Потому, что если бы ты пользовался Lua со, скажем, 2004 года, то ты бы его к текущему моменту изучал не 3 дня, а 8-9 лет (lua, как и с++, развивается, и тот что был в 2004 году не является тем что сейчас). И исходник ты написал бы для этой задачи в точности такой же.

Не пойму к чему ты клонишь... Неужели CPP вместе с STL можно вкурить за 3 дня и свободно кодить как на Lua?  ;)

Пакажи мне чувака за 3 дня курения cpp могущего соорудить код подобный твоему.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 10:15:03 am
ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...
А отличие очень простое - функция высшего порядка это функция которая принимает на вход одну или несколько функций и на выход гонит тоже функцию. Так вот, чтобы это имело смысл, очень желательно иметь для функций не только одну лишь операцию присваивания. Должна быть возможность вернуть новую функцию, которой еще не было в программе. Для этого можно использовать каррирование, замыкания, комбинаторы и так далее.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 10:18:14 am
Почему это? В контексте моего кода на Lua и кода valexey на cpp ИМХО вполне корректное...  :P
Потому, что если бы ты пользовался Lua со, скажем, 2004 года, то ты бы его к текущему моменту изучал не 3 дня, а 8-9 лет (lua, как и с++, развивается, и тот что был в 2004 году не является тем что сейчас). И исходник ты написал бы для этой задачи в точности такой же.

Не пойму к чему ты клонишь... Неужели CPP вместе с STL можно вкурить за 3 дня и свободно кодить как на Lua?  ;)

Пакажи мне чувака за 3 дня курения cpp могущего соорудить код подобный твоему.
На уровне сортировок - можно. Особенно современный C++ (с++11).
У меня же там даже своих шаблонов нет :-) Там вообще ничего сложного не используется. Обычная функция sort (которая мгновенно нагугливается) и обычные лямбды, которые ровно те же (для этой задачи) что и в js например.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 10:20:00 am
ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...
А отличие очень простое - функция высшего порядка это функция которая принимает на вход одну или несколько функций и на выход гонит тоже функцию. Так вот, чтобы это имело смысл, очень желательно иметь для функций не только одну лишь операцию присваивания. Должна быть возможность вернуть новую функцию, которой еще не было в программе. Для этого можно использовать каррирование, замыкания, комбинаторы и так далее.

А я думал что этого достаточно:
Фу́нкция вы́сшего поря́дка (http://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%B2%D1%8B%D1%81%D1%88%D0%B5%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0) — функция, принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата. Основная идея состоит в том, что функции имеют тот же статус, что и другие объекты данных
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 10:20:17 am
Пакажи мне чувака за 3 дня курения cpp могущего соорудить код подобный твоему.
Вообще, я слабо представляю как можно подтвердить или опровергнуть твое или мое суждение. Оба утверждения, в наших реалиях, не фальсифицируемы. Поэтому не вижу смысла дальше спорить.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 10:23:18 am
ps Я вот если чесна вообще не очень понимаю чем отличается фвп от процедурного типа в паскале...
А отличие очень простое - функция высшего порядка это функция которая принимает на вход одну или несколько функций и на выход гонит тоже функцию. Так вот, чтобы это имело смысл, очень желательно иметь для функций не только одну лишь операцию присваивания. Должна быть возможность вернуть новую функцию, которой еще не было в программе. Для этого можно использовать каррирование, замыкания, комбинаторы и так далее.

А я думал что этого достаточно:
Фу́нкция вы́сшего поря́дка (http://ru.wikipedia.org/wiki/%D0%A4%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F_%D0%B2%D1%8B%D1%81%D1%88%D0%B5%D0%B3%D0%BE_%D0%BF%D0%BE%D1%80%D1%8F%D0%B4%D0%BA%D0%B0) — функция, принимающая в качестве аргументов другие функции или возвращающая другую функцию в качестве результата. Основная идея состоит в том, что функции имеют тот же статус, что и другие объекты данных

ok, давай на примерах. Представим себе, что в неком языке "Оo" есть целые числа. Есть как целочисленные литералы, так и целочисленные переменные. Целочисленной переменной можно присваивать целочисленные литералы, также можно присваивать значение одной переменной другой переменной. Все, больше ни одной операции для целых чисел в языке Oo нет (операций сложения, вычитания, умножения и так далее).

Внимание вопрос - можно ли считать, что данный язык полноценно поддерживает концепцию целых чисел?
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 10:27:07 am
На уровне сортировок - можно. Особенно современный C++ (с++11).
У меня же там даже своих шаблонов нет :-) Там вообще ничего сложного не используется. Обычная функция sort (которая мгновенно нагугливается) и обычные лямбды, которые ровно те же (для этой задачи) что и в js например.

Сдаюсь. Лямбды, шаблоны, JS - куда уж проще....  :)

ps У меня вот JS курить терпения не хватило. Lua на порядок проще.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 10:32:10 am
ok, давай на примерах. Представим себе, что в неком языке "Оo" есть целые числа. Есть как целочисленные литералы, так и целочисленные переменные. Целочисленной переменной можно присваивать целочисленные литералы, также можно присваивать значение одной переменной другой переменной. Все, больше ни одной операции для целых чисел в языке Oo нет (операций сложения, вычитания, умножения и так далее).

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

Но есть определение фвп которое я привел.
И есть процедурный тип который соответствует этому определению. Вот и все.

Набор операций над функциями вроде приведен в определении ("передавать" и "принимать")...
Название: Re: Lua
Отправлено: DIzer от Ноябрь 13, 2012, 10:32:24 am
Внимание вопрос - можно ли считать, что данный язык полноценно поддерживает концепцию целых чисел?
  ;D Огласите свою "концепцию целых чисел" - и мы дадим вам ответ!  ;D
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 10:34:24 am
На уровне сортировок - можно. Особенно современный C++ (с++11).
У меня же там даже своих шаблонов нет :-) Там вообще ничего сложного не используется. Обычная функция sort (которая мгновенно нагугливается) и обычные лямбды, которые ровно те же (для этой задачи) что и в js например.

Сдаюсь. Лямбды, шаблоны, JS - куда уж проще....  :)

ps У меня вот JS курить терпения не хватило. Lua на порядок проще.
Где ты тут шаблоны нашел? :-) В моем коде их нет. Есть только лямбды.
А лямбды и замыкания есть и в Lua. Тут отличий Lua от js пожалуй и нет никаких.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 10:41:10 am
 :o
А это че?
vector<string> s = {"З","Д","А","В","Б","Е","Ё","Г","Ж"};
Я cpp не знаю... Но в wiki сказано:
vector — это шаблон из стандартной библиотеки C++ (http://ru.wikipedia.org/wiki/Vector_(C%2B%2B))
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 10:43:52 am
:o
А это че?
vector<string> s = {"З","Д","А","В","Б","Е","Ё","Г","Ж"};
Я cpp не знаю... Но в wiki сказано:
vector — это шаблон из стандартной библиотеки C++ (http://ru.wikipedia.org/wiki/Vector_(C%2B%2B))

std::vector - это шаблонный класс. А вот vector<string> это уже никакой не шаблон, а конкретный тип ;-) Для того чтобы использовать vector не нужно что-либо знать про шаблоны.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 10:49:32 am
Ничего не понял. Так шаблон или нет? Понятно что в данном месте это конкретный тип. Но без шаблонов это работать ведь не будет. Или как?

Если там нет ничего специфичного для Cpp&STL, значит можно переписать практически 1:1 на CP. Так?  :)
Название: Re: Lua
Отправлено: Berserker от Ноябрь 13, 2012, 11:12:18 am
Шаблонный класс использует шаблоны, именно так.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 11:20:30 am
Если там нет ничего специфичного для Cpp&STL, значит можно переписать практически 1:1 на CP. Так?  :)
В CP нет лямбд (ака функциональные/процедурные литералы), так что увы, 1 в 1 мой код не получится переписать. Также там нет литералов для массивов.

Ну а в конкретном месте vector<string> вполне можно заменить на какой-нибудь VectorForString record. Ну или там вообще на ARRAY OF STRING.

Замечу, что по факту массивы в CP и Обероне по своей сути те же самые шаблонные типы что и какой-нибудь vector в stl. Только вот в CP и Обероне программист не может создавать свои собственные шаблонные типы, он ограничен использованием только предопределенных шаблонных типов (тот же ARRAY).

Если мы изучение C++ ограничиваем уровнем Lua/Oberon, то std::vector для изучающего будет тем же, чем ARRAY OF something в Обероне - некой магической хренью которая специализируется конкретным типом, и с помощью этого превращается в полноценный тип.

Отличий vector<int> от ARRAY OF INTEGER нет никакой с точки зрения такого программиста (ну, разве что второе писать дольше). Сложности добавочной в C++ нет (на этом уровне, и на уровне тех моих исходников).
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 11:25:34 am
Чет ты мне прям мои шаблоны о шаблонах ломаешь  ;D
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 11:33:21 am
Визуально vector не отличается от обычного массива... да...
Но я всегда считал что фишка шаблонов в том и есть, что они так невинно выглядят :D
Вот как "sort()" без шаблонов будет работать?

В CP можно извратиться да... но это будет не 1:1. Нужно будет либо кучу sort_int, sort_string и т.д. наплодить. Либо делать вариантные записи и дальше IF'ы... :)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 11:42:25 am
С. Липпман - C++ для начинающих
http://cpp.com.ru/lippman/c10.html (http://cpp.com.ru/lippman/c10.html)

Неее нах... я лучше 10 Lua изучу  ;D  ;D  ;D
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 11:43:47 am
Визуально vector не отличается от обычного массива... да...
Но я всегда считал что фишка шаблонов в том и есть, что они так невинно выглядят :D
Вот как "sort()" без шаблонов будет работать?
Без шаблонов в каком именно месте? Массив обычный оно тоже отсортировать сможет.

int main() {
    int arr[] = {5,3,1,9};
    sort(begin(arr), end(arr));
    for (auto i : arr)
        cout << i << endl;
    return 0;
}
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 11:46:55 am
Ага, только шаблон как был так и остался:
Цитата: http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_C%2B%2B#.D0.92.D1.8B.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B9_.D0.BF.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D0.BE.D0.B2
при вызове вышеописанной функции sort необязательно указывать параметр шаблона (если он совпадает с типом элементов аргумента-массива):
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 11:48:50 am
С. Липпман - C++ для начинающих
http://cpp.com.ru/lippman/c10.html (http://cpp.com.ru/lippman/c10.html)

Неее нах... я лучше 10 Lua изучу  ;D  ;D  ;D
Еще раз - зачем ты читаешь про шаблоны? Ты что, сам их писать собираешься? ;-) Чтение вот док по этим шаблонам (то есть по тому как устроена sort, vector и так далее) эквивалентно чтению исходников и документации по интерпретатору Lua и по компилятору Оберона. Во всех смыслах эквивалентно - и по сложности (хотя шаблоны конечно проще) и по востребованности для озвученного ранее типа программистов.

Просто там, где в Lua и Обероне придется изменять компилятор или интерпретатор (менять язык), там в плюсах обойдется написанием своего шаблона.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 11:50:25 am
Ага, только шаблон как был так и остался:
Цитата: http://ru.wikipedia.org/wiki/%D0%A8%D0%B0%D0%B1%D0%BB%D0%BE%D0%BD%D1%8B_C%2B%2B#.D0.92.D1.8B.D0.B2.D0.B5.D0.B4.D0.B5.D0.BD.D0.B8.D0.B5_.D0.B7.D0.BD.D0.B0.D1.87.D0.B5.D0.BD.D0.B8.D0.B9_.D0.BF.D0.B0.D1.80.D0.B0.D0.BC.D0.B5.D1.82.D1.80.D0.BE.D0.B2
при вызове вышеописанной функции sort необязательно указывать параметр шаблона (если он совпадает с типом элементов аргумента-массива):
И-и? Тебя слово пугает? Или возможность написать самостоятельно такое же?
Еще раз, сложности тут ровно столько же, сколько скажем у шаблонной функции NEW в Обероне.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 11:56:17 am
Да не  :)
Я просто не могу пользоваться тем, чего не понимаю. ХЗ, может я один такой  :)

Моё ИМХО - Lua в 1000 раз проще CPP  ;D  ;D  ;D
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 12:05:46 pm
Да не  :)
Я просто не могу пользоваться тем, чего не понимаю. ХЗ, может я один такой  :)

Моё ИМХО - Lua в 1000 раз проще CPP  ;D  ;D  ;D
Тогда объясни как именно в Lua работает функция Table.sort :-)
Вот точно и детально. Где там и какая магия, ведь оно работает с разными типами.

Дело в том, что заковыриваться в детали реализации можно почти бесконечно много. Вначале до уровня либы, затем до уровня компилятора, затем до уровня машкода, затем идем на уровень процессора и так далее. Плюсы хороши тем, что не покидая язык ты можешь зарыться достаточно далеко и сделать многое. Если тебе нужно. Если не нужно, можно оставаться на том же уровне что и Lua/Oberon, не заклядывая внутрь. Считай что std::sort - это функция вшитая в язык (аля NEW в Обероне), а std::vector - это тоже конструкт языка с помощью которого делаются конкретные типы. И нет никакой библиотеки, нет никаких шаблонов. Весь stl вшит в язык. (кстати, стандарт на C++ явно указывает, что так оно и может быть, то есть файлов-хедеров iostream, vector, algorithm и так далее может просто не быть).
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 12:17:04 pm
В Lua sort ни разу не магический. Там типы то по пальцам пересчитать.

Предлагаю закончить бесперспективный спор  ;)
Название: Re: Lua
Отправлено: DIzer от Ноябрь 13, 2012, 12:24:51 pm
Да не  :)
Я просто не могу пользоваться тем, чего не понимаю. ХЗ, может я один такой  :)

Моё ИМХО - Lua в 1000 раз проще CPP  ;D  ;D  ;D
Клевещете на себя  ;D - авто же вы умеете водить, или пользоваться микроволновкой..., даже одежду на себя из синтетики одеваете  и ниче.. живы пока.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 12:26:40 pm
Собсна вот:
/*
** {======================================================
** Quicksort
** (based on `Algorithms in MODULA-3', Robert Sedgewick;
**  Addison-Wesley, 1993.)
** =======================================================
*/


static void set2 (lua_State *L, int i, int j) {
  lua_rawseti(L, 1, i);
  lua_rawseti(L, 1, j);
}

static int sort_comp (lua_State *L, int a, int b) {
  if (!lua_isnil(L, 2)) {  /* function? */
    int res;
    lua_pushvalue(L, 2);
    lua_pushvalue(L, a-1);  /* -1 to compensate function */
    lua_pushvalue(L, b-2);  /* -2 to compensate function and `a' */
    lua_call(L, 2, 1);
    res = lua_toboolean(L, -1);
    lua_pop(L, 1);
    return res;
  }
  else  /* a < b? */
    return lua_compare(L, a, b, LUA_OPLT);
}

static void auxsort (lua_State *L, int l, int u) {
  while (l < u) {  /* for tail recursion */
    int i, j;
    /* sort elements a[l], a[(l+u)/2] and a[u] */
    lua_rawgeti(L, 1, l);
    lua_rawgeti(L, 1, u);
    if (sort_comp(L, -1, -2))  /* a[u] < a[l]? */
      set2(L, l, u);  /* swap a[l] - a[u] */
    else
      lua_pop(L, 2);
    if (u-l == 1) break;  /* only 2 elements */
    i = (l+u)/2;
    lua_rawgeti(L, 1, i);
    lua_rawgeti(L, 1, l);
    if (sort_comp(L, -2, -1))  /* a[i]<a[l]? */
      set2(L, i, l);
    else {
      lua_pop(L, 1);  /* remove a[l] */
      lua_rawgeti(L, 1, u);
      if (sort_comp(L, -1, -2))  /* a[u]<a[i]? */
        set2(L, i, u);
      else
        lua_pop(L, 2);
    }
    if (u-l == 2) break;  /* only 3 elements */
    lua_rawgeti(L, 1, i);  /* Pivot */
    lua_pushvalue(L, -1);
    lua_rawgeti(L, 1, u-1);
    set2(L, i, u-1);
    /* a[l] <= P == a[u-1] <= a[u], only need to sort from l+1 to u-2 */
    i = l; j = u-1;
    for (;;) {  /* invariant: a[l..i] <= P <= a[j..u] */
      /* repeat ++i until a[i] >= P */
      while (lua_rawgeti(L, 1, ++i), sort_comp(L, -1, -2)) {
        if (i>=u) luaL_error(L, "invalid order function for sorting");
        lua_pop(L, 1);  /* remove a[i] */
      }
      /* repeat --j until a[j] <= P */
      while (lua_rawgeti(L, 1, --j), sort_comp(L, -3, -1)) {
        if (j<=l) luaL_error(L, "invalid order function for sorting");
        lua_pop(L, 1);  /* remove a[j] */
      }
      if (j<i) {
        lua_pop(L, 3);  /* pop pivot, a[i], a[j] */
        break;
      }
      set2(L, i, j);
    }
    lua_rawgeti(L, 1, u-1);
    lua_rawgeti(L, 1, i);
    set2(L, u-1, i);  /* swap pivot (a[u-1]) with a[i] */
    /* a[l..i-1] <= a[i] == P <= a[i+1..u] */
    /* adjust so that smaller half is in [j..i] and larger one in [l..u] */
    if (i-l < u-i) {
      j=l; i=i-1; l=i+2;
    }
    else {
      j=i+1; i=u; u=j-2;
    }
    auxsort(L, j, i);  /* call recursively the smaller one */
  }  /* repeat the routine for the larger one */
}

static int sort (lua_State *L) {
  int n = aux_getn(L, 1);
  luaL_checkstack(L, 40, "");  /* assume array is smaller than 2^40 */
  if (!lua_isnoneornil(L, 2))  /* is there a 2nd argument? */
    luaL_checktype(L, 2, LUA_TFUNCTION);
  lua_settop(L, 2);  /* make sure there is two arguments */
  auxsort(L, 1, n);
  return 0;
}

/* }====================================================== */

На всякий случай:
Цитировать
/******************************************************************************
* Copyright (C) 1994-2012 Lua.org, PUC-Rio.
*
* Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to
* the following conditions:
*
* The above copyright notice and this permission notice shall be
* included in all copies or substantial portions of the Software.
*
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
******************************************************************************/
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 12:34:37 pm
Собсна вот:
/*
** {======================================================
** Quicksort
** (based on `Algorithms in MODULA-3', Robert Sedgewick;
**  Addison-Wesley, 1993.)
** =======================================================
*/


static void set2 (lua_State *L, int i, int j) {
  lua_rawseti(L, 1, i);
  lua_rawseti(L, 1, j);
}

static int sort_comp (lua_State *L, int a, int b) {
  if (!lua_isnil(L, 2)) {  /* function? */
    int res;
    lua_pushvalue(L, 2);
    lua_pushvalue(L, a-1);  /* -1 to compensate function */
    lua_pushvalue(L, b-2);  /* -2 to compensate function and `a' */
    lua_call(L, 2, 1);
    res = lua_toboolean(L, -1);
    lua_pop(L, 1);
    return res;
  }
  else  /* a < b? */
    return lua_compare(L, a, b, LUA_OPLT);
}

static void auxsort (lua_State *L, int l, int u) {
  while (l < u) {  /* for tail recursion */
    int i, j;
    /* sort elements a[l], a[(l+u)/2] and a[u] */
    lua_rawgeti(L, 1, l);
    lua_rawgeti(L, 1, u);
    if (sort_comp(L, -1, -2))  /* a[u] < a[l]? */
      set2(L, l, u);  /* swap a[l] - a[u] */
    else
      lua_pop(L, 2);
    if (u-l == 1) break;  /* only 2 elements */
    i = (l+u)/2;
    lua_rawgeti(L, 1, i);
    lua_rawgeti(L, 1, l);
    if (sort_comp(L, -2, -1))  /* a[i]<a[l]? */
      set2(L, i, l);
    else {
      lua_pop(L, 1);  /* remove a[l] */
      lua_rawgeti(L, 1, u);
      if (sort_comp(L, -1, -2))  /* a[u]<a[i]? */
        set2(L, i, u);
      else
        lua_pop(L, 2);
    }
    if (u-l == 2) break;  /* only 3 elements */
    lua_rawgeti(L, 1, i);  /* Pivot */
    lua_pushvalue(L, -1);
    lua_rawgeti(L, 1, u-1);
    set2(L, i, u-1);
    /* a[l] <= P == a[u-1] <= a[u], only need to sort from l+1 to u-2 */
    i = l; j = u-1;
    for (;;) {  /* invariant: a[l..i] <= P <= a[j..u] */
      /* repeat ++i until a[i] >= P */
      while (lua_rawgeti(L, 1, ++i), sort_comp(L, -1, -2)) {
        if (i>=u) luaL_error(L, "invalid order function for sorting");
        lua_pop(L, 1);  /* remove a[i] */
      }
      /* repeat --j until a[j] <= P */
      while (lua_rawgeti(L, 1, --j), sort_comp(L, -3, -1)) {
        if (j<=l) luaL_error(L, "invalid order function for sorting");
        lua_pop(L, 1);  /* remove a[j] */
      }
      if (j<i) {
        lua_pop(L, 3);  /* pop pivot, a[i], a[j] */
        break;
      }
      set2(L, i, j);
    }
    lua_rawgeti(L, 1, u-1);
    lua_rawgeti(L, 1, i);
    set2(L, u-1, i);  /* swap pivot (a[u-1]) with a[i] */
    /* a[l..i-1] <= a[i] == P <= a[i+1..u] */
    /* adjust so that smaller half is in [j..i] and larger one in [l..u] */
    if (i-l < u-i) {
      j=l; i=i-1; l=i+2;
    }
    else {
      j=i+1; i=u; u=j-2;
    }
    auxsort(L, j, i);  /* call recursively the smaller one */
  }  /* repeat the routine for the larger one */
}

static int sort (lua_State *L) {
  int n = aux_getn(L, 1);
  luaL_checkstack(L, 40, "");  /* assume array is smaller than 2^40 */
  if (!lua_isnoneornil(L, 2))  /* is there a 2nd argument? */
    luaL_checktype(L, 2, LUA_TFUNCTION);
  lua_settop(L, 2);  /* make sure there is two arguments */
  auxsort(L, 1, n);
  return 0;
}

/* }====================================================== */
И как мне, знающему Lua, и не понимающему что такое эти все static, звездочки какие-то и деление точек с запятыми на звездочку (в тексте постоянно встречается нечто вроде ;/* ), разобраться в этом коде? :-) Явно же это явно какой-то жутко извращенный диалект луа!

Который от Lua сильно дальше, чем шаблоны в плюсах от плюсов ;-)
Название: Re: Lua
Отправлено: vlad от Ноябрь 13, 2012, 12:36:01 pm
Пакажи мне чувака за 3 дня курения cpp могущего соорудить код подобный твоему.

(http://lurkmore.so/images/7/7d/C%2B%2B_prosto.png)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 12:43:37 pm
valexey, это ж Си!  ;D  ;D  ;D

Это из исходников интерпретатора, реализация того самого table.sort()
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 12:45:30 pm
Вот: http://www.lua.org/source/5.1/ltablib.c.html
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 12:46:04 pm
valexey, это ж Си!  ;D  ;D  ;D

Это из исходников интерпретатора, реализация того самого table.sort()
Дык, да. Но ты полагаешь, что за три дня человек изучающий Луа еще и Си выучит? :-)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 12:50:39 pm
Нахрена?
Это уже слой ниже Lua. Так можно и до маш кодов дойти.
А шаблоны в cpp - это как раз сам cpp  :)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 12:56:43 pm
Нахрена?
Это уже слой ниже Lua. Так можно и до маш кодов дойти.
А шаблоны в cpp - это как раз сам cpp  :)

C++, как и многие другие языки, состоит из нескольких слабо пересекающихся языков (и, между прочим, Оберон не исключение). Язык шаблонов - самый обособленный язык в нем. Можно годами писать на C++ и ни разу шаблоны не видеть. И можно десятилетие писать на C++ не написав ни одного шаблона, не зная как они работают, но при этом активно использовать sort, vector и так далее. Знание этих механизмов - это тот же самый "слой ниже" что и приведенный тобой код в Lua.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 01:09:02 pm
Я уже потерял нить спора...   ;)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 01:16:41 pm
Я уже потерял нить спора...   ;)
Ну, помнится ты утверждал что мой элементарный код-аналог твоего луашного, требует для написания сильно бОльшей квалификации :-)

Я таки утверждаю, что для современного с++ это не обязательно. Вот C++98 - он да, он требовал. Лямбд не было, дофига еще чего не было. Для написание такого кода пришлось бы или использовать адапторы (в которых хрен разберешься), либо написать своих пару классов-компараторов. А вот в современном С++ (c++11) - все ок. Все элементарно просто. И про шаблоны (страшные и ужасные) знать не надо.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 01:24:59 pm
Хм... Попробовать покурить cpp может... ...еще раз...  ;D

А каким компайлером можно поиметь ентот c++11?
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 01:27:17 pm
Хм... Попробовать покурить cpp может... ...еще раз...  ;D

А каким компайлером можно поиметь ентот c++11?

gcc 4.7 и выше.
(на самом деле начиная с gcc 4.6 оно начало как-то поддерживаться, но я бы советовал 4.7)

Насколько поддерживает маздай-студия я не знаю. В любом случае у gcc самая полная поддержка стандарта сейчас.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 01:30:03 pm
Сенкс.
Только еще вопрос в чем кодить. Есть чего нибудь маздайное, простое? К ST2 сложно прикручивать?
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 01:32:03 pm
Сенкс.
Только еще вопрос в чем кодить. Есть чего нибудь маздайное, простое? К ST2 сложно прикручивать?
На счет прикручивания к плюсам ST2 под виндой - это к vlad :-) Он вроде прикручивал и у него вроде как даже заработало как надо (в том числе отладка).

Как альтернатива - Qt Creator. Оно вроде даже c++11 держит теперь. Надо будет на досуге посмотреть как там на тему прикручивания gcc того который не с ним идет искаропки.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 01:35:51 pm
Но вообще, докури Lua сначала лучше. Пока докуриваешь, поддержка c++11 еще сильнее улучшится :-)

(а я, на досуге, посмотрю что там у MSVS2012 с поддержкой актуальных плюсов)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 13, 2012, 01:36:56 pm
OK  :)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 13, 2012, 01:41:45 pm
Да, нашел табличку в плане поддержки компилерами С++11: http://wiki.apache.org/stdcxx/C%2B%2B0xCompilerSupport

Студия оказывается не самый аццтойный компилер имеет. Где-то на третьем месте. :-) Как обычно бесплатные и свободные компиляторы является более качественными и фичастыми ;-)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 14, 2012, 08:22:40 am
А вот и свежая версия компилятора Lua вышла:
http://www.linux.org.ru/news/opensource/8465577
Цитировать
Вышел компилятор для Lua — LuaJit 2.0.

Основные изменения для релиза были в исправлении багов.

Изменения и улучшения по сравнению с первой версией:

* Возможность использования конверсии исключений C++ для всех платформ с помощью функций-обёрток.
* Обёртки для libm функций.
* Сборка static и shared библиотек на POSIX.
* Компилирование рекурсивного кода.
* Портирование интепретатора и JIT компилятора на x86-64.
* Разметка текущего трейса, даже если компилятор не доступен.
* Оптимизация для and/or операторов.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 14, 2012, 08:28:56 am
Производительность радует:
http://luajit.org/performance_arm.html
Ну и вообще: http://luajit.org/performance.html
Название: Re: Lua
Отправлено: ilovb от Ноябрь 15, 2012, 10:18:54 am
Свой словарь Completions в ST2 для Lua делается так:
Создаем и сохраняем в любом месте внутри папки packages файл с расширением .sublime-completions
И наполняем его по образцу:
Цитата: Lua.sublime-completions
{
        "scope": "source.lua",

        "completions":
        [
                "print(",
                "setmetatable(",
                {"trigger": "rep", "contents": "string.rep("}
        ]
}

триггеры имеют след. смысл:
Цитировать
"foo"

# is equivalent to:

{ "trigger": "foo", "contents": "foo" }

Подробности тут:
http://docs.sublimetext.info/en/latest/reference/completions.html
Название: Re: Lua
Отправлено: ilovb от Ноябрь 16, 2012, 08:09:24 am
Соорудил свой первый рекурсивный итератор:
function tree(t)
   local i = 1
   local subiter
   local function iter()
      local v = t[i]
      if type(v) == "table" then
         subiter = subiter or tree(v)
         local v = subiter()
         if v then
            return v
         else
            subiter = nil
            i = i + 2
            v = t[i - 1]
            return v
         end
      else
         i = i + 1
         return v
      end
   end
   return iter
end

a = {1,2,3,{1,2,{1,2,3},3},4,5,6,7,8,9}

for v in tree(a) do
   print(v)
end

Пришлось поломать мозг, т.к. замыканиями раньше не пользовался и итераторы не писал.  :)
Кто знает как сделать проще?
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 16, 2012, 08:33:32 am
Что оно должно делать?
Название: Re: Lua
Отправлено: ilovb от Ноябрь 16, 2012, 08:37:03 am
Просто перебрать все элементы дерева.
Этот мой код выдает такое:
Цитировать
1
2
3
1
2
1
2
3
3
4
5
6
7
8
9
Название: Re: Lua
Отправлено: ilovb от Ноябрь 18, 2012, 10:37:05 am
http://symmetrica.net/lua/
Название: Re: Lua
Отправлено: ilovb от Ноябрь 20, 2012, 05:13:13 pm
Поигрался немного со строковой либой:
http://www.lua.org/manual/5.1/manual.html#5.4
Работать с ней одно удовольствие (несмотря на скромный набор функций)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 20, 2012, 05:27:15 pm
Поиск парных сбалансированных символов:
s = '2*(10*(x+1)-2)+5'

-- ищем парные скобки
print(s:find("%b()"))
-- log: 3    14

-- ищем парные скобки начиная с 4 символа
print(s:find("%b()", 4))
-- log: 7    11
Название: Re: Lua
Отправлено: ilovb от Ноябрь 20, 2012, 05:55:55 pm
Еще очень понравилось что в функции замены подстроки (string.gsub (s, pattern, repl [, n]))
вместо подстроки замены (repl) можно передать функцию. А так как есть замыкания....  ;)

Пример:
function foo(t)
    local i = 0
    return function(s)
        i = i + 1
        t[i] = s
        return "#"
    end
end

local text = 'sdfsdfsd48sdfsd15dsfsd72dsfs69'
local t = {}

text = text:gsub("%d", foo(t))

print(text)
for i,v in ipairs(t) do
    print(i,v)
end

-- log:
--[[
sdfsdfsd##sdfsd##dsfsd##dsfs##
1    4
2    8
3    1
4    5
5    7
6    2
7    6
8    9
--]]

Тут замыкание собирает все циферы в массив t

если поменять паттерн на "%d+" то получим такой лог:
sdfsdfsd#sdfsd#dsfsd#dsfs#
1    48
2    15
3    72
4    69

Йа тащусь  :D
Название: Re: Lua
Отправлено: ilovb от Ноябрь 22, 2012, 09:35:46 am
Запилил себе тулзу, которая выдирает метаданные из буфера обмена 1С.
require'clipboard'

format = {}
for k,v in ipairs(clipboard.getformats() or {}) do
    formatname = clipboard.formatname(v)
    if formatname then
        format[formatname] = v
    end
end

data = clipboard.getdata(format["1C:MD8 Data"])


if data then
   
   
    pattern = '%x%x%x%x%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%-%x%x%x%x%x%x%x%x%x%x%x%x'
   
    data = data:gsub(pattern, "{}"):sub(4)
   
   
    t = loadstring("return"..data)()
   
    result = ""
    t1 = t[1]
   
    for i = 2, t1[1] + 1 do
        result = result .. t1[i][2][1][2][2][2][3] .. "\n"
    end
   
    print(result:format('%q'))
    clipboard.settextu(result:format('%q'))
   
end

Требует либу:
http://files.luaforge.net/releases/jaslatrix/clipboard/1.0.0

Мануал:  :)
1. В пофигураторе нажимаем ctrl+c на реквизитах объекта метаданных (в буфере слово "Реквизиты")
2. Вызываем скрипт
3. Теперь у нас в буфере список реквизитов  :)

зы Чтобы скрипт не показывал окно нужно поменять расширение на .wlua (при условии что установлен Lua for windows)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 24, 2012, 11:45:39 am
http://repl.it/Emx
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 24, 2012, 12:01:05 pm
http://repl.it/Emx
Тогда уж лучше так: http://repl.it/Emx#:languages
Название: Re: Lua
Отправлено: ilovb от Ноябрь 24, 2012, 03:47:56 pm
Кувасик так неожиданно в списке  ;D
Название: Re: Lua
Отправлено: ilovb от Ноябрь 25, 2012, 12:55:32 pm
Запилил себе тулзу, которая выдирает метаданные из буфера обмена 1С.
...

Опубликовал на инфостарте:
http://infostart.ru/public/163332/
Название: Re: Lua
Отправлено: ilovb от Ноябрь 30, 2012, 04:39:10 pm
Прикольно:  :D
http://repl.it/FFp

Чую эти особенности Lua нужно курить основательно, чтоб по граблям потом не гулять...
Название: Re: Lua
Отправлено: Geniepro от Ноябрь 30, 2012, 05:36:49 pm
Прикольно:  :D
http://repl.it/FFp

Чую эти особенности Lua нужно курить основательно, чтоб по граблям потом не гулять...
А что не так в этом коде:
i = 10
for i in ipairs({1,2,3,4}) do
    print(i)
end
print(i)
?
Тут просто в цикле создаётся новая переменная i, которая скрывает внешнюю для цикла переменную i...
Кстати, а в описании Lua этот момент указан хоть?
Название: Re: Lua
Отправлено: ilovb от Ноябрь 30, 2012, 05:44:20 pm
Да все так. В документации конечно описано.
Просто несколько непривычно это  :)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 30, 2012, 05:45:33 pm
Да все так. В документации конечно описано.
Просто несколько непривычно это  :)
Грабли они не в языках, а в головах.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 30, 2012, 05:49:55 pm
http://www.lua.ru/doc/2.4.5.html
Цитировать
Переменная v является локальной для цикла; вы не сможете использовать ее значение после выхода из цикла for. Если вам необходимо значение этой переменной, присвойте его другой переменной перед выходом из цикла.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 30, 2012, 05:53:57 pm
Да все так. В документации конечно описано.
Просто несколько непривычно это  :)
Грабли они не в языках, а в головах.
Не возражаю.  :)
Язык только наступить помогает...  ;D
Название: Re: Lua
Отправлено: ilovb от Ноябрь 30, 2012, 05:58:52 pm
На самом деле эта луашная особенность была бы очень кстати оберону...
Название: Re: Lua
Отправлено: DIzer от Ноябрь 30, 2012, 06:11:42 pm
На самом деле эта луашная особенность была бы очень кстати оберону...
это какая - вшитый по умолчанию побочный эффект.. с неожиданными исключениями из него в некоторых конструкциях ?-  спаси господи... ;D
Название: Re: Lua
Отправлено: ilovb от Ноябрь 30, 2012, 06:14:44 pm
Ну конкретно для FOR объявлять в секции VAR переменную цикла имхо лишнее.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 30, 2012, 06:29:53 pm
Ну конкретно для FOR объявлять в секции VAR переменную цикла имхо лишнее.
может и так.. но есть несомненный плюс в ОБЕРОНЕ , Паскале... НИЧЕГО НЕЛЬЗЯ СДЕЛАТЬ с переменной не объявив ее - имхо проще запомнить одно правило - хочешь использовать переменную - объяви ее... чем запоминать исключения и удивляться неожиданным эффектам следующим из них.
или второе... - хочешь создать локальное окружение.. -у тебя один способ -подпрограмма, вместо бездумного (удобного) создания переменных "где -надо" начинающими поклонниками крутизны.. интеллект которых недостаточно развит для учета эффекта затенения...
Название: Re: Lua
Отправлено: ilovb от Ноябрь 30, 2012, 06:46:56 pm
Это да. Согласен.

В Lua с ее областями видимости наколоться раз плюнуть.

Например забыл указать что переменная локальная в функции и все... приехали.
Мне вообще сначала умолчательная глобальность переменных казалась ересью.
Т.е. здравый смысл подсказывает, что неявно объявленная переменная должна быть локальной для функции. Но в Lua локальность нужно явно указывать...
Вроде логичнее было бы явно наоборот глобальность указывать, но потом я понял что в Lua сделали упор на удобство использования замыканий.
И оно вроде даже нормально если мыслить замыканиями. Но один хрен ощущается изъян в дизайне языка.

Название: Re: Lua
Отправлено: DIzer от Ноябрь 30, 2012, 06:52:16 pm
Это да. Согласен.

В Lua с ее областями видимости наколоться раз плюнуть.

Например забыл указать что переменная локальная в функции и все... приехали.
Мне вообще сначала умолчательная глобальность переменных казалась ересью.
Т.е. здравый смысл подсказывает, что неявно объявленная переменная должна быть локальной для функции. Но в Lua локальность нужно явно указывать...
Вроде логичнее было бы явно наоборот глобальность указывать, но потом я понял что в Lua сделали упор на удобство использования замыканий.
И оно вроде даже нормально если мыслить замыканиями. Но один хрен ощущается изъян в дизайне языка.
Борис, тут дело вот в чем многие  забывают, что Луа прежде всего проектировался как DSL - и надо очень осторожно относится к перспективам его использования за ее пределами -
а если он не подходит, то глупо винить в этом создателей (пример - Обезьянка)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 30, 2012, 06:56:34 pm
Lua просто меньшая из зол.  ;)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 30, 2012, 07:07:33 pm
Это да. Согласен.

В Lua с ее областями видимости наколоться раз плюнуть.

Например забыл указать что переменная локальная в функции и все... приехали.
Мне вообще сначала умолчательная глобальность переменных казалась ересью.
Т.е. здравый смысл подсказывает, что неявно объявленная переменная должна быть локальной для функции. Но в Lua локальность нужно явно указывать...
Вроде логичнее было бы явно наоборот глобальность указывать, но потом я понял что в Lua сделали упор на удобство использования замыканий.
И оно вроде даже нормально если мыслить замыканиями. Но один хрен ощущается изъян в дизайне языка.

Не в замыканиях дело. Это (по умолчанию все глобальное) растет из древних скриптовых языков, где никаких лямбд не было. Глобальные переменные банально проще реализовывать, равно как и динамическую типизацию вместо статической. Поэтом вначале подобные скриптовыродки имеют только глобальные переменные, затем туда вкорячивают локальные и естественно для них дополнительное ключевое слово, чтобы не сломать обратную совместимость.
Название: Re: Lua
Отправлено: ilovb от Ноябрь 30, 2012, 07:12:37 pm
У меня кстати давно в голове мысль крутится, что большинство неудобств оберона могла бы исключить хорошая IDE.

Например проблема с КАПСОМ элементарно решается специальным сочетанием клавиш.
Например после ключевых слов давить shift+space.
Думаю можно быстро привыкнуть. Я вот в 1С к ctrl+space (контекстная подсказка) быстро привык. Набираю код без напряга.

А в идеале IDE сама может делать капсом в зависимости от контекста.

Проблема с VAR тоже не проблема. Насколько я знаю в делфях есть сочетание клавиш для объявления переменной.

Ну и т.д.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 30, 2012, 07:16:36 pm
У меня кстати давно в голове мысль крутится, что большинство неудобств оберона могла бы исключить хорошая IDE.

Например проблема с КАПСОМ элементарно решается специальным сочетанием клавиш.
Например после ключевых слов давить shift+space.
Цитировать
Уже решена в Astrobe. Без специальных сочетаний.

Я бы не занимался обероном если бы не видел у него потенциал для IDE :-)
Название: Re: Lua
Отправлено: DIzer от Ноябрь 30, 2012, 07:21:03 pm

Я бы не занимался обероном если бы не видел у него потенциал для IDE :-)
  ;) разве.. помнится года три назад в коровнике вы мне говорили другое..
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 30, 2012, 07:27:39 pm

Я бы не занимался обероном если бы не видел у него потенциал для IDE :-)
  ;) разве.. помнится года три назад в коровнике вы мне говорили другое..
А что я говорил?
Название: Re: Lua
Отправлено: DIzer от Ноябрь 30, 2012, 07:36:37 pm

Я бы не занимался обероном если бы не видел у него потенциал для IDE :-)
  ;) разве.. помнится года три назад в коровнике вы мне говорили другое..
А что я говорил?
что не вижу особых перспектив  для него в плане IDE... впрочем,  все меняется...
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 30, 2012, 08:39:45 pm

Я бы не занимался обероном если бы не видел у него потенциал для IDE :-)
  ;) разве.. помнится года три назад в коровнике вы мне говорили другое..
А что я говорил?
что не вижу особых перспектив  для него в плане IDE... впрочем,  все меняется...
Наверно ты меня не правильно понял (либо сейчас, либо тогда, либо и тогда и сейчас).

Сейчас я имел ввиду, что Оберон из за своего сочетания простоты и статической типизации является хорошим объектом для того, чтобы обкатать на нем всякие интересные идеи в плане построения окружения для разработки. То есть может получиться классическая связка - слабый язык + сильные тулзы для разработки. Ровно на этом, кстати, выехала java.

Оберон достаточно приятный подопытный кролик. Вот С++ - не приятный. Как и какой-нибудь D, или Ада. Про всякие динамически типизированные языки я вообще молчу.

PS. Тулзы/IDE вовсе не обязательно писать на самом Обероне.
Название: Re: Lua
Отправлено: DIzer от Ноябрь 30, 2012, 08:49:40 pm
То есть может получиться классическая связка - слабый язык + сильные тулзы для разработки. Ровно на этом, кстати, выехала java.

....

Тулзы/IDE вовсе не обязательно писать на самом Обероне.
1. именно про это я и говорил... а Оберонцы в ответ свою шарманку - нафиг не нужно, если бы было нужно то уже сделали, многие делали но потом отказались в силу ненужности...
2. Это и ежу понятно
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 08:11:27 am
Например проблема с КАПСОМ элементарно решается специальным сочетанием клавиш.
А какая проблема с КАПСОМ в Обероне?  :o
Можно поподробнее, я просто не в курсе.
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 09:40:44 am
Например проблема с КАПСОМ элементарно решается специальным сочетанием клавиш.
А какая проблема с КАПСОМ в Обероне?  :o
Можно поподробнее, я просто не в курсе.
Вы прикалываетесь?
В ОБЕРОНЕ ж все КЛЮЧЕВЫЕ слова КАПСОМ нужно ПИСАТЬ
Название: Re: Lua
Отправлено: DIzer от Декабрь 01, 2012, 09:42:57 am
Например проблема с КАПСОМ элементарно решается специальным сочетанием клавиш.
А какая проблема с КАПСОМ в Обероне?  :o
Можно поподробнее, я просто не в курсе.
Вы прикалываетесь?
В ОБЕРОНЕ ж все КЛЮЧЕВЫЕ слова КАПСОМ нужно ПИСАТЬ
  ;D  это не проблема.... проблема растяжение мизинца - профессиональная травма , однако - в  перспективе, ведущая к инвалидности..
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 09:51:26 am
Во во  ;D
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 09:59:28 am
В ОБЕРОНЕ ж все КЛЮЧЕВЫЕ слова КАПСОМ нужно ПИСАТЬ
Не вижу проблемы.
Название: Re: Lua
Отправлено: DIzer от Декабрь 01, 2012, 10:02:45 am
Странно... если верить Илье с Инфо.. то Оберонщики люди смотрящие в "дальнюю перспективу" -- а возможно дело в том, что у них нет пальца..
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 10:03:59 am
В ОБЕРОНЕ ж все КЛЮЧЕВЫЕ слова КАПСОМ нужно ПИСАТЬ
Не вижу проблемы.
Я прям ждал эти слова  ;D

А как вы код набиваете?
Название: Re: Lua
Отправлено: Berserker от Декабрь 01, 2012, 10:09:44 am
С верхним регистром проблемы нет, если используются мало-мальски продуманные текстовые редакторы хотя бы. Я пишу код на Паскале через CTRL+ENTER в Notepadd++. Аналог - сниппеты. Набираешь if - получаешь:

IF ... THEN BEGIN
...[курсор]
END; // .IF

Собственно, блоков то не так уж и много. А отдельные слова можно и вручную набрать на уровне модуля.

P.S. VAR на уровне модуля - руками (ППЦ сложность-то). А у сниппета процедуры секция по умолчанию будет.
Название: Re: Lua
Отправлено: DIzer от Декабрь 01, 2012, 10:11:29 am
короче, Ilovb- ответ на ваш вопрос - традиционно (с помощью рук).
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 10:24:30 am
Berserker, ну понятно что проблема решается хорошим текстовым редактором. Я собсно об этом выше и говорил. Но это не значит что проблемы нет.
Сниппеты например не все любят... Как им быть?
Название: Re: Lua
Отправлено: Berserker от Декабрь 01, 2012, 10:30:00 am
Кто не любит - тот хорошо печатаем слепым методом и проблемы не видит. Всё же программист - не машинист. А машинисту "дофига и трошки" приходится жать на shift.
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 10:33:25 am
А как вы код набиваете?
Если слово целиком состоит из заглавных букв, то я включаю CapsLock. В остальных случаях набираю заглавные буквы, удерживая Shift.
А Вы как-то по-другому набиваете?  :)
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 10:39:41 am
А как вы код набиваете?
Если слово целиком состоит из заглавных букв, то я включаю CapsLock. В остальных случаях набираю заглавные буквы, удерживая Shift.
А Вы как-то по-другому набиваете?  :)
CapsLock при наборе кода? Вы профессионально кодите?
Название: Re: Lua
Отправлено: DIzer от Декабрь 01, 2012, 10:40:50 am
Berserker, ну понятно что проблема решается хорошим текстовым редактором. Я собсно об этом выше и говорил. Но это не значит что проблемы нет.
Сниппеты например не все любят... Как им быть?
Да и не хорошим в ряде случаев это возможно.. пример - родной редактор ББ + мод от Инфо21 (единственное что сделано нормально)  - одна проблема, то ли на контрл спейс не посадишь - благодаря "гениальности фреймворка ББ" - не признает  он это сочетание...
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 10:48:40 am
CapsLock при наборе кода? Вы профессионально кодите?
;D ;D ;D
Shift+Space при наборе кода? Вы профессионально кодите?
Название: Re: Lua
Отправлено: DIzer от Декабрь 01, 2012, 10:52:38 am
CapsLock при наборе кода? Вы профессионально кодите?
;D ;D ;D
Shift+Space при наборе кода? Вы профессионально кодите?
разумеется нет.. я  же не кодер.. или 1с ник.. какой ... я привык  ctrl space .. недоступный ацциким ББ
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 11:04:07 am
CapsLock при наборе кода? Вы профессионально кодите?
;D ;D ;D
Shift+Space при наборе кода? Вы профессионально кодите?
Shift+Space [SS] не на много сложнее чем один Space.

if[SS]a<2then[SS]a:=2[space]end[SS]

Сравните с CapsLock [CL]
[CL]if[CL][space]a<2[space][CL]then[CL][space]a:=2[space][CL]end[CL]

Да, я профессионально кодю. И отлично знаю что такое боль в кистях рук.
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 11:15:58 am
В 1С я практически все на шаблонах набираю:
http://hostingkartinok.com/show-image.php?id=203264ce84235515730c8318dad90d29
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 11:19:52 am
Да, тут ещё привычки, видимо, играют большую роль.
Правила набора заглавных букв, которыми я пользуюсь, хороши тем, что они универсальны. Не важно, это текст программы я набираю или сообщение на форуме строчу. Да, и нет привязки к конкретному редактору, в котором могут быть и не запрограммированы сочетание Shift+Space и тому подобное (F5, например, как оберонщеги любят  :)).
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 12:39:27 pm
В Astrobe с капсом разобрались просто - при наборе ключевого слова в любом регистре редактор автоматом заменяет набранное на капс. Ничего дополнительно жать не нужно. Это достаточно удобно (неудобств не испытывал). И всяко лучше чем постоянно мизинец насиловать шифтом, или капслок дергать.

Ну и вариант для тех, у кого нет нормального текстового редактора - жмем капс, и ВСЮ ПРОГРАММУ ПИШЕМ В КАПСОМ.

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

Выгод от капсовых ключевых слов не видно.
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 12:44:46 pm
Выгод от капсовых ключевых слов не видно.
Ее и не должно быть. Вирт просто зарезервировал капс, чтобы в будущем можно было добавлять ключевые слова в язык безболезненно.
Название: Re: Lua
Отправлено: DIzer от Декабрь 01, 2012, 12:48:53 pm
В Astrobe с капсом разобрались просто - при наборе ключевого слова в любом регистре редактор автоматом заменяет набранное на капс. Ничего дополнительно жать не нужно. Это достаточно удобно (неудобств не испытывал). И всяко лучше чем постоянно мизинец насиловать шифтом, или капслок дергать.


  ну не скажите... вот когда я смотрел на бобисткий  код.. часто видел такие вещи как End, Begin - их набрать при таком подходе весьма проблематично  :)
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 12:57:19 pm
Выгод от капсовых ключевых слов не видно.
Ее и не должно быть. Вирт просто зарезервировал капс, чтобы в будущем можно было добавлять ключевые слова в язык безболезненно.
В каком месте это добавляет безболезненности? Очень часто скажем идентификаторы констант полностью из капса.

В том то и дело, что Вирт капс НЕ зарезервировал.
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 12:57:42 pm
В Astrobe с капсом разобрались просто - при наборе ключевого слова в любом регистре редактор автоматом заменяет набранное на капс. Ничего дополнительно жать не нужно. Это достаточно удобно (неудобств не испытывал). И всяко лучше чем постоянно мизинец насиловать шифтом, или капслок дергать.


  ну не скажите... вот когда я смотрел на бобисткий  код.. часто видел такие вещи как End, Begin - их набрать при таком подходе весьма проблематично  :)

Какой-какой код ты смотрел?
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 01:11:19 pm
Выгод от капсовых ключевых слов не видно.
Помнится, на Оберонкоре (вроде) выгода от капсовых слов объяснялась тем, что, мол, не нужно их выделять цветом или болдом. Дескать, они и так зрительно выделяются.
Других каких-то выгод и впрямь, видимо, нет.
Название: Re: Lua
Отправлено: Berserker от Декабрь 01, 2012, 01:25:45 pm
1. Они действительно автоматически выделяются без подсветки или внешнего форматирования.
2. Они лучше читаются и различаются людьми с ослабленным зрением.

Собственно, второе довольно важно. Я сейчас как раз целенаправленно восстанавливаю зрение по Бейтсу, сбросил уже 2.5 диоптрии с августа, так вот проходя путь от -9 до единицы на всех его стадиях, очень ценишь капсовые блоки и ключевые слова. Подсветку это, впрочем, не отменяет.
Название: Re: Lua
Отправлено: DIzer от Декабрь 01, 2012, 01:26:16 pm
В Astrobe с капсом разобрались просто - при наборе ключевого слова в любом регистре редактор автоматом заменяет набранное на капс. Ничего дополнительно жать не нужно. Это достаточно удобно (неудобств не испытывал). И всяко лучше чем постоянно мизинец насиловать шифтом, или капслок дергать.


  ну не скажите... вот когда я смотрел на бобисткий  код.. часто видел такие вещи как End, Begin - их набрать при таком подходе весьма проблематично  :)

Какой-какой код ты смотрел?
бобисткий.. боюсь "оклеветать" лишний раз , но вроде у Инфо21 было
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 01:28:28 pm
Выгод от капсовых ключевых слов не видно.
Помнится, на Оберонкоре (вроде) выгода от капсовых слов объяснялась тем, что, мол, не нужно их выделять цветом или болдом. Дескать, они и так зрительно выделяются.
Других каких-то выгод и впрямь, видимо, нет.

Угу. Капс в языке больше проблем порождает, чем решает. Это ж экономия на спичках. Кроме того, например я отлично обхожусь в языках без капса и без подсветки синтаксиса/болда. Мне не нужно выделение ключевых слов цветом стилем или капсом по крайней мере в Аде, C,C++, Go, ObjC, D, Java, js. И некоторых других.
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 01:41:54 pm
Как бы то ни было довод, что капсовые ключевые слова в языке создают проблему, потому что их неудобно набирать я нахожу смехотворным.
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 01:53:08 pm
Как бы то ни было довод, что капсовые ключевые слова в языке создают проблему, потому что их неудобно набирать я нахожу смехотворным.
Если нет кошерного текстового редактора, оборудованного костылями для того, чтобы удобней набирать конструкции Оберона, то да, не удобно. И это проблема. Это повышает психологический порог для начала написания кода. Как вспомнишь что руки ломать придется, сразу хочется еще потеоретизировать а не код не писать. Поэтому стиль кодирования принятый в том же ББ столь убог (все в кучу) - потому что хочется как можно быстрее прекратить набирать программу, ибо это банально не приятно, написания кода с капсом вызывает физические страдания :-)

Поэтому современных компиляторов Оберона писаных на Обероне и нет :-)
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 02:05:02 pm
... хочется как можно быстрее прекратить набирать программу, ибо это банально не приятно, написания кода с капсом вызывает физические страдания :-)
Ну, не буду разубеждать... Скажу только, что для программиста написать строчку-другую (с капсом или без) должно быть также просто, как затылок почесать  :-)
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 02:11:29 pm
Как бы то ни было довод, что капсовые ключевые слова в языке создают проблему, потому что их неудобно набирать я нахожу смехотворным.
Т.е. если абсолютизировать, то вам и носом по клаве шлепать нормально было бы.  ;D
Набили носом строчку и хохочете. Еще строчка и уже слезы текут от радости. И чего там народ негодуэ?!?! ;D ;D ;D

Ну или попроще пример. Были бы ключевые слова такие:
PrOcEdUrE
ну а че норм... Вирт не просто так придумал. И выделяется хорошо - подсветка не нужна.
Программисту ж делать нехер. Вместо того чтоб больше головой думать он с клавой воюет  ;D
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 02:13:22 pm
... хочется как можно быстрее прекратить набирать программу, ибо это банально не приятно, написания кода с капсом вызывает физические страдания :-)
Ну, не буду разубеждать... Скажу только, что для программиста написать строчку-другую (с капсом или без) должно быть также просто, как затылок почесать  :-)
Ну если строчку-другую то конешна херня.
А если тышу-другую?
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 02:17:41 pm
... хочется как можно быстрее прекратить набирать программу, ибо это банально не приятно, написания кода с капсом вызывает физические страдания :-)
Ну, не буду разубеждать... Скажу только, что для программиста написать строчку-другую (с капсом или без) должно быть также просто, как затылок почесать  :-)
Ну, строчку-другую, то проблем нет. А вот 700 строк за день? Причем это полезный выхлоп, а в реальности приходится написать раза в два больше.

С одной стороны, на Обероне писать много кода не приятно из за капса. С другой стороны, Оберон не является достаточно высокоуровневым языком, где можно было бы писать компактно (скажем попробуйте ка в Обероне инициализировать массив константами - придется нарисовать 100500 присваиваний вместо одного присваивания как в других яызках). В результате сидит программист и думает, как бы ему так изловчиться, чтобы эту саму задачку уложить пусть не в пару, но хоть в пару десятков строк кода, вместо нескольких сотен. И придумать не может - Оберон не предоставляет таких возможностей. И код не пишет - думает как избежать физического наказания :-)

Кроме того, бывают просто задачи, где думать не надо, а надо написать МНОГО тупого кода (особенно если у нас язык аля Оберон). Просто писать. 700 строк в день. Я на java такое писал пару раз.
Название: Re: Lua
Отправлено: adva от Декабрь 01, 2012, 02:20:12 pm
А если тышу-другую?
Поменьше на форумах пальцы утомлять надо :)

А вроде ж даже в ББ есть особенность, что можно ключевые слова писать маленькими (либо все маленькие, либо все большие). Привожу на память, может и ошибся
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 02:23:28 pm
А если тышу-другую?
Поменьше на форумах пальцы утомлять надо :)

А вроде ж даже в ББ есть особенность, что можно ключевые слова писать маленькими (либо все маленькие, либо все большие). Привожу на память, может и ошибся
По моему, это в Сириусе.
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 02:29:32 pm
Т.е. если абсолютизировать, то вам и носом по клаве шлепать нормально было бы.  ;D
Набили носом строчку и хохочете. Еще строчка и уже слезы текут от радости. И чего там народ негодуэ?!?! ;D ;D ;D
Это Вы о чём сейчас?
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 02:41:29 pm
А если тышу-другую?
Поменьше на форумах пальцы утомлять надо :)

А вроде ж даже в ББ есть особенность, что можно ключевые слова писать маленькими (либо все маленькие, либо все большие). Привожу на память, может и ошибся
На форумах я пишу очень очень мало по сравнению с работой.  ;)
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 02:46:50 pm
Т.е. если абсолютизировать, то вам и носом по клаве шлепать нормально было бы.  ;D
Набили носом строчку и хохочете. Еще строчка и уже слезы текут от радости. И чего там народ негодуэ?!?! ;D ;D ;D
Это Вы о чём сейчас?
Про то что вам кажутся "смехотворными" проблемы профессиональных кодеров.

"А у хирургов спина болит - вот хохма. Я вот легушек сидя за столом режу и нормально."
Примерно так ваш посыл прозвучал.

ps Ну я фантазер конечно... да. Без обид.
Название: Re: Lua
Отправлено: adva от Декабрь 01, 2012, 02:47:17 pm
На форумах я пишу очень очень мало по сравнению с работой.  ;)

Тогда уже наверняка заработал столько, что можешь заказать удобную IDE для оберона (или даже свою наваять, при такой то работоспособности) ;) . И с нами бы ей поделился
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 02:50:27 pm
На форумах я пишу очень очень мало по сравнению с работой.  ;)

Тогда уже наверняка заработал столько, что можешь заказать удобную IDE для оберона (или даже свою наваять, при такой то работоспособности) ;) . И с нами бы ей поделился
Эх... если бы платили за количество строк... я б уже купил дом в пендостане и свалил бы из рашки  :D
Название: Re: Lua
Отправлено: igor от Декабрь 01, 2012, 03:02:32 pm
ps Ну я фантазер конечно... да. Без обид.
Ладно, проехали.
А по поводу больных запястьев, - с этим лучше не шутить. Может, почаще перерывы делать. Надо же когда-то и логику программы продумывать  ;). Да, и ещё может эргономическая клавиатура поможет.
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 03:06:48 pm
Я тут читал на хабре про эргономичные клавы. Круто конечно, но на таких нужно некоторое время ломать свои привычки. Да плюс к тому код бывает приходится писать в самых разных ситуациях и местах. Таскать с собой любимую клаву? Короче я пока себя не убедил на покупку оной.  :)
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 03:12:07 pm
ps Ну я фантазер конечно... да. Без обид.
Ладно, проехали.
А по поводу больных запястьев, - с этим лучше не шутить. Может, почаще перерывы делать. Надо же когда-то и логику программы продумывать  ;). Да, и ещё может эргономическая клавиатура поможет.
В 1С логика? Да её там не сильно больше чем в нашем законодательстве!
Название: Re: Lua
Отправлено: DIzer от Декабрь 01, 2012, 03:14:08 pm
ps Ну я фантазер конечно... да. Без обид.
Ладно, проехали.
А по поводу больных запястьев, - с этим лучше не шутить. Может, почаще перерывы делать. Надо же когда-то и логику программы продумывать  ;). Да, и ещё может эргономическая клавиатура поможет.
В 1С логика? Да её там не сильно больше чем в нашем законодательстве!
а откуда такая информация.. вы что, имели с ней дело, и .или , являетесь юристом (на худой конец депутатом)?
Название: Re: Lua
Отправлено: ilovb от Декабрь 01, 2012, 03:18:37 pm
ps Ну я фантазер конечно... да. Без обид.
Ладно, проехали.
А по поводу больных запястьев, - с этим лучше не шутить. Может, почаще перерывы делать. Надо же когда-то и логику программы продумывать  ;). Да, и ещё может эргономическая клавиатура поможет.
В 1С логика? Да её там не сильно больше чем в нашем законодательстве!
Я б не сказал что в 1С нужно меньше думать, чем в других языках.
Название: Re: Lua
Отправлено: adva от Декабрь 01, 2012, 03:19:59 pm
а откуда такая информация.. вы что, имели с ней дело, и .или , являетесь юристом (на худой конец депутатом)?
Если взять бух. и нал. законодательство, то до сих пор, несмотря на уже достаточно длительное изменение законов, все равно остается много мест для двоечтений (сам сталкивался неоднократно, когда изучал). Хотя сейчас конечно ситуация получше, чем было раньше. Думаю то же самое касается и других видов законодательства. Такое ощущение, что такие законы принимались специально, чтобы угодных судить так, не угодных иначе.
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 03:26:21 pm
а откуда такая информация.. вы что, имели с ней дело, и .или , являетесь юристом (на худой конец депутатом)?
Я одно время имел дело с нашим законодательством. Пришлось разбираться что там и к чему. Многие места там противоречат друг другу. Некоторые не однозначны. Причем закон это одно, а как на практике выносятся решения в суде - это совсем другое. У нас (официально) не прецедентное право, но есть такая штука как "судебная практика". Грубо говоря, как суд привык выносить решения, так он и выносит, даже если это расходится с законодательством в некоторых местах.
Название: Re: Lua
Отправлено: DIzer от Декабрь 01, 2012, 03:31:58 pm
Алексей, adva - хотел ответить.. но это сделал в том же духе Борис - на соседней ветке...
Название: Re: Lua
Отправлено: Илья Ермаков от Декабрь 01, 2012, 11:16:55 pm
Ну, строчку-другую, то проблем нет. А вот 700 строк за день? Причем это полезный выхлоп, а в реальности приходится написать раза в два больше.

А что, это много? 1500-2000 строк - обычно для одного дня... (Разумеется, месячная производительность не вычисляется как 2000*20, но когда с нуля хреначится какой-то компонент - то 2000 в день - норм.)

При таком объёме никогда не замечал проблем от клавиатуры. Слепым методом не владеете?
Название: Re: Lua
Отправлено: valexey_u от Декабрь 01, 2012, 11:26:25 pm
Ну, строчку-другую, то проблем нет. А вот 700 строк за день? Причем это полезный выхлоп, а в реальности приходится написать раза в два больше.

А что, это много? 1500-2000 строк - обычно для одного дня... (Разумеется, месячная производительность не вычисляется как 2000*20, но когда с нуля хреначится какой-то компонент - то 2000 в день - норм.)

При таком объёме никогда не замечал проблем от клавиатуры. Слепым методом не владеете?
На клавиатуру не смотрю :-)
У меня действительно банально мизинец начинает болеть если часто до шифта приходится тянуться (капсом писать ключевые слова). Кстати, по подобной же причине я забросил emacs - при обильном кодинге начинает болеть левая рука.
Название: Re: Lua
Отправлено: vlad от Декабрь 02, 2012, 03:30:04 am
Я сейчас как раз целенаправленно восстанавливаю зрение по Бейтсу, сбросил уже 2.5 диоптрии с августа, так вот проходя путь от -9 до единицы на всех его стадиях, очень ценишь капсовые блоки и ключевые слова.

Не по теме конечно, но не мог бы ты подробнее описать свой положительный опыт восстановления зрения? Мне актуально :)
Название: Re: Lua
Отправлено: adva от Декабрь 02, 2012, 05:27:12 am
Я сейчас как раз целенаправленно восстанавливаю зрение по Бейтсу, сбросил уже 2.5 диоптрии с августа, так вот проходя путь от -9 до единицы на всех его стадиях, очень ценишь капсовые блоки и ключевые слова.

Не по теме конечно, но не мог бы ты подробнее описать свой положительный опыт восстановления зрения? Мне актуально :)
Ага, я бы тоже послушал
Название: Re: Lua
Отправлено: igor от Декабрь 02, 2012, 07:58:12 am
У меня действительно банально мизинец начинает болеть если часто до шифта приходится тянуться (капсом писать ключевые слова).
Есть у меня одна догадка. Если в детстве тренькал на каких-нибудь музыкальных инструментах, где нужно пальцами играть, то теперь и клава даётся легко. Может быть в моём случае всё дело в этом, и капсовые слова меня не напрягают. В любом случае, боль в руках возникает из-за излишнего напряжения во время игры... простите, набора. Усилия должно быть приложено ровно столько, сколько необходимо для того чтобы ударить пальцем по клавише. А уж запястья стопудово должны быть расслаблены.
Название: Re: Lua
Отправлено: ilovb от Декабрь 02, 2012, 08:49:13 am
Ну, строчку-другую, то проблем нет. А вот 700 строк за день? Причем это полезный выхлоп, а в реальности приходится написать раза в два больше.

А что, это много? 1500-2000 строк - обычно для одного дня... (Разумеется, месячная производительность не вычисляется как 2000*20, но когда с нуля хреначится какой-то компонент - то 2000 в день - норм.)

При таком объёме никогда не замечал проблем от клавиатуры. Слепым методом не владеете?
Илья, а как вы КАПСОМ набираете?
У меня на четвертой капсовой тысяче уже руки бы наверно отвалились.  :)

ps А при чем тут слепой метод? Чет я связь не уловил...
Название: Re: Lua
Отправлено: DIzer от Декабрь 02, 2012, 10:54:25 am
У меня действительно банально мизинец начинает болеть если часто до шифта приходится тянуться (капсом писать ключевые слова).
Есть у меня одна догадка. Если в детстве тренькал на каких-нибудь музыкальных инструментах, где нужно пальцами играть, то теперь и клава даётся легко. Может быть в моём случае всё дело в этом, и капсовые слова меня не напрягают. В любом случае, боль в руках возникает из-за излишнего напряжения во время игры... простите, набора. Усилия должно быть приложено ровно столько, сколько необходимо для того чтобы ударить пальцем по клавише. А уж запястья стопудово должны быть расслаблены.
Я тренькал... и знаю , что  у профи.. есть такая профессиональная болезнь - пальцы от частого треньканья теряют чувствительность, суставы подвижность  - для музыканта это инвалидность...
Название: Re: Lua
Отправлено: ilovb от Декабрь 02, 2012, 11:01:26 am
Я тут читал на хабре про эргономичные клавы. Круто конечно, но на таких нужно некоторое время ломать свои привычки. Да плюс к тому код бывает приходится писать в самых разных ситуациях и местах. Таскать с собой любимую клаву? Короче я пока себя не убедил на покупку оной.  :)

Нашел эту статью:
http://habrahabr.ru/post/145084/
и вот еще:
http://habrahabr.ru/post/146353/
Название: Re: Lua
Отправлено: Илья Ермаков от Декабрь 02, 2012, 09:38:31 pm
Илья, а как вы КАПСОМ набираете?
У меня на четвертой капсовой тысяче уже руки бы наверно отвалились.  :)

ps А при чем тут слепой метод? Чет я связь не уловил...
Во-первых, почему-то Shift меня не напрягает.
Во-вторых, F5-то есть, так что конструкции вообще не печатаю явно.
Название: Re: Lua
Отправлено: ilovb от Декабрь 03, 2012, 07:18:33 am
Илья, а как вы КАПСОМ набираете?
У меня на четвертой капсовой тысяче уже руки бы наверно отвалились.  :)
Во-первых, почему-то Shift меня не напрягает.
Во-вторых, F5-то есть, так что конструкции вообще не печатаю явно.
У меня сильно падает скорость набора, если держать Shift. Да и мизинец все время в напряжении...
А F5 вообще не вариант, ибо далеко. По табу разворачивать шаблоны еще терпимо. Но лучше когда это автоматом по пробелу происходит.
Название: Re: Lua
Отправлено: DIzer от Декабрь 03, 2012, 07:24:58 am
Илья, а как вы КАПСОМ набираете?
У меня на четвертой капсовой тысяче уже руки бы наверно отвалились.  :)
Во-первых, почему-то Shift меня не напрягает.
Во-вторых, F5-то есть, так что конструкции вообще не печатаю явно.
У меня сильно падает скорость набора, если держать Shift. Да и мизинец все время в напряжении...
А F5 вообще не вариант, ибо далеко. По табу разворачивать шаблоны еще терпимо. Но лучше когда это автоматом по пробелу происходит.
в ББ на Shift +space  - засадить эту примочку нельзя  (Сtrl +space -вроде можно (или наоборот)) - а по пробелу.. как это - через выпадающее  окошко ?
Название: Re: Lua
Отправлено: ilovb от Декабрь 03, 2012, 07:39:22 am
1. В ББ да косяк с сочетаниями.
2. Никаких окошек. Просто набираем:
IF[space]
и это автоматом разворачивается в:
IF <exp> THEN <stat> END
Название: Re: Lua
Отправлено: ilovb от Декабрь 06, 2012, 07:24:42 pm
What's a good IDE to use for Lua?
http://stackoverflow.com/questions/143939/whats-a-good-ide-to-use-for-lua
Название: Re: Lua
Отправлено: igor от Декабрь 07, 2012, 02:13:30 pm
У меня сильно падает скорость набора, если держать Shift.
Зачем держать?
<CapsLock> if <CapsLock> ... и дело в шляпе.  :)
Название: Re: Lua
Отправлено: Geniepro от Декабрь 07, 2012, 04:26:14 pm
Да просто -- создали новый документ, нажали капс-лок -- и вперёд!!! Добро пожаловать в шестидисятые!!! ))
Название: Re: Lua
Отправлено: vlad от Декабрь 07, 2012, 04:58:34 pm
Да просто -- создали новый документ, нажали капс-лок -- и вперёд!!! Добро пожаловать в шестидисятые!!! ))

Тут как раз классный скриншот пробегал:
(http://www.rsdn.ru/article/pl1/15-21-pl1-Pics/pict1.png)
Я прям понастальгировал :)
Название: Re: Lua
Отправлено: ilovb от Декабрь 09, 2012, 05:16:05 pm
Запилил тулзу для сравнения отчетов по конфигурациям 1С:
local BOM = string.char( 0xef, 0xbb, 0xbf )

local function print_tree(tree, indent)
    indent = indent or 0
    for _, branch in ipairs(tree.children) do
        io.write(string.rep('\t', indent) .. branch.value, '\n')
        if branch.children then
            print_tree(branch, indent + 1)
        end
    end
end

local function comp(a, b)
    return a.value < b.value
end

local function read(file)
    local line = file:read()
    if not line then
        error('empty file')
        return nil
    end
    local _, indent = line:find('^\t+')
    indent = indent or 0
    local last = indent
    local first = indent
    local tree = {children = {}}
    local branch
    local symbol = ''
    while line do
        _, indent = line:find('^\t+')
        indent = indent or 0
        if indent < first then
            error('wrong indentation')
            return nil
        end
        if indent > last then
            tree = branch
            tree.children = {}
            last = last + 1
        else
            while indent < last do
                table.sort(tree.children, comp)
                tree = tree.parent
                last = last - 1
            end
        end
        symbol = line:sub(indent + 1, indent + 1)
        if (symbol == ' ' or symbol == '"') then
            branch = {parent = tree, value = line:sub(indent + 2, -2)}
        else
            branch = {parent = tree, value = line:sub(indent + 1)}
        end
        table.insert(tree.children, branch)
        line = file:read()
    end
    while tree.parent do
        table.sort(tree.children, comp)
        tree = tree.parent
    end
    table.sort(tree.children, comp)
    return tree
end

local function diff(t1, t2, indent, index, res)

    local c1, c2 = t1.children, t2.children
    local i, j = 1, 1
    local n1, n2 = c1 and c1[i], c2 and c2[j] -- nodes
    local temp = 0

    while n1 or n2 do
        index = index + 1
        if not n1 or (n2 and (n1.value > n2.value)) then
            j = j + 1
            res[index] = '-->' .. string.rep('\t', indent) .. n2.value
        elseif not n2 or (n1 and (n1.value < n2.value)) then
            i = i + 1
            res[index] = '<--' .. string.rep('\t', indent) .. n1.value
        else
            i = i + 1
            j = j + 1
            temp = diff(n1, n2, indent + 1, index, res)
            if temp > index then
                res[index] = '   ' .. string.rep('\t', indent) .. n1.value
                index = temp
            else
                res[index] = nil
                index = index - 1
            end
        end
        n1, n2 = c1 and c1[i], c2 and c2[j]
    end

    return index

end

local function print_diff(t1, t2)
    local res = {}
    if diff(t1, t2, 1, 0, res) > 0 then
        for _, v in pairs(res) do
            print(v)
        end
    end
end

local file1 = arg[1] and io.open(arg[1])
local file2 = arg[2] and io.open(arg[2])
if file1 then
    if file2 then
        if file1:read(3) == BOM then
            assert(file2:read(3) == BOM, arg[2] .. ' not UTF-8 with BOM')
            os.execute("chcp 65001 > nul")
            io.write(BOM)
        else
            file1:seek('set')
            assert(not (file2:read(3) == BOM), arg[2] .. ' not ANSI')
            file2:seek('set')
            os.execute("chcp 1251 > nul")
        end
        local tree1 = read(file1)
        local tree2 = read(file2)
        if tree1 and tree2 then
            print_diff(tree1, tree2)
        else
            print('epic fail...')
        end
    else
        if file1:read(3) == BOM then
            os.execute("chcp 65001 > nul")
            io.write(BOM)
        else
            os.execute("chcp 1251 > nul")
            file1:seek('set')
        end
        local tree = read(file1)
        if tree then
            print_tree(tree)
        end
    end
else
    print [[

    Usage: diff_conf.lua first_file [second_file] [> result_file]

    Examples:
        c:\>diff_conf.lua conf.txt
        c:\>diff_conf.lua conf.txt > conf_sorted.txt
        c:\>diff_conf.lua conf1.txt conf2.txt
        c:\>diff_conf.lua conf1.txt conf2.txt > conf1_vs_conf2.txt
    ]]
end

Опубликовал на infostart:
http://infostart.ru/public/165529/
Название: Re: Lua
Отправлено: Geniepro от Декабрь 10, 2012, 10:00:03 am
Ну, строчку-другую, то проблем нет. А вот 700 строк за день? Причем это полезный выхлоп, а в реальности приходится написать раза в два больше.

А что, это много? 1500-2000 строк - обычно для одного дня... (Разумеется, месячная производительность не вычисляется как 2000*20, но когда с нуля хреначится какой-то компонент - то 2000 в день - норм.)

http://discuss.joelonsoftware.com/default.asp?joel.3.286106.22#discussTopic286976
Цитировать
Wow Sgt Sausage averages 250,000 handwritten lines of code a year. That's quite impressive. Most of the best programmers I know do only 35,000 or so. The industry average has been measured at 3250 lines of code per year.
 Art Wilkins
 9 января 2006 г.
То есть Илья прямо таки бьёт мировые рекорды по написанию кода! о_О )) У среднего прогаммиста всего-то 13 строк кода в день выходит (3250/(50*5)), а Илья же в год не меньше 400 тыс. строк пишет!!! Это даже больше, чем у какого-то там Сержанта Сосиски!!! )))
Название: Re: Lua
Отправлено: DIzer от Декабрь 10, 2012, 10:07:47 am

То есть Илья прямо таки бьёт мировые рекорды по написанию кода! о_О )) У среднего прогаммиста всего-то 13 строк кода в день выходит (3250/(50*5)), а Илья же в год не меньше 400 тыс. строк пишет!!! Это даже больше, чем у какого-то там Сержанта Сосиски!!! )))
  :D так и живет он не в Чирчике.. а  рядом с цивилизацией (как и Борис)- там темп жизни другой...
Название: Re: Lua
Отправлено: Geniepro от Декабрь 10, 2012, 10:23:24 am

То есть Илья прямо таки бьёт мировые рекорды по написанию кода! о_О )) У среднего прогаммиста всего-то 13 строк кода в день выходит (3250/(50*5)), а Илья же в год не меньше 400 тыс. строк пишет!!! Это даже больше, чем у какого-то там Сержанта Сосиски!!! )))
  :D так и живет он не в Чирчике.. а  рядом с цивилизацией (как и Борис)- там темп жизни другой...
Ну я хоть и живу в Чирчике, но работаю в Ташкенте, тут темпы не меньше, чем у Ильи в городе, я думаю ))) Народу уж точно юольше ))
Название: Re: Lua
Отправлено: Peter Almazov от Декабрь 10, 2012, 10:32:48 am
То есть Илья прямо таки бьёт мировые рекорды по написанию кода! о_О )) У среднего прогаммиста всего-то 13 строк кода в день выходит (3250/(50*5)), а Илья же в год не меньше 400 тыс. строк пишет!!! Это даже больше, чем у какого-то там Сержанта Сосиски!!! )))
Без generic контейнеров, без LINQ приходится туго.
Каждый раз связный список руками херачить...
Да еще 0 в конце строки искать.
Название: Re: Lua
Отправлено: DIzer от Декабрь 10, 2012, 10:34:28 am
думаю что  меньше.. я вот живу в Челябинске (тоже народу хватает в сравнении с Орлом) - но разница чувствуется..Впрочем, постойте.. неужели вы намекаете на то что Илья лжет? -- вы ставите под сомнение слова управленца с 10 летним стажем, а программиста - даже страшно подумать с каким (чуть ли не с рождения) -с чего такое недоверие..? сказал полторы тысячи (не ежедневно) - значит так оно и есть.  ;)
Название: Re: Lua
Отправлено: DIzer от Декабрь 10, 2012, 10:36:14 am
То есть Илья прямо таки бьёт мировые рекорды по написанию кода! о_О )) У среднего прогаммиста всего-то 13 строк кода в день выходит (3250/(50*5)), а Илья же в год не меньше 400 тыс. строк пишет!!! Это даже больше, чем у какого-то там Сержанта Сосиски!!! )))
Без generic контейнеров, без LINQ приходится туго.
Каждый раз связный список руками херачить...
Да еще 0 в конце строки искать.
я полагаю, что все дело в ЦД и светлом пути, осененным Виртом и Сиськиным (других соображений нет).
Название: Re: Lua
Отправлено: DIzer от Декабрь 10, 2012, 10:43:02 am
приблизительно вот так.. http://www.youtube.com/watch?v=pk3Qf7l2GSk (http://www.youtube.com/watch?v=pk3Qf7l2GSk)
Название: Re: Lua
Отправлено: Geniepro от Декабрь 10, 2012, 10:53:56 am
Впрочем, постойте.. неужели вы намекаете на то что Илья лжет? -- вы ставите под сомнение слова управленца с 10 летним стажем, а программиста - даже страшно подумать с каким (чуть ли не с рождения) -с чего такое недоверие..? сказал полторы тысячи (не ежедневно) - значит так оно и есть.  ;)
Ну не прямо-таки лжёт, но, возможно, несколько преувеличивает?
"Однажды я поймал ВООООТ такую рыбу!!!" )))
Название: Re: Lua
Отправлено: valexey_u от Декабрь 10, 2012, 11:50:20 am
Ну, строчку-другую, то проблем нет. А вот 700 строк за день? Причем это полезный выхлоп, а в реальности приходится написать раза в два больше.

А что, это много? 1500-2000 строк - обычно для одного дня... (Разумеется, месячная производительность не вычисляется как 2000*20, но когда с нуля хреначится какой-то компонент - то 2000 в день - норм.)
Я просто взял то, что осталось в памяти и поделил на три, ибо память лжет и склонна преувеличивать собственные заслуги. :-)
Название: Re: Lua
Отправлено: DIzer от Декабрь 10, 2012, 12:39:04 pm

Я просто взял то, что осталось в памяти и поделил на три, ибо память лжет и склонна преувеличивать собственные заслуги. :-)
Однако, батенька - вы не лишены амбиций... а  я просто делю на 10 (отчасти просто потому что это проще чем на 3)  ;)
Название: Re: Lua
Отправлено: ilovb от Декабрь 10, 2012, 01:31:36 pm
1500-2000 каждый день конечно никто не пишет. Так и линух за неделю можно переписать.

Но для одного дня объем вполне нормальный, если это не сложный код. (и не Оберон  ;D )
2000 за день не писал, но 1000-1500 бывало.

И кстати что значит "за день"? У меня например фактический рабочий день обычно больше юридического...  :)
Название: Re: Lua
Отправлено: ilovb от Декабрь 10, 2012, 01:37:34 pm
Я кстати однажды пытался прикинуть свою производительность в минутах на строчку.
Измерял на нескольких разработках средней сложности. Вышло около 5 минут на строчку. (включая общение с постановщиком, кодинг и дебаг)

Сложные вещи пишу сильно дольше  :D
Название: Re: Lua
Отправлено: valexey_u от Декабрь 10, 2012, 01:54:02 pm
Я кстати однажды пытался прикинуть свою производительность в минутах на строчку.
Измерял на нескольких разработках средней сложности. Вышло около 5 минут на строчку. (включая общение с постановщиком, кодинг и дебаг)

Сложные вещи пишу сильно дольше  :D

У меня бывает 50 строк в месяц :-)
Название: Re: Lua
Отправлено: ilovb от Декабрь 10, 2012, 01:57:31 pm
"Однажды я поймал ВООООТ такую рыбу!!!" )))

https://www.youtube.com/watch?v=TY1ymotP0P0
 ;D
Название: Re: Lua
Отправлено: DIzer от Декабрь 10, 2012, 02:31:53 pm
Я кстати однажды пытался прикинуть свою производительность в минутах на строчку.
Измерял на нескольких разработках средней сложности. Вышло около 5 минут на строчку. (включая общение с постановщиком, кодинг и дебаг)

Сложные вещи пишу сильно дольше  :D

У меня бывает 50 строк в месяц :-)
а я стараюсь делать так, что бы за меня писали другие... Конечно полностью этой напасти не избежать - в частности, приходится писать честно решения задач у доски - ибо студенты бдительны.. к халтуре (типа презентаций), вполне резонно говоря что такую говень(как код решения типовых задач) можно и отгуглить.
Название: Re: Lua
Отправлено: valexey_u от Декабрь 10, 2012, 02:40:19 pm
Я кстати однажды пытался прикинуть свою производительность в минутах на строчку.
Измерял на нескольких разработках средней сложности. Вышло около 5 минут на строчку. (включая общение с постановщиком, кодинг и дебаг)

Сложные вещи пишу сильно дольше  :D

У меня бывает 50 строк в месяц :-)
а я стараюсь делать так, что бы за меня писали другие... Конечно полностью этой напасти не избежать - в частности, приходится писать честно решения задач у доски - ибо студенты бдительны.. к халтуре (типа презентаций), вполне резонно говоря что такую говень(как код решения типовых задач) можно и отгуглить.
Подтверждаю - студенты на лекциях где вместо доски презенташки спят намного слаще.
Причем, по отзывам, это не специально, народ честно пытается не спать, но если презенташка, то вырубает мгновенно вне зависимости от того насколько живо рассказывает докладчик. Это уже что-то на бессознательном уровне и сознанием не контроллируется.
Название: Re: Lua
Отправлено: Илья Ермаков от Декабрь 10, 2012, 09:57:14 pm
Цитировать
А что, это много? 1500-2000 строк - обычно для одного дня... (Разумеется, месячная производительность не вычисляется как 2000*20, но когда с нуля хреначится какой-то компонент - то 2000 в день - норм.)

То есть Илья прямо таки бьёт мировые рекорды по написанию кода! о_О )) У среднего прогаммиста всего-то 13 строк кода в день выходит (3250/(50*5)), а Илья же в год не меньше 400 тыс. строк пишет!!! Это даже больше, чем у какого-то там Сержанта Сосиски!!! )))

А прочитать замечание в скобках, про то, как НЕ надо вычислять месячную производительность по пиковой дневной, в Чирчике не сподобились.
Название: Re: Lua
Отправлено: Geniepro от Декабрь 11, 2012, 07:09:41 am
А прочитать замечание в скобках, про то, как НЕ надо вычислять месячную производительность по пиковой дневной, в Чирчике не сподобились.
Пиковая производительность -- это фигня, роли не играет никакой.
Ну напишет кто-то за пару дней 3-4к строк, две трети из них придётся выкинуть в течении пары следующих недель...
Название: Re: Lua
Отправлено: DIzer от Декабрь 11, 2012, 10:31:34 am
А прочитать замечание в скобках, про то, как НЕ надо вычислять месячную производительность по пиковой дневной, в Чирчике не сподобились.
Пиковая производительность -- это фигня, роли не играет никакой.
Ну напишет кто-то за пару дней 3-4к строк, две трети из них придётся выкинуть в течении пары следующих недель...
кто то  - это я полагаю что вы ,Geniepro ... :D
Название: Re: Lua
Отправлено: Geniepro от Декабрь 11, 2012, 10:52:59 am
кто то  - это я полагаю что вы ,Geniepro ... :D
Не, я столько мусора не пишу -- что я, сам себе злобный буратино, что ли? ))
Название: Re: Lua
Отправлено: valexey_u от Декабрь 11, 2012, 11:54:18 am
Народ, вы вообще забыли
кто то  - это я полагаю что вы ,Geniepro ... :D
Не, я столько мусора не пишу -- что я, сам себе злобный буратино, что ли? ))
Народ, вы вообще забыли контекст той реплики Ильи - тогда обсуждалось ФИЗИЧЕСКИЙ комфорт набора текста в синтаксисе Оберона. Про производительность труда/выхлоп никто не говорил вообще. Разовый набор (в день написали 100500 строк кода который не компилируется вообще) в качестве проверки на удобство набора вполне подходит.
Название: Re: Lua
Отправлено: DIzer от Декабрь 11, 2012, 11:57:38 am
Народ, вы вообще забыли
кто то  - это я полагаю что вы ,Geniepro ... :D
Не, я столько мусора не пишу -- что я, сам себе злобный буратино, что ли? ))
Народ, вы вообще забыли контекст той реплики Ильи - тогда обсуждалось ФИЗИЧЕСКИЙ комфорт набора текста в синтаксисе Оберона. Про производительность труда/выхлоп никто не говорил вообще. Разовый набор (в день написали 100500 строк кода который не компилируется вообще) в качестве проверки на удобство набора вполне подходит.
:) :) Никто ничего не забыл.. мы просто развлекаемся - для тех кто на та... из Нижнего - шутка это  - кергуду, короче...
Название: Re: Lua
Отправлено: Geniepro от Декабрь 11, 2012, 12:18:23 pm
Народ, вы вообще забыли контекст той реплики Ильи - тогда обсуждалось ФИЗИЧЕСКИЙ комфорт набора текста в синтаксисе Оберона.
А чо там забывать-то?
Что, так уж трудно в верхнем регистре код писать? Десятки лет так код писали, когда ещё кодировки 7-битными были -- и ничего, всё окейно было.
Что мешает оберонщегам продолжать эту славную старинную традицию???

ТОЛЬКО ХАРДКОР, ТОЛЬКО CAPS LOCK!!!
Название: Re: Lua
Отправлено: valexey_u от Декабрь 11, 2012, 12:19:41 pm
Народ, вы вообще забыли контекст той реплики Ильи - тогда обсуждалось ФИЗИЧЕСКИЙ комфорт набора текста в синтаксисе Оберона.
А чо там забывать-то?
Что, так уж трудно в верхнем регистре код писать? Десятки лет так код писали, когда ещё кодировки 7-битными были -- и ничего, всё окейно было.
Что мешает оберонщегам продолжать эту славную старинную традицию???

ТОЛЬКО ХАРДКОР, ТОЛЬКО CAPS LOCK!!!
Сложно писать в смешанном регистре. Причем когда вероятность слова полностю из верхнего регистра и вероятность слова полностью из нижнего регистра примерно равна и они равномерно перемешаны.
Название: Re: Lua
Отправлено: Geniepro от Декабрь 11, 2012, 12:29:20 pm
Сложно писать в смешанном регистре. Причем когда вероятность слова полностю из верхнего регистра и вероятность слова полностью из нижнего регистра примерно равна и они равномерно перемешаны.
А не допускать написания кода в смешанном регистре -- только в верхнем!
Вон у меня есть старая книшка по Аде -- там все примеры программ в верхнем регистре и ничо, намана...
Название: Re: Lua
Отправлено: ilovb от Декабрь 16, 2012, 03:19:54 pm
Еще один редактор  :)
http://www.sourcelair.com/
Название: Re: Lua
Отправлено: ilovb от Январь 08, 2013, 05:46:15 am
Linq для Lua
http://code.google.com/p/lualinq/
Название: Re: Lua
Отправлено: valexey_u от Февраль 24, 2013, 07:49:35 am
Lua вшили в ядро NetBSD:
http://www.linux.org.ru/news/bsd/8878745
Цитировать
Согласно докладу Марка Балмера (Marc Balmer, разработчик NetBSD) на FOSDEM'13, прошедшего 2 и 3 февраля, в ядро NetBSD-current добавлен скриптовый язык lua. Работы в данном направлении ведутся уже, как минимум, с 2010-го года.

Использование языка lua в ядре позволяет ускорить разработку драйверов, изменения функционала ядра, а также его настройку. Более низкий порог вхождения по сравнению с языком C позволит в будущем упростить разработку и ускорить темпы развития проекта, а также увеличить интерес сообщества к проекту NetBSD и привлечь новых людей.
Название: Re: Lua
Отправлено: Berserker от Февраль 24, 2013, 01:13:02 pm
Разумно. Не знаю как в Юниксах, но в Окнах драйверы писать — это какой-то БДСМ.
Название: Re: Lua
Отправлено: DddIzer от Февраль 24, 2013, 01:39:04 pm
Разумно. Не знаю как в Юниксах, но в Окнах драйверы писать — это какой-то БДСМ.
а вот х.з. - Луа оперирует с более высокоуровневыми моделями памяти, данных и операций, абстрагируясь от железа... обеспечить одинаковую эффективность (в смысле производительности кода) будет сложно.
Название: Re: Lua
Отправлено: valexey_u от Февраль 24, 2013, 02:30:14 pm
Разумно. Не знаю как в Юниксах, но в Окнах драйверы писать — это какой-то БДСМ.
В юниксах, в общем и в целом, везде по разному :-) Но вообще, обычно, там все проще чем в виндах.
Название: Re: Lua
Отправлено: ilovb от Март 01, 2013, 11:49:48 am
Довольно любопытная геймдев-студия: http://habrahabr.ru/post/148311/
Название: Re: Lua
Отправлено: ilovb от Март 03, 2013, 07:33:16 pm
Всякие бинды через LuaJit ffi:
https://code.google.com/p/lua-files/

Заюзал zlib тамошний. Понравилось. Остальное пока не смотрел.
Название: Re: Lua
Отправлено: ilovb от Март 06, 2013, 11:07:26 am
Тернарный оператор в Lua:  :D
a = 2
b = 1
print(a > b and 'a > b' or 'a <= b')
Название: Re: Lua
Отправлено: ilovb от Март 17, 2013, 06:11:56 pm
Распаковка CF на Lua (http://infostart.ru/public/178201/)
Название: Re: Lua
Отправлено: ilovb от Март 25, 2013, 08:22:18 pm
What is Lua OS?  :D
http://luaos.net/about.php
Название: Re: Lua
Отправлено: ilovb от Март 26, 2013, 06:00:51 pm
Недавно вышла новая версия SciTE-ru: https://code.google.com/p/scite-ru/

Редактор на полную катушку использует Lua.
Название: Re: Lua
Отправлено: ilovb от Апрель 03, 2013, 11:13:34 am
Клиентский хук для TortoiseSVN (http://infostart.ru/public/181018/)
Название: Re: Lua
Отправлено: ilovb от Апрель 23, 2013, 07:27:18 am
Питонобразный сахарок для Lua: http://moonscript.org/
Название: Re: Lua
Отправлено: ilovb от Май 22, 2013, 10:52:08 am
Запилил лексер (http://www.scintilla.org/ScriptLexer.html) языка 1С для редактора Scite:
Код: (lexer1с8.lua) [Выделить]
function new_set(list)
    local set = {}
    for _, v in ipairs(list) do set[v] = true end
    return set
end

function GetStyler()
    os.setlocale('Russian_Russia.1251')
    local isident = new_set {
        'если','if','тогда','then','иначеесли','elsif','иначе','else',
        'конецесли','endif','для','for','каждого','each','из','in','по',
        'to','пока','while','цикл',    'do','конеццикла','enddo','процедура',
        'procedure','функция','function','конецпроцедуры','endprocedure',
        'конецфункции','endfunction','перем','var','перейти','goto','возврат',
        'return','продолжить','continue','прервать','break','и','and','или','or','не',
        'not','попытка','try','исключение','except','вызватьисключение','raise',
        'конецпопытки','endtry','новый','new','выполнить','execute'
    }
   
    local isoperator = new_set {'+', '-', '=', '/', '*', '%', '<', '>', ')', '(', ',', ';', '.', ']', '[', '?'}
    local isnumber = new_set {'0','1','2','3','4','5','6','7','8','9','.'}
   
    local S_DEFAULT = 0
    local S_IDENTIFIER = 1       
    local S_KEYWORD = 2
    local S_COMMENT = 3
    local S_STRING = 4
    local S_OPERATOR = 5
    local S_NUMBER = 6
    local S_METOD = 7
    local S_DATA = 8
    local S_PREPROCESSOR = 9
   
    return function (styler)
       
        if styler.language == "script_1c8" then
            styler:StartStyling(styler.startPos, styler.lengthDoc, styler.initStyle)
            local state, ch
            while styler:More() do
               
                state = styler:State()
                ch = styler:Current()
               
                -- Exit state if needed
                if state == S_IDENTIFIER then
                    if not ch:match('[%a%w_]') then
                        identifier = styler:Token()
                        if isident[identifier:lower()] then
                            styler:ChangeState(S_KEYWORD)
                        end
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_METOD then
                    if not ch:match('[%a%w_]') then
                        identifier = styler:Token()
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_COMMENT then
                    if styler:Match("\n") then
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_STRING then
                    if ch == '"' then
                        styler:ForwardSetState(S_DEFAULT)
                    end
                elseif state == S_OPERATOR then
                    if not isoperator[ch] then
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_NUMBER then
                    if not isnumber[ch] then
                        styler:SetState(S_DEFAULT)
                    end
                elseif state == S_DATA then
                    if ch == "'" then
                        styler:ForwardSetState(S_DEFAULT)
                    end
                elseif state == S_PREPROCESSOR then
                    if styler:Match("\n") then
                        styler:SetState(S_DEFAULT)
                    end
                end

                -- Enter state if needed
                if styler:State() == S_DEFAULT then
                    ch = styler:Current()
                    if styler:Match("//") then
                        styler:SetState(S_COMMENT)
                    elseif ch:match('[%a_]') then
                        styler:SetState(S_IDENTIFIER)
                    elseif ch == '"' then
                        styler:SetState(S_STRING)
                    elseif state == S_IDENTIFIER and ch == '.' and styler:Next():match('[%a_]') then
                        styler:SetState(S_OPERATOR)
                        styler:ForwardSetState(S_METOD)
                    elseif isoperator[ch] then
                        styler:SetState(S_OPERATOR)
                    elseif isnumber[ch] then
                        styler:SetState(S_NUMBER)
                    elseif ch == "'" then
                        styler:SetState(S_DATA)
                    elseif ch == '&' then
                        styler:SetState(S_PREPROCESSOR)
                    end
                end

                styler:Forward()
            end
            styler:EndStyling()
        end
    end
end

AddEventHandler("OnStyle", GetStyler())

Цитата: 1c8.properties
lexer.*.1c8=script_1c8
style.script_1c8.0=fore:#505050,font:Courier New,size:10
style.script_1c8.1=fore:#000080,font:Courier New,size:10
style.script_1c8.2=fore:#FF0000,font:Courier New,size:10
style.script_1c8.3=fore:#008000,font:Courier New,size:10
style.script_1c8.4=fore:#000000,font:Courier New,size:10
style.script_1c8.5=fore:#FF0000,font:Courier New,size:10
style.script_1c8.6=fore:#309080,font:Courier New,size:10
style.script_1c8.7=fore:#000080,font:Courier New,size:10
style.script_1c8.8=fore:#F08050,font:Courier New,size:10
style.script_1c8.9=fore:#805000,font:Courier New,size:10
Название: Re: Lua
Отправлено: ilovb от Август 04, 2013, 08:52:15 pm
Если кто-то еще не видел: Lua за 15 минут (http://habrahabr.ru/post/184538/)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 23, 2013, 10:36:00 am
Клиентский хук для TortoiseSVN (http://infostart.ru/public/181018/)

С момента публикации этот хук трудится в нашем корпоративном SVN
Около 1000 коммитов. Ни одного сбоя.
На этой неделе был пойман первый ассерт (https://code.google.com/p/1c-toolkit/source/browse/lua/cf_tools/cf_inside.lua#94).
Оказалось что платформа не хранит тело формы если на ней нет ни одного элемента.
Случай очень редкий.
Почему коммит невозможен я увидел прямо в окне SVN, т.к. Lua показывает строку со сработавшим ассертом. Благодаря этому проблема была понята и устранена в течении 5 минут.

2 valexey: динамическая типизация, без отладчика....  ;)
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 23, 2013, 10:42:26 am
Клиентский хук для TortoiseSVN (http://infostart.ru/public/181018/)

С момента публикации этот хук трудится в нашем корпоративном SVN
Около 1000 коммитов. Ни одного сбоя.
На этой неделе был пойман первый ассерт (https://code.google.com/p/1c-toolkit/source/browse/lua/cf_tools/cf_inside.lua#94).
Оказалось что платформа не хранит тело формы если на ней нет ни одного элемента.
Случай очень редкий.
Почему коммит невозможен я увидел прямо в окне SVN, т.к. Lua показывает строку со сработавшим ассертом. Благодаря этому проблема была понята и устранена в течении 5 минут.

2 valexey: динамическая типизация, без отладчика....  ;)
Наоборот - Lua тут изначально была запущена под отладчиком. Вообще многие реализации динамически типизированных языков (если не все) работают только под отладчиком, работа без отладчика там не предусмотрена :-)
Название: Re: Lua
Отправлено: ilovb от Ноябрь 23, 2013, 10:46:35 am
Ну под отладчиком я имел в виду точки останова, пошаговое выполнение, стек вызовов и т.д.
Для луа вообще есть отладчик в базовой поставке, но я писал в ST2 и как там прикрутить его просто не знаю.
Название: Re: Lua
Отправлено: valexey_u от Ноябрь 23, 2013, 10:49:46 am
Ну под отладчиком я имел в виду точки останова, пошаговое выполнение, стек вызовов и т.д.
Для луа вообще есть отладчик в базовой поставке, но я писал в ST2 и как там прикрутить его просто не знаю.

Ну, а я имел именно запуск под отладчиком :-)

$gdb myCoolProg
$run
Название: Re: Lua
Отправлено: ilovb от Май 01, 2014, 04:33:09 pm
В продаже появился перевод третьего издания (Lua 5.2) книги Programming in Lua (http://www.lua.org/pil/)

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

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

Книга будет полезна широкому кругу программистов и разработчиков игр. Для понимания последних глав книги необходимо знание языка С, но для понимания большинства глав достаточно базовых знаний о программировании.
http://dmkpress.com/catalog/computer/programming/978-5-94074-767-3/
Название: Re: Lua
Отправлено: ilovb от Май 06, 2014, 10:50:22 am
http://www.lua.org/wshop14.html
Цитировать
The Lua Workshop 2014 will be held in Moscow, Russia, on September 13–14, 2014.
Название: Re: Lua
Отправлено: Valery Solovey от Май 06, 2014, 05:22:20 pm
Так а как книга? Сам материал, думаю, подан неплохо, а что насчёт качества перевода?
Название: Re: Lua
Отправлено: ilovb от Май 06, 2014, 07:14:57 pm
Сам пока не купил. Так что не знаю.
Название: Re: Lua
Отправлено: ilovb от Июль 10, 2014, 09:52:46 am
Эволюция языка расширений: история Lua (http://habrahabr.ru/post/229269/)
Название: Re: Lua
Отправлено: ilovb от Июль 10, 2014, 09:57:32 am
Так а как книга? Сам материал, думаю, подан неплохо, а что насчёт качества перевода?

Приехала мне книжка. Перевод на первый взгляд достаточно хороший.