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
А по сути возражения есть?

Date: 2014-11-04 09:50 am (UTC)
From: [identity profile] thedeemon.livejournal.com
А чем суть?
Лисп действительно похож тем, что на фазе компиляции в макросах доступен весь язык. На этом его достойность упоминания заканчивается, все остальное там плохо.

У Blow была нужда в языке для написания игр и определенное количество предубеждений (в том числе против GC). Он мельком посмотрел на другие языки, ничего подходящего не увидел. Подходящего лиспа, который бы хорошо работал для игр и на PS3, и на Винде, в природе не наблюдается.
Edited Date: 2014-11-04 09:52 am (UTC)

Date: 2014-11-04 10:10 am (UTC)
From: [identity profile] nponeccop.livejournal.com
> У Blow была нужда в языке для написания игр и
> определенное количество предубеждений (в том
> числе против GC). Он мельком посмотрел на другие
> языки, ничего подходящего не увидел.

Муахаха!

https://code.google.com/p/inv/wiki/Manifesto

2010 год (на самом деле даже чуть раньше)

=====
Our second goal is to please minds of those programmers and managers who believe (mistakenly or not) in supremacy of native C and C++ programs over garbage-collected and JITted bloatware of these days. We are going to develop a C substitute – a language that follows all basic principles of C language design, including memory and execution models, and integrates with existing C and C++ code so tightly so it will be possible to use our new language in all areas of current C dominance, including games, operating system kernels and drivers, databases, web servers, application servers and other middleware, browsers, IM clients, archivers/codecs, data recovery software, office productivity tools, media players, language runtime libraries, high performance computing and even embedded firmware with very tight footprint requirements.
=====

И блин хоть бы одна сволочь пулл-реквестик сделала бы!

https://github.com/kayuri/HNC
Edited Date: 2014-11-04 10:11 am (UTC)

Date: 2014-11-04 10:18 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Он от декларации намерений до рабочей демки дошел за месяц. А что здесь?

Он как раз упоминал, что если бы просто (в)бросить клич/манифест и ждать пулл-реквестов, ничего хорошего бы не вышло.

Date: 2014-11-04 10:33 am (UTC)
From: [identity profile] theiced.livejournal.com
http://www.littlewingpinball.net/mediawiki/index.php/Ypsilon нопреме - вполне себе писали игрушки туда-сюда.

Date: 2014-11-04 10:46 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Ну т.е. подходящего лиспа таки не было, и бедному японцу пришлось мастерить свою поделку. Говорит, что получилось хорошо, но в бенчмарках нет цифр и сравнение лишь с другими Схемами.
Чем эта поделка одного японца принципиально лучше поделки, которую себе мастерит дядя из поста? Крутость языка, где все из списков, на куче и ничего толком не проверяется статически, неочевидна.

Date: 2014-11-04 11:01 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Что, стыдно за лисп?

Date: 2014-11-05 08:36 am (UTC)
From: [identity profile] nealar.livejournal.com
То есть, сравнивается лисп, который не работает, и другой язык, который ещё не работает? По критерию "работает ли".

Date: 2014-11-05 08:45 am (UTC)
From: [identity profile] thedeemon.livejournal.com
Лисп сравнивается с требованиями, а не с другим языком.

Date: 2014-11-05 10:54 am (UTC)
From: [identity profile] northas.livejournal.com
Видеоиграм критически нужны всякие ништяки вроде контроля memory layout для данных. Без них не взлетает. Кроме разной хипстерской фигни.

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
вот почему всегда находятся альтернативно одарённый делающие стойку на любое упоминание лиспов. слишком тупой что бы осилить?

Date: 2014-11-04 11:10 am (UTC)
From: [identity profile] vinslivins.livejournal.com
у меня руби запускался почти сразу (100 мс) а lein run запускается 1,4 секунды с неким ускорителем drip

это к вопросу о скорости

Date: 2014-11-04 11:32 am (UTC)
From: [identity profile] metaclass.livejournal.com
Для людей, которые измеряют скорость запуска jvm, есть специальный раздел ада :)
Общеизвестно, что jvm стартует и греется медленно.

Date: 2014-11-04 06:38 pm (UTC)
From: [identity profile] vinslivins.livejournal.com
не, я просто первый раз. хело ворлд на жаве 100 мс, хело ворлд на лейнингене без дрипа что-то под 1,3 секунды. там что-то с кложа.коре который долго или грузится или компилируется. деталей увы пока не знаю.
первые впечатления после руби что репл на удивление слабее. удивление очень сильное)

Date: 2014-11-04 06:39 pm (UTC)
From: [identity profile] vinslivins.livejournal.com
(зато как я понимаю в руби нет и не будет рубискрипта как промышленной технологии. потому что в руби синтаксический диабет, да и семантический тоже.)

Date: 2014-11-04 12:10 pm (UTC)
From: [identity profile] zerthurd.livejournal.com
Осиливал его 12 лет назад, считай, с него программировать начал. Шах и мат.

Date: 2014-11-04 05:29 pm (UTC)
From: [identity profile] theiced.livejournal.com
осиливал и не осилил и уже 12 лет попаболь.

Date: 2014-11-04 09:12 pm (UTC)
From: [identity profile] zerthurd.livejournal.com
Забил на него лет 8 назад, ибо лисп не нужен

Date: 2014-11-05 08:37 am (UTC)
From: [identity profile] nealar.livejournal.com
Ты споришь с айседом.

(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

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 10:54 am
Powered by Dreamwidth Studios