Синтаксический сахар или C++ vs. Nemerle :)
От: Чистяков Влад aka VladD2 Российская Империя www.nemerle.org
Дата: 24.05.06 03:29
Оценка: 320 (9) -5 :))) :))) :)
Статья:
Синтаксический сахар или C++ vs. Nemerle :)
Автор(ы): Чистяков Влад aka VladD2
Дата: 24.05.2006
Данная статья явилось плодом размышлений автора над фразами то и дело произносимыми в отношении C++ «Зачем вводить в язык то, что реализуется библиотекой?» и «Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек». Эта статья является сравнением того как эти фразы реализуются в языке Nemerle и чем эта реализация отличается от того что сделано в C++.


Авторы:
Чистяков Влад aka VladD2

Аннотация:
Данная статья явилось плодом размышлений автора над фразами то и дело произносимыми в отношении C++ <Зачем вводить в язык то, что реализуется библиотекой?> и <Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек>. Эта статья является сравнением того как эти фразы реализуются в языке Nemerle и чем эта реализация отличается от того что сделано в C++.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 24.05.06 09:01
Оценка: +6
Здравствуйте, Чистяков Влад aka VladD2, Вы писали:

ЧВA>Данная статья явилось плодом размышлений автора над фразами то и дело произносимыми в отношении C++ <Зачем вводить в язык то, что реализуется библиотекой?> и <Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек>. Эта статья является сравнением того как эти фразы реализуются в языке Nemerle и чем эта реализация отличается от того что сделано в C++.


Влад, вот скажи мне, откуда такая "любовь" к C++? Ведь это язык, только коммерческая эксплуатация которого идет уже двадцать лет, а начал он создаваться еще лет на пять раньше. Какой смысл сравнивать его с только что появившимися на свет языками, в которых на генетическом уровне заложен опыт (в том числе и негативный) C++ и прочих?

Более того, ведь C++ сейчас даже не самый популярный язык программирования. Почему бы не взять Java? В Java ведь не с меньшей неохотой изменяют сам язык, а вокруг Java сейчас сформировано огромное количество библиотек. Или еще более молодой, но уже популярный C#?

Я не хочу порождать очередной флейм по обсуждению превосходства Nemerle над C++. Я хочу понять, почему C++ (а не Java, не Eiffel, не Smalltalk, ни Lisp, ни Visual Basic, you name it) является такой раздражающей красной тряпкой?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: FR  
Дата: 24.05.06 10:06
Оценка: :))) :))) :))) :))) :))) :))
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Чистяков Влад aka VladD2, Вы писали:


ЧВA>>Данная статья явилось плодом размышлений автора над фразами то и дело произносимыми в отношении C++ <Зачем вводить в язык то, что реализуется библиотекой?> и <Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек>. Эта статья является сравнением того как эти фразы реализуются в языке Nemerle и чем эта реализация отличается от того что сделано в C++.


E>Влад, вот скажи мне, откуда такая "любовь" к C++? Ведь это язык, только коммерческая эксплуатация которого идет уже двадцать лет, а начал он создаваться еще лет на пять раньше. Какой смысл сравнивать его с только что появившимися на свет языками, в которых на генетическом уровне заложен опыт (в том числе и негативный) C++ и прочих?


Это "комплекс эмигранта"
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: Андрей Хропов Россия  
Дата: 24.05.06 10:44
Оценка: +3
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Чистяков Влад aka VladD2, Вы писали:


ЧВA>>Данная статья явилось плодом размышлений автора над фразами то и дело произносимыми в отношении C++ <Зачем вводить в язык то, что реализуется библиотекой?> и <Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек>. Эта статья является сравнением того как эти фразы реализуются в языке Nemerle и чем эта реализация отличается от того что сделано в C++.


E>Влад, вот скажи мне, откуда такая "любовь" к C++? Ведь это язык, только коммерческая эксплуатация которого идет уже двадцать лет, а начал он создаваться еще лет на пять раньше. Какой смысл сравнивать его с только что появившимися на свет языками, в которых на генетическом уровне заложен опыт (в том числе и негативный) C++ и прочих?


Вот с тем чтобы и показать как учли этот опыт.

E>Более того, ведь C++ сейчас даже не самый популярный язык программирования. Почему бы не взять Java? В Java ведь не с меньшей неохотой изменяют сам язык, а вокруг Java сейчас сформировано огромное количество библиотек. Или еще более молодой, но уже популярный C#?


Дело в том, что Java/C# изначально не рассчитаны на расширение возможностей с помощью метапрограммирования.
В них и нет таких средств.
В то же время в C++ в последнее время как раз активно его (метапрограммирование) используют (boost, особенно boost::lambda), в то же время так как изначально язык на такое применение шаблонов не был рассчитан это происходит достаточно коряво.

E>Я не хочу порождать очередной флейм по обсуждению превосходства Nemerle над C++. Я хочу понять, почему C++ (а не Java, не Eiffel, не Smalltalk, ни Lisp, ни Visual Basic, you name it) является такой раздражающей красной тряпкой?


Из этого списка можно было бы с Lisp только сравнить, наверное, по причинам изложенным выше. Было бы интересно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: Дарней Россия  
Дата: 24.05.06 10:50
Оценка: +2
Здравствуйте, eao197, Вы писали:

E>Влад, вот скажи мне, откуда такая "любовь" к C++?


наверно, потому что это единственный мэйнстримный язык, в котором используют метапрограммирование на уровне языка. Ява и сишарп по этому параметру — не конкуренты.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.05.06 19:26
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, Чистяков Влад aka VladD2, Вы писали:


ЧВA>>Данная статья явилось плодом размышлений автора над фразами то и дело произносимыми в отношении C++ <Зачем вводить в язык то, что реализуется библиотекой?> и <Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек>. Эта статья является сравнением того как эти фразы реализуются в языке Nemerle и чем эта реализация отличается от того что сделано в C++.


E>Влад, вот скажи мне, откуда такая "любовь" к C++?


Я высказываю свою точку зрения по тем вопросам которые кажутся мне интересными.

А ты умудряшся судить о том, что не читал и вообще в глаза не видел.

E> Ведь это язык, только коммерческая эксплуатация которого идет уже двадцать лет, а начал он создаваться еще лет на пять раньше. Какой смысл сравнивать его с только что появившимися на свет языками, в которых на генетическом уровне заложен опыт (в том числе и негативный) C++ и прочих?


Прочти статью — узнашь. Если после прочтения будет, что сказать, то милости просим писать ответнуд статью.

E>Более того, ведь C++ сейчас даже не самый популярный язык программирования. Почему бы не взять Java?

E>...Или еще более молодой, но уже популярный C#?

Потому что Ява и C# не декларировали приципы «Зачем вводить в язык то, что реализуется библиотекой?» и «Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек» обсуждаемые в этой статье. А апологеты С++ постоянно о них упоминают.

E>Я не хочу порождать очередной флейм


Так за чем дело встало? Не порождай.

E> по обсуждению превосходства Nemerle над C++.


А что есть что обсуждать? По-моему все очевидно.

E> Я хочу понять, почему C++ (а не Java, не Eiffel, не Smalltalk, ни Lisp, ни Visual Basic, you name it) является такой раздражающей красной тряпкой?


Вообще, или применительно к этой статье? Если последнее, то я уже ответил.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.05.06 19:26
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Из этого списка можно было бы с Lisp только сравнить, наверное, по причинам изложенным выше. Было бы интересно.


Хорошая идея. Но у меня скил в области Лиспа близок по высоте к плинтусу. Так что это задача для кого-то другого.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: Андрей Хропов Россия  
Дата: 24.05.06 20:37
Оценка:
Здравствуйте, VladD2, Вы писали:

АХ>>Из этого списка можно было бы с Lisp только сравнить, наверное, по причинам изложенным выше. Было бы интересно.


VD>Хорошая идея. Но у меня скил в области Лиспа близок по высоте к плинтусу.

У меня тоже

VD> Так что это задача для кого-то другого.

Ну вот тут
Автор: fionbio
Дата: 12.07.05
человек интересующийся писал, может поможет ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: Синтаксический сахар или C++ vs. Nemerle :)
От: Olegator  
Дата: 24.05.06 20:42
Оценка: +1 -2 :)
Здравствуйте, Чистяков Влад aka VladD2, Вы писали:

ЧВA>Статья:


Не знаю, может быть пример выбран неудачно, может в недоступной части статьи есть объяснение, но... Пример с foreach просто смешон! Ты высказываешь тезис об отсутствии синтаксического сахара в Nemerle и тут же сам опровергаешь его. Мне конструкция с for уже настолько привычна, что вероятность допустить в задании цикла ошибку практически нулевая. Ты же называешь эту конструкцию "свирепой", предлагая взамен другую такую же, чуть короче в байтовом смысле и менее универсальную (что, если я захочу сделать шаг 2?). В чем поинт? Ведь удобство инструмента определяется не этим, верно?
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: WolfHound  
Дата: 24.05.06 20:56
Оценка: +1
Здравствуйте, Olegator, Вы писали:

O>Не знаю, может быть пример выбран неудачно, может в недоступной части статьи есть объяснение, но... Пример с foreach просто смешон! Ты высказываешь тезис об отсутствии синтаксического сахара в Nemerle и тут же сам опровергаешь его.

А в немерле нет конструкции foreach. Как нет и for и while и много чего другого. За то есть макросы которые это все реализуют те весь сахар (а for несомненно тоже сахар) в бибиотеке.
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: Olegator  
Дата: 24.05.06 22:01
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>А в немерле нет конструкции foreach. Как нет и for и while и много чего другого. За то есть макросы которые это все реализуют те весь сахар (а for несомненно тоже сахар) в бибиотеке.


Хмм... Но VladD2 указывал именно foreach как одно из преимуществ.

Аргументы в статье не доказывают преимущества Nemerle как инструмента, а лишь показывают какой-то новый [сомнительный] синтаксис.
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.05.06 22:07
Оценка:
Здравствуйте, Андрей Хропов, Вы писали:

VD>> Так что это задача для кого-то другого.

АХ>Ну вот тут
Автор: fionbio
Дата: 12.07.05
человек интересующийся писал, может поможет ?


Проблема в том, что у Личпарей обычно нулевой скил в области Немерла и нулевое же влечение к дотнету и всем что с ним связано.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 24.05.06 22:07
Оценка: :)
Здравствуйте, Olegator, Вы писали:

O>Здравствуйте, Чистяков Влад aka VladD2, Вы писали:


ЧВA>>Статья:


O>Не знаю, может быть пример выбран неудачно, может в недоступной части статьи есть объяснение, но...


Есть еще один варинт. Ты мог невнимательно прочесть или прочтя не понять о чем идет речь.

O> Пример с foreach просто смешон! Ты высказываешь тезис об отсутствии синтаксического сахара в Nemerle и тут же сам опровергаешь его. Мне конструкция с for уже настолько привычна, что вероятность допустить в задании цикла ошибку практически нулевая.


Я думаю, развивать тему возможности допущения ошики не стоит.

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

O> Ты же называешь эту конструкцию "свирепой", предлагая взамен другую такую же, чуть короче в байтовом смысле и менее универсальную (что, если я захочу сделать шаг 2?). В чем поинт? Ведь удобство инструмента определяется не этим, верно?


Поинт в том, что ты читая про одно зациклился на посторонеей вещи. Причем ты в общем-то не прав и в сделанном тобой выводе по поводу for-а, но обсуждать эту тему значит уйти совсем в сторону от смысла. В общем, подождем пока статья будет выложена целиком, а там поговорим, если конечно, вопросы еще останутся.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: Olegator  
Дата: 24.05.06 22:34
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Есть еще один варинт. Ты мог невнимательно прочесть или прочтя не понять о чем идет речь.


Пропустим.

VD>Речь в статье и примере идет о другом. Речь идет о том, что все варианты перебор равнозначны и один можно выразить через другой. Ну, а зачем эта мысль высказывается можно понять только прочтя статью до конца.


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

Это я всё не придираюсь, это я просто к тому, что пример плохой. Хотя может мысль, которую он должен выражать, правильная. Я не телепат.

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


В статье [пока] довольно мало вещей, чтобы можно было на чём-то зациклиться. И уж поверь, человек, незнакомый с Nemerle, понимает начало так: Nemerle лучше, потому что у него больше возможностей для перебора.

ЗЫ. Зачем такую тему, которую обсуждают на форуме, надо было делать закрытой?
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 24.05.06 23:34
Оценка: +1
Здравствуйте, Olegator, Вы писали:

O>Это я всё не придираюсь, это я просто к тому, что пример плохой. Хотя может мысль, которую он должен выражать, правильная. Я не телепат.


Смысл примера с рекурсией не в его "хорошести", а в том, что без forXXX можно обойтись совсем. Но статья немного о другом и в ней нигде не говорится, что так теперь и надо поступать.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.05.06 03:23
Оценка:
Здравствуйте, VladD2, Вы писали:

E>>Влад, вот скажи мне, откуда такая "любовь" к C++?


VD>Я высказываю свою точку зрения по тем вопросам которые кажутся мне интересными.


Хм. Выглядит это так: "я знаю C++, C# и Nemerle. C# и Nemerle мои любимые языки. C++ отстой. Значит нужно попинать C++."

Спасибо, ответ понятен.

VD>А ты умудряшся судить о том, что не читал и вообще в глаза не видел.


Покажи мне точную цитату, где я что-нибудь из твоей статьи осудил.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: AVC Россия  
Дата: 25.05.06 05:53
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Речь в статье и примере идет о другом. Речь идет о том, что все варианты перебор равнозначны и один можно выразить через другой. Ну, а зачем эта мысль высказывается можно понять только прочтя статью до конца.


Ну хотя бы намекни...

Но существует одно качество, которое нельзя купить, — это надежность. Цена надежности — погоня за крайней простотой. Это цена, которую очень богатому труднее всего заплатить.

Хоар
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 08:55
Оценка:
Здравствуйте, eao197, Вы писали:

E>Хм. Выглядит это так: "я знаю C++, C# и Nemerle. C# и Nemerle мои любимые языки. C++ отстой. Значит нужно попинать C++."


Тебе так хочется видить. А реальность такая. Я заметил интересную вещь и описал ее развернуто. Что касается "любви", то тоже ошибаешся. Я прошел сколу С++, C# и вот сейчас прохожу школу Nemerlr. Каждая мне что-то дала и двинула в перед. Ну, а некоторые сидят на пятой точке и ищут отмазки для того чтобы не отрывать ее от земли.
E>Спасибо, ответ понятен.

E>Покажи мне точную цитату, где я что-нибудь из твоей статьи осудил.


Re: Синтаксический сахар или C++ vs. Nemerle :)
Автор: eao197
Дата: 24.05.06
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 09:34
Оценка:
Здравствуйте, Olegator, Вы писали:

WH>>А в немерле нет конструкции foreach. Как нет и for и while и много чего другого. За то есть макросы которые это все реализуют те весь сахар (а for несомненно тоже сахар) в бибиотеке.


O>Хмм... Но VladD2 указывал именно foreach как одно из преимуществ.


Вот по этомв я и сказал, что нужно читать статью целиком. Возможно ее слишком плохо порезали. Ровно на подходе к проблемной области. Вот и кажется, что рассуждения о каких-то там foreachо-ах.

O>Аргументы в статье не доказывают преимущества Nemerle как инструмента, а лишь показывают какой-то новый [сомнительный] синтаксис.


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

Про сомнительность синтаксиса даже говорить не хочу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: Шахтер Интернет  
Дата: 25.05.06 10:01
Оценка: 86 (8) +3 -3 :))) :))) :))) :))) :))) :))) :))
Здравствуйте, VladD2, Вы писали:

VD>Тебе так хочется видить. А реальность такая. Я заметил интересную вещь и описал ее развернуто. Что касается "любви", то тоже ошибаешся. Я прошел сколу С++, C# и вот сейчас прохожу школу Nemerlr. Каждая мне что-то дала и двинула в перед. Ну, а некоторые сидят на пятой точке и ищут отмазки для того чтобы не отрывать ее от земли.


Боюсь, что ты эту школу не прошел, а был просто отчислен за неуспеваемость.
В XXI век с CCore.
Копай Нео, копай -- летать научишься. © Matrix. Парадоксы
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: WolfHound  
Дата: 25.05.06 10:29
Оценка: :)
Здравствуйте, Шахтер, Вы писали:

Ш>Боюсь, что ты эту школу не прошел, а был просто отчислен за неуспеваемость.

А я прошол?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.05.06 10:36
Оценка:
Здравствуйте, VladD2, Вы писали:

E>>Покажи мне точную цитату, где я что-нибудь из твоей статьи осудил.


VD>Re: Синтаксический сахар или C++ vs. Nemerle :)
Автор: eao197
Дата: 24.05.06


Ты дал ссылку на мое сообщение. Но покажи мне слова, в которых я твою статью хоть как то осуждаю?


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 11:08
Оценка: +1 :)
Здравствуйте, Шахтер, Вы писали:

Ш>Боюсь, что ты эту школу не прошел, а был просто отчислен за неуспеваемость.


Я конечно мог бы ответить тебе той же манетой. Но опускаться до такого уровня не считаю нужным.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 11:23
Оценка:
Здравствуйте, eao197, Вы писали:

E>Ты дал ссылку на мое сообщение. Но покажи мне слова, в которых я твою статью хоть как то осуждаю?


Зачем цитировать все сообщение?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: GlebZ Россия  
Дата: 25.05.06 11:25
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Речь в статье и примере идет о другом. Речь идет о том, что все варианты перебор равнозначны и один можно выразить через другой. Ну, а зачем эта мысль высказывается можно понять только прочтя статью до конца.


Эквивалентность может измеряться по разному. Действительно, если немного подвернуть эти примеры, то можно получить эквивалентные по функциональности подпрограммы. Но можно измерять эквивалентность с помощью генерируемых кодов которые должен выполнять процессор. Числодробилки пока никто не отменял. И тут у меня есть некоторая догадка, что чем больше знает компилятор об обрабатываемых конструктциях, тем больше у него возможностей оптимизации. Ты рассматривал этот вопрос?

И еще:

Так в чем же удача Nemerle-овцев и ошибка C++-ников?

Я не очень то согласен что у C++-ников была какая-то ошибка. Не очень хорошая фраза. В чем ошибка? В том, что С++ ники пользуются побочными эффектами С++? Запретим им пользоваться, то будет лучше?

Мне кажется, в определении того, что должно быть базисом, а что надстройкой.

В условиях конца 80-ых годов, такой проблемы не стояло. По второй эквивалентности(качеству кодов), он обгонял почти все (что тогда можно было назвать нормальным языком). Да и сейчас не последний.


ЗЫ. К сожалению, статью полностью прочитать смогу только вечером(сегодня привезут журнальчик). Поэтому это касается только вступления. Слишком уж резануло
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 12:24
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Эквивалентность может измеряться по разному. Действительно, если немного подвернуть эти примеры, то можно получить эквивалентные по функциональности подпрограммы. Но можно измерять эквивалентность с помощью генерируемых кодов которые должен выполнять процессор. Числодробилки пока никто не отменял. И тут у меня есть некоторая догадка, что чем больше знает компилятор об обрабатываемых конструктциях, тем больше у него возможностей оптимизации. Ты рассматривал этот вопрос?


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

GZ>И еще:

GZ>

GZ>Так в чем же удача Nemerle-овцев и ошибка C++-ников?

GZ>Я не очень то согласен что у C++-ников была какая-то ошибка. Не очень хорошая фраза. В чем ошибка? В том, что С++ ники пользуются побочными эффектами С++? Запретим им пользоваться, то будет лучше?

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

GZ>

GZ>Мне кажется, в определении того, что должно быть базисом, а что надстройкой.

GZ>В условиях конца 80-ых годов, такой проблемы не стояло. По второй эквивалентности(качеству кодов), он обгонял почти все (что тогда можно было назвать нормальным языком). Да и сейчас не последний.

Вопрос качества кода здесь не рассматривается. Так что не будем обсждать то, что первые компиляторы С++ резко проигрывали в скорости С-компиляторам.

GZ>ЗЫ. К сожалению, статью полностью прочитать смогу только вечером(сегодня привезут журнальчик). Поэтому это касается только вступления. Слишком уж резануло


Ну, вот когда прочтешь до конца, то с удовольствием послушаю мнение о статье. А то споры явно уходят в сторону от сути статьи.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.05.06 12:35
Оценка: +1
Здравствуйте, VladD2, Вы писали:

E>>Ты дал ссылку на мое сообщение. Но покажи мне слова, в которых я твою статью хоть как то осуждаю?


VD>Зачем цитировать все сообщение?


Если ты в вопросе о выборе C++ в качестве языка, с которым сравнивается Nemerle обнаружил осуждение собственой статьи, то это очень смахивает на паранойю.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 12:56
Оценка:
Здравствуйте, eao197, Вы писали:

E>Если ты в вопросе о выборе C++ в качестве языка, с которым сравнивается Nemerle обнаружил осуждение собственой статьи, то это очень смахивает на паранойю.


Ты вообще можешь внятно объяснить о чтом тогда было твое сообщение?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 25.05.06 14:03
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ты вообще можешь внятно объяснить о чтом тогда было твое сообщение?


Я спросил, почему ты сравниваешь Nemerle со старым языком C++, а не с более новыми языками, вроде Java.

Но ответ я уже получил.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[10]: Синтаксический сахар или C++ vs. Nemerle :)
От: Kluev  
Дата: 25.05.06 14:50
Оценка: +1
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, VladD2, Вы писали:


VD>>Ты вообще можешь внятно объяснить о чтом тогда было твое сообщение?


E>Я спросил, почему ты сравниваешь Nemerle со старым языком C++, а не с более новыми языками, вроде Java.


Кстати, да. С С++ некорректно сравнивать, у него предназначение другое. И пока никаких альтернатив ему не наблюдается. Несмотря на все накопившиеся проблемы никакой альтернативы нет.
А D?
От: Андрей Хропов Россия  
Дата: 25.05.06 16:30
Оценка: +1
Здравствуйте, Kluev, Вы писали:

K>Кстати, да. С С++ некорректно сравнивать, у него предназначение другое. И пока никаких альтернатив ему не наблюдается. Несмотря на все накопившиеся проблемы никакой альтернативы нет.

А D?
Да, пока он не доделан. Но в принципе?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: А D?
От: Cyberax Марс  
Дата: 25.05.06 17:26
Оценка: +2
Андрей Хропов wrote:
> K>Кстати, да. С С++ некорректно сравнивать, у него предназначение
> другое. И пока никаких альтернатив ему не наблюдается. Несмотря на все
> накопившиеся проблемы никакой альтернативы нет.
> А D?
> Да, пока он не доделан. Но в принципе?
Если доделать, то вполне возможно и будет. Так как задумывался как
замена С++.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 18:15
Оценка: -1
Здравствуйте, Kluev, Вы писали:

K>Кстати, да. С С++ некорректно сравнивать, у него предназначение другое. И пока никаких альтернатив ему не наблюдается. Несмотря на все накопившиеся проблемы никакой альтернативы нет.


Сам я автора не читал но как и весь Советский народ....
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: А D?
От: Андрей Хропов Россия  
Дата: 25.05.06 18:15
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Андрей Хропов wrote:

>> K>Кстати, да. С С++ некорректно сравнивать, у него предназначение
>> другое. И пока никаких альтернатив ему не наблюдается. Несмотря на все
>> накопившиеся проблемы никакой альтернативы нет.
>> А D?
>> Да, пока он не доделан. Но в принципе?
C>Если доделать, то вполне возможно и будет. Так как задумывался как
C>замена С++.
Я то с этим согласен. И считаю, что это было бы good.
Это вопрос к тов. Kluev, который говорит, что никаких альтернатив С++ не наблюдается.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: Воронков Василий Россия  
Дата: 25.05.06 18:28
Оценка:
Здравствуйте, VladD2, Вы писали:

А ты бы высылал полный текст статьи все потенциальным спорщикам
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re: А D?
От: Kluev  
Дата: 25.05.06 18:30
Оценка: 1 (1)
Здравствуйте, Андрей Хропов, Вы писали:

АХ>Здравствуйте, Kluev, Вы писали:


K>>Кстати, да. С С++ некорректно сравнивать, у него предназначение другое. И пока никаких альтернатив ему не наблюдается. Несмотря на все накопившиеся проблемы никакой альтернативы нет.

АХ>А D?
АХ>Да, пока он не доделан. Но в принципе?

Не D не пройдет. Как я понимаю самые главные проблеммы там так и не решены, так сахарком посыпали.

В С++ самый главный недостаток то, что невозможно обеспечить обратную двоичную совместимость м-ду версиями классов. (Виртуальную функцию в dll-класс уже не добавишь без перекомпиляции зависимых от этой dll). Что очень сильно сдерживает развитие билиотек.

Фактически в С++ не добавлять фичи надо, а мусор выкидывать: препроцессор и прочий устаревший стафф.
Re[2]: А D?
От: Kluev  
Дата: 25.05.06 18:38
Оценка: :)
Здравствуйте, Cyberax, Вы писали:

C>Андрей Хропов wrote:

>> K>Кстати, да. С С++ некорректно сравнивать, у него предназначение
>> другое. И пока никаких альтернатив ему не наблюдается. Несмотря на все
>> накопившиеся проблемы никакой альтернативы нет.
>> А D?
>> Да, пока он не доделан. Но в принципе?
C>Если доделать, то вполне возможно и будет. Так как задумывался как
C>замена С++.

Вряд ли, С++ убьет аналогичный низкоуровневый язык в котором будет обеспечена обратная binary compatibility м-ду версиями классов. Тогда будет устранен его единственный недостаток который не позволяет создать стройный framework, т.е. привести зоопарк библиотек к некой общей основе.

Причем добавить это достаточно просто с небольшим оверхедом. Back-end уже есть (за что респект GCC team).

З.Ы. Я периодически начинаю писать и проект у меня лежит (пока только парзер), но мысль об обьеме пугает меня.
Может кто возьмется?
Re[12]: Синтаксический сахар или C++ vs. Nemerle :)
От: Kluev  
Дата: 25.05.06 18:41
Оценка: :)))
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Kluev, Вы писали:


K>>Кстати, да. С С++ некорректно сравнивать, у него предназначение другое. И пока никаких альтернатив ему не наблюдается. Несмотря на все накопившиеся проблемы никакой альтернативы нет.


VD>Сам я автора не читал но как и весь Советский народ....


Автор выложи статью полностью или выпей ...

Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: Olegator  
Дата: 25.05.06 19:21
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

WH>А я прошол?


Прошёл, но у тебя были проблемы другого плана.
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: Olegator  
Дата: 25.05.06 19:33
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>А ты бы высылал полный текст статьи все потенциальным спорщикам


А не легче ли открыть её? Или журнал понесёт страшные убытки?
Re[2]: А D?
От: Андрей Хропов Россия  
Дата: 25.05.06 19:39
Оценка:
Здравствуйте, Kluev, Вы писали:

K>Здравствуйте, Андрей Хропов, Вы писали:


АХ>>Здравствуйте, Kluev, Вы писали:


K>>>Кстати, да. С С++ некорректно сравнивать, у него предназначение другое. И пока никаких альтернатив ему не наблюдается. Несмотря на все накопившиеся проблемы никакой альтернативы нет.

АХ>>А D?
АХ>>Да, пока он не доделан. Но в принципе?

K>Не D не пройдет. Как я понимаю самые главные проблеммы там так и не решены, так сахарком посыпали.

См. Таблица сравнения языков
Автор: VladD2
Дата: 18.05.06

и оригинал здесь.

А так (для меня лично) одно добавление нормального foreach чего стоит!

K>В С++ самый главный недостаток то, что невозможно обеспечить обратную двоичную совместимость м-ду версиями классов. (Виртуальную функцию в dll-класс уже не добавишь без перекомпиляции зависимых от этой dll). Что очень сильно сдерживает развитие билиотек.

Я бы вообще сказал, что это не недостаток языка, а свойство его реализаций
(во многом обусловленное свойствами языка, конечно).

Сейчас даже единого ABI нет (это после стольких-то лет с создания языка!).
Я помню как ковырялся пытаясь из Borland C++ Builder — программы вызывать DLL-ку, скомпилированную VS.
Ничего не вышло!

Но я боюсь, что если делать это по-нормальному, то получится что-то вроде .NET framework , который уже есть.

В общем если за время 20-летнего существования языка этого не сделали, то и вряд ли сделают.

Ну о других недостатках тут уже много говорили.

А вот в D обещают как раз стандартизованный ABI, что сделать проще, так как нет в частности множественного наследования.

K>Фактически в С++ не добавлять фичи надо, а мусор выкидывать: препроцессор и прочий устаревший стафф.

Не, боюсь без препроцессора никуда. Как headerы то вставлять ?
А вот в D это как раз и сделали.
Какой "прочий устаревший стафф"?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: WolfHound  
Дата: 25.05.06 19:43
Оценка:
Здравствуйте, Olegator, Вы писали:

WH>>А я прошол?

O>Прошёл, но у тебя были проблемы другого плана.
А именно?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: Воронков Василий Россия  
Дата: 25.05.06 20:15
Оценка: :)
Здравствуйте, Olegator, Вы писали:

ВВ>>А ты бы высылал полный текст статьи все потенциальным спорщикам

O>А не легче ли открыть её? Или журнал понесёт страшные убытки?

А я знаю? Лично меня вполне удовлетворит "авторская" копия на любой из моих емейлов
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[9]: Синтаксический сахар или C++ vs. Nemerle :)
От: Воронков Василий Россия  
Дата: 25.05.06 20:17
Оценка: :)
Здравствуйте, WolfHound, Вы писали:

O>>Прошёл, но у тебя были проблемы другого плана.

WH>А именно?

Censored.
Не то чтобы я обиделся но такие шутки не вписываются в правила RSDN.
WolfHound.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
А как тебе динамическая загрузка в D?
От: Андрей Хропов Россия  
Дата: 25.05.06 20:23
Оценка:
Здравствуйте, Kluev, Вы писали:

K>Здравствуйте, Андрей Хропов, Вы писали:


K>В С++ самый главный недостаток то, что невозможно обеспечить обратную двоичную совместимость м-ду версиями классов. (Виртуальную функцию в dll-класс уже не добавишь без перекомпиляции зависимых от этой dll). Что очень сильно сдерживает развитие билиотек.


см. проект DDL.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 20:39
Оценка: :)
Здравствуйте, Kluev, Вы писали:

K>Автор выложи статью полностью или выпей ...


Яд который я пью — грузинский коньяк и грузинское вино у нас сегодня отобрали. Так что до тех пор пока он к нам не вернется прийдется влачить существование трезвиника.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 20:39
Оценка: 28 (2)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>А я знаю? Лично меня вполне удовлетворит "авторская" копия на любой из моих емейлов


Ну, такую наглость нельзя не поощрить.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Синтаксический сахар или C++ vs. Nemerle :)
От: Воронков Василий Россия  
Дата: 25.05.06 21:01
Оценка:
Здравствуйте, VladD2, Вы писали:

ВВ>>А я знаю? Лично меня вполне удовлетворит "авторская" копия на любой из моих емейлов

VD>Ну, такую наглость нельзя не поощрить.

Тогда на Vasily.Voronkov#bp.com пожалуйста
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Синтаксический сахар или C++ vs. Nemerle :)
От: Olegator  
Дата: 25.05.06 21:37
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Тогда на Vasily.Voronkov#bp.com пожалуйста


И мне тоже интересно! Если можно, на адрес в профиле.
Re[10]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 21:38
Оценка:
Что же ты ему такое сказал?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 22:03
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Тогда на Vasily.Voronkov#bp.com пожалуйста

Вот туда я пробовал послать. Только получил:

ailed to deliver to 'Vasily.Voronkov@bp.com'
SMTP module(domain bp.com) reports:
message text rejected by mail37.messagelabs.com:
553 information. (#5.7.1)



Короче, приходи 30-го на User Group.

Я туда припру пачку другую журнала и буду халявно раздавать. Для тебя считай журнал зарезервирован.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 22:03
Оценка:
Здравствуйте, Olegator, Вы писали:

O>И мне тоже интересно! Если можно, на адрес в профиле.


Публичного мыла у тебя нет. А чрез форумы атачи не идут. Если москвич, то приходи на User Group 30-го числа. Там будут журналы раздоваться с этой статьей. За одно поглядишь на язык в живую.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: Воронков Василий Россия  
Дата: 25.05.06 22:32
Оценка:
Здравствуйте, VladD2, Вы писали:

VD> Короче, приходи 30-го на User Group.

VD> Я туда припру пачку другую журнала и буду халявно раздавать. Для тебя считай журнал зарезервирован.

Я не смогу по причине нахождения в другой стране
А сюда можно — basil#voronkov.name — ?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: Воронков Василий Россия  
Дата: 25.05.06 22:35
Оценка: :))
Здравствуйте, VladD2, Вы писали:

VD>Что же ты ему такое сказал?


Да ничего такого
Я просто вспомнил о своих проблемах с С++, имевших оттенок... гм.. "романтического" характера...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[12]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 25.05.06 22:47
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Я не смогу по причине нахождения в другой стране

ВВ>А сюда можно — basil#voronkov.name — ?

Это что?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Синтаксический сахар или C++ vs. Nemerle :)
От: Воронков Василий Россия  
Дата: 25.05.06 22:51
Оценка:
Здравствуйте, VladD2, Вы писали:

ВВ>>Я не смогу по причине нахождения в другой стране

ВВ>>А сюда можно — basil#voronkov.name — ?
VD>Это что?

Домен такой. Специально для частных емейлов и хоум-пейджей.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[12]: Синтаксический сахар или C++ vs. Nemerle :)
От: Olegator  
Дата: 25.05.06 23:30
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Публичного мыла у тебя нет. А чрез форумы атачи не идут. Если москвич, то приходи на User Group 30-го числа. Там будут журналы раздоваться с этой статьей. За одно поглядишь на язык в живую.


Тот, что в профиле (olegator@fromru.com), и есть публичный. Или нужен другой?
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 25.05.06 23:44
Оценка: +4
Здравствуйте, Шахтер, Вы писали:

Ш>Боюсь, что ты эту школу не прошел, а был просто отчислен за неуспеваемость.


Фу, как некрасиво
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: А D?
От: Cyberax Марс  
Дата: 26.05.06 06:07
Оценка:
Kluev wrote:
> Вряд ли, С++ убьет аналогичный низкоуровневый язык в котором будет
> обеспечена обратная binary compatibility м-ду версиями классов. Тогда
> будет устранен его единственный недостаток который не позволяет создать
> стройный framework, т.е. привести зоопарк библиотек к некой общей основе.
Ну в D это возможно — они думают над стандартом на ABI. Если хорошо его
продумать — то вполне такое возможно.

Хотя я бы добавил в D еще умные указатели и более тщательно изолировал
бы GC.

> Причем добавить это достаточно просто с небольшим оверхедом. Back-end

> уже есть (за что респект GCC team).
Угу.

> З.Ы. Я периодически начинаю писать и проект у меня лежит (пока только

> парзер), но мысль об обьеме пугает меня.
> Может кто возьмется?
У меня постоянно такая же мысль. Только вот времени нужно ОЧЕНЬ много.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[3]: А D?
От: Cyberax Марс  
Дата: 26.05.06 06:28
Оценка:
Андрей Хропов wrote:
> C>Если доделать, то вполне возможно и будет. Так как задумывался как
> C>замена С++.
> Я то с этим согласен. И считаю, что это было бы good.
> Это вопрос к тов. Kluev, который говорит, что никаких альтернатив С++ не
> наблюдается.
Пока D только в далеком будущем планируется
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[3]: А D?
От: Дарней Россия  
Дата: 26.05.06 06:56
Оценка:
Здравствуйте, Kluev, Вы писали:

K>З.Ы. Я периодически начинаю писать и проект у меня лежит (пока только парзер), но мысль об обьеме пугает меня.


полноценный совместимый со стандартом парсер?

Был кстати еще проект по внедрению полноценной кодогенерации в С++ (в Bell Labs), но он кажется уже загнулся. Хотя если бы они это доделали, то С++ мог бы получить второй шанс
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 26.05.06 08:54
Оценка: :))) :))) :))) :))) :))) :))) :)))
Здравствуйте, VladD2, Вы писали:

VD>Я прошел сколу С++, C# и вот сейчас прохожу школу Nemerlr. Каждая мне что-то дала и двинула в перед.


Суровые школы...
<< Под музыку: Аквариум — Zoom Zoom Zoom >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[4]: А D?
От: Kluev  
Дата: 26.05.06 09:00
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Kluev wrote:

>> Вряд ли, С++ убьет аналогичный низкоуровневый язык в котором будет
>> обеспечена обратная binary compatibility м-ду версиями классов. Тогда
>> будет устранен его единственный недостаток который не позволяет создать
>> стройный framework, т.е. привести зоопарк библиотек к некой общей основе.
C>Ну в D это возможно — они думают над стандартом на ABI. Если хорошо его
C>продумать — то вполне такое возможно.

ABI это не совсем-то. Это просто формат VMT, где она лежит в классе, как кидаются исключения и т.п.
От изменения VMT в базовом классе это не спасет, прийдется все перекомпилировать. Если язык сразу не спроектировать с учетом таких возможностей то потом уже хрен добавишь.

К примеру если в ДЛЛ
struct Foo
{
   int  x;
};

А в том кто ее линкует
void test()
{
   Foo f; // на стеке
}


То добавить переменную в класс Foo без перекомпиляции всего уже не получится
struct Foo
{
   int x;
   int y;
};


Вместо этого прийдется юзать pImpl
struct Foo
{
  struct FooImpl *impl; // impl меняем как хотим.
};


Для переменных pImpl еще спасет хотя это не маленький оверхед: память выделяется динамически по любому, а вот от добавления виртуальной функции уже не спасет. К тому же паттерн pImpl — неудобен.

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


>> Причем добавить это достаточно просто с небольшим оверхедом. Back-end

>> уже есть (за что респект GCC team).
C>Угу.

>> З.Ы. Я периодически начинаю писать и проект у меня лежит (пока только

>> парзер), но мысль об обьеме пугает меня.
>> Может кто возьмется?
C>У меня постоянно такая же мысль. Только вот времени нужно ОЧЕНЬ много.

Сложно сказать.
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: GlebZ Россия  
Дата: 26.05.06 09:07
Оценка: +1
Здравствуйте, VladD2, Вы писали:

GZ>>Эквивалентность может измеряться по разному. Действительно, если немного подвернуть эти примеры, то можно получить эквивалентные по функциональности подпрограммы. Но можно измерять эквивалентность с помощью генерируемых кодов которые должен выполнять процессор. Числодробилки пока никто не отменял. И тут у меня есть некоторая догадка, что чем больше знает компилятор об обрабатываемых конструктциях, тем больше у него возможностей оптимизации. Ты рассматривал этот вопрос?


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

Я тоже уверен в справедливости этой теоремы. Только я также уверен в том, что sql никогда не преобразуется в действительно оптимальный набор команд, поскольку для этого надо решить по крайней мере 2 NP задачи.

GZ>>И еще:

GZ>>

GZ>>Так в чем же удача Nemerle-овцев и ошибка C++-ников?

GZ>>Я не очень то согласен что у C++-ников была какая-то ошибка. Не очень хорошая фраза. В чем ошибка? В том, что С++ ники пользуются побочными эффектами С++? Запретим им пользоваться, то будет лучше?

VD>Очередной пример того когда люди думаю о чем-то своем и пытаются читать что-то еще.

VD>Ошибка в дизайне языка. В том, что декларируя наличие только необходимого в язык встроены конструкции с идентичными возможностями и отличающиеся только синтаксисом.
Ты забыл сказать унаследованные от предыдущих языков. А во вторых я имел ввиду что это можно назвать ошибкой языка, а не ошибкой C++-ников. Иначе ты людей обижаешь на ровном месте.

GZ>>ЗЫ. К сожалению, статью полностью прочитать смогу только вечером(сегодня привезут журнальчик). Поэтому это касается только вступления. Слишком уж резануло

VD>Ну, вот когда прочтешь до конца, то с удовольствием послушаю мнение о статье. А то споры явно уходят в сторону от сути статьи.
Прочел. Не понравилось. Влад, какого фига ты сравниваешь метапрограммирование с макросами макроассемблера? Макроассемблер родил С, С родил С++. Фича оставалось неизменной. Но сейчас развитие языка (с помощью библиотек) идет на основании шаблонов.(за некоторыми исключениями). Твое сравнение не есть корректно. После публикации главы "Расширение синтаксиса" будет нехилый флейм.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[4]: А D?
От: Kluev  
Дата: 26.05.06 09:12
Оценка: 6 (1) +5
Здравствуйте, Дарней, Вы писали:

Д>Здравствуйте, Kluev, Вы писали:


K>>З.Ы. Я периодически начинаю писать и проект у меня лежит (пока только парзер), но мысль об обьеме пугает меня.


Д>полноценный совместимый со стандартом парсер?


Со стандартом, только со своим.

Д>Был кстати еще проект по внедрению полноценной кодогенерации в С++ (в Bell Labs), но он кажется уже загнулся. Хотя если бы они это доделали, то С++ мог бы получить второй шанс


В С++ сахара и так достаточно. Никудышная модульность, препроцессор, крайняя сложность разработки всяких IDE под него. Вот что его губит. Более того дополнительный сложный сахар — он скорее ускоряет его конец чем оттягивает его. Т.к. при существующей инфраструктуре сырец->препроцессор->единица_трансляции->компилер->обьектник->линкер все становится крайне сложным. Должно быть так:

сырцы->parser->(ast файлы для всяких рефактори-броузеров)->компилер->модуль с интерфейсом на борту.

Никаких хидеров и препроцессора. Вместо препроцессора празер должен давать ast в стандартизованном формате, чтобы IDE писатели не мучались.

P/S/ А всякие рассужедния о том что в С++ не хватает сахарка А или сахарка Б — это просто от непонимания сути воопроса и проблем программирования вообще. Продвигая сахарок народ с мухами сражается, не замечая чудовищных глобальных проблем готорые достались от С
Re[5]: А D?
От: WolfHound  
Дата: 26.05.06 09:49
Оценка: +4
Здравствуйте, Kluev, Вы писали:

K>Единственный выход из это ситуации (если хотим жить без перекомпиляции), создавать VMT и разметку классов динмаически, в процессе загрузки. А если сразу это в язык не заложить то потом уже поезд ушел.

В конце концов у тебя получится жаба или .НЕТ... Так зачем мучаться?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: А D?
От: Kluev  
Дата: 26.05.06 10:00
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Kluev, Вы писали:


K>>Единственный выход из это ситуации (если хотим жить без перекомпиляции), создавать VMT и разметку классов динмаически, в процессе загрузки. А если сразу это в язык не заложить то потом уже поезд ушел.

WH>В конце концов у тебя получится жаба или .НЕТ... Так зачем мучаться?

Нет. Ни то и не другое. язык будет такимже низкоуровневым как и С++, просто для классов которые экспортируются из ДЛЛ добавится дополнительный уровень виртуализации.

В С++ чтобы добратся к переменой класс комилер делает:
ptr_to_Field = ptr_to_Object + FieldOffset (где FieldOffset константа)

А нужно сделать чтобы для нектороых классов была возможность FieldOffset сделать переменным (вернее он должен вычислятся в момент инициализации, сразу после загрузки модулей). Тогда изменения в layout-е базовых классов не страшны.

Аналогично для VMT, компилер выбирает функцию из VMT зная ее индекс. Для некоторых классов индекс так же будет динамическим
Re[7]: А D?
От: WolfHound  
Дата: 26.05.06 10:21
Оценка: +2 :)
Здравствуйте, Kluev, Вы писали:

K>Нет. Ни то и не другое. язык будет такимже низкоуровневым как и С++, просто для классов которые экспортируются из ДЛЛ добавится дополнительный уровень виртуализации.

Вот у нас уже появилась метаинформация те один шаг до рефлекшена.
Далие нам понадобится что-то сделать с менеджером памяти... а там глядишь уже и до ГЦ недолеко.
Потом захечется код во время исполнения сгенерить... и вот у нас уже появляется System.Reflection.Emit...
...
Так зачем мучаться?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[6]: А D?
От: FR  
Дата: 26.05.06 10:42
Оценка:
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Kluev, Вы писали:


K>>Единственный выход из это ситуации (если хотим жить без перекомпиляции), создавать VMT и разметку классов динмаически, в процессе загрузки. А если сразу это в язык не заложить то потом уже поезд ушел.

WH>В конце концов у тебя получится жаба или .НЕТ... Так зачем мучаться?

Необязательно, может получится и что-то совсем другое
Re[8]: А D?
От: Cyberax Марс  
Дата: 26.05.06 10:49
Оценка: :)
WolfHound wrote:
> K>Нет. Ни то и не другое. язык будет такимже низкоуровневым как и С++,
> просто для классов которые экспортируются из ДЛЛ добавится
> дополнительный уровень виртуализации.
> Вот у нас уже появилась метаинформация те один шаг до рефлекшена.
Так как бы с этим никто и не спорит — reflection запросто реализуется и
без VM.

> Далие нам понадобится что-то сделать с менеджером памяти... а там

> глядишь уже и до ГЦ недолеко.
Опциональный GC с тщательной проработкой взаимодействия с другими
менеджерами — тоже нормальная вещь. И делается это намного проще, чем в
C++/CLI если не задумываться о совместимости с .NET.

> Потом захечется код во время исполнения сгенерить... и вот у нас уже

> появляется System.Reflection.Emit...
А вот это уже не нужно. Так же как и JIT-компиляция и байт-код.

> Так зачем мучаться?

В .NET слишком много нужного .НЕТ. И добавить это не ломая самых основ —
не получится.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[7]: А D?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 26.05.06 10:52
Оценка:
FR,

K>>>Единственный выход из это ситуации (если хотим жить без перекомпиляции), создавать VMT и разметку классов динмаически, в процессе загрузки. А если сразу это в язык не заложить то потом уже поезд ушел.

WH>>В конце концов у тебя получится жаба или .НЕТ... Так зачем мучаться?

FR>Необязательно, может получится и что-то совсем другое


+1
У других получился Erlang, и ещё у третьих — Java, а у четвёртых вообще попугай (Parrot)
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[8]: А D?
От: Kluev  
Дата: 26.05.06 10:55
Оценка: +1
Здравствуйте, WolfHound, Вы писали:

WH>Здравствуйте, Kluev, Вы писали:


K>>Нет. Ни то и не другое. язык будет такимже низкоуровневым как и С++, просто для классов которые экспортируются из ДЛЛ добавится дополнительный уровень виртуализации.

WH>Вот у нас уже появилась метаинформация те один шаг до рефлекшена.
WH>Далие нам понадобится что-то сделать с менеджером памяти... а там глядишь уже и до ГЦ недолеко.
WH>Потом захечется код во время исполнения сгенерить... и вот у нас уже появляется System.Reflection.Emit...

Не, GC и Emit у нас не будет. Зачем?

А вот скриптинг будет. Причем в качестве скриптового будет выступать сам основной язык.
Т.к. хидеров нет и информация о типах лежит в модулях, то нет никаких препятствий. Компилим в байткод и запсукаем. Эдакий unsafe скриптинг с указателями, адрессной арифметикой и без GC. И не надо морочится c написанием разных переходников и оберток.

Разработка будет происходить так: пишем скелет основной програмы, запускаем, в него подгружается scrip-runtime. Далее фичи дописываем интерактивно в скриптовом режиме. после того как фича написана и отлажена, просто добавляем файл к основному проекту и он уже компилируется в native.
Re[9]: А D?
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 26.05.06 11:02
Оценка:
Kluev,

K>А вот скриптинг будет. Причем в качестве скриптового будет выступать сам основной язык.

K>Т.к. хидеров нет и информация о типах лежит в модулях, то нет никаких препятствий. Компилим в байткод и запсукаем. Эдакий unsafe скриптинг с указателями, адрессной арифметикой и без GC. И не надо морочится c написанием разных переходников и оберток.

K>Разработка будет происходить так: пишем скелет основной програмы, запускаем, в него подгружается scrip-runtime. Далее фичи дописываем интерактивно в скриптовом режиме. после того как фича написана и отлажена, просто добавляем файл к основному проекту и он уже компилируется в native.


REPL захотелось? Всё уже украдено до тебя: LISP, Erlang, Smalltalk.

Теоретически такую инкрементальную разработку можно реализовать на JVM и .NET, только в последних 2х случаях народ пошёл (вернее народ повели) по классическому пути.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[10]: А D?
От: Kluev  
Дата: 26.05.06 11:13
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Kluev,


K>>А вот скриптинг будет. Причем в качестве скриптового будет выступать сам основной язык.

K>>Т.к. хидеров нет и информация о типах лежит в модулях, то нет никаких препятствий. Компилим в байткод и запсукаем. Эдакий unsafe скриптинг с указателями, адрессной арифметикой и без GC. И не надо морочится c написанием разных переходников и оберток.

K>>Разработка будет происходить так: пишем скелет основной програмы, запускаем, в него подгружается scrip-runtime. Далее фичи дописываем интерактивно в скриптовом режиме. после того как фича написана и отлажена, просто добавляем файл к основному проекту и он уже компилируется в native.


LCR>REPL захотелось? Всё уже украдено до тебя: LISP, Erlang, Smalltalk.


REPL получается на халяву как довесок. Если основные недостатки С++ устранить.

LCR>Теоретически такую инкрементальную разработку можно реализовать на JVM и .NET, только в последних 2х случаях народ пошёл (вернее народ повели) по классическому пути.


Цель не в этом.
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.06 11:47
Оценка: -1
Здравствуйте, GlebZ, Вы писали:

GZ>Я тоже уверен в справедливости этой теоремы. Только я также уверен в том, что sql никогда не преобразуется в действительно оптимальный набор команд, поскольку для этого надо решить по крайней мере 2 NP задачи.


Не понял.

GZ>Ты забыл сказать унаследованные от предыдущих языков.


Какая разница что кто у кго унаследовал? В Немереле тоже есть и for и if. Но это не значит, что они обязаны быть жестко вмонтированы в компилятор. Если основа языка полноценна, а язык расширяем, то все это можно реализовать на нем самом. Собственно это я слышу о С++ постоянно, и сообственно именно этого я не вижу. И именно об этом статья.

GZ> А во вторых я имел ввиду что это можно назвать ошибкой языка, а не ошибкой C++-ников. Иначе ты людей обижаешь на ровном месте.


Под С++-никами в данном случае пордазумеваются разработчкики языка. Возможно я выразился двусмысленно. К пользователям языка это не относится.

GZ>>>ЗЫ. К сожалению, статью полностью прочитать смогу только вечером(сегодня привезут журнальчик). Поэтому это касается только вступления. Слишком уж резануло

VD>>Ну, вот когда прочтешь до конца, то с удовольствием послушаю мнение о статье. А то споры явно уходят в сторону от сути статьи.
GZ>Прочел. Не понравилось. Влад, какого фига ты сравниваешь метапрограммирование с макросами макроассемблера?

Ты точно ту что нужно статью прочел? Я ни слова в ней ни про ассемблер, ни про его макросы не сказал.

GZ> Макроассемблер родил С, С родил \С++. Фича оставалось неизменной.


Акстись. Макроассемблер появился сильно позже чем С и его маросы. И речь о макросах С в общем-то не идет. Они упамянаются один раз когда речь идет о изменении синтаксиса, так как это единственная возможность изменить именно синтаксис, а не семантику:

Разные хитрые извороты позволяют изменить семантику имеющегося синтаксиса в этом языке, но вы не в силах изменить сам синтаксис.
Конечно, можно реализовать цикл как-то так:

#define while(condition, body) ля-ля-ля

Но тогда и использовать его придется довольно странно:
int i = 0;

while (i < 100, 
  ...
  i++;
)

Но и тут возникнут проблемы, так как в «ля-ля-ля» вы будете вынуждены забить некоторые имена, которые могут пересечься с имеющимися в контексте использования оператора.


GZ> Но сейчас развитие языка (с помощью библиотек) идет на основании шаблонов.(за некоторыми исключениями).


Прочти еще раз выделенное жирным выше. Шаблоны не могут изменить синтаксис языка! В принципе не могут! Об этом и шала речь. В прочем и define-ы тоже это не делают.

GZ> Твое сравнение не есть корректно. После публикации главы "Расширение синтаксиса" будет нехилый флейм.


Ну, то что флэйм будет я даже не сомневаюсь. Жаль что я не смог уберечься от двусмысленных конструкций. Это конечно вызовет некоторые пролемы. Но думаю, основаня проблема в том, что эта статься по сути своей говорит нелицеприятную правду. Именно этим она заденет многих фанатов. Они будут понимать, что именно Неперловый путь верный, а С++ не идет дальше деклараций благих намерений, но в силу привязанности к любимому языку будут стараться защищать его любой ценой.

Тут ничего не поделашь. Эта статья и не имела намерения переметнуть закареневших С++ в иную "веру". Ее цель воздействие на людей которым по душе красивые фундаментальные решения. Я бы сказал она рассчитана на рамантиков со вкусом.

Ну, а политика критиков ради критики иуже ясна. Докапываться до несущественных мелочей панически боясь поднять голову и посмореть на реально затронутую проблему.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: А D?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.06 11:47
Оценка:
Здравствуйте, Kluev, Вы писали:

K>...Должно быть так:


K>сырцы->parser->(ast файлы для всяких рефактори-броузеров)->компилер->модуль с интерфейсом на борту.


K>Никаких хидеров и препроцессора. Вместо препроцессора празер должен давать ast в стандартизованном формате, чтобы IDE писатели не мучались.


Вот в Неперле именно так. Именно по этому через месяц другой у Nemele будет поддержка IDE.

Так что счасливых мечтаний.

K>P/S/ А всякие рассужедния о том что в С++ не хватает сахарка А или сахарка Б — это просто от непонимания сути воопроса и проблем программирования вообще.


Нет. Это от того, что разные люди называют сахаром разные вещи. В С++ 100%-но нехватает многих вещей. Кое что можно сэмулировать его другими средствами, но выходит это очень тяжело, больно и неполноценно.

K> Продвигая сахарок народ с мухами сражается, не замечая чудовищных глобальных проблем готорые достались от С


Тут согласен. Без борьбы с инглюдами и тяжелым препроцессором, короче без модульности, это все как мертвому припарка.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: А D?
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.06 12:15
Оценка: :))) :))
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

FR>>Необязательно, может получится и что-то совсем другое


LCR>+1

LCR>У других получился Erlang, и ещё у третьих — Java, а у четвёртых вообще попугай (Parrot)

Подытожу. У всех получилось нечто уникальное, но в то же время во многом похожее. И все что получилось совсем не похоже на С++.

Выводы... ну, а их каждый как всегда сделает сам.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: FR  
Дата: 26.05.06 13:22
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ну, то что флэйм будет я даже не сомневаюсь. Жаль что я не смог уберечься от двусмысленных конструкций. Это конечно вызовет некоторые пролемы. Но думаю, основаня проблема в том, что эта статься по сути своей говорит нелицеприятную правду. Именно этим она заденет многих фанатов. Они будут понимать, что именно Неперловый путь верный, а С++ не идет дальше деклараций благих намерений, но в силу привязанности к любимому языку будут стараться защищать его любой ценой.


А какие вообще у тебя были причины сравнивать немерле именно с С++ и в таком ключе чтобы обидеть и унизить (как я понял) приверженцев С++?
Хотя конечно большой флейм это неплохой способ пиара

VD>Тут ничего не поделашь. Эта статья и не имела намерения переметнуть закареневших С++ в иную "веру". Ее цель воздействие на людей которым по душе красивые фундаментальные решения. Я бы сказал она рассчитана на рамантиков со вкусом.


Понятно, приятно же пнуть опонентов
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.06 14:09
Оценка:
Здравствуйте, Olegator, Вы писали:

Original-Recipient: rfc822;<olegator~fromru.com>
Final-Recipient: rfc822;<olegator~fromru.com>
Action: failed
Status: 5.0.0

... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.06 14:09
Оценка: :))
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, VladD2, Вы писали:


VD>>Ну, то что флэйм будет я даже не сомневаюсь. Жаль что я не смог уберечься от двусмысленных конструкций. Это конечно вызовет некоторые пролемы. Но думаю, основаня проблема в том, что эта статься по сути своей говорит нелицеприятную правду. Именно этим она заденет многих фанатов. Они будут понимать, что именно Неперловый путь верный, а С++ не идет дальше деклараций благих намерений, но в силу привязанности к любимому языку будут стараться защищать его любой ценой.


FR>А какие вообще у тебя были причины сравнивать немерле именно с С++ и в таком ключе чтобы обидеть и унизить (как я понял) приверженцев С++?


Сори, если ты читать не умешь, то я помочь ничем не могу.

FR>Понятно, приятно же пнуть опонентов


Рад, что тебе приятно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: А D?
От: Дарней Россия  
Дата: 26.05.06 14:52
Оценка:
Здравствуйте, Kluev, Вы писали:

K>Со стандартом, только со своим.


а на чем парсер делал?

K>В С++ сахара и так достаточно.


Кодогенерация — это как раз радикальное средство избавиться от лишнего сахара в языке.
Хотя в целом правильно мыслишь
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Всех излечит, исцелит
добрый Ctrl+Alt+Delete
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: GlebZ Россия  
Дата: 26.05.06 17:12
Оценка:
Здравствуйте, VladD2, Вы писали:

GZ>>Я тоже уверен в справедливости этой теоремы. Только я также уверен в том, что sql никогда не преобразуется в действительно оптимальный набор команд, поскольку для этого надо решить по крайней мере 2 NP задачи.

VD>Не понял.
Теоретически можно многое обосновать. А практически немногое сделать. В оптимизации sql есть две NP задачи: 1 — упрощение с помощью семантической информации о данных (генереция практически бесконечного количества планов), и нахождение оптимального плана n^m задача. Сомневаюсь что в вопросах оптимизации копилятора нет таких фенек.

GZ>> А во вторых я имел ввиду что это можно назвать ошибкой языка, а не ошибкой C++-ников. Иначе ты людей обижаешь на ровном месте.

VD>Под С++-никами в данном случае пордазумеваются разработчкики языка. Возможно я выразился двусмысленно. К пользователям языка это не относится.


VD>Ты точно ту что нужно статью прочел? Я ни слова в ней ни про ассемблер, ни про его макросы не сказал.

GZ>> Макроассемблер родил С, С родил \С++. Фича оставалось неизменной.
VD>Акстись. Макроассемблер появился сильно позже чем С и его маросы.
Насчет родил — я погорячился(данные из моей памяти оказались недостоверными). А вот макросы уже были:

While wanting to use a higher-level language, he wrote the original Unix system in PDP-7 assembler. At the start, he did not even program on the PDP-7 itself, but instead used a set of macros for the GEMAP assembler on a GE-635 machine. A postprocessor generated a paper tape readable by the PDP-7.

The Development of the C Language

GZ>> Но сейчас развитие языка (с помощью библиотек) идет на основании шаблонов.(за некоторыми исключениями).

VD>Прочти еще раз выделенное жирным выше. Шаблоны не могут изменить синтаксис языка! В принципе не могут! Об этом и шала речь. В прочем и define-ы тоже это не делают.
Я не очень понимаю различие между семантикой и синтаксисом в данном вопросе. Ты завел разговор именно о синтаксическом сахаре. И также написал:

Понял я то, что в C++, при верной, в общем-то, постановке задачи «Ввести в язык базовые вещи, а остальное реализовать на нем», его разработчики поступили в точности наоборот.

Сейчас они думают о boost::lambda. Что это, не синтаксический сахар? Не назвать это полноценным синтаксическим сахаром я не могу. И основан он на свойстве метапрограммирования шаблонов. Там и замыкание делают(хоть и кривое). Именно шаблоны и библиотеки основанные на них развивают язык(как они это делают, красиво или некрасиво — уже второй вопрос). Но это факт.

VD>Тут ничего не поделашь. Эта статья и не имела намерения переметнуть закареневших С++ в иную "веру". Ее цель воздействие на людей которым по душе красивые фундаментальные решения. Я бы сказал она рассчитана на рамантиков со вкусом.

Другая статья про Nemerle понравилась. Хорошо написана. С удовольствием прочитал.

VD>Ну, а политика критиков ради критики иуже ясна. Докапываться до несущественных мелочей панически боясь поднять голову и посмореть на реально затронутую проблему.

Проблема безусловно есть. С++ — это такая старая телега, которая чтобы она не отставала от машин, каждый раз приделывают новый пропеллер. У нее этих пропеллеров — целый ворох. Все в статье верно. Но ты говоришь только о синтаксисе, а не о возможностях. Именно с этим я не согласен.
Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.06 18:37
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>Теоретически можно многое обосновать. А практически немногое сделать. В оптимизации sql есть две NP задачи: 1 — упрощение с помощью семантической информации о данных (генереция практически бесконечного количества планов), и нахождение оптимального плана n^m задача. Сомневаюсь что в вопросах оптимизации копилятора нет таких фенек.


Тогда не понял связи. Вообще-то в статье говорится, что все циклы в Немерел реализуются через переписывание в рекурсивыне вызовы. То есть как бы ты не записал алгоритм, если он идетничен, то ты получишь один и тот же промежуточный код. Оптимизация будет оперировать именно с ним.

Так что причем тут приведенный тобой пример я не понял.

GZ>Насчет родил — я погорячился(данные из моей памяти оказались недостоверными). А вот макросы уже были:


Да они и до С были. Причем тут этого? Я что где-то утверждал, что макросы — это единственныое средство метапрограммирования в С++?
О чем речь то. Ты онял про что статья?

GZ>Я не очень понимаю различие между семантикой и синтаксисом в данном вопросе.


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

GZ> Ты завел разговор именно о синтаксическом сахаре.


Ага. Именно, о синтаксичесоком.

GZ> И также написал:

GZ>

Понял я то, что в C++, при верной, в общем-то, постановке задачи «Ввести в язык базовые вещи, а остальное реализовать на нем», его разработчики поступили в точности наоборот.

GZ>Сейчас они думают о boost::lambda. Что это, не синтаксический сахар?

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

Сравни это с примерами немерла, когда средствами метапрограммировния в язык вводятся констркции вроде for, while, foreach и даже средства типизированного доступа к SQL.

GZ> Не назвать это полноценным синтаксическим сахаром я не могу.


Полноценный? Это попытка использовать умеющиеся синтаксические конструкции для эмуляции других.

Ты вон послушай, что думают люди вроде eao197 о подобных попытках.

GZ> И основан он на свойстве метапрограммирования шаблонов. Там и замыкание делают(хоть и кривое). Именно шаблоны и библиотеки основанные на них развивают язык(как они это делают, красиво или некрасиво — уже второй вопрос). Но это факт.


факт только в том, что все потуги вроде буста можно охарактиризовать двумя словами — криво и неполноценно. Вот это факт. Так же факт в том, что синтаксическим сахором является почти все в языке, или ничего.

Статья же как раз демонстрирует полную ошибочность подхода С++. Язык не содержит важных базовых вещей и полноценных средств расширения синтаксиса. Да что повторяться то. Прочти статью еще раз. Там об этом сказано довольно подробно.

GZ>Другая статья про Nemerle понравилась. Хорошо написана. С удовольствием прочитал.


Это разные статьи. И не нравится эта статья исключительно из религиозных чувств которые она затрагивает. Та статья — это введение для начинающих. Эта — анализ. Потому понять эту статья не так просто как ту. В этой нужно думать, сравнивать, анализировать, оценивать. Потму люди которые ее пойму, пусть даже при этом не оценив, уже представляют для меня больший интересе.

GZ>Проблема безусловно есть. С++ — это такая старая телега, которая чтобы она не отставала от машин, каждый раз приделывают новый пропеллер. У нее этих пропеллеров — целый ворох. Все в статье верно. Но ты говоришь только о синтаксисе, а не о возможностях. Именно с этим я не согласен.


Замечательная алегория. С++ это именно телега к которой пытаются приделать пропеллер. Причем даже если это и получается, то смысла в этом нет, так как аэродинамика все равно не для полетов. По этому и нужны новые языки с качественно новой аэродинамикой. Уверен, что и они когда-то устареюти и им на смену прийдут новые с совсем дургой аэродинамикой (а то и вообще без нее, так как будут приспособленны для гипер прыжков в пространстве ). Но цепляться за старые — это глупо. Единственный способ сделать язык современным — это постоянно его модернизировать. Иначе настанет момент когда язык станет той телегой которой никакая модернизация не поможет.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Синтаксический сахар или C++ vs. Nemerle :)
От: Demiurg  
Дата: 26.05.06 20:09
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Сравни это с примерами немерла, когда средствами метапрограммировния в язык вводятся констркции вроде for, while, foreach и даже средства типизированного доступа к SQL.


Немерл я вообще не знаю (это оговорка), но почему в С++ нельзя этого сделать? Можно назвать программу, использующую Qt, написанной на С++? Конечно! Но Qt дополняет язык, в него вводятся новые возможности, недоступные ранее, он становится именно ОО — объекты получают события, и для программиста это очевидно, а не так как в стандартном С++, где событие это вызов метода. Да, нужен дополнительный moc-компилятор, но что с того — обычное метапрограммирование. Еще раз оговорюсь — не знаю как это реализовано в немерле.
И foreach там есть

GZ>>Проблема безусловно есть. С++ — это такая старая телега, которая чтобы она не отставала от машин, каждый раз приделывают новый пропеллер. У нее этих пропеллеров — целый ворох. Все в статье верно. Но ты говоришь только о синтаксисе, а не о возможностях. Именно с этим я не согласен.


VD>Замечательная алегория. С++ это именно телега к которой пытаются приделать пропеллер. Причем даже если это и получается, то смысла в этом нет, так как аэродинамика все равно не для полетов. По этому и нужны новые языки с качественно новой аэродинамикой.


А вот это уже не очень замечательная аллегория...

VD> Уверен, что и они когда-то устареюти и им на смену прийдут новые с совсем дургой аэродинамикой (а то и вообще без нее, так как будут приспособленны для гипер прыжков в пространстве ). Но цепляться за старые — это глупо. Единственный способ сделать язык современным — это постоянно его модернизировать. Иначе настанет момент когда язык станет той телегой которой никакая модернизация не поможет.


Такой момент для всего сущего неизбежен. Но С++ еще жив и это о чем-тот говорит. А именно о том, что эта "телега" имеет аэродинамику (по твоей аналогии) гораздо более лучшую, чем все современные автомобили, и модернизация этой телеги себя оправдывает.
Впрочем, сколько можно на эту тему спорить
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 26.05.06 23:54
Оценка: :)
Здравствуйте, Demiurg, Вы писали:

VD>>Сравни это с примерами немерла, когда средствами метапрограммировния в язык вводятся констркции вроде for, while, foreach и даже средства типизированного доступа к SQL.


D> Немерл я вообще не знаю (это оговорка),


Тогда возможно для начала лучше осзакомиться с ним? Хотя бы поверхносно?

D> но почему в С++ нельзя этого сделать? Можно назвать программу, использующую Qt, написанной на С++?


Потому что язык это не позволяет сделать.

D> Конечно! Но Qt дополняет язык, в него вводятся новые возможности, недоступные ранее, он становится именно ОО — объекты получают события, и для программиста это очевидно, а не так как в стандартном С++, где событие это вызов метода. Да, нужен дополнительный moc-компилятор, но что с того — обычное метапрограммирование. Еще раз оговорюсь — не знаю как это реализовано в немерле.

D> И foreach там есть

Вот только заслуги С++ тут нет. Тут есть борьба с его проблемами внешними средствами.

К тому же это все детский лепет. Даже C# не нужны подпорки чтобы создать полноценную компонентную систему построения GUI. А уж Nemerle и подавно.

D> Такой момент для всего сущего неизбежен. Но С++ еще жив и это о чем-тот говорит.


Жив, жив. И будет еще долго жить благодоря неумению лдей переучиваться. "С" тоже жив. Да и ассемблер.

D> А именно о том, что эта "телега" имеет аэродинамику (по твоей аналогии) гораздо более лучшую, чем все современные автомобили, и модернизация этой телеги себя оправдывает.

D> Впрочем, сколько можно на эту тему спорить

Это самовнушение. Телега она и в африке телега. Едит конечно, но и только.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: Demiurg  
Дата: 27.05.06 00:18
Оценка: +1
Здравствуйте, VladD2, Вы писали:

D>> Немерл я вообще не знаю (это оговорка),


VD>Тогда возможно для начала лучше осзакомиться с ним? Хотя бы поверхносно?


Может быть. Можно левому челу (вроде меня) появиться на встрече usergroup и поучаствовать?

D>> но почему в С++ нельзя этого сделать? Можно назвать программу, использующую Qt, написанной на С++?


VD>Потому что язык это не позволяет сделать.


Станадарт языка. Для немерле есть стандарт? Если нет, то они с плюсами в равных условиях.

D>> Конечно! Но Qt дополняет язык, в него вводятся новые возможности, недоступные ранее, он становится именно ОО — объекты получают события, и для программиста это очевидно, а не так как в стандартном С++, где событие это вызов метода. Да, нужен дополнительный moc-компилятор, но что с того — обычное метапрограммирование. Еще раз оговорюсь — не знаю как это реализовано в немерле.

D>> И foreach там есть

VD>Вот только заслуги С++ тут нет. Тут есть борьба с его проблемами внешними средствами.


Не спорю. Однако приятно писать на С++ и иметь новые клевые фишки И знать, что получится нативный хороший код. Вопрос религии, конечно... (заметь, при этих фишках я пишу на плюсах, а это, как ни крути, язык — про стандарты забудь)

VD>К тому же это все детский лепет. Даже C# не нужны подпорки чтобы создать полноценную компонентную систему построения GUI. А уж Nemerle и подавно.


Блин. Фрэймворк нужен. Впрочем, это уже неважно. Это то же самое что требовать ОС для приложения. Так что опустим. Однако... Ты использовал Delphi? Уж насколько я не люблю дельфи, но там круче!!!! Намного! Возникает ощущение, что популярность дотнета вызвана созвучностью основного языка, продвигаемого микрософтом, с с++

D>> Такой момент для всего сущего неизбежен. Но С++ еще жив и это о чем-тот говорит.


VD>Жив, жив. И будет еще долго жить благодоря неумению лдей переучиваться. "С" тоже жив. Да и ассемблер.


Нет. Я давно уже переучился. Но тянет на С и С++. Очень иногда на асм. На асм из-за ностальгии, на С++ из любви. Я обожаю С++. Ты обожаешь шарп и немерле? Пожалуйста. Я не против. Не буду же я называть тебя как-нить неполиткорректно из-за этого...

D>> А именно о том, что эта "телега" имеет аэродинамику (по твоей аналогии) гораздо более лучшую, чем все современные автомобили, и модернизация этой телеги себя оправдывает.

D>> Впрочем, сколько можно на эту тему спорить

VD>Это самовнушение. Телега она и в африке телега. Едит конечно, но и только.


Это не самовнушение, а неверная аналогия. Влад, когда же ты поймешь, что так доказывать что-либо нельзя
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 27.05.06 00:34
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>Это самовнушение. Телега она и в африке телега. Едит конечно, но и только.


А куда спешить? Сейчас спокойно поедим, спокойно спустимся... (c)
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[9]: А D?
От: IT Россия linq2db.com
Дата: 27.05.06 02:13
Оценка:
Здравствуйте, Cyberax, Вы писали:

>> Так зачем мучаться?

C>В .NET слишком много нужного .НЕТ. И добавить это не ломая самых основ — не получится.

А если абстрагироваться от глупостей в виде основ?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
[от модератора]
От: IT Россия linq2db.com
Дата: 27.05.06 05:39
Оценка:
Здравствуйте, Геннадий Васильев, Вы писали:

VD>>Я прошел сколу С++, C# и вот сейчас прохожу школу Nemerlr. Каждая мне что-то дала и двинула в перед.


ГВ>Суровые школы...


Начинаем приводить в действие непопулярные меры:

Предупреждение за разжигание флуда. IT.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 27.05.06 05:49
Оценка: +1 :))
Здравствуйте, GlebZ, Вы писали:

GZ>Сейчас они думают о boost::lambda. Что это, не синтаксический сахар? Не назвать это полноценным синтаксическим сахаром я не могу. И основан он на свойстве метапрограммирования шаблонов.


Сколько уже можно повторять, основан он не на свойстве метапрограммирования шаблонов, а на сайд эффектах компилятора. Впрочем, возможно это теперь называется "Свойство Метапрограммирования".

GZ> Там и замыкание делают(хоть и кривое).


Думаю, ключевых слова здесь два: делают и кривое. Всмысле, так долго делают и так криво.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[12]: Синтаксический сахар или C++ vs. Nemerle :)
От: WolfHound  
Дата: 27.05.06 08:14
Оценка:
Здравствуйте, Demiurg, Вы писали:

D> Блин. Фрэймворк нужен. Впрочем, это уже неважно. Это то же самое что требовать ОС для приложения. Так что опустим. Однако... Ты использовал Delphi? Уж насколько я не люблю дельфи, но там круче!!!! Намного! Возникает ощущение, что популярность дотнета вызвана созвучностью основного языка, продвигаемого микрософтом, с с++

И чего в дельфе круче чем в .НЕТ?
... << RSDN@Home 1.1.4 beta 6a rev. 436>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[10]: А D?
От: Cyberax Марс  
Дата: 27.05.06 08:15
Оценка: 1 (1) +1 -2
IT wrote:
>> > Так зачем мучаться?
> C>В .NET слишком много нужного .НЕТ. И добавить это не ломая самых основ
> — не получится.
> А если абстрагироваться от глупостей в виде основ?
Можно. Но получим огромный performance hit.

Тут уже куча примеров была — например, в .NET нет указателей на методы.
Их можно эмулировать, но в нексколько раз медленнее. Нет стековых
объектов — можно использовать GC, но в некоторых случаях будет в разы
медленнее. И т.п.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[12]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.05.06 12:09
Оценка:
Здравствуйте, Demiurg, Вы писали:

D> Может быть. Можно левому челу (вроде меня) появиться на встрече usergroup и поучаствовать?


Что значит левому?
Конечно можно. Фэйс-контроль никто не устраивает.

D> Станадарт языка. Для немерле есть стандарт?


Язык еще даже до версии 1.0 не дожил, а стандартизация — это процесс на годы.

D>Если нет, то они с плюсами в равных условиях.


И кто влучших?

D> Блин. Фрэймворк нужен. Впрочем, это уже неважно. Это то же самое что требовать ОС для приложения.


Вот-вот. Только "ОС" занимает 20 метров и может быть установлена на очень разные физические ОС. При этом есть большая вероятность, что программа в будующем будет работать там где не работает ее неуправляемый аналог. Учитывая, что на Виндовс и Линукс дотнет или Моно уже ставятся по умолчанию, то и гворить то в общем-то не очем. Да и времена не те, чтобы нельзя было раз в 2-3 года скачать новую версию фрэймворка весом в 20 мег.

D> Так что опустим. Однако... Ты использовал Delphi?


Да, года 3.

D> Уж насколько я не люблю дельфи, но там круче!!!! Намного!


Что круче?

D> Возникает ощущение, что популярность дотнета вызвана созвучностью основного языка, продвигаемого микрософтом, с с++


Вообще-то под дотент можно писать и на Дельфи (для которой теперь это основная платформа), и на С++. В общем, мы уходим от темы.

D> Нет. Я давно уже переучился. Но тянет на С и С++. Очень иногда на асм. На асм из-за ностальгии, на С++ из любви. Я обожаю С++. Ты обожаешь шарп и немерле? Пожалуйста. Я не против.


Я тоже когда-то любил С++, но чем дальше в лес, тем от него больше ташнит.

D>Не буду же я называть тебя как-нить неполиткорректно из-за этого...




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


Это не моя алегория, и я на ее базе ничего не доказывал. Но по-моему она очень хорошо отражает суть дела.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: А D?
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.05.06 12:09
Оценка: +1 -4
Здравствуйте, Cyberax, Вы писали:

У тебя уже развился полноценный комплекс неполноценности на базе борьбы за производительность.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: А D?
От: Cyberax Марс  
Дата: 27.05.06 12:47
Оценка: +1
VladD2 wrote:
> У тебя уже развился полноценный комплекс неполноценности на базе борьбы
> за производительность.
Скорее мания величия

Не нравится мне когда за меня решают что нужно использовать, и при этом
говорят "это для твоего же блага".
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[13]: Синтаксический сахар или C++ vs. Nemerle :)
От: Demiurg  
Дата: 27.05.06 12:49
Оценка:
Здравствуйте, VladD2, Вы писали:

D>> Может быть. Можно левому челу (вроде меня) появиться на встрече usergroup и поучаствовать?


VD>Что значит левому?

VD>Конечно можно. Фэйс-контроль никто не устраивает.

Левому в смысле — левому от дотнета Я даже зарегился специально на годотнете, но вопрос — нормально, если я зарегюсь на встречу, но не приду (мало ли что там на работе случится)?

D>>Если нет, то они с плюсами в равных условиях.


VD>И кто влучших?


Это относительно

D>> Блин. Фрэймворк нужен. Впрочем, это уже неважно. Это то же самое что требовать ОС для приложения.


VD>Вот-вот. Только "ОС" занимает 20 метров и может быть установлена на очень разные физические ОС.


Это здорово. Только уже не верится про разные ОС Рихтер писал, что микрософт будет заниматься "портированием" фрейма только для винды, а остальные пусть сами для себя портируют, благо все спецификации открыты...

VD> При этом есть большая вероятность, что программа в будующем будет работать там где не работает ее неуправляемый аналог. Учитывая, что на Виндовс и Линукс дотнет или Моно уже ставятся по умолчанию, то и гворить то в общем-то не очем. Да и времена не те, чтобы нельзя было раз в 2-3 года скачать новую версию фрэймворка весом в 20 мег.


20 мег это фигня. Дело не в размере

D>> Уж насколько я не люблю дельфи, но там круче!!!! Намного!


VD>Что круче?


Ты же сказал про компонентную разработку гуи? В дельфи это круче реализовано.


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


VD>Это не моя алегория, и я на ее базе ничего не доказывал. Но по-моему она очень хорошо отражает суть дела.


Не твоя, а ты ее используешь Нужно было автору патент брать
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[14]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.05.06 16:18
Оценка:
Здравствуйте, Demiurg, Вы писали:

D> Левому в смысле — левому от дотнета Я даже зарегился специально на годотнете, но вопрос — нормально, если я зарегюсь на встречу, но не приду (мало ли что там на работе случится)?


Ничего страшного.

D> Это здорово. Только уже не верится про разные ОС Рихтер писал, что микрософт будет заниматься "портированием" фрейма только для винды, а остальные пусть сами для себя портируют, благо все спецификации открыты...


Реально одних версий Виндовс уже есть стук 20. Ведь разные ВыньЦЕ сюда тоже входят. Плюс Моно живет уже на немалом количестве платформ. Конечно для очень взыскательных этого может не хватить. Но реально 99% программистов пишут софт под Вынь и Лиь. Причем посленее явно случается реже.

D> 20 мег это фигня. Дело не в размере


Тогда в чем?

D> Ты же сказал про компонентную разработку гуи? В дельфи это круче реализовано.


Серьезно? И можешь даже аргументировать?
За одно расскажи как дельфи живет поверх того самого фрэймворка.

D> Не твоя, а ты ее используешь Нужно было автору патент брать


У автора остался копирайт.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Синтаксический сахар или C++ vs. Nemerle :)
От: Demiurg  
Дата: 27.05.06 16:41
Оценка:
Здравствуйте, WolfHound, Вы писали:

D>> Блин. Фрэймворк нужен. Впрочем, это уже неважно. Это то же самое что требовать ОС для приложения. Так что опустим. Однако... Ты использовал Delphi? Уж насколько я не люблю дельфи, но там круче!!!! Намного! Возникает ощущение, что популярность дотнета вызвана созвучностью основного языка, продвигаемого микрософтом, с с++

WH>И чего в дельфе круче чем в .НЕТ?

Прошу прощения, что не ответил, ответ в посте к Владу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[13]: А D?
От: Sinclair Россия https://github.com/evilguest/
Дата: 27.05.06 17:45
Оценка: +2
Здравствуйте, Cyberax, Вы писали:
C>Не нравится мне когда за меня решают что нужно использовать, и при этом
C>говорят "это для твоего же блага".
Не волнуйся. Эта проблема была у 100% разработчиков, переходящих из неуправляемого мира в управляемый. В том числе и у меня.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[14]: А D?
От: Cyberax Марс  
Дата: 27.05.06 20:14
Оценка: +1 :)
Sinclair wrote:
> C>Не нравится мне когда за меня решают что нужно использовать, и при этом
> C>говорят "это для твоего же блага".
> Не волнуйся. Эта проблема была у 100% разработчиков, переходящих из
> неуправляемого мира в управляемый. В том числе и у меня.
Вообще-то в "управляемый мир" я уже переходил (в Java). Понравилось —
Web-приложения или серверные системы писать самое оно.

Но вот после этого мне С++ стал намного больше нравится как раз из-за
возможностей выбора.
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re[14]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 27.05.06 22:19
Оценка:
Здравствуйте, Demiurg, Вы писали:

WH>>И чего в дельфе круче чем в .НЕТ?


D> Прошу прощения, что не ответил, ответ в посте к Владу.


Откровенно говоря ответя я так и не заметил. То что ты сказал, что Дельфи по-твоему круче для меня аргументацией не является.

Дельфи и дотнет используют одинаковые компонентные принцпы для постоения ГУИ. Это их роднит. Одако дотнет продуман значительно лучше (что не странно, так как одиним из создателей Дельфи был автор C#-а) и позволяет создавать более чистые решения. Главная разница между Дельфи (причем старой) и дотнетом заключается в том, что компонентная модель дельфи довольно убока и догое время была не документирована. Дотнетные же технологии полностью открыты.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Синтаксический сахар или C++ vs. Nemerle :)
От: GlebZ Россия  
Дата: 27.05.06 22:31
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Так что причем тут приведенный тобой пример я не понял.

Ладно. Проехали, чтобы лишнего флейма не поднимать. В статье и соседних есть ответы на которые я хотел получить ответ.

VD>Да они и до С были. Причем тут этого? Я что где-то утверждал, что макросы — это единственныое средство метапрограммирования в С++?

VD>О чем речь то. Ты онял про что статья?
Да понял, понял. И главное, я понял что мне в ней не нравится.
Первое, ты назвал ее С++ vs Nemerle. Если бы ты ее назвал Nemerle vs Императивщина, то было бы проще. Взял за основу циклы, и стал рассуждать. В функциональный стиле, циклы повторимы через рекурсию и оптимизацию компилятора(кому-то наверно нравится это называть это side эффектом ). Там длинное эссе(и весьма полезное для незнающих функциональные стили программирования) которое я не буду повторять. И делается вывод что базовой вещью должен быть рекурсивный стиль, а циклы могут быть реализуемы. Как бы все правильно и верно. Но проблема в том, что ты это назвал C++ vs Nemerle. В C++ базовой вещью являются циклы. И самая проблема в том, что в нем и функциональный стиль повторим. И замыкания, и кортежи. Если бы ты показал ответ что это кривая реализация, то вопросов бы не было. Но в данном случае, вопрос:"Зачем вводить в язык то, что реализуется библиотекой?" остался открытым. И утверждение:

Поскольку через рекурсивные вложенные функции можно выразить любой цикл, и так как сами вложенные функции являются более общим механизмом, нежели циклы, то оставить в языке, создаваемом под лозунгом «язык должен включать только базовые вещи», нужно именно вложенные функции, а циклы реализовать на их основе.

недоказанным.
Это по первой главе.
Вторая глава:
Далее объяснения почему так все круто в Nemerle, и как легко сделать Nemerle императивным. И пример программирования макросов С++ с утверждением о его негигиеничности. Негигиенечность можно обойти (вставить что-нибудь типа __LINE__ и уже хорошо). А вот заменить автоматически statement функторами в теле процедуры, IMHO уже сложней(если не невозможно). Но опять я в ней не нашел выводов по тому кому быть базовым механизмом.
В остальном, абсолютно согласен. Хотя может быть и занимаюсь буквоедством.

GZ>> Ты завел разговор именно о синтаксическом сахаре.

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

GZ>> И также написал:

GZ>>

Понял я то, что в C++, при верной, в общем-то, постановке задачи «Ввести в язык базовые вещи, а остальное реализовать на нем», его разработчики поступили в точности наоборот.

GZ>>Сейчас они думают о boost::lambda. Что это, не синтаксический сахар?
VD>Это идиотизм. Создать полноценную лямбду с возможностью синтаксического замыкания на внешний контест нвеозможно в приципе. Все это ужимки от бедности.
Там шарповская система автогенеренных функторов с сохранением локальных переменных. Только в С# есть GC который эти локальные переменные умеет счищать. Вобщем, на мой взгляд, кривизна. И вроде бы ее и сами сишники не очень балуют.

VD>Сравни это с примерами немерла, когда средствами метапрограммировния в язык вводятся констркции вроде for, while, foreach и даже средства типизированного доступа к SQL.

+1. Только я этого не увидел в статье.

GZ>> Не назвать это полноценным синтаксическим сахаром я не могу.

VD>Полноценный? Это попытка использовать умеющиеся синтаксические конструкции для эмуляции других.
VD>Ты вон послушай, что думают люди вроде eao197 о подобных попытках.
И я с ним согласен. Да и с тобой согласен. Токмо я буквоед.

VD>факт только в том, что все потуги вроде буста можно охарактиризовать двумя словами — криво и неполноценно. Вот это факт. Так же факт в том, что синтаксическим сахором является почти все в языке, или ничего.

+1

VD>Это разные статьи. И не нравится эта статья исключительно из религиозных чувств которые она затрагивает.

У меня с религиозными чувствами плоховато. Потому и занимаюсь буквоедством.

VD>Та статья — это введение для начинающих. Эта — анализ. Потому понять эту статья не так просто как ту. В этой нужно думать, сравнивать, анализировать, оценивать. Потму люди которые ее пойму, пусть даже при этом не оценив, уже представляют для меня больший интересе.

А я и есть начинающий. Правда сравнивать с C# мне было сложновато. Плохо клеится в мозгах. А вот сравнение с OCaml по тезисам этой статьи, мне далось легче.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[9]: Синтаксический сахар или C++ vs. Nemerle :)
От: GlebZ Россия  
Дата: 27.05.06 22:31
Оценка:
Здравствуйте, IT, Вы писали:

IT>Сколько уже можно повторять, основан он не на свойстве метапрограммирования шаблонов, а на сайд эффектах компилятора. Впрочем, возможно это теперь называется "Свойство Метапрограммирования".

Это вопрос относительности. Можно назвать side — эффект. Для других — свойство прекомпиляции заголовочных файлов. Каждому свое.

IT>Думаю, ключевых слова здесь два: делают и кривое. Всмысле, так долго делают и так криво.

Язвительность неконструктивна. По мне криво. Я испорчен языками где это одна из основ, и сделано с соответсвующим качеством.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[15]: Синтаксический сахар или C++ vs. Nemerle :)
От: Demiurg  
Дата: 27.05.06 22:32
Оценка:
Здравствуйте, VladD2, Вы писали:

WH>>>И чего в дельфе круче чем в .НЕТ?


D>> Прошу прощения, что не ответил, ответ в посте к Владу.


VD>Откровенно говоря ответя я так и не заметил. То что ты сказал, что Дельфи по-твоему круче для меня аргументацией не является.


А я не говорил ничего про развернутый ответ Сейчас отвечу.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[15]: Синтаксический сахар или C++ vs. Nemerle :)
От: Demiurg  
Дата: 27.05.06 22:32
Оценка:
Здравствуйте, VladD2, Вы писали:

D>> Левому в смысле — левому от дотнета Я даже зарегился специально на годотнете, но вопрос — нормально, если я зарегюсь на встречу, но не приду (мало ли что там на работе случится)?


VD>Ничего страшного.


Ок, зарегился

VD>Реально одних версий Виндовс уже есть стук 20. Ведь разные ВыньЦЕ сюда тоже входят. Плюс Моно живет уже на немалом количестве платформ. Конечно для очень взыскательных этого может не хватить. Но реально 99% программистов пишут софт под Вынь и Лиь. Причем посленее явно случается реже.


D>> 20 мег это фигня. Дело не в размере


VD>Тогда в чем?


Ты серьезно ждешь ответ на этот вопрос сексуального характера?

D>> Ты же сказал про компонентную разработку гуи? В дельфи это круче реализовано.


VD>Серьезно? И можешь даже аргументировать?


Серьезно. Аргументировать не могу . Это вопрос вкусов вроде. В делфи (и билдере) довольно хороший интерефейс для создания гуи, возможность наследовать формы, офигенная поддержка разработки своих компонент с возможностью их отладки в design-тайме... В дотнете меня поразил своей убогостью дизайнер и редактор свойств. Да, похоже на то как в делфи (один чувак все же автор ), но не то... Собственно, я об этом. РАД среда никакая для меня.

VD>За одно расскажи как дельфи живет поверх того самого фрэймворка.


Не понял...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: Синтаксический сахар или C++ vs. Nemerle :)
От: Demiurg  
Дата: 27.05.06 22:41
Оценка: :)
VD>>Ничего страшного.

D> Ок, зарегился


Имелась ввиду улыбка, блин...
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[16]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.05.06 00:28
Оценка: +1
Здравствуйте, Demiurg, Вы писали:

D>>> 20 мег это фигня. Дело не в размере


VD>>Тогда в чем?


D> Ты серьезно ждешь ответ на этот вопрос сексуального характера?


Да, так как одозреваю, что это очередная фобия.

VD>>Серьезно? И можешь даже аргументировать?


D> Серьезно. Аргументировать не могу . Это вопрос вкусов вроде.


Тогда не забывай делая такие заявления добавлять строчку вроде "мне кажется" или "для меня...".
А то вдруг ты носитель тайного знания которое я пропустил.

D> В делфи (и билдере) довольно хороший интерефейс для создания гуи,


Извини, ты VS2005 то видел?

D> возможность наследовать формы,


Есть и в VS 2002.

D> офигенная поддержка разработки своих компонент с возможностью их отладки в design-тайме...


Ну, про отлаку в дизайнтайм ты загнул. Для компонента это уже рантайм. Но в общем и целом разницы в отдадке и разработке компонентов я вилчно не вижу. Или вижу, но точно не в пользу дельфи. К тому же надо понимать, что разработка на безопасном языке с ЖЦ всегда надежнее чем на небезопасном и без ЖЦ. Так что не дотнетная Дельфи отдыхает по любому. А дотнетная мало чем отличается от Шарпа.

D> В дотнете меня поразил своей убогостью дизайнер и редактор свойств.


Это от незнания. На самом деле он значительно лучше расширяется. Ну, а то что он не похож на павлина... дык на то есть C# Builder от Борланда или та же Delphi .NET. Крастоты не писанной как в прочем и глючности редкостной.

D> Да, похоже на то как в делфи (один чувак все же автор ), но не то... Собственно, я об этом. РАД среда никакая для меня.


Извини, но это проявление поверности знаний в данной области. Я как бы был знаком собоими системами. Реально дизайн-тайм в WinForms продуман значительно лучше. Единственная проблема тема эта огромна. По ней можно книги писать.
Для разгона:
.Net – классы, компоненты и контролы
Автор(ы): Владислав Чистяков
Дата: 09.05.2003
Создание ПО из компонентов подразумевает, что компоненты будут добавляться к проекту во время разработки. При этом будет производиться их начальная настройка. Компоненты как таковые не подразумевают (вернее сказать, не обязаны иметь) пользовательского интерфейса (ни для программиста, ни для конечного пользователя). В этом качестве выступают части IDE и дополнительные программные дизайнеры. Первой компонентной средой был продукт, купленный Microsoft на заре своего существования. Впоследствии на его базе родился VB. Далее была Delphi… в общем, к концу двадцатого века компоненты стали поддерживаться почти везде (даже в Visual C++, хотя он и по сей день не очень-то визуальный).

Статьи по Windows Forms

VD>>За одно расскажи как дельфи живет поверх того самого фрэймворка.


D> Не понял...


Ты не в курсе что начиная с Delphi.NET основной платформой для Дельфи является дотнет? Ну, ты что-то очень уж сильно отстал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.05.06 00:28
Оценка:
Здравствуйте, GlebZ, Вы писали:

Долго писал ответ, но у ноутбука кончилась батарейка и он выключился (думл, что он в сети, а шнур был вынут).
В общем, повторять подвиг в лом. Так что твечу только на часть.

В статье в общем-то все сказано. Но при некоторой степени предвзятости в ней всегда можно найти "не то".

GZ>Ладно. Проехали, чтобы лишнего флейма не поднимать. В статье и соседних есть ответы на которые я хотел получить ответ.


Вот вот. Остается только выключить предпочтения и поглядеть на факты и выводы.

GZ>

Поскольку через рекурсивные вложенные функции можно выразить любой цикл, и так как сами вложенные функции являются более общим механизмом, нежели циклы, то оставить в языке, создаваемом под лозунгом «язык должен включать только базовые вещи», нужно именно вложенные функции, а циклы реализовать на их основе.

GZ>недоказанным.

Это явная не правда. Все как раз доказано выше крыши. Причем еще не мной, а тем кто придумал лямбда-исчисления .
Функция более общая вещь нежели нежели циклы. С++ все равно содержит функции. Лябда же более универсальная вещь чем функция. По сути фунция — это дямбда с которой ассоциировано некоторое имя. Так почему в С++ нет лямбды и ее унжно пытаться сэмулировать, но есть циклы и глобальные функции? Ответ очевиден — недальновидный дизайн и совместимось с еще более убогим дизайном С.

GZ>Это по первой главе.

GZ>Вторая глава:
GZ>Далее объяснения почему так все круто в Nemerle, и как легко сделать Nemerle императивным. И пример программирования макросов С++ с утверждением о его негигиеничности. Негигиенечность можно обойти (вставить что-нибудь типа __LINE__ и уже хорошо).

Закат солнца в ручную?

GZ> А вот заменить автоматически statement функторами в теле процедуры, IMHO уже сложней(если не невозможно). Но опять я в ней не нашел выводов по тому кому быть базовым механизмом.


Точнее не захотил увидеть. Статья четко подводит к мысли, что функционаьная основа и штатные, полноценные, и удобные средства метапрограммирования как раз и есть правильный дизайн.

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

GZ>В остальном, абсолютно согласен. Хотя может быть и занимаюсь буквоедством.


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

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

VD>>Сравни это с примерами немерла, когда средствами метапрограммировния в язык вводятся констркции вроде for, while, foreach и даже средства типизированного доступа к SQL.

GZ>+1. Только я этого не увидел в статье.

Зашибись! А о чем тогда говорит раздел "Расширение синтаксиса"?
Снова пристум нежелания видеть?

В Nemerle выбран именно второй путь. В него введены синтаксические макросы, позволяющие реально расширять синтаксис языка.
Вот как выглядит реализация цикла while на Nemerle:

macro @while (cond, body)
syntax ("while", "(", cond, ")", body) 
{
  def loop = Nemerle.Macros.Symbol(Util.tmpname("while_"));

  <[ 
    $(PT.Name.Global("_N_break") : name) :
    {
      def $(loop : name)() : void
      {
        when ($cond)
        {
          $(PT.Name.Global("_N_continue") : name) :
          {
            $body 
          }

          $(loop : name)()
        }
      }

      $(loop : name)(); 
    }
  ]>
}

Этот простой макрос позволяет использовать в коде цикл while, полностью аналогичный таковому в C# и C++.
Интересно, что в Nemerle с помощью макросов реализованы return, break, continue, unchecked, checked, yield, if/else, while, repeat (вид цикла), when (замена if без else), for, unless (по сути, when(!...)), оператор using, lock, do/while, foreach, lambda (укороченный синтаксис для анонимных функций), а также операторы &&, ||, %|| (битовое «или» с проверкой на != 0), %&& (битовое «и» с проверкой на != 0), %^^ (XOR с проверкой на != 0), ++, --, +=, -=, *=, /=, <<=, >>=, %=, |=, &=, ^=, <-> (обмен значений переменных), ::= (модифицирующее добавление элемента в начало связанного списка).


В обещем, очереданая неправда.

VD>>Это разные статьи. И не нравится эта статья исключительно из религиозных чувств которые она затрагивает.

GZ>У меня с религиозными чувствами плоховато. Потому и занимаюсь буквоедством.

А чем вызвано буквоедство?

GZ>А я и есть начинающий. Правда сравнивать с C# мне было сложновато. Плохо клеится в мозгах. А вот сравнение с OCaml по тезисам этой статьи, мне далось легче.


Я не знаю ОКамл настолько чтобы делать качественное сравнение с этим языком. Хотя такое сравнение действительно было бы полезно и интересно. В прициипе кое что сравнивается в статье по макросам (сравнивается ОКамловский препроцессор). Сравнение с Шарпом же находится в первой статье (введении в язык). Она практически вся построена на отличиях от Шарпа. Так как основа языка действительно очень близкая. ОКамл тоже во многом близок. Но... в прочем я повторяюсь.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[17]: Синтаксический сахар или C++ vs. Nemerle :)
От: Demiurg  
Дата: 28.05.06 01:29
Оценка:
Здравствуйте, VladD2, Вы писали:

D>> Ты серьезно ждешь ответ на этот вопрос сексуального характера?


VD>Да, так как одозреваю, что это очередная фобия.


Да ладно тебе — во всем фобии видеть Ну не нравится мне байт-код и все. Хоть убей. Вопрос религии. Так что, думаю, не стоит джихады устраивать — у каждого же свой вкус, не так ли?

VD>>>Серьезно? И можешь даже аргументировать?


D>> Серьезно. Аргументировать не могу . Это вопрос вкусов вроде.


VD>Тогда не забывай делая такие заявления добавлять строчку вроде "мне кажется" или "для меня...".


В нетикете есть негласное правило — любое сообщение подразумевает, что это "мне кажется", "для меня", "имхо" и так далее..

VD>А то вдруг ты носитель тайного знания которое я пропустил.


Так оно и есть Но не в этой области.

D>> В делфи (и билдере) довольно хороший интерефейс для создания гуи,


VD>Извини, ты VS2005 то видел?


Нет.

D>> возможность наследовать формы,


VD>Есть и в VS 2002.


D>> офигенная поддержка разработки своих компонент с возможностью их отладки в design-тайме...


VD>Ну, про отлаку в дизайнтайм ты загнул. Для компонента это уже рантайм. Но в общем и целом разницы в отдадке и разработке компонентов я вилчно не вижу. Или вижу, но точно не в пользу дельфи. К тому же надо понимать, что разработка на безопасном языке с ЖЦ всегда надежнее чем на небезопасном и без ЖЦ. Так что не дотнетная Дельфи отдыхает по любому. А дотнетная мало чем отличается от Шарпа.


Все понятно. Если в студии все стало так хорошо, то ок. Но неважно. Мне все равно дельфи не нравится Особенно ее компонентная модель. Просто я сравнил реализацию там и в дотнете. В дельфи показалась более прямой.

D>> В дотнете меня поразил своей убогостью дизайнер и редактор свойств.


VD>Это от незнания. На самом деле он значительно лучше расширяется. Ну, а то что он не похож на павлина... дык на то есть C# Builder от Борланда или та же Delphi .NET. Крастоты не писанной как в прочем и глючности редкостной.


Глюки, они на каждом шаге от борладна


D>> Да, похоже на то как в делфи (один чувак все же автор ), но не то... Собственно, я об этом. РАД среда никакая для меня.


VD>Извини, но это проявление поверности знаний в данной области.


Погоди, какие могут быть поверхностные знания в этой области? Дизайнер просто неудобен. Выполнен в стиле микрософт, как редактор ресурса типа "диалог". Всегда плевался от него. Для меня это неприемлемо. Может быть в 2005 студии он уже обрел человеский вид?

VD>>>За одно расскажи как дельфи живет поверх того самого фрэймворка.


D>> Не понял...


VD>Ты не в курсе что начиная с Delphi.NET основной платформой для Дельфи является дотнет? Ну, ты что-то очень уж сильно отстал.


Не, в курсе. Просто я не использовал и, думаю, не буду Дельфи.Нет.
Так может не стоит высказывать такие вещи, что я отстал
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: GlebZ Россия  
Дата: 28.05.06 01:41
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Долго писал ответ, но у ноутбука кончилась батарейка и он выключился (думл, что он в сети, а шнур был вынут).

Передай ему мои соболезнования.

VD>Это явная не правда. Все как раз доказано выше крыши. Причем еще не мной, а тем кто придумал лямбда-исчисления .

VD>Функция более общая вещь нежели нежели циклы. С++ все равно содержит функции. Лябда же более универсальная вещь чем функция. По сути фунция — это дямбда с которой ассоциировано некоторое имя. Так почему в С++ нет лямбды и ее унжно пытаться сэмулировать, но есть циклы и глобальные функции? Ответ очевиден — недальновидный дизайн и совместимось с еще более убогим дизайном С.
+1 Кстати, также камень в Microsoft. В С++, благодаря хреновенькому метапрограммингу и перегрузке скобок, хоть хреновенько но можно сделать. В C# 1.0 — никак. Пользуем только то, что дают. А нормальные лямбды еще не дали.

GZ>>Далее объяснения почему так все круто в Nemerle, и как легко сделать Nemerle императивным. И пример программирования макросов С++ с утверждением о его негигиеничности. Негигиенечность можно обойти (вставить что-нибудь типа __LINE__ и уже хорошо).

VD>Закат солнца в ручную?
Ага. Зато работает.

VD>Приношу свои извинения, что только разжевал и врот не положил. Но я привык ориентироваться на тех кто умеет думать. Хотя бы простейшие выводы точно читатель должен уметь сделать.

Мне это понятно. Но вот программисту С++, который всю жизнь прогорел на императивном языке, не помнит что такое функциональные языки, и который только слышал о boost::lambda — этот вывод может быть непонятен. А таких большинство.

GZ>>В остальном, абсолютно согласен. Хотя может быть и занимаюсь буквоедством.

VD>Даже не буквоедством, а докапыванием.
Maybe. От перемены слов смысл не меняется.

VD>>>Сравни это с примерами немерла, когда средствами метапрограммировния в язык вводятся констркции вроде for, while, foreach и даже средства типизированного доступа к SQL.

GZ>>+1. Только я этого не увидел в статье.
VD>Зашибись! А о чем тогда говорит раздел "Расширение синтаксиса"?
VD>В обещем, очереданая неправда.
Я как раз имел ввиду предыдущий пункт. Три раза каюсь. Неправильно отформатировал. Имелось вот это:

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

Сравнение систем метапрограммирования boost::lambda (для повторения функционального стиля). То бишь если одно умеет повторять другое, почему другое не может повторить первого. И насколько оно шизофренично.

VD>А чем вызвано буквоедство?

Наверно той двухсмысленностью "ошибок C++-ников". На всякий случай довернул по почкам. И вообще у них не было ошибки. Они не делали идеальный язык (иначе нужно было бы забыть о С). Они делали популярный язык. И это им удалось на пять с плюсом.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[12]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.05.06 15:38
Оценка:
Здравствуйте, GlebZ, Вы писали:

GZ>+1 Кстати, также камень в Microsoft. В С++, благодаря хреновенькому метапрограммингу и перегрузке скобок, хоть хреновенько но можно сделать. В C# 1.0 — никак. Пользуем только то, что дают. А нормальные лямбды еще не дали.


Тут оно как... Ты считашь, что это камень. А я ь(и видимо создатели Шарпа) считаю, что это как раз достоинство. Язык позволят только то, что запланировано. И позволяет это на 5 балов. Метапрограммирования в нем просто нет. Если добавят — будет, но пока нет. И прекрасно, что нет страшных побочных эффектов позволяющих эмулировать отсуствующую функциональность. Иначе когда авторы соберутся ввести ее, то она будет конфликтовать с непродуманной гибкостью.

GZ>>>Далее объяснения почему так все круто в Nemerle, и как легко сделать Nemerle императивным. И пример программирования макросов С++ с утверждением о его негигиеничности. Негигиенечность можно обойти (вставить что-нибудь типа __LINE__ и уже хорошо).

VD>>Закат солнца в ручную?
GZ>Ага. Зато работает.

Не, не работает. Разумный человек просто плюнет чем связаываться с такими извратами.

GZ>Я как раз имел ввиду предыдущий пункт.


Странный ход... Рачленить статью и сетовать на то, что в части "а" чего-то нехватает при том, что в части "б" это есть.

VD>>А чем вызвано буквоедство?

GZ>Наверно той двухсмысленностью "ошибок C++-ников". На всякий случай довернул по почкам. И вообще у них не было ошибки. Они не делали идеальный язык (иначе нужно было бы забыть о С). Они делали популярный язык. И это им удалось на пять с плюсом.

Значит, так. Или надо признать ошибочными (для С++) те лозунги которые были приведены мной в начале статьи, или прийдется признать, что реализация этих лозунгов в С++ весьма посредственна и неполноценна.

ЗЫ

Я и раньше не пог понять почему в С++ нет делегатов. Все доказательства того, что они не нужны в зяке явно выглядили натянуто. Увидив подход Немерловцев я понял, что моя ошибка была в том, что я говорил именно о делегатах. Функции высшего порядка более общая обстракция. Делегаты только один из вариантов ее реализации. Именно их не хватало в С++ (полноценных, а не тех потух в виде С-указателей на функции и весьма странных извращений С++ в вдие указатели на члены).
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[18]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 28.05.06 15:38
Оценка:
Здравствуйте, Demiurg, Вы писали:

D> Да ладно тебе — во всем фобии видеть Ну не нравится мне байт-код и все. Хоть убей. Вопрос религии.


Вот именно, религии.

D> Так что, думаю, не стоит джихады устраивать — у каждого же свой вкус, не так ли?


Не так. Религия фиговый спутник для IT.

D> В нетикете есть негласное правило — любое сообщение подразумевает, что это "мне кажется", "для меня", "имхо" и так далее..


Ссылку плиз на такое правило.

VD>>Извини, ты VS2005 то видел?


D> Нет.


Тогда что ты сравнивашь? VS6 и Delphi 6?

D> Погоди, какие могут быть поверхностные знания в этой области? Дизайнер просто неудобен. Выполнен в стиле микрософт, как редактор ресурса типа "диалог". Всегда плевался от него. Для меня это неприемлемо. Может быть в 2005 студии он уже обрел человеский вид?


У меня ощущение, что я разговариваю со спящей красавицей которая застула в 1998-ом и проснулась только сейчас. Уже в VS 2002 был очень неплохой дизайнер форм для C# и VB.NET. А в VS 2005 он стал еще лучше.

VD>>Ты не в курсе что начиная с Delphi.NET основной платформой для Дельфи является дотнет? Ну, ты что-то очень уж сильно отстал.


D> Не, в курсе. Просто я не использовал и, думаю, не буду Дельфи.Нет.

D> Так может не стоит высказывать такие вещи, что я отстал

Ты сам это даешь понять. Твои завяления весьма странны. И вообще это уход от темы. Мы говорили о С++ и подпорках которые ему нужны чтобы сделать хотя бы дизайнеры ГУИ. Дельфи и дотнет в таких подпорках не нуждаются, и нет смысла в этом их противопоставлять. Оба продукта исповедуют компонентный подход который отлично ложится на всякого рода дизайнеры.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Синтаксический сахар или C++ vs. Nemerle :)
От: GlebZ Россия  
Дата: 29.05.06 08:29
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Тут оно как... Ты считашь, что это камень. А я ь(и видимо создатели Шарпа) считаю, что это как раз достоинство. Язык позволят только то, что запланировано. И позволяет это на 5 балов.

Это ты про C#3.0?
VD>Метапрограммирования в нем просто нет. Если добавят — будет, но пока нет. И прекрасно, что нет страшных побочных эффектов позволяющих эмулировать отсуствующую функциональность. Иначе когда авторы соберутся ввести ее, то она будет конфликтовать с непродуманной гибкостью.
В С++ такой проблемы не стоит. А вот нормальную перегрузку операторов сделать, стоило бы.

GZ>>Ага. Зато работает.

VD>Не, не работает. Разумный человек просто плюнет чем связаываться с такими извратами.
Человек разумный пользуется и не такими извратами, лишь бы достичь своей цели.

VD>>>А чем вызвано буквоедство?

GZ>>Наверно той двухсмысленностью "ошибок C++-ников". На всякий случай довернул по почкам. И вообще у них не было ошибки. Они не делали идеальный язык (иначе нужно было бы забыть о С). Они делали популярный язык. И это им удалось на пять с плюсом.
VD>Значит, так. Или надо признать ошибочными (для С++) те лозунги которые были приведены мной в начале статьи, или прийдется признать, что реализация этих лозунгов в С++ весьма посредственна и неполноценна.
Второе.

VD>Я и раньше не пог понять почему в С++ нет делегатов. Все доказательства того, что они не нужны в зяке явно выглядили натянуто. Увидив подход Немерловцев я понял, что моя ошибка была в том, что я говорил именно о делегатах. Функции высшего порядка более общая обстракция. Делегаты только один из вариантов ее реализации. Именно их не хватало в С++ (полноценных, а не тех потух в виде С-указателей на функции и весьма странных извращений С++ в вдие указатели на члены).

Во первых, я бы назвал аналогом функторы. Ну а во вторых, есть идеологическая пропасть между функциональным и императивным программированием. Безусловно, любой функциональный язык должен уметь оптимизировать рекурсию. Процессоры вкупе с OS успешнее работают с последовательными программами. Но для императива такая оптимизация значительно сложней. Трудно раскрутить рекурсию, если у тебя изменяются глобальные данные. Функциональные программы — не поощряют изменения глобальных данных(взять тот же mutable в Nemerle). Для императива это одна из основных особенностей. Поэтому, IMHO, полностью универсального, и функционального и императивного, эффективного компилятора не может быть. И функции высшего порядка, в основном, в императивных языках так и останутся по сложности на уровне Fold.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: fionbio  
Дата: 29.05.06 14:40
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Андрей Хропов, Вы писали:


VD>>> Так что это задача для кого-то другого.

АХ>>Ну вот тут
Автор: fionbio
Дата: 12.07.05
человек интересующийся писал, может поможет ?


VD>Проблема в том, что у Личпарей обычно нулевой скил в области Немерла и нулевое же влечение к дотнету и всем что с ним связано.


Что-то я не вник, кого с кем надо сравнивать. Если C++ с CL, то пожалуйста.

По поводу дотнета — я профессиональный дотнетчик, и чем больше с годами набираюсь опыта по работе
с этой платформой, тем с большим презрением к ней отношусь Такое чувство, что изначально
было задумано сравнительно не плохо (хотя лучше бы не задумывалось вообще), а потом посадили толпу
обезьян, дали им нереальные сроки и вперёд... (кто не верит, больше юзайте Рефлектор )
Re[14]: Синтаксический сахар или C++ vs. Nemerle :)
От: Tom Россия http://www.RSDN.ru
Дата: 29.05.06 16:31
Оценка:
VD>Яд который я пью — грузинский коньяк и грузинское вино у нас сегодня отобрали. Так что до тех пор пока он к нам не вернется прийдется влачить существование трезвиника.

Могу привезти, у нас тут ентого добра — полно
... << RSDN@Home 1.1.4 beta 4 rev. 303>>
Народная мудрось
всем все никому ничего(с).
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 30.05.06 02:05
Оценка: +1 :)
Здравствуйте, fionbio, Вы писали:

F>По поводу дотнета — я профессиональный дотнетчик, и чем больше с годами набираюсь опыта по работе с этой платформой, тем с большим презрением к ней отношусь Такое чувство, что изначально было задумано сравнительно не плохо (хотя лучше бы не задумывалось вообще), а потом посадили толпу обезьян, дали им нереальные сроки и вперёд... (кто не верит, больше юзайте Рефлектор )


Есть такое дело. Но, надо признать, платформа держит пока даже толпы обезъян и пока живёт. В любом случае, будущее за управляющими средами.

А по поводу рефлектора... Не надо туда смотреть без нужны. Не для слабонервных это
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[10]: Синтаксический сахар или C++ vs. Nemerle :)
От: McSeem2 США http://www.antigrain.com
Дата: 30.05.06 04:21
Оценка: 62 (4) +5 -1
Здравствуйте, GlebZ, Вы писали:

IT>>Сколько уже можно повторять, основан он не на свойстве метапрограммирования шаблонов, а на сайд эффектах компилятора. Впрочем, возможно это теперь называется "Свойство Метапрограммирования".

GZ>Это вопрос относительности. Можно назвать side — эффект.

Ты знаешь, здесь я встану на сторону VladD2, IT и прочих апологетов дот-нетщины. Шаблоны — это замечательно и я их вполне успешно использую. Но вот буст — не понимаю. Не имеет он для меня ни малейшей пректической ценности. В качестве головоломных упражнений — замечательно, но не более того. Когда ради какой-то приблуды типа boost::tuple написано пару тыщ строк кода, которые со скрипом компилируются, значит что-то здесь не то. Это явный признак того, что язык используется не по назначению. Буст давно превратился в помойку, в которй многократно превышен разумный предел терпимости. Более-менее сложные проекты с бустом собираются часами — и это уже ни в какие ворота не лезет.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: McSeem2 США http://www.antigrain.com
Дата: 30.05.06 04:46
Оценка: 12 (1) :)
Здравствуйте, IT, Вы писали:

IT>Есть такое дело. Но, надо признать, платформа держит пока даже толпы обезъян и пока живёт. В любом случае, будущее за управляющими средами.


"... а идея, брошеная в массы,
это девка, брошеная в полк..."
И. Губерман
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: alexeiz  
Дата: 30.05.06 05:18
Оценка: +2 -2 :)
Здравствуйте, McSeem2, Вы писали:

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


Высокоуровневые абстракции == головоломные упражнения. Отличное сравнение! Мне на работе тоже один маньяк выговорил за использование ScopeGuard вместо ручного управления ресурсами. Подавай ему "if (FAILED(hr)) goto error; error: LocalFree(...)" и всё тут! Не будем фигурять!

> Когда ради какой-то приблуды типа boost::tuple написано пару тыщ строк кода, которые со скрипом компилируются, значит что-то здесь не то. Это явный признак того, что язык используется не по назначению. Буст давно превратился в помойку, в которй многократно превышен разумный предел терпимости. Более-менее сложные проекты с бустом собираются часами — и это уже ни в какие ворота не лезет.


Tuple включён в TR1, а от туда и в C++0x Standard Library. Пугаться нужно было раньше, где-то с момента появления на свет STL. Если по ночам снятся кошмары, может стоит сменить язык программирования?
Re[12]: Синтаксический сахар или C++ vs. Nemerle :)
От: Kluev  
Дата: 30.05.06 11:58
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Здравствуйте, McSeem2, Вы писали:


A>Tuple включён в TR1, а от туда и в C++0x Standard Library. Пугаться нужно было раньше, где-то с момента появления на свет STL. Если по ночам снятся кошмары, может стоит сменить язык программирования?


Ну, здесь мы имеем и sex и sucks в одном флаконе. sucks в смысле того что STL — sucks, а sex в том смысле что stl можно и не использовать, а кататся на собственных велосипедах.
Re[12]: Синтаксический сахар или C++ vs. Nemerle :)
От: McSeem2 США http://www.antigrain.com
Дата: 30.05.06 15:34
Оценка: +4
Здравствуйте, alexeiz, Вы писали:

A>Высокоуровневые абстракции == головоломные упражнения. Отличное сравнение!


Высокоуровневые абстракции, достигаемые ценой головоломных упражнений — такое определение мне представляется справедливым. А это уже фанатизм. Надо просто-напросто использовать язык по назначению, как я, например. А городить огороды из крокозябликов — это профессия геморойщика.

A>Мне на работе тоже один маньяк выговорил за использование ScopeGuard вместо ручного управления ресурсами. Подавай ему "if (FAILED(hr)) goto error; error: LocalFree(...)" и всё тут! Не будем фигурять!


Не надо ёрничать да и ёрнут не будешь. ScopeGuard — это абсолютно естественная для языка конструкция, в отличие от.

A>Tuple включён в TR1, а от туда и в C++0x Standard Library. Пугаться нужно было раньше, где-то с момента появления на свет STL. Если по ночам снятся кошмары, может стоит сменить язык программирования?


Да я не против того, чтобы всем этим пользоваться, а очень даже за. Но я категорически против мегатонны зависимостей для реализации тривиальных вещей.

И я осознаю ограничения языка и пользуюсь только проверенными конструкциями, которые любой компилятор просто обязан переварить. А конструкции буста балансируют на грани фола. Ну и вот результат — развесистая клюква зависимостей и обходных путей. Достаточно поискать слово "workaround" в boost — у меня оно встречается в 535 файлах. И не надо говорить, что это — нужное слово. Оно нехорошее, ругательное.

С другой стороны, все эти C# и Nemerle находятся сейчас в привилигированном положении — у них 1 (один) компилятор. Посмотрим, как они запоют, когда этих компиляторов будет десяток.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: GlebZ Россия  
Дата: 30.05.06 15:56
Оценка:
Здравствуйте, McSeem2, Вы писали:

Гы-гы. У меня простые проекты под MSVC 1.0 собирались, успевал покурить и кофейку попить(а шаблонов и исключений в нем еще не было). Я думал что это много, пока не попробовал BC4. И ничего появились новые компы, сейчас нормально все собирается. Только разработчики C++ не спят. Понимают что если компиляция не тормозит, значит это не С++. Придумали boost. Появятся новые компы, будет быстро компилиться, еще что-нибудь придумают.
А если серьезно, то я и не возражал по поводу boost'а. Назвать это развитием, как-то язык не поворачивается. В том виде, в котором он есть, С++ + STL он вполне самодостаточен и справляется с задачами. Я его уважаю за низкоуровневость. С++ с бустом — для меня это уже не С++.
Re[19]: Синтаксический сахар или C++ vs. Nemerle :)
От: GlebZ Россия  
Дата: 30.05.06 16:25
Оценка: +1 :)
Здравствуйте, VladD2, Вы писали:

VD>Религия фиговый спутник для IT.

На данном форуме, подобные заявления выглядят двусмысленно.
Re[13]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.05.06 17:43
Оценка: +3
Здравствуйте, McSeem2, Вы писали:

MS>С другой стороны, все эти C# и Nemerle находятся сейчас в привилигированном положении — у них 1 (один) компилятор. Посмотрим, как они запоют, когда этих компиляторов будет десяток.


Не будет. В отличии от 80-х и 90-х, когда на компиляторах зарабатывали, сейчас в фаворе языки, для которых есть один свободно доступный на большом количестве платформ компилятор/интерпритатор/виртуальная машина. В качестве подтверждения можно глянуть на Java, Python, Perl, Ruby. Java вообще в этом смысле показательна -- из языка стала отдельной платформой, предоставляющей разработчику одинаковые средства и библиотеки на всевозможных ОС (если брать J2SE/J2EE, без J2ME и real-time).

Вообще, в наличии одного компилятора(интерпритатора) и SDK очень много притягательного. Жалко, что C++ в этом смысле не повезло. Сначала было слишком много разных компиляторов C++, поэтому язык потребовалось стандартизировать чтобы его не растащили на несовместимые диалекты (хотя и полностью защитить от этого не смогли, достаточно одни только спецификаторы экспорта/импорта вспомнить). А стандартизация мало того, что затянулась почти на десять лет, так еще и заморозила язык практически на такое же время. И глядя на это безобразие, начинаешь жалеть, что нет единственного C++ компилятора (на базе того же GCC или первых CFront), который бы на всех платформах устанавливался бы из одного дистрибутива (как это происходит с Python, Perl или Ruby). Этот компилятор сам и был бы стандартом C++. И развитие его могло бы идти более динамично.

Так что Nemerle сейчас в гораздо более выгодном положении -- его единственный дистрибутив может быть распространен на разные платформы без необходимости создания форков и независимых реализаций. В отличии от того же C#, развитием компилятора которого на Unix-платформах занимается не MS (в отличии от Sun, которая очень благоразумно распространяет свой компилятор для разных ОС). А если вспомнить, что MS еще и не проявляет заинтересованности в портировании своего .NET под Unix-ы... Кажется, что пользователей C# и Nemerle под разными Mono/dotGNU больше будут волновать не различия в компиляторах C# и Nemerle, а различия в реализации .NET Framework.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[13]: Синтаксический сахар или C++ vs. Nemerle :)
От: alexeiz  
Дата: 31.05.06 09:21
Оценка: +1 -1
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, alexeiz, Вы писали:


A>>Высокоуровневые абстракции == головоломные упражнения. Отличное сравнение!


MS>Высокоуровневые абстракции, достигаемые ценой головоломных упражнений — такое определение мне представляется справедливым. А это уже фанатизм. Надо просто-напросто использовать язык по назначению, как я, например. А городить огороды из крокозябликов — это профессия геморойщика.


Когда ты последний раз заглядывал в реализацию printf? Сложность библиотечного кода тебя не должна интересовать. К тожу же tuple элементарен, там просто дублирования много для разного количества параметров.

Твои несколько последних "аргументов" абсолютно необоснованы.

A>>Мне на работе тоже один маньяк выговорил за использование ScopeGuard вместо ручного управления ресурсами. Подавай ему "if (FAILED(hr)) goto error; error: LocalFree(...)" и всё тут! Не будем фигурять!


MS>Не надо ёрничать да и ёрнут не будешь. ScopeGuard — это абсолютно естественная для языка конструкция, в отличие от.


Для кого как. Тому парню, видимо, плохо стало. Возвращаясь к нашим баранам, tuple — абсолютно естественная конструкция, особенно если ты раньше использовал какие-либо из скриптовых или функциональных языков.

A>>Tuple включён в TR1, а от туда и в C++0x Standard Library. Пугаться нужно было раньше, где-то с момента появления на свет STL. Если по ночам снятся кошмары, может стоит сменить язык программирования?


MS>Да я не против того, чтобы всем этим пользоваться, а очень даже за. Но я категорически против мегатонны зависимостей для реализации тривиальных вещей.


Не спеши с обобщениями!

MS>И я осознаю ограничения языка и пользуюсь только проверенными конструкциями, которые любой компилятор просто обязан переварить. А конструкции буста балансируют на грани фола. Ну и вот результат — развесистая клюква зависимостей и обходных путей. Достаточно поискать слово "workaround" в boost — у меня оно встречается в 535 файлах. И не надо говорить, что это — нужное слово. Оно нехорошее, ругательное.


Во первых, то, о чём ты говоришь, это ограничения, накладываемые компиляторами, а не языком. А во вторых, есть спрос есть и предложения. Ты думаешь, кто-то сидит и от нечего делать сочиняет эти workarounds? Люди хотят использовать абстракции, предлогаемые boost'ом. Но не у всех есть возможность сразу пересесть на comeau, вот и приходится изворачиваться. Такой подход очень даже неплохо работает, что от части подтверждается размером boost'а (вон сколько написали, демоны!)

Твоё сравнение с развесистой клюквой абсолютно не оправдано. У любой другой библиотеки похожего назначения, размера и количества поддерживаемых компиляторов и платформ будет сходная ситуация. Да куда там сходная! Я видел примеры из моего опыта, как многие опытные разработчики гораздо раньше упирались в предел расширяемости.

А с подмножеством конструкций, которое компилирует любой компилятор, далеко не уедешь.
Re[14]: Синтаксический сахар или C++ vs. Nemerle :)
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 31.05.06 11:57
Оценка: :)
alexeiz,

A>А с подмножеством конструкций, которое компилирует любой компилятор, далеко не уедешь.


А вот люди на C (почти подмножество C++) ездят, и ездят весьма далеко.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[14]: Синтаксический сахар или C++ vs. Nemerle :)
От: McSeem2 США http://www.antigrain.com
Дата: 31.05.06 18:30
Оценка: +1
Здравствуйте, alexeiz, Вы писали:

A>Когда ты последний раз заглядывал в реализацию printf? Сложность библиотечного кода тебя не должна интересовать. К тожу же tuple элементарен, там просто дублирования много для разного количества параметров.


Давай придерживаться фактов вместо нелепых сравнений. Разница в том, что с printf лично у меня никогда не было ни одной проблемы. В то время, как вокруг буста надо поплясать с бубном, чтобы оно хотя бы собралось. Да и не хочу я компилировать столько времени, как на древней PC XT 4.77MHz. И это ради каких-то абстрактных абстракций

A>Для кого как. Тому парню, видимо, плохо стало.


А я бы сказал, что не надо всяких мудаков на букву "ч" приводить в качестве аргумента

A>Во первых, то, о чём ты говоришь, это ограничения, накладываемые компиляторами, а не языком.


Абсолютно не имеет значения, чем они накладываются. Главное, что есть ограниченеия, переступать через которые нехорошо.

A>Такой подход очень даже неплохо работает, что от части подтверждается размером boost'а (вон сколько написали, демоны!)


Гвозди бы делать из этих людей
Всю эту энергию следует в конечном итоге направить на новые концепции в языке (или новые языки). Что в конце концов и произойдет, как я чую.

A>Твоё сравнение с развесистой клюквой абсолютно не оправдано.


Берем любой фйал и смотрим, сколько всего он за собой тащит.

A>А с подмножеством конструкций, которое компилирует любой компилятор, далеко не уедешь.


Я бы попросил не обобщать. Если ты не уедешь, это не значит, что и я не уеду. Ну, скажем, не совсем "любой" компилятор, но хотя бы начиная с MSVC-6. И без условной компиляции.
Это как починить розетку — одному надо шкаф инструментов для этого, а другому — один единственный кухонный нож.

На самом деле, буст — это хороший стресс-тест для компиляторов (и какая-никакая движущая сила для их развития). Но вот пользоваться этим всем на практике — нет уж, увольте.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[15]: Синтаксический сахар или C++ vs. Nemerle :)
От: FR  
Дата: 31.05.06 19:34
Оценка: +4
Здравствуйте, McSeem2, Вы писали:

MS>На самом деле, буст — это хороший стресс-тест для компиляторов (и какая-никакая движущая сила для их развития). Но вот пользоваться этим всем на практике — нет уж, увольте.


Оценивать буст как одно целое тоже неправильно, в нем есть много хороших, удобных и легких (по объему кода) вещей: умные указатели, варианты, any, array и т. п. У меня почему-то так сложилось что использую из него только подобные легкие вещи, есть только одно исключение boost::python, просто оказался жутко удобным (даже удобнее чем swig) хотя все недостатки тяжелости в нем есть.
Re[15]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.06.06 00:10
Оценка:
Здравствуйте, Tom, Вы писали:

VD>>Яд который я пью — грузинский коньяк и грузинское вино у нас сегодня отобрали. Так что до тех пор пока он к нам не вернется прийдется влачить существование трезвиника.


Tom>Могу привезти, у нас тут ентого добра — полно


Давай. За одно его им и помянем.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[14]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.06.06 00:10
Оценка:
Здравствуйте, GlebZ, Вы писали:

VD>>Тут оно как... Ты считашь, что это камень. А я ь(и видимо создатели Шарпа) считаю, что это как раз достоинство. Язык позволят только то, что запланировано. И позволяет это на 5 балов.

GZ>Это ты про C#3.0?

Я про C# вообще. Не зависимо от версий он позволяет только то, что изначально заложили его разработчики.

VD>>Метапрограммирования в нем просто нет. Если добавят — будет, но пока нет. И прекрасно, что нет страшных побочных эффектов позволяющих эмулировать отсуствующую функциональность. Иначе когда авторы соберутся ввести ее, то она будет конфликтовать с непродуманной гибкостью.

GZ>В С++ такой проблемы не стоит.



GZ> А вот нормальную перегрузку операторов сделать, стоило бы.


Это как в Немерле?


GZ>>>Ага. Зато работает.

VD>>Не, не работает. Разумный человек просто плюнет чем связаываться с такими извратами.
GZ>Человек разумный пользуется и не такими извратами, лишь бы достичь своей цели.

Значит это был не разумный человек.

VD>>Значит, так. Или надо признать ошибочными (для С++) те лозунги которые были приведены мной в начале статьи, или прийдется признать, что реализация этих лозунгов в С++ весьма посредственна и неполноценна.

GZ>Второе.

Тогда какие претензии к статье? Она и это и показала, продемонстрировав как можно сделать все по честному.

VD>>Я и раньше не пог понять почему в С++ нет делегатов. Все доказательства того, что они не нужны в зяке явно выглядили натянуто. Увидив подход Немерловцев я понял, что моя ошибка была в том, что я говорил именно о делегатах. Функции высшего порядка более общая обстракция. Делегаты только один из вариантов ее реализации. Именно их не хватало в С++ (полноценных, а не тех потух в виде С-указателей на функции и весьма странных извращений С++ в вдие указатели на члены).

GZ>Во первых, я бы назвал аналогом функторы.

Какие такие фанкторы? В языке ничего такого нет. Если ты про объекты реализующие оператор скобки, то это полнейшее извращение. В прочем действовать через зад очень в духе С++.

GZ> Ну а во вторых, есть идеологическая пропасть между функциональным и императивным программированием.


Как видишь никакой пропости нет. Пропость в мозгах, точнее дыры в знаниях.

GZ> Безусловно, любой функциональный язык должен уметь оптимизировать рекурсию. Процессоры вкупе с OS успешнее работают с последовательными программами. Но для императива такая оптимизация значительно сложней.


Иди еще раз прочти статью. Там рассказано как все прекрасно выходит для вполне императивного себе языка.

GZ> Трудно раскрутить рекурсию, если у тебя изменяются глобальные данные. Функциональные программы — не поощряют изменения глобальных данных(взять тот же mutable в Nemerle).


Это теоретиканство. Немерле на практике догазал ощибочность подобного рода рассуждений. Он без проблем разворачивает все циклы в рекурсию и допускает модификацию данных при вычислениях. Они друг-другу никак не мешают.

GZ> Для императива это одна из основных особенностей. Поэтому, IMHO, полностью универсального, и функционального и императивного, эффективного компилятора не может быть. И функции высшего порядка, в основном, в императивных языках так и останутся по сложности на уровне Fold.


Твое IMHO не более чем набор заблуждений и фобий.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 01.06.06 01:59
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>С другой стороны, все эти C# и Nemerle находятся сейчас в привилигированном положении — у них 1 (один) компилятор. Посмотрим, как они запоют, когда этих компиляторов будет десяток.


У C# уже минимум 2. А с натяжкой 4.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[15]: Синтаксический сахар или C++ vs. Nemerle :)
От: alexeiz  
Дата: 01.06.06 08:46
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, alexeiz, Вы писали:


A>>Когда ты последний раз заглядывал в реализацию printf? Сложность библиотечного кода тебя не должна интересовать. К тожу же tuple элементарен, там просто дублирования много для разного количества параметров.


MS>Давай придерживаться фактов вместо нелепых сравнений. Разница в том, что с printf лично у меня никогда не было ни одной проблемы. В то время, как вокруг буста надо поплясать с бубном, чтобы оно хотя бы собралось.


Плясать приходится если используешь что-либо вроде lambda или spirit. Для многих других вещей мне никогда не приходилось в исходники смотреть.

> Да и не хочу я компилировать столько времени, как на древней PC XT 4.77MHz. И это ради каких-то абстрактных абстракций


Зачем вообще нужны абстракции? Можно и на ассемблере код писать. Но чем более низок уровень абстракции, тем больше допускается багов. Снизить уровень багов путём повышения уровня абстракции вполне возможно. Я думаю, что никто бы не отказался от компилятора, который работает в три раза медленнее, но находит в три раза больше багов на стадии компиляции. Ты знаком с Prefast'ом? Это анализатор, который в принципе является модифицированным компилятором VC++. Он очень популярен в некоторых кругах, несмотря на то, что он эффективно увеличивает время компиляции в два раза. Так вот, если уровень абстраций, которыми оперирует твой код достаточно высок, то Prefast становится безполезен, так как он уже ничего не может найти.

В сущности это простой компромисс. Время компиляции <-> меньше багов при разумном использовании абстракций. А время компиляции можно иногда сократить с помощью precompiled headers, parallel builds и т.п.

A>>Для кого как. Тому парню, видимо, плохо стало.


MS>А я бы сказал, что не надо всяких мудаков на букву "ч" приводить в качестве аргумента


A>>Во первых, то, о чём ты говоришь, это ограничения, накладываемые компиляторами, а не языком.


MS>Абсолютно не имеет значения, чем они накладываются. Главное, что есть ограниченеия, переступать через которые нехорошо.


...
A>>Твоё сравнение с развесистой клюквой абсолютно не оправдано.
MS>Берем любой фйал и смотрим, сколько всего он за собой тащит.

Хорошо. Берём тот же tuple. Смотрим, что он с собой тащит. Его зависимости такие:
config
utility
ref
static_assert
mpl
type_traits

Что очень даже неплохо, учитывая, что в boost'е на порядок больше библиотек, чем требует tuple.

A>>А с подмножеством конструкций, которое компилирует любой компилятор, далеко не уедешь.


MS>Я бы попросил не обобщать. Если ты не уедешь, это не значит, что и я не уеду. Ну, скажем, не совсем "любой" компилятор, но хотя бы начиная с MSVC-6. И без условной компиляции.


Если тебе приходится возится с VC++6, то я тебе не завидую. Я в глаза не видел VC++6 уже как 5 лет. Очень старый компилятор. Его следует выбросить хотя бы за такие вещи, как for(int i...) и отсутствие whar_t. VC++2003, g++ 3 уже нормально переносят все современные C++ конструкции.
Re[16]: Синтаксический сахар или C++ vs. Nemerle :)
От: McSeem2 США http://www.antigrain.com
Дата: 01.06.06 17:09
Оценка: +1
Здравствуйте, alexeiz, Вы писали:

A>Хорошо. Берём тот же tuple. Смотрим, что он с собой тащит. Его зависимости такие:

A>config
A>utility
A>ref
A>static_assert
A>mpl
A>type_traits

Дык! Это же зависимости первого уровня. А полное дерево? Со всеми workaround.hpp и прочими?
В STL эти зависимости еще терпимы, в бусте — ужас-ужас Зачем, там, кстати mpl?

A>Если тебе приходится возится с VC++6, то я тебе не завидую.


Наверное мы занимаемся разными вещами. Для меня все эти высокоуровневые абстракции не имеют большого значения — это чисто механические мелочи по сравнению с сочинением алгоритмической части. Поэтому и VC6 могу вполне нормально пользоваться — его ограничения меня почти не напрягают.

Конечно же, при написании больших объемов тривиальной бизнес-логики соотношение усилий совершенно другое. Но C++ и не очень-то подходит для этого.

A>Я в глаза не видел VC++6 уже как 5 лет. Очень старый компилятор. Его следует выбросить хотя бы за такие вещи, как for(int i...) и отсутствие whar_t. VC++2003, g++ 3 уже нормально переносят все современные C++ конструкции.


А по мне так и наплевать на этот "int i". Это не ходовая часть и на скорость не влияет.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[14]: Синтаксический сахар или C++ vs. Nemerle :)
От: McSeem2 США http://www.antigrain.com
Дата: 01.06.06 19:46
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>У C# уже минимум 2. А с натяжкой 4.


Ну и как там совместимость? К примеру, я слыхал на всяких мобильных Жавах бардак похлеще C++ного.
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[17]: Синтаксический сахар или C++ vs. Nemerle :)
От: alexeiz  
Дата: 02.06.06 00:42
Оценка:
Здравствуйте, McSeem2, Вы писали:

MS>Здравствуйте, alexeiz, Вы писали:


A>>Хорошо. Берём тот же tuple. Смотрим, что он с собой тащит. Его зависимости такие:

A>>config
A>>utility
A>>ref
A>>static_assert
A>>mpl
A>>type_traits

MS>Дык! Это же зависимости первого уровня. А полное дерево? Со всеми workaround.hpp и прочими?

MS>В STL эти зависимости еще терпимы, в бусте — ужас-ужас Зачем, там, кстати mpl?

Это полное дерево с гранулярностью до библиотеки, т.е. отдельные header'ы внутри каждой библиотеки не показаны.

workaround.hpp и прочее меня не волнуют. В большинстве библиотек boost'а весь код реализации находится в .hpp файлах. Поэтому файлов много подключаться будет, это как пить дать. Но зависимости одной библиотеки boost'а от другой не превышают разумного. И это то, что меня интересует, т.к. это напрямую показывает грамотность проектирования библиотек.
Re[18]: Синтаксический сахар или C++ vs. Nemerle :)
От: alexeiz  
Дата: 02.06.06 01:01
Оценка:
Здравствуйте, alexeiz, Вы писали:

A>Здравствуйте, McSeem2, Вы писали:


MS>>Здравствуйте, alexeiz, Вы писали:


A>>>Хорошо. Берём тот же tuple. Смотрим, что он с собой тащит. Его зависимости такие:

A>>>config
A>>>utility
A>>>ref
A>>>static_assert
A>>>mpl
A>>>type_traits

MS>>Дык! Это же зависимости первого уровня. А полное дерево? Со всеми workaround.hpp и прочими?

MS>>В STL эти зависимости еще терпимы, в бусте — ужас-ужас Зачем, там, кстати mpl?

A>Это полное дерево с гранулярностью до библиотеки, т.е. отдельные header'ы внутри каждой библиотеки не показаны.


A>workaround.hpp и прочее меня не волнуют. В большинстве библиотек boost'а весь код реализации находится в .hpp файлах. Поэтому файлов много подключаться будет, это как пить дать. Но зависимости одной библиотеки boost'а от другой не превышают разумного. И это то, что меня интересует, т.к. это напрямую показывает грамотность проектирования библиотек.


В догонку, если бы в boost'е использовались export templates, то многое из реализации (та часть, которая namespace detail) было бы скрыто в .cpp файлах. Ты бы всех внутренностей не видел, и ощущения огромного количества зависимостей не было бы. О чём это говорит? О том, что такое ощущение является ложным.

Что конкретно в плане зависимостей интересует людей, разботающих с boost'ом, и над чем работают бустовские товарищи, так это то, например, что нужно взять из boost'а, чтобы использовать только smart_ptr библиотеку. В идеале должно быть так, что я беру и отдельно копирую себе файл smart_ptr.hpp и директорию smart_ptr и больше ничего. Т.е. сколько там внутри smart_ptr файлов меня не интересует, т.к. они все составляют реализацию одной библиотеки. А вот необходимость копировать другие библиотеки констатирует зависимости.
Re[19]: Синтаксический сахар или C++ vs. Nemerle :)
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 02.06.06 04:30
Оценка:
alexeiz,

A>Что конкретно в плане зависимостей интересует людей, разботающих с boost'ом, и над чем работают бустовские товарищи, так это то, например, что нужно взять из boost'а, чтобы использовать только smart_ptr библиотеку. В идеале должно быть так, что я беру и отдельно копирую себе файл smart_ptr.hpp и директорию smart_ptr и больше ничего. Т.е. сколько там внутри smart_ptr файлов меня не интересует, т.к. они все составляют реализацию одной библиотеки. А вот необходимость копировать другие библиотеки констатирует зависимости.


Сейчас bcp вполне спасает отца русской демократии.

А вот ослабление зависимостей породит другую проблему — дублирование.

Отсюда дизадвантадж номер раз: это увеличит физический размер буста где-нибудь до 100 Мб в архиве, что уже для многих людей неприемлемо. (Хотя можно предоставить возможность скачивать кусочки, но текущий вариант удобнее).

Дизадвантадж номер тва: противоречивость. Поскольку библиотеки разрабатываются разными людми, возникает проблема синхронизации которая ведёт к тому, что разные копии одной и той же зависимости будут противоречить друг другу. (Тоже решаемо, но это усложняет и без того непростой процесс разработки).
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[20]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.06.06 05:08
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Отсюда дизадвантадж номер раз: это увеличит физический размер буста где-нибудь до 100 Мб в архиве, что уже для многих людей неприемлемо. (Хотя можно предоставить возможность скачивать кусочки, но текущий вариант удобнее).


LCR>Дизадвантадж номер тва: противоречивость. Поскольку библиотеки разрабатываются разными людми, возникает проблема синхронизации которая ведёт к тому, что разные копии одной и той же зависимости будут противоречить друг другу. (Тоже решаемо, но это усложняет и без того непростой процесс разработки).


Вот чего Boost-у (а может и вообще C++) не хватает, так это аналога RubyGems.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[21]: Синтаксический сахар или C++ vs. Nemerle :)
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 02.06.06 06:44
Оценка: 28 (1)
eao197,

E>Вот чего Boost-у (а может и вообще C++) не хватает, так это аналога RubyGems.


Напоминает apt/yum, хорошая штука

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

После этого создаём файлик boostgem.config где будут сведения о компиляторе/окружении и т.п. (это сама тулза может создать). Отсюда следует, что для каждого компилятора будет свой конфиг.

Затем
boostgem install shared_ptr

скачивает хедер shared_ptr.hpp со всеми зависимостями и все зависимости кладёт в папочку shared_ptr. Информацию об этом "boostgem"-е сохраняет в своей базе. Пока всё нормально.

И у нас есть 2 программы — одной нужна версия 15, а другой 20. В обоих программах прошито #include "boost/shared_ptr.hpp". Отсюда следует, что должны быть различные каталоги boost, и опции в этих проектах должны быть натравлены на эти различные каталоги. Нет проблем, ручками прописать пути — not a big deal.

Но в первой программе потребовался второй "boostgem", скажем railgun , которому нужна версия 16 shared_ptr. Чего мы будем прописывать в проекте — shared_ptr_15 или shared_ptr_16? Отсюда следует, что "railgun" нужно компилировать с путями к shared_ptr_16, а саму программу потом с путями к shared_ptr_15.

Увеличим количество "boostgem"-ов и предположим, что в каждом "boostgem"-е 10 зависимостей (не бог весть какой мегарулез).
g_0, g_1, g_2, g_3, g_4, g_5, g_6, g_7, g_8, g_9 - базовые гемы, без зависимостей
h_0, h_1, h_2, h_3, h_4, h_5, h_6, h_7, h_8, h_9 - гемы с зависимостями, каждый зависит от всех верхних
i_0, i_1, i_2, i_3, i_4, i_5, i_6, i_7, i_8, i_9 - продвинутые гемы с зависимостями от h_i

Что получим?

А получим, что если мы задействуем в нашей программе 10 продвинутых "boostgem"-ов, то в худшем случае нужно будет прописать в make-файле 10 * 10 * 10 = 1000 разных опциий компилятору!!!

Компилятор глядя на несколько исходников со строкой '#include "boost/shared_ptr.hpp"' не может получить несколько различных хедеров и его каждый раз нужно носом тыкать. А тыкать придётся руками, или делать генератор таких make-файлов, что нехило усложнит задачу и можно будет забыть об IDE.

Вот она фундаментальная проблема: боль по отслеживанию зависимостей не может быть возложена на компилятор, только на хрупкие плечи программиста.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[22]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.06.06 08:14
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>И у нас есть 2 программы — одной нужна версия 15, а другой 20. В обоих программах прошито #include "boost/shared_ptr.hpp". Отсюда следует, что должны быть различные каталоги boost, и опции в этих проектах должны быть натравлены на эти различные каталоги. Нет проблем, ручками прописать пути — not a big deal.


Вот здесь нужно останавливаться. Мое мнение в том, что обе программы должны договориться об использовании одной версии shared_ptr. Если это не возможно, то программы должны компилироваться в разных условиях, не зная друг от друга.

Если тебе интересно, то я когда-то пытался придумать что-то вроде манифестов проектов и даже изложил свои мысли в виде небольшого документика. Мы даже серьезно его осуждали при выборе системы контроля версий и системы организации проектов. В результате остановились на гораздо более простой схеме, описанной здесь
Автор: Евгений Охотников
Дата: 23.05.05
. Не бог весть что, но работает и обходится дешево, т.к. вся функциональность предоставляется Subversion-ом.

Хотя переодически у меня возникает желание вернуться к идее манифестов для описания зависимостей. Да только не хватает духу браться за еще один безнадежный проект


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[23]: Синтаксический сахар или C++ vs. Nemerle :)
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 02.06.06 09:26
Оценка:
eao197,

E>Если тебе интересно, то я когда-то пытался придумать что-то вроде манифестов проектов и даже изложил свои мысли в виде небольшого документика. Мы даже серьезно его осуждали при выборе системы контроля версий и системы организации проектов.


Спасибо, интересно. Я позже прочту и изложу свои соображения на эту тему.

E> В результате остановились на гораздо более простой схеме, описанной здесь
Автор: Евгений Охотников
Дата: 23.05.05
. Не бог весть что, но работает и обходится дешево, т.к. вся функциональность предоставляется Subversion-ом.


Есть подобный effort в мире java, называется maven (он в том числе предоставляет возможность подкачивать зависимости из интернета и не зависит от системы контроля версий), но недостаток его в том, что не каждый проект укладывается в ограничения, накладываемые maven-ом (в частности ограничения на структуру каталогов), постому как скажем если мы разрабатываем плугин для еклипса, то там несколько другие соглашения. Поэтому либо затачивать maven, либо писать плугин под эклипсом — чаще выбирают второе.

Касаемо mxx-ru всё выглядит вполне симпатично (хотя я не в курсе, как он уживается с проектами под ATL/WTL/MFC/QT или какими-нибудь другими фрэймворками, навскидку проблем не вижу).

E> Хотя переодически у меня возникает желание вернуться к идее манифестов для описания зависимостей. Да только не хватает духу браться за еще один безнадежный проект


У меня подозрение, что за *дцать лет в С++ наверняка была не одна сотня человек, которая работала над этой проблемой. Я бы начал с чего-нибудь типа гугла и т.п. Но подозреваю, что ты уже интересовался существующими результатами и был неудовлетворён. А?
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[24]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 02.06.06 09:49
Оценка:
Здравствуйте, Lazy Cjow Rhrr, Вы писали:

LCR>Есть подобный effort в мире java, называется maven (он в том числе предоставляет возможность подкачивать зависимости из интернета и не зависит от системы контроля версий), но недостаток его в том, что не каждый проект укладывается в ограничения, накладываемые maven-ом (в частности ограничения на структуру каталогов), постому как скажем если мы разрабатываем плугин для еклипса, то там несколько другие соглашения. Поэтому либо затачивать maven, либо писать плугин под эклипсом — чаще выбирают второе.


Да я слышал про него, но мне он показался слишком монстрообразным. Не хватило сил с ним поближе познакомиться, да еще он для Java, а меня в первую очередь C++ интересовал. Еще для Java есть какой-то Ivy, но кроме самого факта его существования я о нем ничего не знаю.

LCR>У меня подозрение, что за *дцать лет в С++ наверняка была не одна сотня человек, которая работала над этой проблемой. Я бы начал с чего-нибудь типа гугла и т.п. Но подозреваю, что ты уже интересовался существующими результатами и был неудовлетворён. А?


Да я уже и не помню, давно дело было. Помню только что конкретно для моих нужд ничего не нашел. Да и вообще C++, в отличии от Java, Perl или Ruby -- это такая разношерстная толпа, то найти можно хоть черта лысого, но не то, что нужно здесь и сейчас

Вообще давай в этой теме оффтопик завяжем, а то не красиво получается. С удовольствием продолжу разговор здесь
Автор: Евгений Охотников
Дата: 23.05.05
, или в какой-нибудь отдельной теме.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[25]: Синтаксический сахар или C++ vs. Nemerle :)
От: Lazy Cjow Rhrr Россия lj://_lcr_
Дата: 02.06.06 10:13
Оценка:
eao197,

E>Вообще давай в этой теме оффтопик завяжем, а то не красиво получается. С удовольствием продолжу разговор здесь
Автор: Евгений Охотников
Дата: 23.05.05
, или в какой-нибудь отдельной теме.


Хорошо, я туда кину впечатления
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re[22]: Синтаксический сахар или C++ vs. Nemerle :)
От: Cyberax Марс  
Дата: 02.06.06 10:24
Оценка:
Lazy Cjow Rhrr wrote:
> После этого создаём файлик boostgem.config где будут сведения о
> компиляторе/окружении и т.п. (это сама тулза может создать). Отсюда
> следует, что для каждого компилятора будет свой конфиг.
На самом деле, это не такая уж фантастика. Есть BJamV2 там это выглядит
примерно так:
project BlahBlah ;

use-project /boost : c:/tools/boost ; #<===!
alias boost-libs : /boost//headers /boost//serialization ... ;

exe BlahExe
    :
        src1.cpp
        src2.cpp
        src3.cpp

        boost-libs
    ;

Вполне можно представить, что выделенная строка может выглядеть так
"use-project /boost : http://boost.org/repository ; ".

При постройке он сам скачает нужные файлы и поместит их куда-нибудь.
BJam автоматически пропишет необходимые зависимости для include'ов, сам
построит нужные библиотеки и т.п.

Черт, это мне нравится! Я добавлю эту фичу в свой BuildPort!
Posted via RSDN NNTP Server 2.0
Sapienti sat!
Re: Несколько предложений
От: theRebel  
Дата: 02.06.06 20:04
Оценка: 1 (1) +4 -1 :))
Здравствуйте, Чистяков Влад aka VladD2, Вы писали:

ЧВA>Статья:

ЧВA>Синтаксический сахар или C++ vs. Nemerle :)
Автор(ы): Чистяков Влад aka VladD2
Дата: 24.05.2006
Данная статья явилось плодом размышлений автора над фразами то и дело произносимыми в отношении C++ «Зачем вводить в язык то, что реализуется библиотекой?» и «Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек». Эта статья является сравнением того как эти фразы реализуются в языке Nemerle и чем эта реализация отличается от того что сделано в C++.


1. переносить все топики с участием VlaD2 автоматом в Священные войны или в Юмор.

сколько читаю форум — всегда вянут уши при чтении форумов с участием VlaD2 — в большинстве случаев
оказывается, что его оппоненты все сплошь и рядом страдают фобией нехватки памяти
и/или производительности. Обычно нет бога кроме Nemerle либо .Net — в зависимости от форума.

2. за разжигание межязыковой розни отлучать от модерирования

3. И все-таки, VlaD2 — увидел прямой вопрос Вам, на который Вы ответили какую-то
чушь, показывающую невладение вопросом либо проблемы с памятью. Что вы скажете о сравнении функторов С++
в сравнении с delegate'ами.

Только не надо отсылать на свои предыдущие сообщения, как Вы обычно делаете на
уточняющие вопросы.
Уточняющий вопрос как правило и задают тогда,
когда оппонент не хочет делиться своими аргументами и приходится их у него выпытывать

4. Зачем рассказывать о достоинствах Nemerle именно в сравнении с C++ — у Страуструпа хоть и читаются его книги
как Ода C++ по сравнением с C — но он хоть имел на это право — он разрабатывал C++ как замену C
Re[15]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.06.06 00:15
Оценка:
Здравствуйте, McSeem2, Вы писали:

VD>>У C# уже минимум 2. А с натяжкой 4.


MS>Ну и как там совместимость? К примеру, я слыхал на всяких мобильных Жавах бардак похлеще C++ного.


Довольно не плохо. Релизы соотвествуют стандартам. Баги конечно находятся, но их фиксят. Сам вот написал парсер C# по его стандарту. Задача вполне подъемная.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Несколько предложений
От: VladD2 Российская Империя www.nemerle.org
Дата: 03.06.06 00:15
Оценка: +2
Здравствуйте, theRebel, Вы писали:

R>Здравствуйте, Чистяков Влад aka VladD2, Вы писали:


ЧВA>>Статья:

ЧВA>>Синтаксический сахар или C++ vs. Nemerle :)
Автор(ы): Чистяков Влад aka VladD2
Дата: 24.05.2006
Данная статья явилось плодом размышлений автора над фразами то и дело произносимыми в отношении C++ «Зачем вводить в язык то, что реализуется библиотекой?» и «Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек». Эта статья является сравнением того как эти фразы реализуются в языке Nemerle и чем эта реализация отличается от того что сделано в C++.


R>1. переносить все топики с участием VlaD2 автоматом в Священные войны или в Юмор.


R>сколько читаю форум — всегда вянут уши при чтении форумов с участием VlaD2 — в большинстве случаев

R>оказывается, что его оппоненты все сплошь и рядом страдают фобией нехватки памяти
R>и/или производительности. Обычно нет бога кроме Nemerle либо .Net — в зависимости от форума.

R>2. за разжигание межязыковой розни отлучать от модерирования


У тебя явно мания величия.

R>3. И все-таки, VlaD2 — увидел прямой вопрос Вам, на который Вы ответили какую-то

R>чушь, показывающую невладение вопросом либо проблемы с памятью. Что вы скажете о сравнении функторов С++
R>в сравнении с delegate'ами.

R>Только не надо отсылать на свои предыдущие сообщения, как Вы обычно делаете на

R>уточняющие вопросы.
R>Уточняющий вопрос как правило и задают тогда,
R>когда оппонент не хочет делиться своими аргументами и приходится их у него выпытывать

R>4. Зачем рассказывать о достоинствах Nemerle именно в сравнении с C++ — у Страуструпа хоть и читаются его книги

R>как Ода C++ по сравнением с C — но он хоть имел на это право — он разрабатывал C++ как замену C

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

Если цель былапредварительно раздражить и спровоцировать на грубость, то пустое. Это слишком дешевые приемы.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Несколько предложений
От: McSeem2 США http://www.antigrain.com
Дата: 03.06.06 06:45
Оценка: +2 :))) :))) :))) :)))
Здравствуйте, theRebel, Вы писали:

R>2. за разжигание межязыковой розни отлучать от модерирования


Говори уж прямо — "модэратар, зобань сибя!"
McSeem
Я жертва цепи несчастных случайностей. Как и все мы.
Re[2]: Несколько предложений
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 03.06.06 13:21
Оценка:
Здравствуйте, theRebel, Вы писали:

R>1. переносить все топики с участием VlaD2 автоматом в Священные войны или в Юмор.


Да не, не согласен. Кстати, обрати внивмание, ты неправильно ник Влада написал: VladD2. Тыксыть, учимся уважать соперников.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re: Синтаксический сахар или C++ vs. Nemerle :)
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 20.08.06 12:39
Оценка: -2 :)
Прочитал статью. Вначале заинтересовался. Потом понял, что это очередная реклама Nemerle и разочаровался.

Я совершенно согласен, что C++ — мерзость. Ну так и надо говорить, что он мерзость потому-то и потому-то, а не потому что Nemerle круче. Вроде когда язык только появляется, всех его граблей не видно; они начинают проявляться только тогда, когда появляются непредусмотренные разработчиками задачи. C++ разрабатывался 20 лет назад, и тогда многих проблем было просто не видно. Тогда решали совсем другие задачи. С дриугой стороны, C++ своим горьким опытом показал, как делать не надо. А вот то, что Nemerle — это круто, все давно уже поняли (не без усилий автора).

PS: По моему субъективному мнению самое слабое место Nemerle — вывод типов. С одной стороны это позволяет экономить при написании кода. С другой сотороны, Василий Пупкин может этим воспользоваться так, что его программа станет совершенно нечитабельной. Nemerle вообще этим грешит. Я просто боюсь представить, как будет выглядеть программа на Nemerle в исполнении того же В. Пупкина. Например, при безудержном объявлении макросов, или при неумелом и неуместном смешивании функционального и императивного стилей. В общем, Nemerle не должен становиться mainstream-языком. И хотя извраться можно на C# и Java, но это не возымеет таких грандиозных последствий, как в случае с Nemerle.
Нужно носить в себе еще хаос, чтобы быть в состоянии родить танцующую звезду.
Re: Синтаксический сахар или C++ vs. Nemerle :)
От: minorlogic Украина  
Дата: 20.08.06 14:31
Оценка: -1 :)
Статья интерессная, наводит на размышления. Понравилось, жду продолжения.

Решение с рекурсией как базовое, не очень убедительно , а вот сама мысль что необходимо 1 решение , а остальное через него реализовывать — это здраво !

Чтобы проверить возможности расширяемости ЯЗЫКА Nemerle, простой тест. Насколько сложно постараться привести с помощью средств Nemerle фреймворк до состояния совместимости с C++. Т.е. чтобы можно было компилировать программу написанную на C++ с STL и т.п. как программу на Nemerle. Не потому что C++ так крут , а для обратной совместимости, или JAVA, или еще ченить. Задача и практичная и интерессная.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Ищу работу, 3D, SLAM, computer graphics/vision.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.06 19:30
Оценка: 29 (2) +1 :)
Здравствуйте, konsoletyper, Вы писали:

K>Прочитал статью. Вначале заинтересовался. Потом понял, что это очередная реклама Nemerle и разочаровался.


Ребятки. Любое упоминание продукта перед его возможными потребителями является рекламой. Даже негативное, как не странно. И две главные цели рекламы — это привлечь внимание и заинтересовать. Так что "рекламу" можно усмотреть везде и всегда. Даже если вас назвали идиотом.

Так что является что-то рекламным булшитом или информацией достойной изучения и осознания зависит исключительно от воспритяитя человека. И порой бывает так, что человек не вошедший в суть дела считает, что-то "гнусной рекламщиной".

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

Так вот желаю всем окружающим быть именно выторым типом людей, так как первые сворливы, несут один негатив и как не странно являются главными объектами на которых рассчитана реклама.

Вот, например, последняя реклама "Страого мельника" в кторой "если тормозит Аска, то нужно бухнуть и пойти к Аньке" мне очень понравилась. Мелькика я от этого, правда, пить не буду, но положительные эмоции я уже получил.

K>Я совершенно согласен, что C++ — мерзость.


А я — нет. Мерзких мест дейсвтиельно хватат. Но С++ это один из моих любимых языков програмирвоания... в прошом... правда. Но тем неменее должное ему я отдаю. К тому же он наряду с Java и C# является одним из немногих действительно популярных языков.

K> Ну так и надо говорить, что он мерзость потому-то и потому-то, а не потому что Nemerle круче.


Нет. Нет. Вот это как раз полнейший негатив, а но нам не нужен.
Мне не хочется говорить про дерьмо, мне хочется говорить про прогресс. Это я и делаю.

K> Вроде когда язык только появляется, всех его граблей не видно; они начинают проявляться только тогда, когда появляются непредусмотренные разработчиками задачи.


Если слово "задачи" заменить на "способы применения", то я пожалуй соглашусь. Вот только лично я пользуюсь Nemerle уже довольно плотно и довольно много. Учитывая мой опыт в других языках программирования, согласись, что я все же имею право выносить суждение, так как они обоснованы. К тому же опять подчеркну. У меня, по крайней мере в этой статье, не было задачи найти где-то негатив. Наоборот у меня была задача довести позетив. Позитив заключается в том, что лозунг (очень хороший на мой взгляд) провозглашенный в недрах С++-сообщества был воплошен на на практике в этом новом языке.

K> C++ разрабатывался 20 лет назад, и тогда многих проблем было просто не видно. Тогда решали совсем другие задачи.


Это опять не верно. Многие проблемы С++ были очевидны Страуструпу и уж темболее другим еще в 19885-ом. Он и сам их иногда описывает. Но оправдывает их: целями совместимости с С, незначительности (по его меннию) пробелем, производительностью, производительностью и наконец конечно же производительностью. Так вот за 20 лет стало более очевидными заблужения Страуструпа. Ну, да это тема для отдельного разговора, который мне чесно говоря мало интересен. С++ для меня пройденный этап и надежд на его перерождение я лично не вижу. За-то вижу цепляние за старое в попытках сохранить былые позиции.

Я без пробем могу програмировать на С++, но делать это не хочу, так как хочу получать от программирования удовольствие, а от С++ я его уже давно испытвать перестал.

K> С дриугой стороны, C++ своим горьким опытом показал, как делать не надо. А вот то, что Nemerle — это круто, все давно уже поняли (не без усилий автора).


В данном случае лично мне был интересен не сам Nemerle, а подход в нем использующийся. Я рассчитаывю на разумных людей способных жить не эмоциями, а разумом. Но к сожалению этот рассчет натыкается на человеческие предрассудки, привязанность, предвзятость и т.п.

K>PS: По моему субъективному мнению самое слабое место Nemerle — вывод типов. С одной стороны это позволяет экономить при написании кода. С другой сотороны, Василий Пупкин может этим воспользоваться так, что его программа станет совершенно нечитабельной.


Вот это уже тема для осбуждения. Только я бы предпочел обсуждать ее не в этом форуме. Вопрос серьезный, а здесь слишком много тех кому просто нужно устроить флэйм с целью даоказать свое ИМХО любыми целями. Так что обсуждение серьезной цели приведет в упраждения по демагогии и софистике.

Так что отвечу один раз и ни в каких развитиях темы в этом форуме участвовать н буду.

Так вот я считаю, что эти опасения безосновательны. Почему?

Все очень просто. Во-первых, ошибочна первая посылка (хотя это не так важно). Отсуствие типов внутри выражений помогает в основном не писать, а читать код! Код без лишних деталей воспринимается намного лушче. Этому содействуют два фактора: 1) уменьшается объем кода, 2) внимание концентрируется на важных деталях (алгоритме). Типы в большинстве случаев являются справочной информацией — "шумом".

Да, безусловно, порою, информация о типах деталей выражения очень важна для понимания происходящего. Особенно если тот самый "Вася Пупкин" (которыми мы с вами, на самом деле и являемся иногда) налепил код "в строчку" не задумываясь над тем, чтобы дать переменным и функциям внятные имена.

Однако проблемой это станет только при одном условии, если у нас нет возможнсоти получить эту информацию о типах каким-то другим путем.

Собвственно дальше это рассуждение можно не продолжать так как умные уже догадались. Хотя... поясню чтобы уж до все...

Мы живем не в прошлом веке. Писать код без IDE современный мэйнтстрим-программист не будет! Не будет во все. А IDE без проблем сможет предоставить нужную информацию о типах. Причем так как IDE исползует для получения информации о типах комплилятор, то и инфомрация эта будет куда более полной по сравнению с тем что может предоставить человек.

Вот пимер работы
Автор: VladD2
Дата: 14.08.06
такой интеграции с IDE которую мы с IT (и другими) сейчас сейчас для Nelerle.

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

K> Nemerle вообще этим грешит. Я просто боюсь представить, как будет выглядеть программа на Nemerle в исполнении того же В. Пупкина.


Думаю, моя следующая статья будет о том почему все вокруг говорят о В. Пупкина, но эта загадочная личность никогда не показывается на клаза сама. Это просто детектив какой-то, а я обожаю хоршие детективы.

K> Например, при безудержном объявлении макросов, или при неумелом и неуместном смешивании функционального и императивного стилей.


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

На саомом деле, чтобы накосячить с макросами еще нужно уметь их написать. Макрос — это метапрограмма. А метапрограмма требует выхода на более высокий уровень бастрации. Чтобы ее написать нужно начать думать в мире где стало на одно измерение больше. Если В.Пупкин вдруг вышел на этот уровень, то уверяю вас, что он обогнал в своем развитии очень многих из тех кто боится теней в подвортне.

В C++ во всю используется совершенно страшный вариант метапрограммирования и это мало кому мешает. Тот кто считает опасным использовать "такой метакод" или просто метакод, то просто не пользуется библиотеками содержащими метакод. А дебилы его не пишут просто потому что у них нехватает интеллекта для этого. Так что природа сам защитила нас от подобных проблем.

Страх смешение функционального и императивного стилей имеет ту же природу — боязнь темного угла (неизвестности).

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

В общем, несомненно кривой код Nemerle писать не запретит. В прочем, это не запретят и другие ЯП. Это вообще невозможно запретить. А раз так, то использовать "аргумент" что мол "Вася Пупкин сожет накосячить" просто не разумно. Он, а значит, ты я и вот тотот ухмыляющийся товарищь с разбухшим сомомнением, можем накосячить. И тольо от нас зависит будем ли мы стараться этого не делать или нет.

Важно только то, чтобы язык не подталкивал к косякам и чтобы косяки не могли появиться слоучайно. Вот отсуствие это Nemerle гарантирует. В нем не так то просто сделать косяк случано.

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

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

K> В общем, Nemerle не должен становиться mainstream-языком. И хотя извраться можно на C# и Java, но это не возымеет таких грандиозных последствий, как в случае с Nemerle.


Я не согласен с этим мнением. Да и один разговор о том должен или не должен ли Nemerle стать mainstream-языком говорит о том, что хотя и подспутно, но ты чувствуешь, что это вполне возможно. И это лично меня радует. Ну, а станет ли он mainstream-языком или нет ни от твоих высказываний, ни от моих не зависит. Вот от действий возможно. Думаю, что статьи и поддержка IDE работает на то чтобы Nemerle таки сал бы mainstream-ом.

Что касается извращения на C#, то тут вопрос терминов. Написать совершенно ничитаемый код на них проще просто. Думаю, никто с этим даже спорить не будет. А вот то что ты считашь извращением скорее всего просто плод твоей боязни темного угла. Ты не привык к более понятным и простым конструкциям и увидав их ты пугашся каки-то последствий которых ты пока не видишь, но которые ведь обязательно случатся.

ЗЫ

Да, и еще раз о рекламе. Твое сообщение безусловно увеличило (хотя возможно и незначительно) интерес к Nemerle, так что могу поздравить тебя с присоеденением к рекламной компании. Шучу конечно, но в каждой шутке...
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 20.08.06 19:30
Оценка:
Здравствуйте, minorlogic, Вы писали:

M>Решение с рекурсией как базовое, не очень убедительно , а вот сама мысль что необходимо 1 решение , а остальное через него реализовывать — это здраво !


Слава богу, нашлись все же люди восринявшие суть стать и задумывавшиеся над ней.

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

M>Чтобы проверить возможности расширяемости ЯЗЫКА Nemerle, простой тест. Насколько сложно постараться привести с помощью средств Nemerle фреймворк до состояния совместимости с C++. Т.е. чтобы можно было компилировать программу написанную на C++ с STL и т.п. как программу на Nemerle. Не потому что C++ так крут , а для обратной совместимости, или JAVA, или еще ченить. Задача и практичная и интерессная.


Это не тест на расширение языка. Это тест на безрассудность.
Nemerle более мощьный язык и "доангрэйтить" его до С++ смысла нет. Более того возозможнсоти по изменению синтаксиса в Немерле довольно ограничины (причем намерянно). В нем нельзя поменять синтаксис на уровне описания типов. И не все можно сделать на уровне выражений. Но того что есть более чем достаточно для решения большинства пробелм стоящих сегодня перед программистом и архитектором.

Конечно в Nemerle есть возможность разрабатывать свои ДСЛ-и на уровне токенов и потенциально в нем можно попросту встроить С++. Но слава богу это очень не просто и совершенно никому не нужно.

Если цель всего лишь обратная совместимость с С++, то достаточно скомплировать С++-код в .net-ую сборку и подключить ее к прокту.

В Nemerle есть даже конвертор C#-а в Nemerle, но чесно говоря я так ни разу им и не восползовался. Ведь это совершенно не нужно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: konsoletyper Россия https://github.com/konsoletyper
Дата: 20.08.06 20:11
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Ребятки. Любое упоминание продукта перед его возможными потребителями является рекламой. Даже негативное, как не странно. И две главные цели рекламы — это привлечь внимание и заинтересовать. Так что "рекламу" можно усмотреть везде и всегда. Даже если вас назвали идиотом.


VD>Так что является что-то рекламным булшитом или информацией достойной изучения и осознания зависит исключительно от воспритяитя человека. И порой бывает так, что человек не вошедший в суть дела считает, что-то "гнусной рекламщиной".


VD>Напритив, человек обладающий своей головой без проблем смотрит самую примитивнейшую рекламу рассчитанную на воздейсвие на самые животные инстинкты человека. Его забавляет откровенное вранью и натяжки. Воздейсвие на инстинкты задорит. Такой человек сопособен увидеть в такой рекламе юмор и эронию.


VD>Так вот желаю всем окружающим быть именно выторым типом людей, так как первые сворливы, несут один негатив и как не странно являются главными объектами на которых рассчитана реклама.


VD>Вот, например, последняя реклама "Страого мельника" в кторой "если тормозит Аска, то нужно бухнуть и пойти к Аньке" мне очень понравилась. Мелькика я от этого, правда, пить не буду, но положительные эмоции я уже получил.


А я и не говорю, что ненавижу рекламу в общем и рекламу Nemerle в частности. Просто начало было каким-то многообещающим. Что-то мне не нравится в C++, думал статья объяснит, что же именно. А статья всего лишь оказалась очередной похвалой Nemerle. Вот и разочаровался.

K>>Я совершенно согласен, что C++ — мерзость.


VD>А я — нет. Мерзких мест дейсвтиельно хватат. Но С++ это один из моих любимых языков програмирвоания... в прошом... правда. Но тем неменее должное ему я отдаю. К тому же он наряду с Java и C# является одним из немногих действительно популярных языков.


Процитирую себя:

C++ — жуткий отстой. То же масое можно сказать и по отношению к C#, Java, Object Pascal, Lisp, Nemerle, Prolog, и многим другим языкам. Но в той или иной степени они подходят для решения определёного круга задач. Хотя, на мой взгляд, C# чуть менее отстойный, чем C++, а Nemerle — чуть менее отстойный, чем C#.


Просто слишком радикально выражаюсь. А так мне хотелось бы просто обсудить недостатки C++. Для научного интереса. Чтобы не наступать на грабли. к сожалению, мой опыт не столь велик. На C++ не доводилось выполнять серьёзных проектов.


K>> Вроде когда язык только появляется, всех его граблей не видно; они начинают проявляться только тогда, когда появляются непредусмотренные разработчиками задачи.


VD>Если слово "задачи" заменить на "способы применения", то я пожалуй соглашусь. Вот только лично я пользуюсь Nemerle уже довольно плотно и довольно много. Учитывая мой опыт в других языках программирования, согласись, что я все же имею право выносить суждение, так как они обоснованы. К тому же опять подчеркну. У меня, по крайней мере в этой статье, не было задачи найти где-то негатив. Наоборот у меня была задача довести позетив. Позитив заключается в том, что лозунг (очень хороший на мой взгляд) провозглашенный в недрах С++-сообщества был воплошен на на практике в этом новом языке.


Думаю, не все проблемы первой версии фортрана были видны разработчикам. Да, они безусловно понимали, что их детище — не венец творения, могли указать на некоторые его недостатки. Но они тогда, хоть и понимали это интуитивно, не могли чётко сформулировать постулатов структурного программирования. Не говоря об ООП, АОП или ЯОП. Мир меняется, меняется требования к ПО, к его разработке. По моему, ни один язык не может учитывать далёкого будущего, сколь гибок он не был бы.

K>> С дриугой стороны, C++ своим горьким опытом показал, как делать не надо. А вот то, что Nemerle — это круто, все давно уже поняли (не без усилий автора).


VD>В данном случае лично мне был интересен не сам Nemerle, а подход в нем использующийся. Я рассчитаывю на разумных людей способных жить не эмоциями, а разумом. Но к сожалению этот рассчет натыкается на человеческие предрассудки, привязанность, предвзятость и т.п.


Надо было мне поставить смайлик и написать ИМХО . А то, оказывается, получился совершенно не тот эмоциональный настрой.

K>>PS: По моему субъективному мнению самое слабое место Nemerle — вывод типов. С одной стороны это позволяет экономить при написании кода. С другой сотороны, Василий Пупкин может этим воспользоваться так, что его программа станет совершенно нечитабельной.


VD>Вот это уже тема для осбуждения. Только я бы предпочел обсуждать ее не в этом форуме. Вопрос серьезный, а здесь слишком много тех кому просто нужно устроить флэйм с целью даоказать свое ИМХО любыми целями. Так что обсуждение серьезной цели приведет в упраждения по демагогии и софистике.


Да, форумы этим грешат.

VD>ЗЫ


VD>Да, и еще раз о рекламе. Твое сообщение безусловно увеличило (хотя возможно и незначительно) интерес к Nemerle, так что могу поздравить тебя с присоеденением к рекламной компании. Шучу конечно, но в каждой шутке...


А я только за
Нужно носить в себе еще хаос, чтобы быть в состоянии родить танцующую звезду.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: FR  
Дата: 21.08.06 04:57
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, minorlogic, Вы писали:


M>>Решение с рекурсией как базовое, не очень убедительно , а вот сама мысль что необходимо 1 решение , а остальное через него реализовывать — это здраво !


VD>Слава богу, нашлись все же люди восринявшие суть стать и задумывавшиеся над ней.


VD>Искренее спасибо. Я уже думал, что не услышу мнение о сути статьи, так как она потонит в придирках к дералям и предубеждениях людей.


Так раньше статьи не было целиком был только кусок с наездом, вот его и критиковали

А так если убрать наезд в общем статья нормальная, но примеры в ней очень слабые. Особенно пример с замыканием, по моему просто нереально понять из него что это такое если раньше не знал. Да и использование в примере про замыкания мутабельных переменных тоже по моему неверно, это особенность реализации, лучше было бы сделать это с немутабельными. Мне кажется проще объяснить эту тему на подобном примере:
using System.Console;

def closure(x)
{
    def local()
    {
    x;
    }
    
    local;
}

WriteLine(closure(0)());
WriteLine(closure(123)());
Re[3]: Несколько предложений
От: Gaperton http://gaperton.livejournal.com
Дата: 21.08.06 07:55
Оценка: 11 (1) +2 :)
Здравствуйте, Геннадий Васильев, Вы писали:

ГВ>Здравствуйте, theRebel, Вы писали:


R>>1. переносить все топики с участием VlaD2 автоматом в Священные войны или в Юмор.


ГВ>Да не, не согласен. Кстати, обрати внивмание, ты неправильно ник Влада написал: VladD2. Тыксыть, учимся уважать соперников.


Уважение надо заслужить, и первый шаг в этом — уважать других. А начинается уважение с элементарной вежливости и культуры. Это очень сложно, но я объясню на примере — вот, например, опечатки (вроде VlaD2) принято не замечать, как, например, кусочки еды, случайно упавшие с вилки вашего визави на скатерть. А не тыкать ему, что у него с тарелки что-то упало и поэтому он вас не уважает. Ну это я так, для примера — вы не подумайте чего, любые совпадения — сами понимаете, случайны.
Re: Синтаксический сахар или C++ vs. Nemerle :)
От: unreg_flex  
Дата: 21.08.06 08:07
Оценка: +1
Здравствуйте, Чистяков Влад aka VladD2, Вы писали:

ЧВA>Статья:

ЧВA>Синтаксический сахар или C++ vs. Nemerle :)
Автор(ы): Чистяков Влад aka VladD2
Дата: 24.05.2006
Данная статья явилось плодом размышлений автора над фразами то и дело произносимыми в отношении C++ «Зачем вводить в язык то, что реализуется библиотекой?» и «Язык должен включать только базовые вещи, а весь синтаксический сахар должен реализоваться в виде библиотек». Эта статья является сравнением того как эти фразы реализуются в языке Nemerle и чем эта реализация отличается от того что сделано в C++.


Думаю, что не ошибусь, если скажу, что while – идеальный претендент на роль базового типа цикла.


Не верю я в это. Базового типа цикла не существует. do,while,for,foreach,break,continue,call,return и тд.
выражаются через if и goto. Все остальное это лукавые макросы.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: unreg_flex  
Дата: 21.08.06 08:11
Оценка: :)))
А вообще, как говорил наш препод, все выражается через сложение с 1, сравнение с 0 и безусловный переход
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.08.06 08:41
Оценка: +1 -1 :)
Здравствуйте, VladD2, Вы писали:

M>>Решение с рекурсией как базовое, не очень убедительно , а вот сама мысль что необходимо 1 решение , а остальное через него реализовывать — это здраво !


VD>Слава богу, нашлись все же люди восринявшие суть стать и задумывавшиеся над ней.


VD>Искренее спасибо. Я уже думал, что не услышу мнение о сути статьи, так как она потонит в придирках к дералям и предубеждениях людей.


Одно решение, вокруг которого строится все остальное... Такое все из себя Единственно Правильное Решение (в обиходе просто silver bullet).

Ну попробуйте, например, реализовать одномерные вектора и 3-х мерные матрицы имея в распоряжении только списки. Или двухсвязные списки через вектора. Или деревья через массивы. Это же не так и сложно. Только вот не нужно почему-то.

Уже давно пора оставить сказочки о том, что есть единственно правильный подход. И что есть самый лучший инструмент. И что сочетание единственно правильного подхода с самым лучшим инструментом дает гарантированно успешные результаты.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: Vermicious Knid  
Дата: 21.08.06 10:26
Оценка: +1
Здравствуйте, unreg_flex, Вы писали:

_>Не верю я в это. Базового типа цикла не существует. do,while,for,foreach,break,continue,call,return и тд.

_>выражаются через if и goto. Все остальное это лукавые макросы.
В функциональных языках нет goto. Циклов в привычном понимании там в общем тоже нет, но без них прекрасно обходятся. Это принципиально другая вычислительная модель(еще на одной припципиально другой вычислительной модели без goto, и даже без if построены логические языки программирования). (Чистые) функциональные языки как раз и возникли как попытка полностью отойти от традиционной фон Нейманновской модели. Что интересно первопроходцем в этой области был John Backus, до этого придумавший Fortran и нотацию BNF.

Nemerle конечно не является чистым ФЯ, но как и в функциональных языках там нет goto, как и циклов(если не считать "лукавых" макросов ), Зато к goto по сути сводится хвостовая рекурсия, о чем как раз и написанно в этой статье.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: Programmierer AG  
Дата: 21.08.06 11:18
Оценка: +1
unreg_flex wrote:
> А вообще, как говорил наш препод, все выражается через сложение с 1, сравнение с 0 и безусловный переход
Лучше бы он вам рассказал, что все выражается через S и K.
Posted via RSDN NNTP Server 2.0
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 21.08.06 12:49
Оценка: :)
Здравствуйте, eao197, Вы писали:

E>Одно решение, вокруг которого строится все остальное... Такое все из себя Единственно Правильное Решение (в обиходе просто silver bullet).


Ты знаешь, а ведь работает! Сильвер, не сильвер, а работает и очень не плохо.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: Lloyd Россия  
Дата: 21.08.06 13:02
Оценка:
Здравствуйте, IT, Вы писали:

IT>Ты знаешь, а ведь работает! Сильвер, не сильвер, а работает и очень не плохо.


А не рановато ли говорить, что оно работает, до окончательного релиза компилятора. А то глядишь, прикроют им грант, оно и заглохнет.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.08.06 13:10
Оценка:
Здравствуйте, IT, Вы писали:

E>>Одно решение, вокруг которого строится все остальное... Такое все из себя Единственно Правильное Решение (в обиходе просто silver bullet).


IT>Ты знаешь, а ведь работает! Сильвер, не сильвер, а работает и очень не плохо.


Вот и славно.
Только ведь и отнюдь не минималистические подходы C++ и Java работают. И очень даже не плохо.
И ведь пользователям Nemerle совершенно фиолетово, является ли while макросом, реализованным через какой-то один механизм, либо он жестко задан в компиляторе (как в случае C++, Java или Pascal).


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.06 13:40
Оценка: +1 :)
Здравствуйте, FR, Вы писали:

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


Что же. Со стороны виднее. Я тоже не святой. Для того чтобы вылавливать пдобные вещи нужно чтобы статьи вычитывались людьми не имеющими никаких начальных знаний в этой области. А таких мне даже найти сложно, не то что уговорить их читать мои статьи.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.06 13:40
Оценка:
Здравствуйте, eao197, Вы писали:

E>Одно решение, вокруг которого строится все остальное... Такое все из себя Единственно Правильное Решение (в обиходе просто silver bullet).


E>Ну попробуйте, например, реализовать одномерные вектора и 3-х мерные матрицы имея в распоряжении только списки. Или двухсвязные списки через вектора. Или деревья через массивы. Это же не так и сложно. Только вот не нужно почему-то.


E>Уже давно пора оставить сказочки о том, что есть единственно правильный подход. И что есть самый лучший инструмент. И что сочетание единственно правильного подхода с самым лучшим инструментом дает гарантированно успешные результаты.


Читая это сообщение вспомнились замечательные слова Резанова из "Кинопонарамы" — "О чем этот фильм? Да, в общем-то ни о чем..."
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.06 13:40
Оценка:
Здравствуйте, Lloyd, Вы писали:

L>А не рановато ли говорить, что оно работает, до окончательного релиза компилятора. А то глядишь, прикроют им грант, оно и заглохнет.


Да, да. Вдруг решение прокиснет?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.06 13:40
Оценка:
Здравствуйте, unreg_flex, Вы писали:

_>Не верю я в это. Базового типа цикла не существует. do,while,for,foreach,break,continue,call,return и тд.

_>выражаются через if и goto. Все остальное это лукавые макросы.

Охотно соглашусь. Но почему-то не очень хочется в 21-ом веке возиться с язком в которо все основано на goto. Функциональная модель имеет те же возможности (полна по Тюрингу), что и императивная. Но при этом позволяет выражать алгоритмы без goto. Это уже, по-моему, само по себе приемущество.

Кстати, в "Декларативном программирвоании" проскакивал язык где все реализовано именно от if и goto. Точнее за if, не скажу, но на goto — точно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.06 13:40
Оценка: :)
Здравствуйте, Programmierer AG, Вы писали:

>> А вообще, как говорил наш препод, все выражается через сложение с 1, сравнение с 0 и безусловный переход

PA>Лучше бы он вам рассказал, что все выражается через S и K.

Не K — мало. Надо брать хотя бы М.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.08.06 13:47
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Читая это сообщение вспомнились замечательные слова Резанова из "Кинопонарамы" — "О чем этот фильм? Да, в общем-то ни о чем..."


К сожалению, данная статья, как по замыслу, так и по уровню изложения (включая примеры), полностью попадает под это определение.

PS. К орфографии придираться не принято, то правильно писать Рязанов.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 21.08.06 13:47
Оценка:
Здравствуйте, eao197, Вы писали:

E>Вот и славно.

E>Только ведь и отнюдь не минималистические подходы C++ и Java работают. И очень даже не плохо.
E>И ведь пользователям Nemerle совершенно фиолетово, является ли while макросом, реализованным через какой-то один механизм, либо он жестко задан в компиляторе (как в случае C++, Java или Pascal).

Прочти до конца вот это сообщение
Автор: VladD2
Дата: 12.08.06
, а потом уже рассуждай о том кому и что по фигу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: FR  
Дата: 21.08.06 13:58
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Охотно соглашусь. Но почему-то не очень хочется в 21-ом веке возиться с язком в которо все основано на goto. Функциональная модель имеет те же возможности (полна по Тюрингу), что и императивная. Но при этом позволяет выражать алгоритмы без goto. Это уже, по-моему, само по себе приемущество.


Императивность с goto и if мало связана. В императивном forth нет goto, и if обычно реализован (в терминах Nemerle) как макрос
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: Lloyd Россия  
Дата: 21.08.06 14:17
Оценка:
Здравствуйте, VladD2, Вы писали:

L>>А не рановато ли говорить, что оно работает, до окончательного релиза компилятора. А то глядишь, прикроют им грант, оно и заглохнет.


VD>Да, да. Вдруг решение прокиснет?


Что ты имеешь в виду?
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 21.08.06 14:19
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Прочти до конца вот это сообщение
Автор: VladD2
Дата: 12.08.06
, а потом уже рассуждай о том кому и что по фигу.


Сорри, это сообщение по e-mail ко мне не приходило. Увидел его в первый раз. См. ответ там.

Тем не менее, четкого описания "кому и что по фигу" я не увидел.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: vdimas Россия  
Дата: 21.08.06 18:07
Оценка:
Здравствуйте, fionbio, Вы писали:

F>По поводу дотнета — я профессиональный дотнетчик, и чем больше с годами набираюсь опыта по работе

F>с этой платформой, тем с большим презрением к ней отношусь Такое чувство, что изначально
F>было задумано сравнительно не плохо (хотя лучше бы не задумывалось вообще), а потом посадили толпу
F>обезьян, дали им нереальные сроки и вперёд... (кто не верит, больше юзайте Рефлектор )

Содержимое рефлектора — это как раз бог с ним, утрясется со временем... Лишь бы внешние доступные интерфейсы содержали поменьше багов в своей архитектуре. К дотнету 2.0 в этом плане гораздо меньше претензий — исправили сотни детских болячек.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[10]: Синтаксический сахар или C++ vs. Nemerle :)
От: vdimas Россия  
Дата: 21.08.06 18:07
Оценка:
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Здравствуйте, WolfHound, Вы писали:


O>>>Прошёл, но у тебя были проблемы другого плана.

WH>>А именно?

Да, знаю, обсуждать модеров низзя... Но это же просто нечестно, ты же сам спросил...

Теперь все ломают голову, что бы это могло быть
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[8]: А D?
От: vdimas Россия  
Дата: 21.08.06 18:07
Оценка: +1 -1 :)
Здравствуйте, WolfHound, Вы писали:


K>>Нет. Ни то и не другое. язык будет такимже низкоуровневым как и С++, просто для классов которые экспортируются из ДЛЛ добавится дополнительный уровень виртуализации.


А мысль насчет виртуализации классов интересная... Но здесь нужен некий минимальнейший набор метаинформации и специализированный загрузчик бинарников.

WH>Вот у нас уже появилась метаинформация те один шаг до рефлекшена.

WH>Далие нам понадобится что-то сделать с менеджером памяти... а там глядишь уже и до ГЦ недолеко.
WH>Потом захечется код во время исполнения сгенерить... и вот у нас уже появляется System.Reflection.Emit...
WH>...
WH>Так зачем мучаться?

Чтобы создавать приложения весом в реальные бинарные десятки-сотни K, а не виртуальные оные, которые требуют загрузки в процесс более 10Мег фреймворчных библиотек.

В принципе, если для дотнета сделают подобный бинарный линкер, который отсекает все ненужное, то задача будет решена. Согласно моему ИМХО, до сих пор 90% задач не требуют ни рефлекшена ни емита, ни диниамической подгрузки модулей. Например, сейчас на дотнете хрена сделаешь программное окружение в стиле unix-way, ибо запуск каждого дотнет процесса очень дорог.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[11]: Синтаксический сахар или C++ vs. Nemerle :)
От: vdimas Россия  
Дата: 21.08.06 18:07
Оценка: +1 :)
Здравствуйте, McSeem2, Вы писали:


MS>Ты знаешь, здесь я встану на сторону VladD2, IT и прочих апологетов дот-нетщины. Шаблоны — это замечательно и я их вполне успешно использую. Но вот буст — не понимаю. Не имеет он для меня ни малейшей пректической ценности. В качестве головоломных упражнений — замечательно, но не более того.


Буст настолько многограннен, что давать ему оценку одной строкой — это как рассуждать о вкусе тех самых устриц. Использование буста упрощает разработку в разы, избавляя от тех самых головоломок. Пара заворотов есть только в использовании лямбды и меты, ну дык их почти никто не юзает... Как раз-таки эти либы — синтаксический сахар чистой воды и явно на любителя. Все остальное — весьма полезные либы прикладного характера.

MS>Когда ради какой-то приблуды типа boost::tuple написано пару тыщ строк кода, которые со скрипом компилируются, значит что-то здесь не то.


Используй компиляторы, наиболее близкие к стандарту, и прекрасно все будет компилироваться. Для последних компиляторов от MS и gcc — абсолютно никаких проблем. Пара тыщ строк написана как раз для компиляторов, не подерживающих стандарт. Посмотри сколько реально строк написано в версии tuple для частичной специализации шаблонов — очень даже немного в итоге.

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


А ты ATL/WTL-проекты как собирал? Или не собирал?

И там и там можно юзать прекомпилённые хедеры, получишь вполне быстро. Ну а перекомпиляция бывает нечасто. А если к тому же сложные проекты не забывать делить на либы (желательно статические), то вообще от редактирования до пошаговой отладки проходит меньше всего времени в самом распространенном сценарии работы разработчика. У меня — меньше чем в дотнет, ибо там для отладки в студии все о-о-очень долго грузится, а в С++ — мгновенно.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[4]: Несколько предложений
От: Геннадий Васильев Россия http://www.livejournal.com/users/gesha_x
Дата: 21.08.06 19:46
Оценка:
Здравствуйте, Gaperton, Вы писали:

R>>>1. переносить все топики с участием VlaD2 автоматом в Священные войны или в Юмор.

ГВ>>Да не, не согласен. Кстати, обрати внивмание, ты неправильно ник Влада написал: VladD2. Тыксыть, учимся уважать соперников.

G>Уважение надо заслужить, и первый шаг в этом — уважать других. А начинается уважение с элементарной вежливости и культуры. Это очень сложно, но я объясню на примере — вот, например, опечатки (вроде VlaD2) принято не замечать, как, например, кусочки еды, случайно упавшие с вилки вашего визави на скатерть. А не тыкать ему, что у него с тарелки что-то упало и поэтому он вас не уважает. Ну это я так, для примера — вы не подумайте чего, любые совпадения — сами понимаете, случайны.


Я вообще, о том, что трижды неправильно повторять ник — не комильфо.
<< Под музыку: silent >>
<< При помощи Януса: 1.2.0 alpha rev. 650 >>
Я знаю только две бесконечные вещи — Вселенную и человеческую глупость, и я не совсем уверен насчёт Вселенной. (c) А. Эйнштейн
P.S.: Винодельческие провинции — это есть рулез!
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 22.08.06 00:41
Оценка: :)
Здравствуйте, eao197, Вы писали:

IT>>Ты знаешь, а ведь работает! Сильвер, не сильвер, а работает и очень не плохо.


E>Только ведь и отнюдь не минималистические подходы C++ и Java работают. И очень даже не плохо.


Работают, но хреново?
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.08.06 05:56
Оценка:
Здравствуйте, IT, Вы писали:

E>>Только ведь и отнюдь не минималистические подходы C++ и Java работают. И очень даже не плохо.


IT>Работают, но хреново?


См. выделенное.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re: Синтаксический сахар или C++ vs. Nemerle :)
От: enzo  
Дата: 22.08.06 06:52
Оценка: 9 (3) +1
Статья, безусловно, интересная. Хотелось бы только отметить, что за кадром остался анализ практических последствий полной синтаксической свободы. Легкость восприятия не менее важна чем легкость программирования. Да, Nemerle позволяет писать писать более понятный и читаемый код чем C++. Но позволяет и совершенно обратное. Конечно, и на С++ можно написать код понятный только автору (а то и вообще только вселенскому разуму), но строгий синтаксис все-таки затрудняет подобные действия. А теперь представьте, что Nemerle стал сравним по популярности с C++ или С#. Какой процент реальных программистов будет использовать возможность расширения синтаксиса во вред, а какой во благо? Хотя, возможно, это тема для отдельной статьи. В заключение цитата с MSDN:


здесь

The C# IDE (February 23, 2006)


Chat Topic: The C# IDE — part of Visual Studio
Date: Thursday, February 23, 2006


Cyrusn_MS (Expert):
Q: since we're on the subject of from/where/select...it would be a *huge* win if you could provide a general mechanism for those kinds of syntax transformations in C#. nemerle has a nice simple way to do it, and it'd be great to see something like that
A: Wolf: It's definitely been considered (and argued passionately for) but for 3.0 we are thinking that that would be too much flexibility to expose to our huge user base. The main issue would be that you would now have something akin to the C++ world today where when you go to any company (or heck, any team) you see code that doesn't look *anything* like any other code you've ever seen. People will be writing specific macros for everything, and there will no longer be things that you can identify as "C#"

Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 22.08.06 12:19
Оценка:
Здравствуйте, eao197, Вы писали:

E>>>Только ведь и отнюдь не минималистические подходы C++ и Java работают. И очень даже не плохо.


IT>>Работают, но хреново?


E>См. выделенное.


Ты там ИМХО забыл добавить.
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[9]: Синтаксический сахар или C++ vs. Nemerle :)
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 22.08.06 12:24
Оценка:
Здравствуйте, IT, Вы писали:

E>>>>Только ведь и отнюдь не минималистические подходы C++ и Java работают. И очень даже не плохо.


IT>>>Работают, но хреново?


E>>См. выделенное.


IT>Ты там ИМХО забыл добавить.


Ok. Правильнее будет сказать так: в C++, имхо, работает очень даже не плохо. В Java работает отлично.
По отношению к Java я могу добавить имхо, но далеко не я один так думаю


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 22.08.06 12:24
Оценка:
Здравствуйте, enzo, Вы писали:

E>Хотя, возможно, это тема для отдельной статьи.


Возможно. Если она не бедет основана на домыслах, предположениях и аналогиях из С++ (у которого проблемы арстут совсем из другого места), а напротив, она будет являться обобщением опыта языков которые уже давно имеют в своем арсенале подобные мощьные средства (это в первую очередь Лисп, Схема, Caml4p, Мета Хаскель и т.п.), естественно с учетом особенностей Nemerle, то я бы и сам с огромным удовольствием почитал бы такую статью.

Ну, а потка и отвечать не на что. IMHO проитв IMHO особой ценности не имеет.

E>Cyrusn_MS (Expert):

E>Q: since we're on the subject of from/where/select...it would be a *huge* win if you could provide a general mechanism for those kinds of syntax transformations in C#. nemerle has a nice simple way to do it, and it'd be great to see something like that
E>A: Wolf: It's definitely been considered (and argued passionately for) but for 3.0 we are thinking that that would be too much flexibility to expose to our huge user base. The main issue would be that you would now have something akin to the C++ world today where when you go to any company (or heck, any team) you see code that doesn't look *anything* like any other code you've ever seen. People will be writing specific macros for everything, and there will no longer be things that you can identify as "C#"
E>[/q]

Отмазка она и есть отмазка. Но одно то, что ребята задумались над этим уже вселяет надежду.

Ну, а код разных проектов не выглядит похоже и без макросов. Любая компания создает свои фрэймворки, библиотеки, а порой и генераторы кода. Так что приходя в компанию все равно прийдется подстраиваться к ее реалиям.

Причем, при грамотной постановке дела, макросы могут существенно облегчить и вхождение нового человека в компанию, и саму разработку. Ведь они позволяют поднять код на более высокий уровень абстракции (в прочем Nemerle делает это даже без макросов, один match многого стоит). А это позволяет значительно проще вникать в детали.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Синтаксический сахар или C++ vs. Nemerle :)
От: FractalizeR  
Дата: 12.09.06 16:37
Оценка:
Спасибо за статью.

Честно говоря, я даже о языке таком не слышал и ваша статья стала для меня поводом залезть в интернет покопать

Вы очень хорошо и красиво говорили о Nemerle, и у меня только один вопрос. Какая конструкция выглядит проще и красивее:


foreach (i in [0 .. 100])
  // делаем что-то с i




while (iterator.MoveNext())
{
  // делаем что-то с iterator
}



И точно так же все это можно выражать через хвостовую рекурсию (код на Nemerle):




def Loop1(iterator, accumulator)
{
  if (iterator.MoveNext())
    // делаем что-то с iterator и accumulator
    Loop1(iterator, accumulator); // возвращаем значение рекурсивного вызова
  else
    accumulator // возвращаем значение аккумулятора
}

def Loop2(i, accumulator)
{
  if (i < 100)
    // делаем что-то с i и accumulator
    Loop(i + 1, accumulator);
  else
    accumulator 
}

// Запускаем «циклы».
Loop1(iterator, xxx);
Loop2(0, yyy);



На мой взгляд, язык программирования должен быть в первую очередь понятным и иметь простой синтаксис (чтобы не опуститься, или наоборот подняться(?) до уровня, например, Perl, который в шутку называют Write-Only языком), ибо там где много сложностей (не важно, во имя чего они создавались) легче нагромоздить ошибок.
Я согласен, "хвостовая рекурсия" звучит прекрасно. Но ведь помимо удобства, есть еще и стоимостные затраты на обучение и сопровождение, не так ли? Код, написанный на языке с простым и понятным синтаксисом, гораздо проще поддерживать и сопровождать, как мне кажется.

Ваша статья лично для меня прозвучала как ода Nemerle. Разве у этого языка нет недостатков? Совсем нет? Он совершенен? Идеален? Мне кажется, с этой точки зрения ваша статья получилась немного однобокой. Итог вы подводите одной фразой:

А пока что хочется подытожить. C++ проигрывает это сравнение молодому языку Nemerle.


Кстати, а как в Memerle обстоит дело со скоростью исполнения скомпилированного кода?



В C++ нет средств расширения синтаксиса!

Ну, наверное, перегрузку операторов нельзя считать расширением синтаксиса, так что тут вы правы. Но с другой стороны, разве хорошо иметь язык, синтаксис которого можно расширять в самом языке? То есть, фактически язык можно сделать таким, каким ты хочешь его видеть, так? Захотел, назвал операцию while — "while", а захотел — "cyclew", правильно? Как вы считаете, хорошо ли давать подобную свободу программисту? Да, это действительно удобно. Это действительно похоже на некое "метапрограммирование". Но хорошо ли это для качества кода? Для командной разработки программных продуктов? Сколько страниц будут занимать правила написания кода программы для какого-либо проекта в сравнении с аналогичными для, скажем, C#? Насколько возрастут затраты на написание подобного документа и насколько просто будет потом другим пользователям (если это, например, opensource проект) разбираться в написанном коде не прочитав этот талмуд.

Прошу прощения, если что-либо сказал не так. Я ни в коем случае не хочу сказать, что статья получилась плохой или ненужной. Нет, она хороша, но, как и все статьи имеет недостатки, по моему скомному мнению. Буду рад любым комментариям.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: WolfHound  
Дата: 12.09.06 17:25
Оценка: -2
Здравствуйте, FractalizeR, Вы писали:

FR>Вы очень хорошо и красиво говорили о Nemerle, и у меня только один вопрос. Какая конструкция выглядит проще и красивее:

Ты видимо плохо статью прочитал.

FR>На мой взгляд, язык программирования должен быть в первую очередь понятным и иметь простой синтаксис (чтобы не опуститься, или наоборот подняться(?) до уровня, например, Perl, который в шутку называют Write-Only языком), ибо там где много сложностей (не важно, во имя чего они создавались) легче нагромоздить ошибок.

С этим никто не спорит. И тут у Nemerle проблем нет.

FR>Я согласен, "хвостовая рекурсия" звучит прекрасно. Но ведь помимо удобства, есть еще и стоимостные затраты на обучение и сопровождение, не так ли? Код, написанный на языке с простым и понятным синтаксисом, гораздо проще поддерживать и сопровождать, как мне кажется.

Там же ясно написано:

Однако в определенных случаях некоторые конструкции более выразительны. Иногда самым выразительным циклом является while. Иногда – foreach. А иногда – хвостовая рекурсия (например, в алгоритмах обхода дерева).

Попаытка сделать нетривиальную обработку дерева через foreach выльется в жуткий гемерой в то время как с рекурсией все будет просто и понятно.

FR>Ваша статья лично для меня прозвучала как ода Nemerle. Разве у этого языка нет недостатков? Совсем нет? Он совершенен? Идеален?

Это один из лучших языков на данный момент.

FR>Кстати, а как в Memerle обстоит дело со скоростью исполнения скомпилированного кода?

Nemerle компилируется в MSIL плюс есть некоторые оптимизации во фронтенде за счет которых он иногда работает быстрее чем C# те скорость болие чем приличная.

FR>Ну, наверное, перегрузку операторов нельзя считать расширением синтаксиса, так что тут вы правы. Но с другой стороны, разве хорошо иметь язык, синтаксис которого можно расширять в самом языке?

Безусловно. Тем болие что для того чтобы расширить синтаксис нужно сделать отдельную сборку с макросами и подключать ее во время компиляции. Плюс для того чбы воспользоватся макросом нужно написать
using MyMacroNamespace;

или по полному имени
MyMacroNamespace.MyMacro(...);

Также нужно понимать что макросы ограничены в своих возможностях и сделать сильно другой язык оооочень трудно. Те Nemerle всегда остается Nemerle.

FR>То есть, фактически язык можно сделать таким, каким ты хочешь его видеть, так? Захотел, назвал операцию while — "while", а захотел — "cyclew", правильно?

Ну если мозгов нет то да.

FR>Как вы считаете, хорошо ли давать подобную свободу программисту?

Смотря какому.

FR>Да, это действительно удобно. Это действительно похоже на некое "метапрограммирование".

Это не похоже на метапрограммирование. Это оно во всей красе и есть.

FR>Но хорошо ли это для качества кода?

Если мозги есть то да. Если нет то ничего не поможет и уж точно без мозгов нельзя брать в руки С++ ибо это очень опасный язык.

FR>Для командной разработки программных продуктов? Сколько страниц будут занимать правила написания кода программы для какого-либо проекта в сравнении с аналогичными для, скажем, C#? Насколько возрастут затраты на написание подобного документа и насколько просто будет потом другим пользователям (если это, например, opensource проект) разбираться в написанном коде не прочитав этот талмуд.

Ну примерно на строчку:

Макросы писать нельзя.

Или

Макросы может писать только старший программист или доверенный человек.


А в сильной комманде и этого не понадобится.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: FractalizeR  
Дата: 12.09.06 17:40
Оценка: +2 :))) :))
Спасибо. Ваш пост можно свести к одному — у FractalizeR нет мозгов.
Благодарю.
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 12.09.06 17:46
Оценка:
Здравствуйте, FractalizeR, Вы писали:

FR>Спасибо. Ваш пост можно свести к одному — у FractalizeR нет мозгов.

FR>Благодарю.

Не надо расстраиваться. WolfHound парень немного резкий, но хороший. Просто молодой ещё
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: ie Россия http://ziez.blogspot.com/
Дата: 12.09.06 17:57
Оценка: +1
Здравствуйте, FractalizeR, Вы писали:

FR>Спасибо за статью.

+1

FR>Честно говоря, я даже о языке таком не слышал и ваша статья стала для меня поводом залезть в интернет покопать


Оооо. Почаще заходите в форум "Философия программирования". Столько нового узнаете

FR>Вы очень хорошо и красиво говорили о Nemerle, и у меня только один вопрос. Какая конструкция выглядит проще и красивее:


Насколько я понял из статьи и многочисленных постов ее автора, та конструкция "выглядит проще и красивее", которая употреблена к месту. И я того же мнения (с)

FR>На мой взгляд, язык программирования должен быть в первую очередь понятным и иметь простой синтаксис (чтобы не опуститься, или наоборот подняться(?) до уровня, например, Perl, который в шутку называют Write-Only языком), ибо там где много сложностей (не важно, во имя чего они создавались) легче нагромоздить ошибок.


А че вы! Перл классный язык
А если серъезно, то код на Немерле читается не многим сложнее кода на C#. Привыкание приходит быстро. Да и сложностей там особых нет. Так что ваши опасения беспочвены.

FR>Я согласен, "хвостовая рекурсия" звучит прекрасно. Но ведь помимо удобства, есть еще и стоимостные затраты на обучение и сопровождение, не так ли? Код, написанный на языке с простым и понятным синтаксисом, гораздо проще поддерживать и сопровождать, как мне кажется.


Полностью согласен с выделенным, только причем тут хвостовая рекурсия не понял

FR>Ваша статья лично для меня прозвучала как ода Nemerle. Разве у этого языка нет недостатков? Совсем нет? Он совершенен? Идеален?


Ага, щас, размечтались

FR>Мне кажется, с этой точки зрения ваша статья получилась немного однобокой. Итог вы подводите одной фразой:

FR>

А пока что хочется подытожить. C++ проигрывает это сравнение молодому языку Nemerle.


Да C++ многим языкам на самом деле проигрывает. А с другой стороны у многих выигрывает. Смотря по каким параметрам сравнивать. Для сравнения приводимого в статье, итог вполне закономерный.

FR>Кстати, а как в Memerle обстоит дело со скоростью исполнения скомпилированного кода?


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

FR>

В C++ нет средств расширения синтаксиса!

FR>Ну, наверное, перегрузку операторов нельзя считать расширением синтаксиса, так что тут вы правы.

Ничем кроме статического полиморфизма считать перегрузку операторов нельзя, и уж тем более расширением синтаксиса.

FR>Но с другой стороны, разве хорошо иметь язык, синтаксис которого можно расширять в самом языке?


Иметь такую возможность безусловно хорошо.

FR>То есть, фактически язык можно сделать таким, каким ты хочешь его видеть, так? Захотел, назвал операцию while — "while", а захотел — "cyclew", правильно?


Правильно.

FR>Как вы считаете, хорошо ли давать подобную свободу программисту?


Смотря какому. Я думаю команды, которые будут использовать Немерл, достаточно быстро выработают стратегию относительно создания макросов, дабы не навредить процессу разработки.

FR>Да, это действительно удобно. Это действительно похоже на некое "метапрограммирование".


Похоже? Да это оно самое!

FR>Но хорошо ли это для качества кода? Для командной разработки программных продуктов? Сколько страниц будут занимать правила написания кода программы для какого-либо проекта в сравнении с аналогичными для, скажем, C#? Насколько возрастут затраты на написание подобного документа и насколько просто будет потом другим пользователям (если это, например, opensource проект) разбираться в написанном коде не прочитав этот талмуд.


Ну что тут скажешь. Конечно, все неприятности, которых вы опасаетесь, возможны. Но если все делать без фанатизма, то вряд ли возникнут проблемы такого рода.
... << RSDN@Home 1.2.0 alpha rev. 655>>
Превратим окружающую нас среду в воскресенье.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 12.09.06 18:13
Оценка: 29 (1) +1
Здравствуйте, FractalizeR, Вы писали:

FR>Какая конструкция выглядит проще и красивее:


FR>
foreach (i in [0 .. 100])
FR>  // делаем что-то с i


Мне вот эта больше нравится. Какой из этого следует вывод?

FR>На мой взгляд, язык программирования должен быть в первую очередь понятным и иметь простой синтаксис (чтобы не опуститься, или наоборот подняться(?) до уровня, например, Perl, который в шутку называют Write-Only языком), ибо там где много сложностей (не важно, во имя чего они создавались) легче нагромоздить ошибок.


Совершенно верно. Я вот, например, немного пописав на N стал ловить себя на мысле, что return совершенно лишний элемент синтаксиса в C#. Точнее в самом C# этот элемент, конечно же необходим, но мне он стал мешаться под ногами. Ещё в C# постоянно напрягает громоздкость анонимных делегатов. В принципе, боюсь, что именно это является некоторым тормозом их более широкого распространения. Ещё можно было бы упростить switch, выкинув оттуда break как обязательный, но совершенно лишний элемент. Вывод типов — ещё один пример того, как можно упростить синтаксис и сделать язык более понятным. И т.д.

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

FR>Я согласен, "хвостовая рекурсия" звучит прекрасно. Но ведь помимо удобства, есть еще и стоимостные затраты на обучение и сопровождение, не так ли? Код, написанный на языке с простым и понятным синтаксисом, гораздо проще поддерживать и сопровождать, как мне кажется.


Думаю, что затраты на обучение C# программиста работе на Nemerle будут несоизмеримо далеки от затрат на переход с C на C++, с DOS на Windows, переход на COM или с Win32 на .NET.

FR>Ваша статья лично для меня прозвучала как ода Nemerle. Разве у этого языка нет недостатков? Совсем нет? Он совершенен? Идеален? Мне кажется, с этой точки зрения ваша статья получилась немного однобокой. Итог вы подводите одной фразой:


FR>

А пока что хочется подытожить. C++ проигрывает это сравнение молодому языку Nemerle.


Проигрывает. C++ проигрывает в простоте C# и джаве. А тот же C# приобретёт некоторые возможности Nemerle только в следующей версии. Да и то в несколько урезанном виде.

Nemerle — это язык нового поколения, гибрид, органично сочетающий в себе лучшее из практически всех известных на сегодняшний день стилей программирования. Что удивительного в том, что C++ ему проигрывает?

FR>Кстати, а как в Memerle обстоит дело со скоростью исполнения скомпилированного кода?


С этм всё в порядке.

FR>Ну, наверное, перегрузку операторов нельзя считать расширением синтаксиса, так что тут вы правы. Но с другой стороны, разве хорошо иметь язык, синтаксис которого можно расширять в самом языке? То есть, фактически язык можно сделать таким, каким ты хочешь его видеть, так? Захотел, назвал операцию while — "while", а захотел — "cyclew", правильно? Как вы считаете, хорошо ли давать подобную свободу программисту? Да, это действительно удобно. Это действительно похоже на некое "метапрограммирование". Но хорошо ли это для качества кода? Для командной разработки программных продуктов?


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

FR>Сколько страниц будут занимать правила написания кода программы для какого-либо проекта в сравнении с аналогичными для, скажем, C#? Насколько возрастут затраты на написание подобного документа и насколько просто будет потом другим пользователям (если это, например, opensource проект) разбираться в написанном коде не прочитав этот талмуд.


А сколько на это обычно уходит времени?
Если нам не помогут, то мы тоже никого не пощадим.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: Vermicious Knid  
Дата: 12.09.06 19:42
Оценка: 137 (8) +2
Здравствуйте, FractalizeR, Вы писали:

FR>Честно говоря, я даже о языке таком не слышал и ваша статья стала для меня поводом залезть в интернет покопать

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

FR>Вы очень хорошо и красиво говорили о Nemerle, и у меня только один вопрос. Какая конструкция выглядит проще и красивее:

FR>На мой взгляд, язык программирования должен быть в первую очередь понятным и иметь простой синтаксис
Ты не понял. И пример с while, и пример с foreach это тоже Nemerle. Мне кажется VladD2 вовсе не пропагандировал использования рекурсивных функции вместо циклов. Он лишь хотел продемонстрировать подход Nemerle, заключающийся в фактическом отсутствии циклов в языке. Циклы while, for, foreach там как раз и сводятся в конечном итоге к локальной функции с хвостовой рекурсией, но внешне выглядят вполне привычно для императивного программиста.

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

Императивный подход(циклы, переменные, возвраты, ветвления):
    public Contains(element : T) : bool
    {
        mutable subTree = this;
        while(!(subTree is Nil))
        {
            def node = subTree :> Node;
            def c = element.CompareTo(node.element);
            if (c == 0)
            {
                return true;
            }
            else if (c <= -1)
            {
                subTree = node.left;
            }
            else
            {
                subTree = node.right;
            }
        }
        return false;
    }

Функциональный подход(паттерн-мэтчинг, рекурсия, правда в данному случае не хвостовая):
    public Contains(element : T) : bool
    {
        match(this)
        {
            | Nil => false
            | Node(left, el, right) =>
                match(element.CompareTo(el))
                {     
                    | 0 => true
                    | c when (c <= -1) => left.Contains(element)
                    | _  => right.Contains(element)
                }
        }
    }


FR>На мой взгляд, язык программирования должен быть в первую очередь понятным и иметь простой синтаксис

Разработчики Nemerle твою точку зрения разделяют. Именно поэтому Nemerle и был создан. Авторам Nemerle нравился язык ML, но они хотели создать что-то похожее по возможностям, но имеющее более понятный и близкий для большинства программистов синтаксис(предполагаю что и для них самих, так как их компиляторы изначально разрабатывались на ML, а затем переписывались на себе), а именно синтаксис напоминающий C. Так появился первый прототип Nemerle, язык Gont(с придумыванием хороших названий у главного автора Nemerle явно проблемы ). Затем было принято решение разрабатывать язык для платформы .NET, так как это дало бы доступ к обширной стандартной библиотеке. Заодно язык стал объектно-ориентированным и стал больше похож по семантике и синтаксису на C#. Кроме того, что язык гораздо ближе к традиционным языкам, чем диалекты ML, в первую очередь системой типов и синтаксисом, он еще и прекрасно интегрируется с другими языками .NET, а для языка хорошо поддерживающего парадигмы и возможности свойственные ML, это ценное и редкое качество(F#, разрабатываемый Microsoft и рядом не валялся).

FR>(чтобы не опуститься, или наоборот подняться(?) до уровня, например, Perl, который в шутку называют Write-Only языком), ибо там где много сложностей (не важно, во имя чего они создавались) легче нагромоздить ошибок.

Сравнение с Perl совершенно не уместно. Как раз с Perl у Nemerle крайне мало схожего, как в плане синтаксиса, так и семантики.

FR>Я согласен, "хвостовая рекурсия" звучит прекрасно. Но ведь помимо удобства, есть еще и стоимостные затраты на обучение и сопровождение, не так ли?

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

FR>Код, написанный на языке с простым и понятным синтаксисом, гораздо проще поддерживать и сопровождать, как мне кажется.

Совершенно верно. Nemerle как раз и является таким языком.

FR>Ваша статья лично для меня прозвучала как ода Nemerle. Разве у этого языка нет недостатков? Совсем нет? Он совершенен? Идеален?

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

FR>Кстати, а как в Memerle обстоит дело со скоростью исполнения скомпилированного кода?

Примерно также как и у C#. Иногда чуть лучше, иногда чуть хуже.

FR>

В C++ нет средств расширения синтаксиса!

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

FR>Но с другой стороны, разве хорошо иметь язык, синтаксис которого можно расширять в самом языке?

Плохо иметь язык, который можно расширить на лексическом уровне. Причем расширить крайне деструктивно и при этом не извлечь практически никакой пользы от такого "расширения". Таким языком как раз является C++(это я о его "замечательном" встроенном препроцессоре если что).

FR>То есть, фактически язык можно сделать таким, каким ты хочешь его видеть, так? Захотел, назвал операцию while — "while", а захотел — "cyclew", правильно?

Неправильно. В C++ как раз есть возможность переименовать while в cyclew — #define cyclew while. А в Nemerle есть возможность лишь добавить операцию cyclew, причем возможность достаточно ограниченная и неудобная, чтобы этого не делать на каждом шагу. Макросы компилируются и кладутся в сборки, затем эти сборки нужно явно подключить при компиляции. Да еще разумные люди кладут макросы в пространства имен, которые тоже нужно подключить перед использованием. Но конечно ничто никогда не заменит нормального человеческого здравомыслия — здравомыслящему человеку не прийдет идея создавать операции аналогичную while, да еще с таким причудливым названием.

Макросы дали большое преимущество самим разработчикам языка и реализованные на макросах конструкции языка в разы удобнее, чем похожие "полноценные", вшитые в компилятор, конструкции в C#. Тот же foreach например поддерживает вывод типов, паттерн-мэтчинг, диапазоны(foreach(i in [1..100])), а все благодаря мощному core языку и реализации на макросах(реализовать некую синтаксическую конструкцию на макросах это зачастую в десятки раз проще, чем вшить в компилятор, а результат как можно увидеть на примере конструкций Nemerle получается лучше в разы).

А конечном пользователям Nemerle(в данном случае разработчикам) макросы больше помогут не в задачах блошиного уровня, типа операции cyclew, а в задачах серьезной генерации кода, основанной на информации на типах(эдакий compile-time reflection) или другой информации нетривиального характера(типа описания грамматики или некоего DSL).

FR>Как вы считаете, хорошо ли давать подобную свободу программисту? Да, это действительно удобно. Это действительно похоже на некое "метапрограммирование".

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

FR>Но хорошо ли это для качества кода? Для командной разработки программных продуктов? Сколько страниц будут занимать правила написания кода программы для какого-либо проекта в сравнении с аналогичными для, скажем, C#? Насколько возрастут затраты на написание подобного документа и насколько просто будет потом другим пользователям (если это, например, opensource проект) разбираться в написанном коде не прочитав этот талмуд.

Nemerle это opensource проект, с более чем десятком контрибуторов. Вот Oyster например после очень непродолжительного изучения Nemerle смог найти и пофиксить недоделку в компиляторе(добавив фичу в парсер и макро-движок). Сейчас несколько человек с rsdn успешно делают проект интеграции с Visual Studio, использующий сам компилятор в качестве библиотеки. Есть и другие примеры(в том числе и основанные на моем личном опыте) того, что после очень непродолжительного изучения Nemerle, люди спокойно ориентируются в коде его компилятора, в том числе правят его и используют его api(в макросах). И это при явном недостатке документации. По-моему это говорит о многом.
Re[2]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 12.09.06 22:25
Оценка: 5 (1) :))) :)))
Здравствуйте, FractalizeR, Вы писали:

Тут же было много сказано, так что отвечу только на то что счел действительно важным.

FR>Код, написанный на языке с простым и понятным синтаксисом, гораздо проще поддерживать и сопровождать, как мне кажется.


Да, черт побери! Сто раз ДА! И как раз именно код Nemerle в большинстве случаев будет проще и понятнее.

НО! Для этого нужно изучить особенности языка. Если ты из императивного мира и ранее выдел только алголоподобные объектно-ориентированные языки, такие как Дельфи, С++, Ява, Шарп, Руби или Питон, то тебе прийдется понять и принять несколько концеций которых практически нет в этих языка или которые в нем редко применимы и мало значемы.

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

Из конкурентов я вижу только Эрланг и Лисп. У первого есть незаурядные идеи и так нужная в этом мире простота. У второго есть почти все что есть у Nemerle, но все же он глубокой ... из-за многих причин (от отсуствия синтаксиса, до тонких внутренних проблем и невменяемых поклонников).

Забавно, что на Nemerle ополчились со всех сторон.
Те кто пришел из императивного мира и пока (или вообще) не может оценить всех его прелестей и выразительности ополчились на него и пытаются всеми силами найти в нем проблемы. Зачем? Не знаю. Им все время мерещится, что Nemerle это так называемая реинкарнация серебренной пули, то есть панацея. Но Nemerle не панацея. Nemerle — это следующая ступень эволюции языков программирования. Возможно тупиковая как Лисп. Но мне почему-то кажется, что Nemerle будет жить если конечно МС не решит сделать такой же язык но другой (с). Но если МС это сделает, то мы получим Nemerle от МС. А это сделает из него бестселлер. Что тоже не плохо.
Другая группа это те кто практически не пересекался с миром Явы или дотнета, но имел неосторожность глубоко погрузиться (порой до полного фанатизма) функциональный мир. В этом мире почему-то экстремизм вообще практически является нормой, а уж такие раздражители как императивно-обектно-ориентированно-фиункционально-метопрограммный язык вызвает у них вообще странную реакцию. Один пытается объяснить, что у него система типов не той системы (с). Другой, что макросы не позволяют с легкостью прострелить себе остатки мозга через пятку. Третие сетуют что он вообще не функциональный так как в нем есть присвоения переменных забывая, что процентах в 80% признанных ФЯ это дело тоже есть.
В общем, настоящая политика! Ну, да тем лучше. Все новое должно пройти через тернии чтобы выбиться в звезды. А мне почему-то кажется, что Nemerle это звезда, которую пока по недомыслию многие принимают за назойливый фонарик маячащий в дали.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: IT Россия linq2db.com
Дата: 13.09.06 02:01
Оценка: +2
Здравствуйте, VladD2, Вы писали:

VD>Другой, что макросы не позволяют с легкостью прострелить себе остатки мозга через пятку.


Под столом
... << RSDN@Home 1.2.0 alpha rev. 0>>
Если нам не помогут, то мы тоже никого не пощадим.
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: FR  
Дата: 13.09.06 06:55
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>НО! Для этого нужно изучить особенности языка. Если ты из императивного мира и ранее выдел только алголоподобные объектно-ориентированные языки, такие как Дельфи, С++, Ява, Шарп, Руби или Питон,


Руби и питон попрошу исключить из списка
Re[4]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.09.06 15:06
Оценка:
Здравствуйте, FR, Вы писали:

FR>Руби и питон попрошу исключить из списка


С чего бы это?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Синтаксический сахар или C++ vs. Nemerle :)
От: FR  
Дата: 13.09.06 15:15
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, FR, Вы писали:


FR>>Руби и питон попрошу исключить из списка


VD>С чего бы это?


С того что там легко писать в функциональном стиле, и плюс есть метапрограммирование.
Re[6]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.09.06 00:12
Оценка:
Здравствуйте, FR, Вы писали:

FR>>>Руби и питон попрошу исключить из списка


VD>>С чего бы это?


FR>С того что там легко писать в функциональном стиле, и плюс есть метапрограммирование.


Хм. Это привносит в Руби паттерн-матчинг и алгебраические типы? Нет? Странно... Но раз нет, то как Руби или Питон помогут в освоении этих понятий?

Да и метапрограммирование там не то что в Немерле. Так что они на своем месте.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Синтаксический сахар или C++ vs. Nemerle :)
От: FR  
Дата: 15.09.06 05:23
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Хм. Это привносит в Руби паттерн-матчинг и алгебраические типы? Нет? Странно... Но раз нет, то как Руби или Питон помогут в освоении этих понятий?


Паттерн матчинг вещь практически интуитивно понятная для императивного программиста и не является основным понятием в функциональном программировании (как тут выражаются чистый сахар ).

VD>Да и метапрограммирование там не то что в Немерле. Так что они на своем месте.


Оно там есть и в отличии от например С++ с человеческим лицом, а освоить еще один способ того что уже знаешь и используешь гораздо проще (психика не портится ) чем осваивать с нуля.
Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.09.06 15:11
Оценка:
Здравствуйте, FR, Вы писали:

FR>Здравствуйте, VladD2, Вы писали:


VD>>Хм. Это привносит в Руби паттерн-матчинг и алгебраические типы? Нет? Странно... Но раз нет, то как Руби или Питон помогут в освоении этих понятий?


FR>Паттерн матчинг вещь практически интуитивно понятная для императивного программиста


А я вот постоянно наблюдаю обратное. Постоянно слышу рассуждения тех кто еще не понял что это такое о том, что мол это все фигня. Постоянно вижу вопросы вроде "откуда взялась переменная?" когда люди видят паттерн с переменной. И переодически видел восшищенные возгласы того же IT когда он открывал для себя этот самый паттерн-тачинг. И уверяю тебя основная часть императивщиков вообще не знает о его существовании. А уж о понимании и говорить не приходится.

FR>и не является основным понятием в функциональном программировании (как тут выражаются чистый сахар ).


А кто-то утверждал обраное? Это был не я.
Я говорил о другом. Я говорил о бэкграунде императивных языков и о всоприятии новых возможностей.

VD>>Да и метапрограммирование там не то что в Немерле. Так что они на своем месте.


FR>Оно там есть и в отличии от например С++ с человеческим лицом,


Я бы сказал с более человеческим. По крайней мере некоторые текстуальные гримассы Руби меня удручили.

FR> а освоить еще один способ того что уже знаешь и используешь гораздо проще (психика не портится ) чем осваивать с нуля.


Да, проще, но основа очень уж разная. Особенно с Питоном. Все же метаклассы и макросы в стиле Лисп — это разные подходы. Общая тут только сама идея писать код пишуший код. Но тут я с тобой согласен. Лучше уж что-то чем совсем с нуля.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Синтаксический сахар или C++ vs. Nemerle :)
От: FR  
Дата: 15.09.06 18:11
Оценка:
Здравствуйте, VladD2, Вы писали:

FR>>Паттерн матчинг вещь практически интуитивно понятная для императивного программиста


VD>А я вот постоянно наблюдаю обратное. Постоянно слышу рассуждения тех кто еще не понял что это такое о том, что мол это все фигня. Постоянно вижу вопросы вроде "откуда взялась переменная?" когда люди видят паттерн с переменной. И переодически видел восшищенные возгласы того же IT когда он открывал для себя этот самый паттерн-тачинг. И уверяю тебя основная часть императивщиков вообще не знает о его существовании. А уж о понимании и говорить не приходится.


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

FR>>и не является основным понятием в функциональном программировании (как тут выражаются чистый сахар ).


VD>А кто-то утверждал обраное? Это был не я.

VD>Я говорил о другом. Я говорил о бэкграунде императивных языков и о всоприятии новых возможностей.

Это да.

VD>>>Да и метапрограммирование там не то что в Немерле. Так что они на своем месте.


FR>>Оно там есть и в отличии от например С++ с человеческим лицом,


VD>Я бы сказал с более человеческим. По крайней мере некоторые текстуальные гримассы Руби меня удручили.


Ну в руби я не очень, только читаю код без сильных выкрутасов, но вроде ничего такого страшного не видел. Хотя на любом интерпретаторе конечно очень легко работать с текстовыми "макросами".

FR>> а освоить еще один способ того что уже знаешь и используешь гораздо проще (психика не портится ) чем осваивать с нуля.


VD>Да, проще, но основа очень уж разная. Особенно с Питоном. Все же метаклассы и макросы в стиле Лисп — это разные подходы. Общая тут только сама идея писать код пишуший код. Но тут я с тобой согласен. Лучше уж что-то чем совсем с нуля.


Ну в лиспе можно и в обоих стилях работать
Re[3]: Синтаксический сахар или C++ vs. Nemerle :)
От: IID Россия  
Дата: 15.09.06 23:35
Оценка: :)))
Здравствуйте, VladD2, Вы писали:


VD>И еще одно Nemerle не для упертых фанатиков, которым нужна вера.


Плакал...
kalsarikännit
Re[8]: Синтаксический сахар или C++ vs. Nemerle :)
От: _FRED_ Черногория
Дата: 21.09.06 07:52
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Содержимое рефлектора — это как раз бог с ним, утрясется со временем...


Ну да! Явные ошибки — возможно. Обычную кривость — фиг нам
... << RSDN@Home 1.2.0 alpha rev. 652>>
Now playing: «Тихо в лесу…»
Help will always be given at Hogwarts to those who ask for it.
Re[9]: Синтаксический сахар или C++ vs. Nemerle :)
От: vdimas Россия  
Дата: 21.09.06 08:04
Оценка:
Здравствуйте, _FRED_, Вы писали:

_FR>Ну да! Явные ошибки — возможно. Обычную кривость — фиг нам


Если ты про реализацию ГУИ, то это, скорее, наследие традиций нативных гуёв на виндах. К дотнету не имеет никакого отношения. Рассматривай Windows.Forms как некую либу-"обертку" над виндовым ГУИ.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.