Выглядит, как что-то очень крутое. Однозначный плюс — это удачное, по всей видимости, сочетание метапрограммирования, системного программирования и интерпретатора. Минус — недостаточно знать только C — нужно знать еще и Lua.


И не до конца понятно, правда, где это предлагается использовать. Вместо чистой Lua? В качестве самостоятельного системного языка?

Скорее, вместо чистого С. То, что нужно знать Lua, не так страшно, там всё описание на пару страниц.

Скорее, вместо С++ и не в системном программировании а максимум в околосистемном прикладном.
По-моему, там, где пишут на С, подобные "расширения" синтаксиса вряд ли будут востребованы, там наоборот ценится прозрачность и отсутствие лишней многослойности.
Ну и то, что синтаксис очень не похож на основной язык, тоже скажется не в пользу его использования.

Да, типа того. Аналог С++, только система классов и система шаблонов заменена кодогенерацией на языке высокого уровня. Может быть удобно для библиотек, в которых требуется высокая степень «настраиваемости» кода под конкретные параметры, типы данных и т.п.
ЧСВ у данного языка конечно на высоте. После прочтения в глазах стоит terra.
Это да. Сам себя не похвалишь…
Сейчас в задумке, зачем они так....?

Вот даже не знаю… С одной стороны, при написании на C++ порой возникает мысль, что вместо метапрограммирования на темплейтах иногда лучше было бы написать кодогенерацию на нормальном ЯВУ.
А с другой — при такой свободе слишком легко написать неподдерживаемый код.


В общем, запомню этот проект, буду наблюдать.

Я с вами соглашусь, но замечу, что на любом языке можно написать неподдерживаемый код.
Использование полноценного ЯВУ в данном случае, по моему мнению, имеет больше плюсов, чем минусов.

… при условии очень жёсткой дисциплины написания кода.
Или ваше "в данном случае" это подразумевает?


Упс, коммент не туда ушёл почему-то… Был ответ на "Использование полноценного ЯВУ в данном случае, по моему мнению, имеет больше плюсов, чем минусов".

Крутая вещь. Но хотелось бы увидеть бенчмарк конкретно против luajit.
Там как бы и используется LuaJIT (для кода на Lua), а для низкоуровневого кода используется LLVM, то есть производительность компилированного кода не должна принципиально отличаться от обычного кода С, скомпилированного с теми же опциями оптимизации. Как оно будет работать в связке, и с JIT-компиляцией низкоуровнего кода, это вопрос.

Функции-шаблону MakeArray не хватает мемоизации...

А вот интересно есть ли уже проекты реализованные с его помощью?
Пока нет, наверное, но у них на сайте много ссылок, может, что-то найдётся.
Спасибо! Возможно пригодится.
Бинарники Терры содержат в себе полную машину Луа? Если да, то какой версии? Если нет, как она «подключается»? С какой версией Луа совместимо?
Используется LuaJIT: luajit.org
Lua служит заменой шаблонов C++ [3] и макросов препроцессора C (X-Macro) [4], имея при этои лучший синтаксис и лучшие свойства в плане гигиены [5].

Это, похоже, макросы из Лиспа?

Не в курсе про макросы из Лиспа, к сожалению.
Разрабатывать ЯП не зная Лиспа — это очень по-ламерски…
1. Ну-ну. Ламеры, кулхацкеры, лексикон 90-х. Вы даже не представляете, чем можно заниматься, не зная лиспа.
2. Вы плашку «перевод» видели?
Однозначно, идея очень мощная. В hindsight мне кажется, что у меня давно было чувство, что C++ нуждается в чём-то таком. Вместо того, чтобы извращаться со SFINAE и constexprt программист просто должен иметь возможность в явном виде сказать что он хочет! Буду с интересом следить за этим проектом.

Единственное, немного опасаюсь за судьбу языка из-за выбранной комбинации технологий. В который раз у меня возникает вопрос: почему Lua? Несколько раз сталкивался с этим языком в разработке, и не могу сказать что получал удовольствие от программирования на нём. Я даже знаю людей, которые перешли с Torch на Tensorflow только из-за Lua. А потом сами разработчики Torch сделали PyTorch!
Скорее всего у авторов были причины использовать именно Lua (а не Python, например). Полагаю, решение с Lua более «легковесное» и его легче менеджить. Интересно, как это решение повлияет на судьбу проекта.

Уже давно есть Ivory. Haskell в качестве мета-языка намного выразительнее и безопаснее, чем lua.

Всё хорошо, вот только Зак больше террой не занимается, по крайней мере в направлении добавления фич и архитектурных изменений. Так что мы идею использования Terra отбросили и всех возбуждённых предупредить хочу, дабы не тратили своё время, если планируете делать что-то long-term на Terra. Печально, но факт :(
Печаль.
На сколько я понимаю, Julia схожим образом.
Только полноправные пользователи могут оставлять комментарии.
Войдите, пожалуйста.