Re[3]: GoingNative 2012
От: FR  
Дата: 04.03.12 12:46
Оценка:
Здравствуйте, vdimas, Вы писали:

V>IMHO, нормальный синтаксис для статических ассертов (другой его доклад) поинтереснее и пошире в применении. А вариадические темплейты — это только вокруг tuple-вещей и alg types нужны, т.е. человеческая замена его же собственным ужасным type-lists. Наверно им и педалировалось больше всего.


Похоже он потихоньку пытается перетащить то что в D реализовал, неплохо, но многое оттуда из-за GC как раз и не перетащишь.
Re[8]: GoingNative 2012
От: FR  
Дата: 04.03.12 12:49
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Нет агрессивной оптимизации, как случая полностью нейтива. Даже если в программе ни одной managed-ссылки, но она скомпиллирована как дотнетная assembly, то тормознее заметно получается. Ну и, к тому же, в C++/CLI нет таких удобных замыканий как в дотнете, а о них была речь. Как и другого удобного сахара.


В D весь этот сахар кстати есть, вот недавно даже лямбды нормальные типа x => x + ... добавили.
Re: GoingNative 2012
От: metalim Россия http://mem.ee
Дата: 04.03.12 22:23
Оценка: +2 -1
Здравствуйте, jazzer, Вы писали:

J>http://channel9.msdn.com/Events/GoingNative/GoingNative-2012

J>Главный рулез в том, что все это будет транслироваться в инете, так что необязательно ехать в Редмонд

Мляяя, Сильверлайт плеер... Чтоб у них жопа с головой срослась.
Have fun: Win+M, Ctrl+A, Enter
Re[2]: GoingNative 2012
От: uncommon Ниоткуда  
Дата: 04.03.12 23:28
Оценка: 9 (1) +3 -1 :)
Здравствуйте, metalim, Вы писали:

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


J>>http://channel9.msdn.com/Events/GoingNative/GoingNative-2012

J>>Главный рулез в том, что все это будет транслироваться в инете, так что необязательно ехать в Редмонд

M>Мляяя, Сильверлайт плеер... Чтоб у них жопа с головой срослась.


Ужо срослась. Поэтому и суют сильверлайт где попало.
Re[2]: GoingNative 2012
От: Константин Россия  
Дата: 05.03.12 06:40
Оценка:
Здравствуйте, metalim, Вы писали:

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


J>>http://channel9.msdn.com/Events/GoingNative/GoingNative-2012

M>Мляяя, Сильверлайт плеер... Чтоб у них жопа с головой срослась.

Там ссылки на видео в разном формате для скачивания: можно скачать, можно прямо в браузере смотреть
Re[4]: GoingNative 2012
От: vdimas Россия  
Дата: 05.03.12 12:33
Оценка:
Здравствуйте, FR, Вы писали:

FR>Похоже он потихоньку пытается перетащить то что в D реализовал, неплохо, но многое оттуда из-за GC как раз и не перетащишь.


Статические ассерты в D есть?
ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась...
Re[5]: GoingNative 2012
От: _NN_ www.nemerleweb.com
Дата: 05.03.12 12:48
Оценка:
Здравствуйте, vdimas, Вы писали:

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


FR>>Похоже он потихоньку пытается перетащить то что в D реализовал, неплохо, но многое оттуда из-за GC как раз и не перетащишь.


V>Статические ассерты в D есть?

StaticAssert ?

V>ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась...

Обобщения и шаблоны совсем разные по назначению.
Если нужны шаблоны уровня D в .Net , есть метапрограммирование.

P.S.
Тему что круче шаблоны или обобщения развивать не нужно. В одном случае лучше одно, в другом другое.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[5]: GoingNative 2012
От: FR  
Дата: 05.03.12 15:58
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Статические ассерты в D есть?


Да и static_if тоже притом уже давно.

http://dlang.org/version.html#StaticAssert
http://dlang.org/version.html#StaticIfCondition

Плюс немного урезанные (по сравнению с тем что могло быть в новом стандарте C++)
концепты http://dlang.org/concepts.html

V>ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась...


Да в D еще чуть покруче
Re[6]: GoingNative 2012
От: vdimas Россия  
Дата: 05.03.12 22:56
Оценка:
Здравствуйте, _NN_, Вы писали:


V>>ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась...

_NN>Обобщения и шаблоны совсем разные по назначению.

Дудки, как раз назначение ровно одинаковое.


_NN>Если нужны шаблоны уровня D в .Net , есть метапрограммирование.


В mainstream?

_NN>P.S.

_NN>Тему что круче шаблоны или обобщения развивать не нужно. В одном случае лучше одно, в другом другое.

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

В общем, обсуждать теперь будем еще много и часто, будь уверен.
ИМХО, лёд тронулся... и полезные наработки с одного лагеря запросто потекут в другой. Будет много резко появившихся новых устоявшихся подходов/наработок и переписанных либ на его основе.
Re[6]: GoingNative 2012
От: vdimas Россия  
Дата: 05.03.12 23:09
Оценка:
Здравствуйте, FR, Вы писали:

FR>Плюс немного урезанные (по сравнению с тем что могло быть в новом стандарте C++)

FR>концепты http://dlang.org/concepts.html

Дык, с современным инлайнингом и оптимизацией, даже нестатические if работают как статические, если как аргумент идет вычисляемое в compile-time выражение. Т.е. фактически многое из концептов работает и так в современных компиляторах. Это я к тому, что статические ограничения и статическая диспетчеризация хороши, но без контроля полноты, тиа как в Хаскеле по паттерн-матчингу, это лишь синтаксический сахар над тем, что и так давно есть.

V>>ИМХО, ограничения генериков дотнета, в сравнении с тем, что дают статические ассерты C++11, сразу начинают выглядеть наивно и убого. В общем, крутая весчь получилась...


FR>Да в D еще чуть покруче


По возможностям или синтаксису? В плюсах можно использовать всё, что вычисляется в compile-time. Например, в boost::type_traits, похоже, собраны все необходимые проверки характеристик типов и их отношений.
Re[7]: GoingNative 2012
От: FR  
Дата: 06.03.12 07:09
Оценка: 6 (1)
Здравствуйте, vdimas, Вы писали:


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 достаточно широкого подмножества) а не специального "языка" шаблонов.
Re[7]: GoingNative 2012
От: _NN_ www.nemerleweb.com
Дата: 06.03.12 09:18
Оценка:
Здравствуйте, vdimas, Вы писали:


_NN>>Если нужны шаблоны уровня D в .Net , есть метапрограммирование.


V>В mainstream?


Поставляется вместе с CLR не mainstream ?
System.Linq.Expressions

F# входит в студию, считается mainstream ?
Code Quotations (F#)

eval из Python/Perl/JS тоже метапрограммирование.

Метапрограммирования разные бывают

_NN>>P.S.

_NN>>Тему что круче шаблоны или обобщения развивать не нужно. В одном случае лучше одно, в другом другое.

V>В общем, обсуждать теперь будем еще много и часто, будь уверен.

V>ИМХО, лёд тронулся... и полезные наработки с одного лагеря запросто потекут в другой. Будет много резко появившихся новых устоявшихся подходов/наработок и переписанных либ на его основе.
Ждем, но что-то медленно лед двигается.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[8]: GoingNative 2012
От: vdimas Россия  
Дата: 06.03.12 10:43
Оценка:
Здравствуйте, _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-го примерно произошел полный ступор в процессоростроении. Вот и оглянулись по сторонам малость.
Re[9]: GoingNative 2012
От: _NN_ www.nemerleweb.com
Дата: 06.03.12 11:06
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Хм, не знал, спасибо. Но, ИМХО, F# никогда не станет manstream хотя бы из-за способа представления алг.ТД и соответственному паттерн-матчингу по нему. Тормоза это всё... Пусть посмотрят на Хаскель.

F# может и нет, но Roslyn с C# может и да.
А может будет еще что-то новое

Подход D с Mixin-ами в плане удобства сильно от eval не отличается.
template GenStruct(string Name, string M1)
{
  const char[] GenStruct = "struct " ~ Name ~ "{ int " ~ M1 ~ "; }";
}

mixin(GenStruct!("Foo", "bar"));



_NN>>Ждем, но что-то медленно лед двигается.


V>Дык, джава с дотнетами внимание на себя перетянули на десяток лет. Ведь к 2010-му году ожидалось по 16 ядер и более 10ГГц тактовая у каждой домохозяйки... Но с 2005-го примерно произошел полный ступор в процессоростроении. Вот и оглянулись по сторонам малость.

Продвигая HTML+JS как панацею всему, тоже далеко не уехать. С++ всех переживет
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[10]: GoingNative 2012
От: FR  
Дата: 06.03.12 11:46
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Подход D с Mixin-ами в плане удобства сильно от eval не отличается.


Насчет удобства не понял.
Если про ручную генерацию текста, то даже в нормальной динамике eval это на самый крайний случай (или одноразовый код),
есть гораздо более удобные и надежные средства, например в питоне метаклассы и декораторы.
В D также достаточно других средств метапрограммирования.
Re[11]: GoingNative 2012
От: _NN_ www.nemerleweb.com
Дата: 06.03.12 12:16
Оценка:
Здравствуйте, 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 "));
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[10]: GoingNative 2012
От: vdimas Россия  
Дата: 06.03.12 12:25
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>F# может и нет, но Roslyn с C# может и да.


Возможно.

_NN>А может будет еще что-то новое


_NN>Подход D с Mixin-ами в плане удобства сильно от eval не отличается.

_NN>
_NN>template GenStruct(string Name, string M1)
_NN>{
_NN>  const char[] GenStruct = "struct " ~ Name ~ "{ int " ~ M1 ~ "; }";
_NN>}

_NN>mixin(GenStruct!("Foo", "bar"));
_NN>


Не, не торкает. С тем же успехом можно внешней тулзой генерить и включать по #include, что и делается в плюсах, для тех же CORBA или COM IDL, например.


_NN>Продвигая HTML+JS как панацею всему, тоже далеко не уехать. С++ всех переживет


Ну... эта связка меньше других требует каких-то сред разработки и позволяет "ворваться" даже студентам 1-го курса. А двигают на самом деле мобильную платформу, предлагая простую кроссплатформенную технологию для нее. Ты не туда смотришь.

Да и не против я HTML, вполне сойдет для скриптования GUI. Еще бы язык чуть поинтереснее, чем JS, прижился бы в вебе, вообще неплохо было бы.
Re[12]: GoingNative 2012
От: FR  
Дата: 06.03.12 13:52
Оценка:
Здравствуйте, _NN_, Вы писали:


_NN>Я о том, что вместо текстового представления было правильней ввести цитирование.

_NN>Тогда код был бы типизированным и работа велась бы с объектами, а не просто со строкой.

Да с ast конечно лучше без вопросов.
Но текстовые миксины при всей их корявости вполне равномощны макросам немерле или лиспа.

_NN>Сегодня никто не запрещает написать неравильный код:


Запрещает, такое просто не скомпилируется.
Типизация в отличии от динамики тут работает в compile time.

Кстати в шаблонах D есть аналог цитирования http://dlang.org/template.html#TemplateAliasParameter
Re[11]: GoingNative 2012
От: _NN_ www.nemerleweb.com
Дата: 06.03.12 13:57
Оценка:
Здравствуйте, vdimas, Вы писали:

_NN>>Продвигая HTML+JS как панацею всему, тоже далеко не уехать. С++ всех переживет


V>Ну... эта связка меньше других требует каких-то сред разработки и позволяет "ворваться" даже студентам 1-го курса. А двигают на самом деле мобильную платформу, предлагая простую кроссплатформенную технологию для нее. Ты не туда смотришь.

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

V>Да и не против я HTML, вполне сойдет для скриптования GUI. Еще бы язык чуть поинтереснее, чем JS, прижился бы в вебе, вообще неплохо было бы.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[11]: GoingNative 2012
От: FR  
Дата: 06.03.12 13:59
Оценка: +1 :)
Здравствуйте, vdimas, Вы писали:

V>Не, не торкает. С тем же успехом можно внешней тулзой генерить и включать по #include, что и делается в плюсах, для тех же CORBA или COM IDL, например.


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

auto small = filter!("a < 3")(arr);
auto squares = map!("a * a")(chain(arr1, arr2));


нет сразу нормальные лямбды запилить
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.