Re[18]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.07.15 23:54
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>2. Это узко-специализированный библиотечный код — пишется намного реже чем используется. Тот же hi_octane, на которого ты ссылаешься, судя по всему сам форматирование не писал, а использовал.


Правильно! Превратим его в говнокод по этому. А, потом пойдем на форум объяснять тем кто знает оба языка почему неизвестный тебе язык не нужен.

EP>3. В Nemerle мета-программирование действительно удобнее — я с этим и не спорил.


А, что еще есть в С++-то, кроме метапрограммирования на шаблонах?

Лямбы? Дык они кривее тех что в Шарпе. Ну, разве что оптимизирующие компиляторы для С++ хороши.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.07.15 23:59
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>>>А это может использоваться для определения грамматики syntax extensions?

WH>>Чего?

EP>Syntax extensions:

EP>
EP>macro while_macro (cond, body) 
EP>syntax ("while", "(", cond, ")", body)
EP>


Это и есть синтаксическое расширение тут ПМ не нужен. А, вот внутри макросов ПМ с использованием квази-цитат постоянно используется.

В Найтре будет ИМ по произвольному языку (для которого имеется грамматика).

EP>Конечно не понятно, в этой под-ветке речь про D vs Nemerle, а ты приводишь пример Clang AST Matcher vs Nemerle


Но в Ди вообще нет ни ПМ, ни квази-цитирования. Есть только какие-то убогие строковые макросы. Тут просто нечего сравнивать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: За счет чего выстреливают языки?
От: DarkEld3r  
Дата: 14.07.15 00:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Дык на него реально только взглянули. Толп переходящих с С++ на Раст я не наблюдаю.

А на какой новый язык вообще есть "толпы переходящих"? Вон даже свифт от эпла — тут и бред и бабло, а всё равно не бегут всё переписывать. На скале или го тоже достаточно пишут, правда ты считаешь, что они не взлетели.
Re[22]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:06
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>print это не лишнее, а обход лишних конкатенаций и конвертаций, плюс точка кастомизации — в ней могут быть разные перегрузки для разных типов. Можно без неё, но это соответственно будет менее гибко.


Ну, дык с тем что остальное является банальной грязью ты спорить не будешь? Полный аналог твоего кода (со всеми оптимизациями во время компиляции) выполняет вот такой код:
$"val = $value, cnt = $counter, ch = $character, again v=$value;\n"

А, еще мы умеем списки с разделителями раскручивать:
$"$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>
Лишним здесь является только захват, да. Но это практически бесплатный код. Да и при отсутствии необходимого захвата, либо при захвате лишнего, можно выдавать ошибку с пояснением каким он должен быть.


А, что же твой крутой язык не позволил избавиться от явной передачи параметров, да и скобки зачем нужны?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[19]: За счет чего выстреливают языки?
От: Evgeny.Panasyuk Россия  
Дата: 14.07.15 00:08
Оценка:
Здравствуйте, VladD2, Вы писали:

EP>>2. Это узко-специализированный библиотечный код — пишется намного реже чем используется. Тот же hi_octane, на которого ты ссылаешься, судя по всему сам форматирование не писал, а использовал.

VD>Правильно! Превратим его в говнокод по этому.

Нет, сделаем то что доступно на этом мейнстрим языке.

VD>А, потом пойдем на форум объяснять тем кто знает оба языка почему неизвестный тебе язык не нужен.


То что неизвестный — это ты придумал. Не нужен он (конкретно мне) совершенно по другой причине — я описал выше.

EP>>3. В Nemerle мета-программирование действительно удобнее — я с этим и не спорил.

VD>А, что еще есть в С++-то, кроме метапрограммирования на шаблонах?

Например обобщённый код (generic programming).

VD>Лямбы? Дык они кривее тех что в Шарпе.


В C# целый зоопарк замыканий (три штуки?), каждые из которых со своими проблемами "особенностями". Плюс собираются ввести ещё одни замыкания, опять-таки со своими "особенностями"

VD>Ну, разве что оптимизирующие компиляторы для С++ хороши.


Они хороши в первую очередь за счёт особенностей самого языка. Оптимизировать C# код до такого же уровня намного сложнее, так как там сплошное type-erasure и индирекции by-design.
Re[23]: За счет чего выстреливают языки?
От: Evgeny.Panasyuk Россия  
Дата: 14.07.15 00:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Полный аналог твоего кода (со всеми оптимизациями во время компиляции) выполняет вот такой код:

VD>
VD>$"val = $value, cnt = $counter, ch = $character, again v=$value;\n"
VD>


Я это знаю

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>да и скобки зачем нужны?


Нашёл к чему придраться
Re[24]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:21
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Это как раз без проблем реализуется.


Да, у вас все без проблем, только с пресиданиями. А, спросишь — "Что приседаете то?". В ответ — "А, мы привыкли и совсем не замечаем.".

EP>Нашёл к чему придраться


Нашел. Потому что это грязь. И эта грязь только на поверхности.

Если копнуть дальше, то окажется, что наша макра выдает отличную диагностику ошибок, предоставляет автодополнение при вводе внутри сплайсов и т.п., а ваша тормозит при компиляции и выдает невнятное диагностику. Я это не проверял, но уверен, что так оно и есть, так как во всех остальных случаях так и было. Потом еще окажется, что эта мета-фунация работате только при определенной фазе луны, на определнном компиляторе, так как VC++ делали криворукие из МС и т.п.

И это еще при споре с С++-никами. С Шарповодами все еще смешнее. Ведь немерл он суперсет Шарпа. Но и у них столько же аргументированных отамазок находится.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: За счет чего выстреливают языки?
От: Evgeny.Panasyuk Россия  
Дата: 14.07.15 00:22
Оценка:
Здравствуйте, VladD2, Вы писали:

EP>>Syntax extensions:

EP>>
EP>>macro while_macro (cond, body) 
EP>>syntax ("while", "(", cond, ")", body)
EP>>

VD>Это и есть синтаксическое расширение тут ПМ не нужен.

Почему не нужен? Если можно описать это в виде PM, а не через убогие запятые.

EP>>Конечно не понятно, в этой под-ветке речь про D vs Nemerle, а ты приводишь пример Clang AST Matcher vs Nemerle

VD>Но в Ди вообще нет ни ПМ, ни квази-цитирования. Есть только какие-то убогие строковые макросы. Тут просто нечего сравнивать.

Помимо строковых макросов есть мощные шаблоны которых нет в Nemerle, и поэтому макросы нужны намного реже чем в Nemerle.
Re[20]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:29
Оценка: :)
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>Нет, сделаем то что доступно на этом мейнстрим языке.


Ага. Не пользоваться же тем что не пропиарили во все щели?

EP>То что неизвестный — это ты придумал. Не нужен он (конкретно мне) совершенно по другой причине — я описал выше.


Это я вижу. Ты потратил тучу времени на то чтобы обосновать зачем тебе что-то не нужно. При этом ты даже не попробовал это что-то. А ведь это время можно было потрать как раз на знакомство с новым. Ну, как новым? Всего десятилетним от роду.

EP>Например обобщённый код (generic programming).


Если отбросить метапрограммирование, то не очень то там много преимуществ по сравнению с дженериками дотнета. Разве что иногда можно получить более оптимальный код и операторы использовать. Но за это приходится платить тормозами при компиляции и отсутствием бинарного формата (попробуй положить шаблон в бинарную библиотеку).

VD>>Лямбы? Дык они кривее тех что в Шарпе.


EP>В C# целый зоопарк замыканий (три штуки?), каждые из которых со своими проблемами "особенностями". Плюс собираются ввести ещё одни замыкания, опять-таки со своими "особенностями"


Ну, да. Давай ругать то, что у себя не имеешь. Это удобно. И это намного более выразительно и кратко.

VD>>Ну, разве что оптимизирующие компиляторы для С++ хороши.


EP>Они хороши в первую очередь за счёт особенностей самого языка. Оптимизировать C# код до такого же уровня намного сложнее, так как там сплошное type-erasure и индирекции by-design.


Не натягивай сову на глобус. "type erasure" — это термин из Явы. В дотнете его нет. Места затрудняющие оптимизации есть, но их не много. Те же лябды не инлайнят не потому что нельзя, а потому что руки до оптимизаций подобного рода не доходят. Дотнет все же далет одна команда в Рэдмонде, а С++-ом занимаются вот уже 30 лет десятки команд по всему свету.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[25]: За счет чего выстреливают языки?
От: Evgeny.Panasyuk Россия  
Дата: 14.07.15 00:33
Оценка: +1
Здравствуйте, VladD2, Вы писали:

EP>>Это как раз без проблем реализуется.

VD>Да, у вас все без проблем, только с пресиданиями. А, спросишь — "Что приседаете то?". В ответ — "А, мы привыкли и совсем не замечаем.".

Привыкли, постоянно замечаем. Но альтернативы нет.

VD>Если копнуть дальше, то окажется, что наша макра [...] предоставляет автодополнение при вводе внутри сплайсов и т.п.,


Я про это и сказал выше: "Там ЕМНИП даже встроена автоматическая интеграция EDSL'ей в IDE."

VD>Потом еще окажется, что эта мета-фунация работате только при определенной фазе луны, на определнном компиляторе, так как VC++ делали криворукие из МС и т.п.


Под Windows работают и GCC и Clang — и в общем их количество целевых платформ несравнимо больше чем у Nemerle.
MSVC действительно позади, но в последние лет пять старается догонять быстрее чем это было раньше.

VD>И это еще при споре с С++-никами. С Шарповодами все еще смешнее. Ведь немерл он суперсет Шарпа. Но и у них столько же аргументированных отамазок находится.


Это не отмазки, а демонстрации того что возможно в C++, и в каких пределах, в ответ на фичи-метрию начатую другой стороной.
Re[18]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:34
Оценка:
Здравствуйте, Evgeny.Panasyuk, Вы писали:

EP>"хотя бы что-то" — это возможность метапрограммирования времени компиляции, доступная в единственном из мэйнстрим языков, пусть и автогеном.


Ну, дык за чем дело стало? Бросайте этот мэйнстрим и давайте провинем новый. Будет большое комьюнити, решим все проблемы. А, обосновывать кривые решения тем что они уже проскочили в мйнстрим — это значит вставлять палки в колеса прогресса.

EP>А я знаю что в Nemerle это и проще и удобнее в использовании Там ЕМНИП даже встроена автоматическая интеграция EDSL'ей в IDE.


Ну, вот проблема в том, что есть довольно много не глупых людей которые знают, что Немерл (подставить сюда не мейнстрим-язык по вкусу) проще, удобне и круче, но дальше этого знания мы не пойдем, так как (подставить сюда длинный список отмазко).

Шарп, потихонечку впитывает идеи немерла, но делает это по чайной ложке в 3 года. Такими темпами, до Немерла он дорастет лет эдак через 15. И не факт, что и это случится. Но тогда его с радостью примут миллионы поклонников мейнстрима.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[20]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:42
Оценка:
Здравствуйте, alex_public, Вы писали:

WH>>
WH>>            <H2 $unless (events.IsEmpty())>События</H2>
WH>>            <ol $unless (events.IsEmpty())>
WH>>              <li $foreach (e in events)>$(e.Name) : $(e.EventHandlerType)</li>
WH>>            </ol>
WH>>


_>Это надо уже на новом стандарте писать, с constexpr строками в полный рост. ))) Вполне реализуемо, но на готовые библиотечки я не натыкался. )


А, я не немерле за пару верчеров сбацал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[21]: За счет чего выстреливают языки?
От: WolfHound  
Дата: 14.07.15 00:43
Оценка: +4
Здравствуйте, VladD2, Вы писали:

VD>Это я вижу. Ты потратил тучу времени на то чтобы обосновать зачем тебе что-то не нужно. При этом ты даже не попробовал это что-то. А ведь это время можно было потрать как раз на знакомство с новым. Ну, как новым? Всего десятилетним от роду.

Перестань. Евгений назвал единственную объективную причину, по которой нельзя использовать немерле.
Это .НЕТ.
Он знаешь ли не для всех задач приемлем.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[20]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:43
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Ну это ты не заметил. ))) А все "нативщики" последний год поглядывали на Rust с тайной надеждой. )))


Ага. На Да уже лет 10 поглядывают. На раст тоже будут поглядывать.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:46
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Да, и я так и не понял, там циклы реализованы через рекурсивные лямбды или же рекурсивные локальные функции?


Через рекурсивные локальные функции. И лямбды тоже реализованы через локальные функции. Лябдыа это нечто вроде макроса который придумывает уникальное имя для локальной функции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:48
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>Ну и мне всё-таки интересно почему ты не считаешь раст претендующим на нишу "системного языка более простого чем С++".


Дык где он более простой то? Более просто — это Шарп или Немерле. Ну, Ди еще можно вспомнить, Го. А Раст он совсем не простой. И системный он с натяжкой.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[22]: За счет чего выстреливают языки?
От: WolfHound  
Дата: 14.07.15 00:48
Оценка:
Здравствуйте, 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>>В немерле на них все циклы реализованы.

_>Это должно как-то отвечать на вопрос о быстродействие рекурсивных лямбд в Немерле? )
Да.

_>
_>struct{uint64_t operator()(uint64_t n) {return n==1?1:n*operator()(n-1);}} fac;
_>cout<<fac(5)<<endl;
_>

Мрак.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[22]: За счет чего выстреливают языки?
От: WolfHound  
Дата: 14.07.15 00:48
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

DE>Ну и мне всё-таки интересно почему ты не считаешь раст претендующим на нишу "системного языка более простого чем С++".

Слишком много навязывает.
... << RSDN@Home 1.2.0 alpha 5 rev. 62>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[15]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:52
Оценка:
Здравствуйте, DarkEld3r, Вы писали:

VD>>Дык на него реально только взглянули. Толп переходящих с С++ на Раст я не наблюдаю.

DE>А на какой новый язык вообще есть "толпы переходящих"? Вон даже свифт от эпла — тут и бред и бабло, а всё равно не бегут всё переписывать. На скале или го тоже достаточно пишут, правда ты считаешь, что они не взлетели.

Я не эпловод, но думаю, что на Свифт со временем переползут. А, вообще, я о том и гворю, что без бабала и пиара никто переползать не будет.

На Шарп переползли. На Яву — тоже. В случае ЖабаСкрипта — не было выбора.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: За счет чего выстреливают языки?
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.07.15 00:58
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Ты, как минимум, сильно преувеличиваешь. Можешь привести пример, где nemerle повысит продуктивность хотя бы в 5 раз? То есть для одной и той же задачи код на nemerle будет в 5 раз короче кода на C#.


Любой нетривиальный match. Это так, для простоты изложения. А, еще есть куча вкусностей в конце которых кодогенерация на макросах.

Такие мелочи как опертатор безопасного доступа obj?.field и $-строки уже планируются в следующую версию C#. С чего бы, если шарп и так крут? Паттерн матчинг тоже планируется, но уже через несколько лет. О квази-цитировании и макросах пока и речи не идет. Дорастут лет эдак чрез 10-15.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.