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 09:50 am (UTC)Лисп действительно похож тем, что на фазе компиляции в макросах доступен весь язык. На этом его достойность упоминания заканчивается, все остальное там плохо.
У Blow была нужда в языке для написания игр и определенное количество предубеждений (в том числе против GC). Он мельком посмотрел на другие языки, ничего подходящего не увидел. Подходящего лиспа, который бы хорошо работал для игр и на PS3, и на Винде, в природе не наблюдается.
no subject
Date: 2014-11-04 10:10 am (UTC)> определенное количество предубеждений (в том
> числе против 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
no subject
Date: 2014-11-04 10:18 am (UTC)Он как раз упоминал, что если бы просто (в)бросить клич/манифест и ждать пулл-реквестов, ничего хорошего бы не вышло.
no subject
Date: 2014-11-04 10:33 am (UTC)no subject
Date: 2014-11-04 10:46 am (UTC)Чем эта поделка одного японца принципиально лучше поделки, которую себе мастерит дядя из поста? Крутость языка, где все из списков, на куче и ничего толком не проверяется статически, неочевидна.
no subject
Date: 2014-11-04 10:58 am (UTC)no subject
Date: 2014-11-04 11:01 am (UTC)no subject
Date: 2014-11-05 08:36 am (UTC)no subject
Date: 2014-11-05 08:45 am (UTC)