CTFE

Nov. 4th, 2014 03:36 pm
thedeemon: (office)
[personal profile] thedeemon
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 не повызываешь.

Date: 2014-11-04 08:49 am (UTC)
From: [identity profile] theiced.livejournal.com
что люди не сделают что бы лисп не учить.

Date: 2014-11-04 08:59 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Это который требует GC, делает бинарники по 50 мегов и не умеет многопоточность на некоторых платформах? Или другой, который вообще на JVM?

Date: 2014-11-04 09:11 am (UTC)
From: [identity profile] nealar.livejournal.com
А по сути возражения есть?

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-04 09:50 am (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2014-11-04 10:10 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-04 10:18 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2014-11-04 10:33 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-04 10:46 am (UTC) - Expand

(no subject)

From: [identity profile] love5an.livejournal.com - Date: 2014-11-04 10:58 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-04 11:01 am (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2014-11-05 08:36 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-05 08:45 am (UTC) - Expand

(no subject)

From: [identity profile] northas.livejournal.com - Date: 2014-11-05 10:54 am (UTC) - Expand

Date: 2014-11-04 07:52 pm (UTC)
From: [identity profile] swizard.livejournal.com
> Это который требует GC, делает бинарники по 50 мегов

Он, родимый =) Зато можно save/load в игре делать через save-lisp-and-die, например, каково, а?

GC, кстати, при определённых навыках там можно почти не задействовать.

Date: 2014-11-04 09:04 am (UTC)
develop7: (dero)
From: [personal profile] develop7
Because everything is better with Bluet… Lisp!

Date: 2014-11-04 09:31 am (UTC)
From: [identity profile] zerthurd.livejournal.com
Хочешь узнать, что Б-г думает о лиспе, посмотри на лисперов. Всюду со своим ненужно залезут.

Date: 2014-11-04 10:34 am (UTC)
From: [identity profile] theiced.livejournal.com
вот почему всегда находятся альтернативно одарённый делающие стойку на любое упоминание лиспов. слишком тупой что бы осилить?

(no subject)

From: [identity profile] vinslivins.livejournal.com - Date: 2014-11-04 11:10 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2014-11-04 11:32 am (UTC) - Expand

(no subject)

From: [identity profile] vinslivins.livejournal.com - Date: 2014-11-04 06:38 pm (UTC) - Expand

(no subject)

From: [identity profile] vinslivins.livejournal.com - Date: 2014-11-04 06:39 pm (UTC) - Expand

(no subject)

From: [identity profile] zerthurd.livejournal.com - Date: 2014-11-04 12:10 pm (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2014-11-04 05:29 pm (UTC) - Expand

(no subject)

From: [identity profile] zerthurd.livejournal.com - Date: 2014-11-04 09:12 pm (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2014-11-05 08:37 am (UTC) - Expand

(no subject)

From: [identity profile] zerthurd.livejournal.com - Date: 2014-11-05 08:44 am (UTC) - Expand

(no subject)

From: [identity profile] nponeccop.livejournal.com - Date: 2014-11-05 09:01 am (UTC) - Expand

(no subject)

From: [identity profile] zerthurd.livejournal.com - Date: 2014-11-05 09:04 am (UTC) - Expand

(no subject)

From: [identity profile] nealar.livejournal.com - Date: 2014-11-05 09:23 am (UTC) - Expand

Date: 2014-11-04 09:13 am (UTC)
From: [identity profile] dumendil.livejournal.com
> зато есть прикольная киллер-фича: весь язык целиком доступен в компайл-тайме (для этих целей сделана генерация байткода и его исполнение компилятором)
Он придумал Форт, похоже. Там это основной инструмент был. :)

Date: 2014-11-04 09:09 pm (UTC)
From: [identity profile] nivanych.livejournal.com
Есть ключевое отличие — типизация.

Date: 2014-11-05 04:54 am (UTC)
From: [identity profile] dumendil.livejournal.com
Да. Это основное отличие, но не ключевое. Потому что я в Форт добавлял статическую типизацию (не полноценную, конечно), это заняло в исходниках ЕМНИП меньше 10Кб текста с комментариями. :) Так же легко добавляется инфиксная арифметика (это точно помню 1Кб текста), убирается использование пробела, как разделителя и добавляется новое управление памятью. При этом всё остаётся Фортом. :) А, ещё туда лямбды добавляются тоже очень просто.

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2014-11-06 03:20 am (UTC) - Expand

(no subject)

From: [identity profile] dumendil.livejournal.com - Date: 2014-11-09 09:10 am (UTC) - Expand

Date: 2014-11-04 10:26 am (UTC)
From: [identity profile] astmatik.livejournal.com
может быть rust?

Date: 2014-11-04 10:36 am (UTC)
From: [identity profile] thedeemon.livejournal.com
В обсуждениях сторонники Rust считают, что этот язык лучше всего бы ему подошел. Сам он о Rust'е отозвался в том ключе, что слишком много внимания и умственных усилий программиста там тратится на обеспечение корректности работы с памятью. Он готов чуть больше времени провести в отладчике, зато намного меньше быть скованным ограничениями компилятора. Но при этом довольно много из Rust'а в свой язык копирует, в том числе концепцию owning pointers, которые освобождают память, когда сами погибают.

(no subject)

From: [identity profile] qehgt.livejournal.com - Date: 2014-11-04 02:21 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-04 03:32 pm (UTC) - Expand

(no subject)

From: [identity profile] swizard.livejournal.com - Date: 2014-11-04 07:48 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-05 01:20 am (UTC) - Expand

(no subject)

From: [identity profile] swizard.livejournal.com - Date: 2014-11-05 09:48 am (UTC) - Expand

(no subject)

From: [identity profile] zeux.livejournal.com - Date: 2014-11-04 07:11 pm (UTC) - Expand

(no subject)

From: [identity profile] swizard.livejournal.com - Date: 2014-11-04 07:53 pm (UTC) - Expand

(no subject)

From: [identity profile] zeux.livejournal.com - Date: 2014-11-04 08:02 pm (UTC) - Expand

(no subject)

From: [identity profile] dmzlj.livejournal.com - Date: 2014-11-06 03:24 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-06 09:32 am (UTC) - Expand

Date: 2014-11-04 12:12 pm (UTC)
From: [identity profile] awson.livejournal.com
Вообще, staged языков навалом. Но из тех, что специфически таргетируют низкий уровень есть еще интересный http://terralang.org.

Date: 2014-11-04 01:53 pm (UTC)
From: [identity profile] justy-tylor.livejournal.com
Необходимость исполнения произвольного кода в compile time штука давно очевидная. А в остальном скучно. Редизайн C++ "мы отрежем то, что сами не использовали, а затем приладим заплатки на слабые места" - Rust, Go, ...

Date: 2014-11-05 09:03 am (UTC)
From: [identity profile] nponeccop.livejournal.com
> "мы отрежем то, что сами не использовали, а затем приладим
> заплатки на слабые места"

Золотые слова!

Date: 2014-11-04 07:48 pm (UTC)
From: [identity profile] sleepy-drago.livejournal.com
opengl в компиляторе очень очень важен. как бы сказали циники "перезвоните нам когда ваша игра перевалит за 1млн проданных копий".

Date: 2014-11-05 01:16 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Ну, довольно близко:
"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)

From: [identity profile] sleepy-drago.livejournal.com - Date: 2014-11-05 07:15 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-05 07:20 am (UTC) - Expand

(no subject)

From: [identity profile] sleepy-drago.livejournal.com - Date: 2014-11-05 09:11 am (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-05 09:14 am (UTC) - Expand

(no subject)

From: [identity profile] sleepy-drago.livejournal.com - Date: 2014-11-05 10:15 am (UTC) - Expand

(no subject)

From: [identity profile] 109.livejournal.com - Date: 2014-11-05 08:40 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-06 03:28 am (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2014-11-05 08:47 pm (UTC) - Expand

(no subject)

From: [identity profile] sleepy-drago.livejournal.com - Date: 2014-11-05 10:03 pm (UTC) - Expand

(no subject)

From: [identity profile] udpn.livejournal.com - Date: 2014-11-06 02:04 pm (UTC) - Expand

Date: 2014-11-04 07:57 pm (UTC)
From: [identity profile] swizard.livejournal.com
> запускает компилятор, вдруг открывается окошко и запускается игра. Если убьешь 10 пришельцев - скомпилируется успешно, нет - ошибка компиляции. :) Развлекуха.

У меня был пост, где я в compile-time ходил в бд и синхронизировал тамошнюю схему с орм-биндингами.

Date: 2014-11-05 01:17 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Без стрельбы по пришельцам - скукотища. :)

Date: 2014-11-05 08:47 pm (UTC)
From: [identity profile] udpn.livejournal.com
А можно линк?

(no subject)

From: [identity profile] swizard.livejournal.com - Date: 2014-11-06 03:57 pm (UTC) - Expand

Date: 2014-11-05 04:34 pm (UTC)
From: [identity profile] sober-space.livejournal.com
Вот у меня как раз такая идея была - go без рантайма и со встроенным языком доступным во время компиляции. Но как всегда кто-то воплотил это вместо меня :D

Date: 2014-11-05 07:19 pm (UTC)
From: [identity profile] thedeemon.livejournal.com
А чем именно планировалось заменить GC?

(no subject)

From: [identity profile] sober-space.livejournal.com - Date: 2014-11-05 07:22 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-05 07:54 pm (UTC) - Expand

(no subject)

From: [identity profile] sober-space.livejournal.com - Date: 2014-11-05 07:56 pm (UTC) - Expand

(no subject)

From: [identity profile] sober-space.livejournal.com - Date: 2014-11-05 07:28 pm (UTC) - Expand

(no subject)

From: [personal profile] zaharchenko - Date: 2014-11-05 07:44 pm (UTC) - Expand

(no subject)

From: [identity profile] sober-space.livejournal.com - Date: 2014-11-05 07:44 pm (UTC) - Expand

(no subject)

From: [personal profile] zaharchenko - Date: 2014-11-05 07:51 pm (UTC) - Expand

(no subject)

From: [identity profile] sober-space.livejournal.com - Date: 2014-11-05 07:54 pm (UTC) - Expand

(no subject)

From: [personal profile] zaharchenko - Date: 2014-11-05 08:01 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-05 07:57 pm (UTC) - Expand

(no subject)

From: [identity profile] sober-space.livejournal.com - Date: 2014-11-05 07:59 pm (UTC) - Expand

(no subject)

From: [identity profile] sober-space.livejournal.com - Date: 2014-11-05 07:44 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2014-11-05 07:59 pm (UTC) - Expand

(no subject)

From: [identity profile] sober-space.livejournal.com - Date: 2014-11-05 08:07 pm (UTC) - Expand

Date: 2014-11-05 08:44 pm (UTC)
From: [identity profile] udpn.livejournal.com
А я тут напряг курсовика такой язык писать в этом году. Хуёвый из меня научрук, ой хуёвый.

Date: 2014-11-06 10:38 am (UTC)
From: [identity profile] triampurum.livejournal.com
Отправь СМС по номеру ... и введи код, который тебе пришлют, чтобы продолжить компиляцию.

Date: 2014-11-06 11:34 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Бизнес-идея! :)

Profile

thedeemon: (Default)
Dmitry Popov

April 2026

S M T W T F S
   1 234
567891011
12131415161718
19202122232425
2627282930  

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 26th, 2026 08:02 am
Powered by Dreamwidth Studios