The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



"Компания Microsoft опубликовала реализацию Lua VM, написанну..."
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Компания Microsoft опубликовала реализацию Lua VM, написанну..." +/
Сообщение от Orduemail (ok), 21-Ноя-18, 06:22 
> Ох, не уверен, что смогу помочь. С функциями жрёт, т.к. для неё
> не баг, а фича (на сколько помню).

Да там всё фича. Некоторые из этих фичей можно пофиксить колупая _G, но вызовы функций можно пофиксить, разве что, собственными реализациями funcall и defun, и вызова/объявлений всех функций через них. Да и то, этот nil, который lua пихает везде по-умолчанию, нехило так будет мешать. Придётся запретить себе использовать nil как значение, и завести новый атом означающий "отсутствие значения", такой который надо указывать явно, чтобы он был передан, и соответственно тогда возникновение nil в любом месте можно будет считать ошибкой типа "попытка доступа к несуществующей/неинициализированной переменной". И я бы сделал это, но чтобы это было бы удобно использоваться, надо написать обёртки для всех библиотечных функций. И для всех функций из разных пакетов, которые я скачиваю из интернета. Опять же надо писать парсер lua, чтобы генерить эти обёртки (не писать же их вручную!), и опять же встаёт вопрос, не проще ли написать нормальный язык, который будет компилироваться в lua.

> Там даже можно несколько
> значений вернуть, при этом, если у вызывающего есть лишние переменные, они
> nil'ами будут, если же их недостаёт, ряд возвращаемых значений похерится.

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

> Единственное, что могу посоветовать, книгу от автора: Роберту Иерузалимски "Программирование
> на языке Lua" (на русском существует). Правда она для 5.3. Не
> знаю, но м.б. существовало издание для 5.0, но я не интересовался.
> У меня её 3-е издание. На крайний случай думаю можно ориентироваться
> на книгу, а разницу искать в и-нете.

Да, я читал эту книгу. Первое её издание о 5.0. Это не то, что нужно. Вообще, в идеале, было бы круто что-то типа "Practical Lua" по аналогии с "Practical Common Lisp". Или "Learning Lua with entirely too many [somthing]" по аналогии с "Learning Rust with entirely too many linked lists". Что-нибудь, что берёт какую-то проблему, и разбирает разные подходы к её решению. Или что-то что берёт несколько проблем, и разбирает подходы к их решению. Доводя эти подходы до какого-то логического завершения. А этот Иерузалимски не парится совершенно, приводя в качестве примеров высосанные из пальца строки кода, которые не делают ничего полезного, кроме демонстрации фишки языка, которые не отвечают на вопрос, когда эту фишку языка уместно использовать, а когда проще обойтись без неё. Типа если читателю надо, пускай он сам выясняет это методом проб и ошибок. Но метод проб и ошибок -- это полгода программирования на языке, с очень скромным выхлопом в плане объёма рабочего кода. Зато груды нерабочих кусков кода, в процессе написания которых было выяснено, что подход X неудачен для решения проблем класса Y.

Впрочем... Может если посмотреть на более поздние издания, то там Иерузалимски исправился и придумал какие-то более реалистичные примеры? Я загляну на досуге.

Ответить | Правка | Наверх | Cообщить модератору

Оглавление
Компания Microsoft опубликовала реализацию Lua VM, написанну..., opennews, 17-Ноя-18, 13:10  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру