singalen: (Default)
[personal profile] singalen
А я тут решил встроить Lua в Wesnoth. Встраивается он интересно: API нехарактерное. Вместо объектной модели вызовов, из C надо доступаться к некоему стеку, в который надо заталкивать и извлекать параметры.
Подрублю к движку доменную модель на C++ - покажу и расскажу.

Заодно обнаружил, что кроме билда на autotools там есть билд на SCons, и развивается ещё один на cmake. Я знаю, что эти тулзы - уже года три как не новость, но сейчас на cmake переходит всё больше и больше проектов.
Например, KDE собирают на cmake. Вот статья о том, как они пытались в 2006-м сначала перейти на scons, но фич не хватало, и саппорт от коммюнити был дохлый.
Хотя лично мне уровень абстракции scons нравится больше. К тому же, я время от времени корябаю что-то на пайтоне.

Autotools с их тремя версиями и жутким синтаксисом давно пора сдохнуть. Как хорошо, что это, считай, произошло.

CDT 6.0 в Ecipse 3.5 работает. Тоже отлично билдит, и даже умеет extract method/mark occurencies.

(no subject)

5/4/09 15:51 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
В Python объявления class Foo: тоже есть. Duck typing это не мешает.

(no subject)

6/4/09 08:59 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Я про issubclass в Питоне ничего не знаю. Но мне казалось, что термин duck typing придумал Гвидо. Можно, конечно, в википедии посмотреть. Но мне это не кажется принципиальным.

(no subject)

6/4/09 11:33 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Ты хочешь реализовать мультиметоды через множественную передачу? Или зачем тебе issubclass понадобился?
Мне кажется, что таким образом решится настолько общая задача, что это решение будет никому не нужно.

Но если очень хочется, то можно реализовать issubclass на том же метапрограммировании, приписывая инстансам классов подходящим образом сгенерированный тип, и проверяя его.

(no subject)

6/4/09 19:25 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Про множественную передачу - это я вспомнил зубодробительную схему из книги Джефа Элджера про C++.

Так зачем тебе issubclass понадобилась?

(no subject)

7/4/09 08:25 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
У Элджера рассматривается и "удвоенная двойная диспетчеризация", и множественная - я чуть мозг не вывихнул. :)))

Т.е. ты хочешь на место параметра подставлять класс или его подкласс? Если для подкласса нет специального правила? А кто-то так вообще делает?

Ну, собственно в упомянутом LOOP есть функции class(object), instanceof(object, class), subclassof(object, class) и superclass(class). Так что можно приниматься за дело. ;)

(no subject)

7/4/09 09:31 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
А я что сказал? :)
(это про принцип подстановочности)

И я про Lua. LOOP = Lua Object-Oriented Programming, если что. ;)
Хорошая, кстати, библиотека.

(no subject)

7/4/09 10:44 (UTC)
Posted by [identity profile] gabriel-irk.livejournal.com
Ну, если базовый, то простой табличной диспетчеризации не получится - придётся громоздить вложенные if'ы. Впрочем, можно попробовать совместить и то, и другое.