ПроектыФорумУтилиты

Высокоуровневая библиотека CrystalLUA. Delphi + Lua (14 стр)

Страницы: 110 11 12 13 14 15 Следующая »
#195
15:46, 28 мар 2017

Сделать на паскале аналог луаджита? Да, ты сказочник еще тот. И портировать его со всем грузом RTTI куда-нить, например в датчик интернета вещей, да? Под АРМ, в смысле? Ну да, конечно. Как же я сам не догадался.

ПС А за работу - большое человеческое спасибо. Действительно есть за что.

#196
16:10, 28 мар 2017

grumbler1

Реализовать LuaJIT на Паскале проще, чем на Си. По той причине, что Паскаль читабельнее и быстрее компилируется.
Насколько я знаю, сам компилятор Lua достаточно прост и компактен, значительно сложнее исполнение команд и дополнительные библиотеки типа io или strings

Что до генерации бинарных кодов, у меня например, есть такая библиотека:
https://github.com/d-mozulyov/OpcodeLib

#197
20:10, 28 мар 2017

:)
вопрос не в реализации. Реализовать можно что угодно и как угодно, хоть на луа сделать компилятор для себя же в опкод, как это в луаджите есть. Вопрос в скорости, компактности и энергопотреблении. Эти три вектора развития кода на паскале очень тяжело удержать в единой связке. И главный вопрос - зачем? Неужели есть прикладные задачи, которые надо реализовывать на паскале в свете развития инета вещей, параллельный вычислений, светофотоники и искусственного интеллекта, т.е. технологий будущего?

#198
20:37, 28 мар 2017

grumbler1

Ну на Паскале мне удавалось весьма эффективно реализовать некоторые задачи
Например, мой менеджер памяти работает быстрее гугловского и интеловского
Поэтому вполне допускается, что ядро CrystalLUA можетбыть написано на Паскале
Профит использования Си - хорошое качество кода под ARM (у Delphi хромает), можно делать ассемблерные ARM-вставки. Ну и можно заимствовать или подглядывать часть кода из оригинала. Тот же парсинг.

Собственно ты придрался к Паскалю совершенно зря

Да, ответ на твой вопрос. На сегодняшний момент скрипты далеки от идеала ввиду исполнения на виртуальной машине, низкого качества оптимизации и особенностей типа сборки мусора. Технологии движутся в сторону скриптования. Так вот есть возможность создать сверхпростой скрипт на нативной скорости с дебагом и элементарным биндингом.

#199
4:32, 22 апр 2017

Когда я тоже писал биндинг для Lua и тоже не познав дзен самой Lua :), то чтобы избежать двоеточий, придумал, смею считать, более чистый способ — замыкание на объект-первый аргумент __index, http://ideone.com/77JxX7:

obj_class =
{
    __index = function(obj, func)
        return function(...)
            return getmetatable(obj)[func](obj, ...)
        end
    end,

    add = function(obj, x, y)
        obj.x = obj.x + x
        obj.y = obj.y + y
    end
}

local obj = setmetatable({ x = 1, y = 2 }, obj_class)
obj.add(200, 400) -- yay!
print(("x = %.9g, y = %.9g"):format(obj.x, obj.y))

Потом отказался от этой идеи, т. к. только вносит путаницу.

#200
21:43, 27 апр 2017

runewalsh

Да, можно через замыкания. Я думаю, путаница с точками и двоеточиями связана с тем, что Lua не совсем логично развивалась с точки зрения ООП
Свойства методов или таблиц запрашиваются через точку. А вызов метода - через двоеточие
Часто ли встречается необходимость вызывать функцию через точку? Практически никогда. А через двоеточие - практически всегда
Поэтому мной было принято решение внести свой вклад в удобство этого языка - всё делать через точку. Но двоеточие тоже работает, а во-вторых, препроцессинг можно отключить

#201
22:24, 27 апр 2017

ну эээ... запонить-то просто

obj:method() print(self.name) end == obj.method(self) print(self.name) end

#202
17:32, 28 апр 2017

clc

Да, но кто-ж пишет так: "obj.method(obj)"?
Никто )

#203
18:53, 28 апр 2017

ну да. все пишут отак
s = s:sub(2)

Кто хоть раз разобрался в синтаксисе луа и понял, где ставится двоеточие - проблем не возникнет. Более того, это тренирует внимательность и понимание происходящего.
Зато после олдкульного Луа понять, почему не падает
s = s.sub(2) в кристаллуа будет непросто.
равно как и объяснить, почему падает
m = require('module')
m.myfunc()

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

#204
6:00, 29 апр 2017

grumbler1

Некоторые делают биндинги с замыканиями, и там запись s = s.sub(2) - вполне корректна
Тут кому как удобнее. Я не хочу париться с двоеточиями - мне парсинг в самый раз. Ты хочешь париться - ты отключай
Одним словом удовольствие на все случаи жизни )

#205
6:46, 29 апр 2017

DevilDevil
> Я не хочу париться с двоеточиями
А что именно тебя парит? Ставить двоеточие тяжелее чем точку, потому что нужно нажимать две клавиши вместо одной?
Заменять двоеточие на точку - абсурд. Это усложнит чтение кода. Как понять где вызывается метод, а где свойство?

#206
6:49, 29 апр 2017

DevilDevil
> Я думаю, путаница с точками и двоеточиями связана с тем, что Lua не совсем
> логично развивалась с точки зрения ООП
Да какая может быть путаница?

#207
17:14, 29 апр 2017

ant0n
> Как понять где вызывается метод, а где свойство?

Метод вызывается со скобками

#208
19:28, 29 апр 2017

Раз уж пошла такая пьянка, : с точки зрения ООП операция бессмысленная. ООП предполагает, что операции проводятся над объектом. Ручное передавание self - это костыль по недоразумению внедренный в язык, а : призван хоть как-то нивелировать это недоразумение. Но и здесь возникает путаница между с . в свойствах. Ещё раз напомню, режим обращения по . в CrystalLUA является опциональным и обсуждать здесь нечего

#209
19:37, 29 апр 2017

нет путаницы, но есть плохие объяснения. Есть свойства, свойства могут быть функциями и есть синтаксический сахар для первого аргумента

Страницы: 110 11 12 13 14 15 Следующая »
ПроектыФорумУтилиты

Тема в архиве.