Вход на форум   логин       пароль   Забыли пароль? Регистрация
On-line:  

Раздел: 
новая тема

Отвечать на темы могут только зарегистрированные пользователи

Gecko Теперь новый сайт доступен по домену [URL=http://xtreme3d.tk/]http://xtreme3d.tk[/URL].
Gecko Решил перевести сайт на коммерческий хостинг (заодно обновил дизайн): [URL=http://gecko0307.siteme.org/xtreme3d/]http://gecko0307.siteme.org/xtreme3d/[/URL].

Не то, чтобы возможности Ucoz перестали устраивать, просто надоела их навязчивая реклама (отключение которой, по правде сказать, стоит дороже, чем минимальный тариф на Hostingru [sm18]).
gammaker [QUOTE][B]gammaker[/B], а где твою библиотеку для C++ можно посмотреть? Или ты ее не выкладывал?[/QUOTE]
Выкладывал уже давно. Вот [URL=http://www.gamedev.ru/projects/forum/?id=186889]тема[/URL] для обсуждения.

Но с тех пор многое поменялось, несколько багов было исправлено, и куча всего нового добавилось. Учёл некоторую критику из той темы, стиль кода тоже стал получше, я стал меньше пихать всего в одну строчку. Но я эту новую версию не выкладывал, так как надо её отдельно от движка собирать, выкидывая неожиданно возникающие зависимости от движка. Например мой assert использует обёртку от оконной системы, чтобы выдавать кроссплатформенный MessageBox. А оконная система помимо этого годится только для инициализации графики в нём и принятия ввода. В библиотеке ей места нет, я считаю. Вот подобные вещи надо отвязывать.
И я ещё не привёл свою библиотеку к окончательному виду, который задумал: не добавил те фичи, которые есть в стандартной библиотеке но которыми я не пользуюсь, забросил некоторые баги, не исправив. И ещё есть контейнеры, которые я начал писать, но забросил на время, занявшись другими делами.

Например у меня до сих пор нет ассоциативных массивов в виде дерева или хэш-таблицы. Просто потому что мне не нужны. В большинстве случаев мне надо было делать поиск среди очень малого количества элементов, где линейный перебор наиболее эффективен, либо поиск среди 100 элементов, но в местах, некритичных к производительности. Например при парсинге значения крупного enum'а.

Так что я пока не хочу выкладывать текущую версию. Нужно тратить время, чтобы потом получить критику по вещам, которые и так собираюсь поменять. Но вообще надо будет ближе к завершению на гитхабе выложить. Но до этого момента надо будет освоиться с гитом. Знаю, что ничего сложного, но стимула нет - у меня исходники синхронизируются с Dropbox'ом и вроде и так удобно.
Gecko [B]gammaker[/B], а где твою библиотеку для C++ можно посмотреть? Или ты ее не выкладывал?
gammaker [QUOTE]Что там с поддержкой Андроида - точно не знаю, особо не интересовался, но вроде бы LDC умеет собирать под ARM, были какие-то умельцы, которым удавалось что-то сделать в этом направлении.[/QUOTE]
С ARM самим по себе уже давно всё хорошо. Я ставил Ubuntu на ARM устройство и прямо через apt-get install gdc устанавливал. Ничего сложного правда писать на D делать не пробовал, но то что делал, работало. И ldc тоже работал нормально.

[QUOTE]
Phobos, кажется, все еще не портировали, т.к. Android не является полноценной Posix-системой - если не ошибаюсь, там какой-то свой урезанный libc.
[/QUOTE]
Тут проблема именно не в Phobos, а в druntime, который дёргается по любому поводу обычным кодом на D. Например копирование слайсов массивов приводит к вызову одной из функций рантайма. Классы и структуры с RAII вроде тоже вызывают оттуда функции. И вот этот рантайм на Android не работает, потому что он использует glibc, а на Android bionic. Если бы я писал на C++, я бы разницы не заметил, но в druntime видимо используется что-то, в чём есть отличия.

[QUOTE]Я высказал на форуме D идею о компиляторе в байт-код Dalvik или ART (мне кажется, это было бы хорошее решение), но этим никто особо не заинтересовался.[/QUOTE]
Ну это не интересно, сила D в его нативности. В Java вроде даже структур нет, а значит, есть сомнения в том, что они представимы в байт-коде. А если они не представимы, то будет очень проблематично реализовать D поверх него и работать будет намного медленнее - ведь они будут прогоняться через GC и не будут лежать линейно в памяти, как должны были бы. И вообще любую работу с сырой памятью там не сделать, хотя в D это вполне возможно.

[QUOTE]Exception'ы тоже можно заменить чем-то более простым - я в dlib так и сделал, там сообщение об ошибке, где нужно, возвращается в кортеже вместе с результатом функции[/QUOTE]
Я их тоже не использую в C++. Использую возврат информации об ошибке через указатель - параметр функции, который по умолчанию null. Если мы проверяем ошибки, передаём указатель. Если нам пофиг на них, не передаём.
Я как-то даже не сталкивался с тем, чтобы были где-то реально нужны исключения. Обычно вызывающий код может обработать ошибку или перекинуть её максимум на один уровень выше. А если просто кидать исключения, не задумываясь о том, кто их перехватит, то будет программа падать из-за каждого пустяка.

[QUOTE]Сейчас присматриваюсь к Rust, он поинтереснее выглядит. Но тоже - уж слишком заточен под веб, для игровых программистов мало привлекательных фишек, кроме компиляции в машинный код. Нет union'ов и много чего другого из C.[/QUOTE]
Да, я тоже смотрел. Не понравились сокращённые ключевые слова. Начинает выглядеть, как разрозненный поток букв или слогов. И что-то ещё оттолкнуло, но уже не помню что.

[QUOTE]Но без модулей, крутых шаблонов, CTFE, mixin'ов и "static if", конечно, уже неинтересно, на C++ возвращаться желания уже нет.[/QUOTE]
Когда добавят модули и концепты, в C++ будет повеселее. Огрызок от CTFE в виде constexpr функций там тоже есть, но конечно совсем огрызок. Никаких строк тебе и выделений памяти. Вместо static if делают две шаблонные функции с возвращаемым типом std::enable_if_t (мой велосипед называется покороче - EnableIf). А вот там, где пригодился бы mixin, мне приходилось совершать пляски с шаблонной магией в сочетании с препроцессором. Хотя вроде внешний результат выглядит прилично, если не смотреть в папку Meta, где вся эта магия сконцентрирована.

KXK.RU