Здравствуйте, vdimas, Вы писали:
V>IMHO, нормальный синтаксис для статических ассертов (другой его доклад) поинтереснее и пошире в применении. А вариадические темплейты — это только вокруг tuple-вещей и alg types нужны, т.е. человеческая замена его же собственным ужасным type-lists. Наверно им и педалировалось больше всего.
Похоже он потихоньку пытается перетащить то что в D реализовал, неплохо, но многое оттуда из-за GC как раз и не перетащишь.
Здравствуйте, vdimas, Вы писали:
V>Нет агрессивной оптимизации, как случая полностью нейтива. Даже если в программе ни одной managed-ссылки, но она скомпиллирована как дотнетная assembly, то тормознее заметно получается. Ну и, к тому же, в C++/CLI нет таких удобных замыканий как в дотнете, а о них была речь. Как и другого удобного сахара.
В D весь этот сахар кстати есть, вот недавно даже лямбды нормальные типа x => x + ... добавили.
Здравствуйте, metalim, Вы писали:
M>Здравствуйте, jazzer, Вы писали:
J>>http://channel9.msdn.com/Events/GoingNative/GoingNative-2012 J>>Главный рулез в том, что все это будет транслироваться в инете, так что необязательно ехать в Редмонд
M>Мляяя, Сильверлайт плеер... Чтоб у них жопа с головой срослась.
Ужо срослась. Поэтому и суют сильверлайт где попало.
Здравствуйте, FR, Вы писали:
FR>Похоже он потихоньку пытается перетащить то что в D реализовал, неплохо, но многое оттуда из-за GC как раз и не перетащишь.
Статические ассерты в D есть?
ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась...
Здравствуйте, vdimas, Вы писали:
V>Здравствуйте, FR, Вы писали:
FR>>Похоже он потихоньку пытается перетащить то что в D реализовал, неплохо, но многое оттуда из-за GC как раз и не перетащишь.
V>Статические ассерты в D есть? StaticAssert ?
V>ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась...
Обобщения и шаблоны совсем разные по назначению.
Если нужны шаблоны уровня D в .Net , есть метапрограммирование.
P.S.
Тему что круче шаблоны или обобщения развивать не нужно. В одном случае лучше одно, в другом другое.
Плюс немного урезанные (по сравнению с тем что могло быть в новом стандарте C++)
концепты http://dlang.org/concepts.html
V>ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась...
V>>ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась... _NN>Обобщения и шаблоны совсем разные по назначению.
Дудки, как раз назначение ровно одинаковое.
_NN>Если нужны шаблоны уровня D в .Net , есть метапрограммирование.
В mainstream?
_NN>P.S. _NN>Тему что круче шаблоны или обобщения развивать не нужно. В одном случае лучше одно, в другом другое.
Ну, не развивай себе. Когда речь идет о конкретном аспекте — в д.с. о возможностях ограничений/контрактов обобщенного кода, то никаких "других случаев" нет, это всё еще об одном и том же. В С++ всегда была возможность наложить ограничения на параметры аргументов шаблонов (или их взаимные отношения), да только синтаксис был ужасен... за что справедливо пеняли. Сейчас тоже самое, но на порядок читабельнее. А я лишь напомнил тот факт, что технология изначально была способна описать любые статически-проверяемые утверждения в качестве ограничений на шаблоны. Конечно любопытно это сравнить с генериками, где ограничения служат исключительно целям декларации базовых типов типов-аргументов, иначе генерики просто не взлетят со своего байт-кода.
В общем, обсуждать теперь будем еще много и часто, будь уверен.
ИМХО, лёд тронулся... и полезные наработки с одного лагеря запросто потекут в другой. Будет много резко появившихся новых устоявшихся подходов/наработок и переписанных либ на его основе.
Здравствуйте, FR, Вы писали:
FR>Плюс немного урезанные (по сравнению с тем что могло быть в новом стандарте C++) FR>концепты http://dlang.org/concepts.html
Дык, с современным инлайнингом и оптимизацией, даже нестатические if работают как статические, если как аргумент идет вычисляемое в compile-time выражение. Т.е. фактически многое из концептов работает и так в современных компиляторах. Это я к тому, что статические ограничения и статическая диспетчеризация хороши, но без контроля полноты, тиа как в Хаскеле по паттерн-матчингу, это лишь синтаксический сахар над тем, что и так давно есть.
V>>ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась...
FR>Да в D еще чуть покруче
По возможностям или синтаксису? В плюсах можно использовать всё, что вычисляется в compile-time. Например, в boost::type_traits, похоже, собраны все необходимые проверки характеристик типов и их отношений.
V>Дык, с современным инлайнингом и оптимизацией, даже нестатические if работают как статические, если как аргумент идет вычисляемое в compile-time выражение. Т.е. фактически многое из концептов работает и так в современных компиляторах. Это я к тому, что статические ограничения и статическая диспетчеризация хороши, но без контроля полноты, тиа как в Хаскеле по паттерн-матчингу, это лишь синтаксический сахар над тем, что и так давно есть.
В D мне как раз понравилось явное разделение compile и runtime. Можно прямо, не надеясь на фазы луны,
указать компилятору — это во время компиляции. С++ в этом направлении тоже движется, (тот же constexpr)
но до D ему еще далеко.
FR>>Да в D еще чуть покруче
V>По возможностям или синтаксису? В плюсах можно использовать всё, что вычисляется в compile-time. Например, в boost::type_traits, похоже, собраны все необходимые проверки характеристик типов и их отношений.
И то и другое.
Один только static_if местами на порядок упрощает шаблонный код.
Ну и тех возможностей которые дает Compile Time Function Execution (CTFE) даже в новом C++ и близко нет.
По сути в D есть тоже что и лиспе или немерле — метапрограммирование с использованием основного языка,
(в D достаточно широкого подмножества) а не специального "языка" шаблонов.
Метапрограммирования разные бывают
_NN>>P.S. _NN>>Тему что круче шаблоны или обобщения развивать не нужно. В одном случае лучше одно, в другом другое.
V>В общем, обсуждать теперь будем еще много и часто, будь уверен. V>ИМХО, лёд тронулся... и полезные наработки с одного лагеря запросто потекут в другой. Будет много резко появившихся новых устоявшихся подходов/наработок и переписанных либ на его основе.
Ждем, но что-то медленно лед двигается.
Здравствуйте, _NN_, Вы писали:
_NN>Поставляется вместе с CLR не mainstream ? _NN>System.Linq.Expressions
Не, это не мета-программирование, а узкоспециализированный костыль.
_NN>F# входит в студию, считается mainstream ? _NN>Code Quotations (F#)
Хм, не знал, спасибо. Но, ИМХО, F# никогда не станет manstream хотя бы из-за способа представления алг.ТД и соответственному паттерн-матчингу по нему. Тормоза это всё... Пусть посмотрят на Хаскель.
_NN>eval из Python/Perl/JS тоже метапрограммирование.
_NN>Метапрограммирования разные бывают
А, ну эт дааа... Только я динамику со статически-типизируемым С++ сравнивать не буду.
Ну разве что на ней С++-код генерить...
_NN>Ждем, но что-то медленно лед двигается.
Дык, джава с дотнетами внимание на себя перетянули на десяток лет. Ведь к 2010-му году ожидалось по 16 ядер и более 10ГГц тактовая у каждой домохозяйки... Но с 2005-го примерно произошел полный ступор в процессоростроении. Вот и оглянулись по сторонам малость.
Здравствуйте, vdimas, Вы писали:
V>Хм, не знал, спасибо. Но, ИМХО, F# никогда не станет manstream хотя бы из-за способа представления алг.ТД и соответственному паттерн-матчингу по нему. Тормоза это всё... Пусть посмотрят на Хаскель.
F# может и нет, но Roslyn с C# может и да.
А может будет еще что-то новое
Подход D с Mixin-ами в плане удобства сильно от eval не отличается.
_NN>>Ждем, но что-то медленно лед двигается.
V>Дык, джава с дотнетами внимание на себя перетянули на десяток лет. Ведь к 2010-му году ожидалось по 16 ядер и более 10ГГц тактовая у каждой домохозяйки... Но с 2005-го примерно произошел полный ступор в процессоростроении. Вот и оглянулись по сторонам малость.
Продвигая HTML+JS как панацею всему, тоже далеко не уехать. С++ всех переживет
Здравствуйте, _NN_, Вы писали:
_NN>Подход D с Mixin-ами в плане удобства сильно от eval не отличается.
Насчет удобства не понял.
Если про ручную генерацию текста, то даже в нормальной динамике eval это на самый крайний случай (или одноразовый код),
есть гораздо более удобные и надежные средства, например в питоне метаклассы и декораторы.
В D также достаточно других средств метапрограммирования.
Здравствуйте, FR, Вы писали:
FR>Здравствуйте, _NN_, Вы писали:
_NN>>Подход D с Mixin-ами в плане удобства сильно от eval не отличается.
FR>Насчет удобства не понял. FR>Если про ручную генерацию текста, то даже в нормальной динамике eval это на самый крайний случай (или одноразовый код), FR>есть гораздо более удобные и надежные средства, например в питоне метаклассы и декораторы. FR>В D также достаточно других средств метапрограммирования.
Я о том, что вместо текстового представления было правильней ввести цитирование.
Тогда код был бы типизированным и работа велась бы с объектами, а не просто со строкой.
Сегодня никто не запрещает написать неравильный код:
template GenStruct(string Name, string M1) { const char[] GenStruct = "struKt " ~ Name ~ "{ int " ~ M1 ~ "; }"; }
mixin(GenStruct!("Incorrect Code < >", "Ha ha ha "));
Не, не торкает. С тем же успехом можно внешней тулзой генерить и включать по #include, что и делается в плюсах, для тех же CORBA или COM IDL, например.
_NN>Продвигая HTML+JS как панацею всему, тоже далеко не уехать. С++ всех переживет
Ну... эта связка меньше других требует каких-то сред разработки и позволяет "ворваться" даже студентам 1-го курса. А двигают на самом деле мобильную платформу, предлагая простую кроссплатформенную технологию для нее. Ты не туда смотришь.
Да и не против я HTML, вполне сойдет для скриптования GUI. Еще бы язык чуть поинтереснее, чем JS, прижился бы в вебе, вообще неплохо было бы.
_NN>Я о том, что вместо текстового представления было правильней ввести цитирование. _NN>Тогда код был бы типизированным и работа велась бы с объектами, а не просто со строкой.
Да с ast конечно лучше без вопросов.
Но текстовые миксины при всей их корявости вполне равномощны макросам немерле или лиспа.
_NN>Сегодня никто не запрещает написать неравильный код:
Запрещает, такое просто не скомпилируется.
Типизация в отличии от динамики тут работает в compile time.
Здравствуйте, vdimas, Вы писали:
_NN>>Продвигая HTML+JS как панацею всему, тоже далеко не уехать. С++ всех переживет
V>Ну... эта связка меньше других требует каких-то сред разработки и позволяет "ворваться" даже студентам 1-го курса. А двигают на самом деле мобильную платформу, предлагая простую кроссплатформенную технологию для нее. Ты не туда смотришь.
Да в том и дело, что нет нормальных средств разработки.
Я хочу формочки и автоматизацию. Хочу легко и непринужденно чтобы все заработало.
А тут вагон и тележка разных библиотек, какую выбрать неясно. У каждой свое преимущество.
Посмотрим что будет.
V>Да и не против я HTML, вполне сойдет для скриптования GUI. Еще бы язык чуть поинтереснее, чем JS, прижился бы в вебе, вообще неплохо было бы.
Здравствуйте, vdimas, Вы писали:
V>Не, не торкает. С тем же успехом можно внешней тулзой генерить и включать по #include, что и делается в плюсах, для тех же CORBA или COM IDL, например.
Ну автор языка, наивный, так и думал когда вводил текстовые миксины, чтобы включать всякие внешние мини DSL,
но пришел Александреску и все испортил И теперь они даже в стандартной библиотеке торчат:
auto small = filter!("a < 3")(arr);
auto squares = map!("a * a")(chain(arr1, arr2));