Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>2. Это узко-специализированный библиотечный код — пишется намного реже чем используется. Тот же hi_octane, на которого ты ссылаешься, судя по всему сам форматирование не писал, а использовал.
Правильно! Превратим его в говнокод по этому. А, потом пойдем на форум объяснять тем кто знает оба языка почему неизвестный тебе язык не нужен.
EP>3. В Nemerle мета-программирование действительно удобнее — я с этим и не спорил.
А, что еще есть в С++-то, кроме метапрограммирования на шаблонах?
Лямбы? Дык они кривее тех что в Шарпе. Ну, разве что оптимизирующие компиляторы для С++ хороши.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>>>А это может использоваться для определения грамматики syntax extensions? WH>>Чего?
EP>Syntax extensions: EP>
Это и есть синтаксическое расширение тут ПМ не нужен. А, вот внутри макросов ПМ с использованием квази-цитат постоянно используется.
В Найтре будет ИМ по произвольному языку (для которого имеется грамматика).
EP>Конечно не понятно, в этой под-ветке речь про D vs Nemerle, а ты приводишь пример Clang AST Matcher vs Nemerle
Но в Ди вообще нет ни ПМ, ни квази-цитирования. Есть только какие-то убогие строковые макросы. Тут просто нечего сравнивать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Дык на него реально только взглянули. Толп переходящих с С++ на Раст я не наблюдаю.
А на какой новый язык вообще есть "толпы переходящих"? Вон даже свифт от эпла — тут и бред и бабло, а всё равно не бегут всё переписывать. На скале или го тоже достаточно пишут, правда ты считаешь, что они не взлетели.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>print это не лишнее, а обход лишних конкатенаций и конвертаций, плюс точка кастомизации — в ней могут быть разные перегрузки для разных типов. Можно без неё, но это соответственно будет менее гибко.
Ну, дык с тем что остальное является банальной грязью ты спорить не будешь? Полный аналог твоего кода (со всеми оптимизациями во время компиляции) выполняет вот такой код:
А, еще мы умеем списки с разделителями раскручивать:
$"$func_name(..$args)"
В результате вместо "..$args" будет сгенерирован список с разделителем ",". Если надо можно и разделитель задать и функцию преобразования элемента. В итоге получается декларативный язык генерации текста.
EP>process_format — это аналог $ из Nemerle, можно кстати $ и использовать (многие компиляторы это поддерживают). То есть получается: EP>
EP>auto result = $("val = $value$, cnt = $counter$, ch = $character$, again v=$value$;\n", counter, character, value);
EP>
Лишним здесь является только захват, да. Но это практически бесплатный код. Да и при отсутствии необходимого захвата, либо при захвате лишнего, можно выдавать ошибку с пояснением каким он должен быть.
А, что же твой крутой язык не позволил избавиться от явной передачи параметров, да и скобки зачем нужны?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
EP>>2. Это узко-специализированный библиотечный код — пишется намного реже чем используется. Тот же hi_octane, на которого ты ссылаешься, судя по всему сам форматирование не писал, а использовал. VD>Правильно! Превратим его в говнокод по этому.
Нет, сделаем то что доступно на этом мейнстрим языке.
VD>А, потом пойдем на форум объяснять тем кто знает оба языка почему неизвестный тебе язык не нужен.
То что неизвестный — это ты придумал. Не нужен он (конкретно мне) совершенно по другой причине — я описал выше.
EP>>3. В Nemerle мета-программирование действительно удобнее — я с этим и не спорил. VD>А, что еще есть в С++-то, кроме метапрограммирования на шаблонах?
Например обобщённый код (generic programming).
VD>Лямбы? Дык они кривее тех что в Шарпе.
В C# целый зоопарк замыканий (три штуки?), каждые из которых со своими проблемами "особенностями". Плюс собираются ввести ещё одни замыкания, опять-таки со своими "особенностями"
VD>Ну, разве что оптимизирующие компиляторы для С++ хороши.
Они хороши в первую очередь за счёт особенностей самого языка. Оптимизировать C# код до такого же уровня намного сложнее, так как там сплошное type-erasure и индирекции by-design.
Я это знаю
VD>А, еще мы умеем списки с разделителями раскручивать: VD>
VD>$"$func_name(..$args)"
VD>
VD>В результате вместо "..$args" будет сгенерирован список с разделителем ",". Если надо можно и разделитель задать и функцию преобразования элемента. В итоге получается декларативный язык генерации текста.
Это как раз без проблем реализуется.
EP>>process_format — это аналог $ из Nemerle, можно кстати $ и использовать (многие компиляторы это поддерживают). То есть получается: EP>>
EP>>auto result = $("val = $value$, cnt = $counter$, ch = $character$, again v=$value$;\n", counter, character, value);
EP>>
Лишним здесь является только захват, да. Но это практически бесплатный код. Да и при отсутствии необходимого захвата, либо при захвате лишнего, можно выдавать ошибку с пояснением каким он должен быть. VD>А, что же твой крутой язык не позволил избавиться от явной передачи параметров,
Я об этом уже несколько раз сказал — да, захват здесь лишний
VD>да и скобки зачем нужны?
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Это как раз без проблем реализуется.
Да, у вас все без проблем, только с пресиданиями. А, спросишь — "Что приседаете то?". В ответ — "А, мы привыкли и совсем не замечаем.".
EP>Нашёл к чему придраться
Нашел. Потому что это грязь. И эта грязь только на поверхности.
Если копнуть дальше, то окажется, что наша макра выдает отличную диагностику ошибок, предоставляет автодополнение при вводе внутри сплайсов и т.п., а ваша тормозит при компиляции и выдает невнятное диагностику. Я это не проверял, но уверен, что так оно и есть, так как во всех остальных случаях так и было. Потом еще окажется, что эта мета-фунация работате только при определенной фазе луны, на определнном компиляторе, так как VC++ делали криворукие из МС и т.п.
И это еще при споре с С++-никами. С Шарповодами все еще смешнее. Ведь немерл он суперсет Шарпа. Но и у них столько же аргументированных отамазок находится.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
VD>Это и есть синтаксическое расширение тут ПМ не нужен.
Почему не нужен? Если можно описать это в виде PM, а не через убогие запятые.
EP>>Конечно не понятно, в этой под-ветке речь про D vs Nemerle, а ты приводишь пример Clang AST Matcher vs Nemerle VD>Но в Ди вообще нет ни ПМ, ни квази-цитирования. Есть только какие-то убогие строковые макросы. Тут просто нечего сравнивать.
Помимо строковых макросов есть мощные шаблоны которых нет в Nemerle, и поэтому макросы нужны намного реже чем в Nemerle.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>Нет, сделаем то что доступно на этом мейнстрим языке.
Ага. Не пользоваться же тем что не пропиарили во все щели?
EP>То что неизвестный — это ты придумал. Не нужен он (конкретно мне) совершенно по другой причине — я описал выше.
Это я вижу. Ты потратил тучу времени на то чтобы обосновать зачем тебе что-то не нужно. При этом ты даже не попробовал это что-то. А ведь это время можно было потрать как раз на знакомство с новым. Ну, как новым? Всего десятилетним от роду.
EP>Например обобщённый код (generic programming).
Если отбросить метапрограммирование, то не очень то там много преимуществ по сравнению с дженериками дотнета. Разве что иногда можно получить более оптимальный код и операторы использовать. Но за это приходится платить тормозами при компиляции и отсутствием бинарного формата (попробуй положить шаблон в бинарную библиотеку).
VD>>Лямбы? Дык они кривее тех что в Шарпе.
EP>В C# целый зоопарк замыканий (три штуки?), каждые из которых со своими проблемами "особенностями". Плюс собираются ввести ещё одни замыкания, опять-таки со своими "особенностями"
Ну, да. Давай ругать то, что у себя не имеешь. Это удобно. И это намного более выразительно и кратко.
VD>>Ну, разве что оптимизирующие компиляторы для С++ хороши.
EP>Они хороши в первую очередь за счёт особенностей самого языка. Оптимизировать C# код до такого же уровня намного сложнее, так как там сплошное type-erasure и индирекции by-design.
Не натягивай сову на глобус. "type erasure" — это термин из Явы. В дотнете его нет. Места затрудняющие оптимизации есть, но их не много. Те же лябды не инлайнят не потому что нельзя, а потому что руки до оптимизаций подобного рода не доходят. Дотнет все же далет одна команда в Рэдмонде, а С++-ом занимаются вот уже 30 лет десятки команд по всему свету.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
EP>>Это как раз без проблем реализуется. VD>Да, у вас все без проблем, только с пресиданиями. А, спросишь — "Что приседаете то?". В ответ — "А, мы привыкли и совсем не замечаем.".
Привыкли, постоянно замечаем. Но альтернативы нет.
VD>Если копнуть дальше, то окажется, что наша макра [...] предоставляет автодополнение при вводе внутри сплайсов и т.п.,
Я про это и сказал выше: "Там ЕМНИП даже встроена автоматическая интеграция EDSL'ей в IDE."
VD>Потом еще окажется, что эта мета-фунация работате только при определенной фазе луны, на определнном компиляторе, так как VC++ делали криворукие из МС и т.п.
Под Windows работают и GCC и Clang — и в общем их количество целевых платформ несравнимо больше чем у Nemerle.
MSVC действительно позади, но в последние лет пять старается догонять быстрее чем это было раньше.
VD>И это еще при споре с С++-никами. С Шарповодами все еще смешнее. Ведь немерл он суперсет Шарпа. Но и у них столько же аргументированных отамазок находится.
Это не отмазки, а демонстрации того что возможно в C++, и в каких пределах, в ответ на фичи-метрию начатую другой стороной.
Здравствуйте, Evgeny.Panasyuk, Вы писали:
EP>"хотя бы что-то" — это возможность метапрограммирования времени компиляции, доступная в единственном из мэйнстрим языков, пусть и автогеном.
Ну, дык за чем дело стало? Бросайте этот мэйнстрим и давайте провинем новый. Будет большое комьюнити, решим все проблемы. А, обосновывать кривые решения тем что они уже проскочили в мйнстрим — это значит вставлять палки в колеса прогресса.
EP>А я знаю что в Nemerle это и проще и удобнее в использовании Там ЕМНИП даже встроена автоматическая интеграция EDSL'ей в IDE.
Ну, вот проблема в том, что есть довольно много не глупых людей которые знают, что Немерл (подставить сюда не мейнстрим-язык по вкусу) проще, удобне и круче, но дальше этого знания мы не пойдем, так как (подставить сюда длинный список отмазко).
Шарп, потихонечку впитывает идеи немерла, но делает это по чайной ложке в 3 года. Такими темпами, до Немерла он дорастет лет эдак через 15. И не факт, что и это случится. Но тогда его с радостью примут миллионы поклонников мейнстрима.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Это я вижу. Ты потратил тучу времени на то чтобы обосновать зачем тебе что-то не нужно. При этом ты даже не попробовал это что-то. А ведь это время можно было потрать как раз на знакомство с новым. Ну, как новым? Всего десятилетним от роду.
Перестань. Евгений назвал единственную объективную причину, по которой нельзя использовать немерле.
Это .НЕТ.
Он знаешь ли не для всех задач приемлем.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, alex_public, Вы писали:
_>Да, и я так и не понял, там циклы реализованы через рекурсивные лямбды или же рекурсивные локальные функции?
Через рекурсивные локальные функции. И лямбды тоже реализованы через локальные функции. Лябдыа это нечто вроде макроса который придумывает уникальное имя для локальной функции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, DarkEld3r, Вы писали:
DE>Ну и мне всё-таки интересно почему ты не считаешь раст претендующим на нишу "системного языка более простого чем С++".
Дык где он более простой то? Более просто — это Шарп или Немерле. Ну, Ди еще можно вспомнить, Го. А Раст он совсем не простой. И системный он с натяжкой.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, alex_public, Вы писали:
_>Я же вроде привёл полный список — разве не видно? ) Ну например половину libuv занимает ввод-вывод, к которому TPL вообще никакого отношения не имеет. https://msdn.microsoft.com/ru-ru/library/system.threading.tasks.taskfactory.fromasync%28v=vs.110%29.aspx
WH>>Учитывая, что мы может послать любой указатель любому актору... _>Угу) А ещё мы можем написать так: *((int*)(0)). Это тоже что-то доказывает? )
Такое нужно специально писать.
А указатель можно случайно передать.
_>Да, я показывал разные примеры, но так и не увидел чем варианты из Nemerle лучше.
Количеством букв.
WH>>В немерле на них все циклы реализованы. _>Это должно как-то отвечать на вопрос о быстродействие рекурсивных лямбд в Немерле? )
Да.
_>
Здравствуйте, DarkEld3r, Вы писали:
DE>Ну и мне всё-таки интересно почему ты не считаешь раст претендующим на нишу "системного языка более простого чем С++".
Слишком много навязывает.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, DarkEld3r, Вы писали:
VD>>Дык на него реально только взглянули. Толп переходящих с С++ на Раст я не наблюдаю. DE>А на какой новый язык вообще есть "толпы переходящих"? Вон даже свифт от эпла — тут и бред и бабло, а всё равно не бегут всё переписывать. На скале или го тоже достаточно пишут, правда ты считаешь, что они не взлетели.
Я не эпловод, но думаю, что на Свифт со временем переползут. А, вообще, я о том и гворю, что без бабала и пиара никто переползать не будет.
На Шарп переползли. На Яву — тоже. В случае ЖабаСкрипта — не было выбора.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, gandjustas, Вы писали:
G>Ты, как минимум, сильно преувеличиваешь. Можешь привести пример, где nemerle повысит продуктивность хотя бы в 5 раз? То есть для одной и той же задачи код на nemerle будет в 5 раз короче кода на C#.
Любой нетривиальный match. Это так, для простоты изложения. А, еще есть куча вкусностей в конце которых кодогенерация на макросах.
Такие мелочи как опертатор безопасного доступа obj?.field и $-строки уже планируются в следующую версию C#. С чего бы, если шарп и так крут? Паттерн матчинг тоже планируется, но уже через несколько лет. О квази-цитировании и макросах пока и речи не идет. Дорастут лет эдак чрез 10-15.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.