Re[15]: За счет чего выстреливают языки?
От: Evgeny.Panasyuk Россия  
Дата: 13.07.15 07:37
Оценка:
Здравствуйте, WolfHound, Вы писали:

_>>8. Не видел чем так круто форматирование строк в Nemerle, поэтому непонятно. Но в любом случае разного подобного добра полно и в бусте и отдельно (https://github.com/panzi/formatstring например) — выбирай на любой вкус.

WH>Близко не стояло.
WH>
WH>$"Property '$(astProperty.Name)' has invalid type '$t'. Only list of declarations can be decomposed."
WH>


Возможен вот такой вариант
Автор: Evgeny.Panasyuk
Дата: 12.10.14
:
process_format
(
    print,
    "val = $value$, cnt = $counter$, ch = $character$, again v=$value$;\n",
    counter, character, value
);


_>>9. Ну на такие простенькие dsl (если xml без схем) C++ то уж легко хватает. )))

WH>Вот чтобы прямо с нужным синтаксисом и проверками на этапе компиляции?

raw string literals + обработка строк во время компиляции.

_>>12. Тоже не очень понятно.

WH>Если метод должен быть вызван под локом, а ты забыл сделать лок, и пытаешься вызвать метод, то компилятор даст тебе по рукам.

Такое было в C++98 — помечаешь метод ключевым словом, и компилятор не даст вызывать его без лока.

_>>13. Вообще не понял.

WH>Например, получение строкового имени переменной. Причем если переменная будет переименована, компилятор даст по рукам.

Препроцессор умеет stringify.

_>>14. Ммм, вроде как определённый вывод типов есть и в C# и в C++. Или речь о чём-то другом?

WH>О том, что в немерле он несравнимо мощнее.

В Nemerle есть вывод типов через использование, но не нужно забывать/умалчивать что сами типы-то несравнимо примитивнее — например higher-rank polymorphism'а нет, и соответствующего вывода типов тоже

_>>15. Про локальные функции не понял — зачем они, если есть лямбды? ) Т.е. я когда-то давно был за них (ещё с Паскаля), но теперь то зачем? )

WH>Рекурсивную лямбду изобразить можешь?

Без проблем: live demo.

_>>Не, это же только недавно появилось.

WH>У gcc код открыт с рождения. Влезай и делай что хочешь.
WH>Но никто не делает. Ибо ад.

Делают, например смотри ODB:

The ODB compiler uses the GCC compiler frontend for C++ parsing and is implemented using the new GCC plugin architecture. While ODB uses GCC internally, its output is standard C++ which means that you can use any C++ compiler to build your application.

А вообще у GCC изначально были какие-то странные установки, хорошо что Clang появился, и расшевелил его:

https://gcc.gnu.org/ml/gcc/2005-01/msg00008.html

>is there a reason for not making the front ends dynamic libraries which could be linked by any program that wants to parse source code?

Richard Stallman:
One of our main goals for GCC is to prevent any parts of it from being used together with non-free software. Thus, we have deliberately avoided many things that might possibly have the effect of facilitating such usage, even if that consequence wasn't a certainty.

We're looking for new methods now to try to prevent this, and the outcome of this search would be very important in our decision of what to do.


_>>Причём пошло от clang'a и только недавно gcc подтянулся. Вроде тут где-то было обсуждение на эту тему, что теперь можно писать вещи как раз в стиле возможностей Nemerle. Правда пока ничего не видно. Оно и понятно почему — в самом языке и так куча метапрограммирования сидит.

WH> Вот когда через АПИ компилятора что ни будь, сделаешь, возвращайся.
WH>Поделишься впечатлениями.
WH>А пока поверь на слово что это ад.

Я использовал Clang ASTMatcher — никакого ада.

_>>Тот же D. )

WH>Ты издеваешься? D рядом не стоял.

С чем? С Nemerle? Почему?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.