Jonathan Blow, автор игрушки Braid, замутил на ютюбе сперва пару выступлений о том, как ему осточертел С++ и не видно годных альтернатив для написания игрушек, и как было бы круто сделать свой язык для этих целей с блекджеком и т.д., а на днях уже раз и показал демку вырисовывающегося язычка. Работающий компилятор (пока что через генерацию Си, но это временно), работающие примеры. Пока что там почти ничего нет (ни объектов в том или ином виде, ни генериков), код примерно на уровне Go без GC, зато есть прикольная киллер-фича: весь язык целиком доступен в компайл-тайме (для этих целей сделана генерация байткода и его исполнение компилятором). Надо сделать безопасный printf? Сказал компилятору, что все вызовы printf проверяются вот этой функцией, а она проверяет соответствие агрументов форматной строке, отрабатывая в компайл-тайме. Надо проверить, что все переданные в функцию строки одной длины? Аналогично. Говорит, чем городить суперсложную систему типов, которая бы пыталась проверять такие инварианты, проще позволить проверять их кодом на том же языке, а систему типов оставить простой (ну, генериков добавить, конечно). Показал демку - простая игрушка на OpenGL со стрельбой по пришельцам. Потом ставит в коде строчку вроде
#assert( #run invaders() >= 10, "need to kill 10 invaders for this to compile")
запускает компилятор, вдруг открывается окошко и запускается игра. Если убьешь 10 пришельцев - скомпилируется успешно, нет - ошибка компиляции. :) Развлекуха.
В D тоже есть похожий compile time function execution, но все ж более ограниченный, некоторые вещи там недоступны и OpenGL не повызываешь.
#assert( #run invaders() >= 10, "need to kill 10 invaders for this to compile")
запускает компилятор, вдруг открывается окошко и запускается игра. Если убьешь 10 пришельцев - скомпилируется успешно, нет - ошибка компиляции. :) Развлекуха.
В D тоже есть похожий compile time function execution, но все ж более ограниченный, некоторые вещи там недоступны и OpenGL не повызываешь.
no subject
Date: 2014-11-04 07:48 pm (UTC)no subject
Date: 2014-11-05 01:16 am (UTC)"Jonathan Blow, the creator of Braid, a 2008 Microsoft-published game that was, arguably, the first mainstream indie success, also became a millionaire through his game. ... He funnelled the remainder of the money he earned—which he estimates to be around four million dollars—into his next game, The Witness, due for release later this year. "
no subject
Date: 2014-11-05 07:15 am (UTC)мне вот более интересно как он будет делать rich ui в 3д/VR ...
no subject
Date: 2014-11-05 07:20 am (UTC)no subject
Date: 2014-11-05 09:11 am (UTC)3 раза ха. проблема теоретических людей в том что они упорно продолжают читать текст когда им наглядно показывают. Тут уже выросло поколение, которое "чистые" и тп функции распространяет на все программирование а не только на свой 1 компилятор. Как дать этим ребятам щелчок по носу? добавить ввод пользователя в компилятор. мол "порассуждайте теперь о чистоте, умники".
no subject
Date: 2014-11-05 09:14 am (UTC)no subject
Date: 2014-11-05 10:15 am (UTC)виновен, однозначно. краткий транскрипт событий на реддите отбил всякое желание =)
no subject
Date: 2014-11-05 08:40 pm (UTC)примерно как c# code contracts (тоже в compile-time выполняются, когда возможно), или есть существенные отличия?
no subject
Date: 2014-11-06 03:28 am (UTC)no subject
Date: 2014-11-05 08:47 pm (UTC)no subject
Date: 2014-11-05 10:03 pm (UTC)ручные тормоздля управления оптимизацией. например прагму инлайнинга в месте вызова. и тд и тп...no subject
Date: 2014-11-06 02:04 pm (UTC)Кроме того, за сам факт аннотаций/атрибутов/прагм, привязанных к исходному коду, авторов языка уже стоит избивать ссаными тряпками, потому что отсутствие аннотаций/атрибутов/прагм в чужой библиотеке не исправляется никак.