Меня заинтересовала последняя часть видео (где-то 40-вая минута и далее) где они начали рассуждать о совсем дальнем будущем C# (о 5-ой версии).
Там прозвучало не мало слов из которых можно сделать не мало выводов.
Пойду по порядку перечислять то что меня заинтересовало (задело).
1. C# — это императивный язык. Собственно означает ли это, что развитие C# в сторону ФП (функционального программирования) завершилось добавлением лямбд?
2. МП (метапрограммирование) — это никак не слишком большая пушка, а очень хорошо и мы (т.е. они) будем это поддерживать. Вот, собственно, "компилятор как сервис".
3. Макросы — это плохо так как нетипизированно и вообще текстово. Отсюда можно сделать вывод, что макросы ими понимаются не так как это понимается в Лиспе или Немерле, а как аналог препроцессора C. Не ясно почему их друг Дон (который Бокс) не убедил их в обратно.
4. Работа на уровне AST и запуск пользовательского кода из компилятора... а как все это отлаживать — задается вопросом Хейльсберг. Отсюда видим, что Дон и правда ничего не рассказал о Лиспе. Хотя слово Лисп он знает, так как упоминал. Ну, да я тоже такое слово знаю .
Меж тем отлаживать "это" весьма не сложно. Достаточно сгенерировать текст по AST и правильно расставить location-ы (сопоставить местоположение). Далее можно отлаживать генерируемый код обычным отладчиком. Код же самих макросов и так отлаживается с пол пинка, так как это просто код плагина к компилятору.
5. Компилятор как сервис — это по всей видимости не более чем возможность скомпилировать код из текстовой строчки в рантайме. Так что IT был прав.
6. Отсюда о пользовательских EDSL (встроенных в универсальный язык языков предметной области) до 6-ой версии можно не говорить. А возможно и вообще говорить бессмысленно.
7. Сопоставление с образцом (оно же ПМ — Паттерн-Матчинг) — это всего лишь другой взгляд на наследование и полиморфизм. При этом этот "взгляд" хуже исходного, так как он открывает внутренности объектов которые раньше были черным ящиком. Короче, нарушает принципы инкапсуляции. Индусы могут сломать ноготь. А безопасность труда — это святое. Неясно только как бедные индусы публичные поля пережили...
8. Вот мультиметоды (ММ) — это круть! Множественная диспечерезация (МД), т.е. по нескольким типам, а не по одному this, да еще с динамическим расширением это здорово... Это, кстати, сказал Меер, который судя по словам сказанным о нем в Википедии является серьезным функциональщиком и работал раньше над Хасклем. Может, что-то с Хасклем не так?
Что-то я тут не понимаю. Может это был стеб, так как улыбка у него была в этот момент до ушей, но как человек значащий что такое ПМ может серьезно сравнивать их с ММ и МД? Да, несомненно, ПМ позволяет с легкостью организовать локальный (не расширяемый динамически) МД, но обратно не верно. ПМ — это возможность распознавать сложнейшие паттерны, а не только динамический тип нескольких объектов. Уверен, что ММ буду востребованы гораздо реже нежели ПМ.
Что касается инкапусляции, то тоже не ясно. Что мешает реализовать МП только по публичному интерфейсу или по внутренним членам внутри типа? По крайней мере ПМ по объектам реализован во всех ведущих гибридных языках (Scala, F#, Nemerle).
9. Поддержка параллелизма очень нужно. Но как ее реализовать мы (они) не знаем. Точно будет PLinq. Можно было бы конечно еще добавить в CLR что-то вроде авторов (из Скалы и Эрланга), но ведь хрен знает что из этого этого получится. А, ведь это серьезное основание чтобы даже не пробовать. И то правда. Ведь все мощные расширения (дженерики, лямбды) были добавлены ребятами пришедшими из МС Ресерч. И видимо, раз уж ты попал в группу компиляторов МС, то исследованиями тебе заниматься не с руки. Надо ждать когда кто-то еще из МС Ресерч сделает что-то хорошее. Хочется верить, что таковые найдутся и они что-то сделают. А та 2-3 года на "продуктивзацию" решения и золотой ключик у нас в кармане.
10. МП, МП и многое другое противоречит принципам ООП, а значит оно нам не нужно. Где-то я это слышал. Где? А, точно. 10 лет назад Хейльсберг предложил добавить в Яву события и делегаты, а злые и консервативные Саншики (или Саночники?) сказали ему свое твердое сфотовое "нет" объяснив попутно, что это не объектно-ориентированное решение, и что намного лучше будет добавить вложенные и анонимные классы которые упростили бы реализацию интерфейсов и паттерна Слушатель, и в то же время не изменили бы чистоты ОО-крнцепций Явы. Видимо, через 10 лет новатор Хейльсберг понял, что они были правы. В прочем события и делегаты и правда были не сам лучшим изобретением. Вот только не потому, что они не ООП, а потому что они не до ФП.
Итого, у меня сложилось впечатление, что C# созрел и развивать его уже нет смысла (ну, если конечно не найдется орел из ресерча который сделает это сам). Так что в ближайших версиях мы вряд ли увидим, что-то радикально новое. Разве что мультиметоды или что-то их заменяющее вроде упрощения реализации паттерна Посетитель.
Я что-то не так понял, или все же прав был Черчилль говоривший: «Кто в молодости не был радикалом — у того нет сердца. Кто в зрелости не консерватор — у того нет головы». Или говоря другими словами — старость не радость .
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Будущее C#, или почему C# ходит вокруг да около Nemerle
Disclaimer — все ниже сказанное является исключительно моими домыслами.
VD>Меня заинтересовала последняя часть видео (где-то 40-вая минута и далее) где они начали рассуждать о совсем дальнем будущем C# (о 5-ой версии).
Для Хейлсберга это не "совсем дальнее будущее", а то, чем он сейчас занимается.
VD>1. C# — это императивный язык.
Скорее ОО язык.
VD> Собственно означает ли это, что развитие C# в сторону ФП (функционального программирования) завершилось добавлением лямбд?
Судя по тому что я слышал — нет, не закончилось. Но превращения C# в совсем функциональный язык не будет. На то есть F#.
VD>2. МП (метапрограммирование) — это никак не слишком большая пушка, а очень хорошо и мы (т.е. они) будем это поддерживать. Вот, собственно, "компилятор как сервис".
Compiler as a service это немножко не то, это инструментальные средства, а не МП в стиле Nemerle.
VD>3. Макросы — это плохо так как нетипизированно и вообще текстово. Отсюда можно сделать вывод, что макросы ими понимаются не так как это понимается в Лиспе или Немерле, а как аналог препроцессора C. Не ясно почему их друг Дон (который Бокс) не убедил их в обратно.
Тут все очень просто — то что называется макросами в Немерле они макросами не называют.
VD>5. Компилятор как сервис — это по всей видимости не более чем возможность скомпилировать код из текстовой строчки в рантайме. Так что IT был прав.
И прав и не прав. CaaS конечно же не МП, но это не значит что МП не будет. Вот чего скорее всего не будет (по крайней мере по утверждению Мэдса), так это возможности изменять синтаксис.
VD>6. Отсюда о пользовательских EDSL (встроенных в универсальный язык языков предметной области) до 6-ой версии можно не говорить.
Да и нет. Т.е. в рамках компилятора C# точно да. А вот в рамках инструментальных средств, как раз таки, начинает играть рояль CaaS. Плюс, наверное, Oslo.
VD>7. Сопоставление с образцом (оно же ПМ — Паттерн-Матчинг) — это всего лишь другой взгляд на наследование и полиморфизм.
Да. Но это т.з. исключительно Хейлсберга. В 2 марта была интересная дисскуссия с C# team после того, как я про ПМ спросил. И это, судя по всему, как раз отголоски той дисскуссии.
VD>8. Вот мультиметоды (ММ) — это круть! Множественная диспечерезация (МД), т.е. по нескольким типам, а не по одному this, да еще с динамическим расширением это здорово... Это, кстати, сказал Меер, который судя по словам сказанным о нем в Википедии является серьезным функциональщиком и работал раньше над Хасклем. Может, что-то с Хасклем не так?
Ой, там столько вариаций на эту тему понапридумано уже. Собственно, Хейлсберг в той дисскуссии предложил в ответ парочку решений. Но это NDA
VD>9. Поддержка параллелизма очень нужно
Угу. Судя по всему, одна из killer features С# 5.
VD>. Но как ее реализовать мы (они) не знаем. Точно будет PLinq.
Точнее ParallelFX. И будет уже в 4.0. Прямо в mscorlib.
Блин, пусть меня расстреляют. Вобщем, http://channel9.msdn.com/posts/Charles/Jeffrey-Richter-and-his-AsyncEnumerator/
А Синклер, если захочет, расскажет забавную историю в тему.
VD> А, ведь это серьезное основание чтобы даже не пробовать. И то правда. Ведь все мощные расширения (дженерики, лямбды) были добавлены ребятами пришедшими из МС Ресерч. И видимо, раз уж ты попал в группу компиляторов МС, то исследованиями тебе заниматься не с руки. Надо ждать когда кто-то еще из МС Ресерч сделает что-то хорошее.
У тебя неверное представление о взаимодействии MSR и compiler team. MSR может работать не только по собственной инициативе, но и в рамках задач compiler team. Сейчас ряд таких исследований для C# 5 уже ведутся.
VD>Итого, у меня сложилось впечатление, что C# созрел и развивать его уже нет смысла (ну, если конечно не найдется орел из ресерча который сделает это сам). Так что в ближайших версиях мы вряд ли увидим, что-то радикально новое.
Кое что новое в 5 шарпе таки будет.
VD> Разве что мультиметоды
Очень вряд ли.
VD> или что-то их заменяющее вроде упрощения реализации паттерна Посетитель.
А вот это возможно.
VD>Я что-то не так понял, или все же прав был Черчилль говоривший: «Кто в молодости не был радикалом — у того нет сердца. Кто в зрелости не консерватор — у того нет головы». Или говоря другими словами — старость не радость .
Помимо Хейлсберга есть еще Мэдс и Эрик (который Липперт).
... << RSDN@Home 1.2.0 alpha 4 rev. 1138 on Windows Vista 6.1.7000.0>>
VD>8. Вот мультиметоды (ММ) — это круть! Множественная диспечерезация (МД), т.е. по нескольким типам, а не по одному this, да еще с динамическим расширением это здорово... Это, кстати, сказал Меер, который судя по словам сказанным о нем в Википедии является серьезным функциональщиком и работал раньше над Хасклем. Может, что-то с Хасклем не так?
Да, Meijer один из отцов-основателей Haskell, автор знаменитой "Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire". Возможно, чтобы понять его новое мировоззрение стоит прочитать: Erik Meijer, Confessions Of A Used Programming Language Salesman. Еще он называет сабя: "типоголик в завязке"
VD>Что-то я тут не понимаю. Может это был стеб, так как улыбка у него была в этот момент до ушей, но как человек значащий что такое ПМ может серьезно сравнивать их с ММ и МД? Да, несомненно, ПМ позволяет с легкостью организовать локальный (не расширяемый динамически) МД, но обратно не верно. ПМ — это возможность распознавать сложнейшие паттерны, а не только динамический тип нескольких объектов. Уверен, что ММ буду востребованы гораздо реже нежели ПМ.
Вообще, среди академиков-практиков, типа Брахи, назревает некий реваншизм по отношению к ООП — С++, Java, C# сделали все неправильно — а вот если сделать как в Smalltalk или в CLOS только лучше — будет самое оно. Мультиметоды — это оттуда. Кстати, Scala — тоже в некотором роде об этом.
VD>9. Поддержка параллелизма очень нужно. Но как ее реализовать мы (они) не знаем. Точно будет PLinq. Можно было бы конечно еще добавить в CLR что-то вроде авторов (из Скалы и Эрланга), но ведь хрен знает что из этого этого получится.
Кстати, акторы в Scala — библиотека.
VD> А, ведь это серьезное основание чтобы даже не пробовать. И то правда. Ведь все мощные расширения (дженерики, лямбды) были добавлены ребятами пришедшими из МС Ресерч.
В статье выше про это немного есть.
VD>Я что-то не так понял, или все же прав был Черчилль говоривший: «Кто в молодости не был радикалом — у того нет сердца. Кто в зрелости не консерватор — у того нет головы». Или говоря другими словами — старость не радость .
Черчилль был умный мужик
Re[2]: Будущее C#, или почему C# ходит вокруг да около Nemer
Здравствуйте, AndrewVK, Вы писали:
AVK>Судя по тому что я слышал — нет, не закончилось. Но превращения C# в совсем функциональный язык не будет. На то есть F#.
F# не менее императивен нежели C#. Но он на 5 поддерживает и ФП. Не думаю, что язык станет хуже если он получит возможность кроме циклов и иф-ов писать и в функциональном стиле.
AVK>Да и нет. Т.е. в рамках компилятора C# точно да. А вот в рамках инструментальных средств, как раз таки, начинает играть рояль CaaS. Плюс, наверное, Oslo.
Не вижу как компилятор в виде объекта поможет в области встраивания ДСЛ-ей.
Что до Осло, то это внешние СДЛ-и. Плюс это оверкил, на мой взгляд. В общем, еще одна мервороженная технология судьба которой быть инструментом для тех кто делает разные визуальные навороты и генераторы.
И вообще, что за подход такой "в рамках инструментальных средств"? Внешние ДСЛ-и? Если, да то у них очень ограниченная область применения и очень высокая стоимость создания (даже с Ослами и прочими СаКлаудами).
VD>>7. Сопоставление с образцом (оно же ПМ — Паттерн-Матчинг) — это всего лишь другой взгляд на наследование и полиморфизм.
AVK>Да. Но это т.з. исключительно Хейлсберга. В 2 марта была интересная дисскуссия с C# team
Где была? С кем? Это доступно в сети или это какой-то офлайн-междусобойчик?
AVK>после того, как я про ПМ спросил. И это, судя по всему, как раз отголоски той дисскуссии.
Это сказал Меер. Какое, кстати, он имеет отношение к Хаскелю?
А вообще он слишком уж подъигрывает Хейльсбергу. Иногда возникает ощущение, что он стебается над его словами, но делает это тонко, чтобы не посвященные не понимали, что же происходит.
VD>>8. Вот мультиметоды (ММ) — это круть! Множественная диспечерезация (МД), т.е. по нескольким типам, а не по одному this, да еще с динамическим расширением это здорово... Это, кстати, сказал Меер, который судя по словам сказанным о нем в Википедии является серьезным функциональщиком и работал раньше над Хасклем. Может, что-то с Хасклем не так?
AVK>Ой, там столько вариаций на эту тему понапридумано уже. Собственно, Хейлсберг в той дисскуссии предложил в ответ парочку решений. Но это NDA
Все его решения лет так 20 назад придуманы (минимум), так что не думаю, что их озвучка может подпадать под NDA. Можешь высказать их как свои идеи.
VD>>9. Поддержка параллелизма очень нужно
AVK>Угу. Судя по всему, одна из killer features С# 5.
Как бы он сам себя не убил. Реально поддержку нужно в CLR встраивать. По крайней мере поддержку акторов о которых говорил Хейльсберг точно нужно встраивать во фрэймворк, так как она сильно завязана на стоимость переключения контекста и на изоляцию виртуальных процессов.
Видимо — это один из страшных секретов .
AVK>А Синклер, если захочет, расскажет забавную историю в тему.
Синклер. Ау...
VD>> А, ведь это серьезное основание чтобы даже не пробовать. И то правда. Ведь все мощные расширения (дженерики, лямбды) были добавлены ребятами пришедшими из МС Ресерч. И видимо, раз уж ты попал в группу компиляторов МС, то исследованиями тебе заниматься не с руки. Надо ждать когда кто-то еще из МС Ресерч сделает что-то хорошее.
AVK>У тебя неверное представление о взаимодействии MSR и compiler team. MSR может работать не только по собственной инициативе, но и в рамках задач compiler team. Сейчас ряд таких исследований для C# 5 уже ведутся.
Возможно. Но слова "а ведь это может не удаться" меня позабавили до глубины души. Сделайте, попробуйте... Выкинете если что. Не те деньги. Тем более, что Эриксон со своим Эрлангом уже отлично доказал, что идея рабочая. А значит риск не велик.
VD>>Итого, у меня сложилось впечатление, что C# созрел и развивать его уже нет смысла (ну, если конечно не найдется орел из ресерча который сделает это сам). Так что в ближайших версиях мы вряд ли увидим, что-то радикально новое.
AVK>Кое что новое в 5 шарпе таки будет.
Я говорю о впечатлениях. Уж больно много скепсиса в их речах.
VD>> Разве что мультиметоды
AVK>Очень вряд ли.
Меер с таким удовольствием о них рассуждал (когда они хаили паттерн-матчинг), что показалось, что это чуть ли не замена всему на свете. Правда снова лыбился, так что не ясно не стеб ли это был.
Эта американская улыбка постоянно висящая на лице не дает понять когда люди стебаются, а когда серьезно говорят.
VD>> или что-то их заменяющее вроде упрощения реализации паттерна Посетитель.
AVK>А вот это возможно.
Вот это будет провал. Хотя поживем — увидим.
VD>>Я что-то не так понял, или все же прав был Черчилль говоривший: «Кто в молодости не был радикалом — у того нет сердца. Кто в зрелости не консерватор — у того нет головы». Или говоря другими словами — старость не радость .
AVK>Помимо Хейлсберга есть еще Мэдс и Эрик (который Липперт).
Что-то Меер пел ему в унисон. Боюсь, что авторитет дядьки Хельберга задавит кого хочешь.
ЗЫ
Вообще, не ясно зачем такие вот "разговоры на людях". С оной стороны что-то там говорят расплывчатое, но с другой никакой конкретики. "Компилятор как сервис" — звучит красиво, а что за этим словами?
Рассуждения же порой просто граничат с ламом. Если бы не знал кто это такие подумал бы какие-то приколисты или люди далекие от темы.
AST-макросы им видите ли не ясно как отлаживать. А у Бокса спросить? 50 лет их в Лиспе отлаживали.
Паттер-матчинг другой взгляд на полиморфизм. Ну, другой, ну и что? Если он в некоторых задачах мощнее в сто раз, что тогда делать? Обосраться и умереть, но отстаивать позиции ООП? Не Хейльсберг ли придя в МС начал копать под этот самый ОО вводя события и делегаты в "чистую Яву"?
Что за нарушение инкапсуляции? Ну, сделайте хотя бы ПМ по публичному интерфейсу.
Потом поглядите на тот же экспрешон-три. Там ведь ОО попирают во все дыры. Посетитель их на половину на switch-е реализован. Так не лучше ли дать людям хороший синтаксис для задач анализа, а не отстаивать принципы ООП любой ценой?
Макросы им не нравятся. Синтаксис они меняют. Мало ли у кого что там меняет. Сделайте по первой хотя бы без изменения синтаксиса. Так чтобы было можно его в виде функции оформить и в виде атрибута. Но чтобы можно было во время компиляции код сгенерить вместо них. И чтобы можно было прочитать код переданный в виде параметров этих макросов или просто находящийся в некотором методе (классе и т.п.).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Будущее C#, или почему C# ходит вокруг да около Nemer
Здравствуйте, z00n, Вы писали:
Z>Да, Meijer один из отцов-основателей Haskell, автор знаменитой "Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire". Возможно, чтобы понять его новое мировоззрение стоит прочитать: Erik Meijer, Confessions Of A Used Programming Language Salesman. Еще он называет сабя: "типоголик в завязке"
Так он религию сменил (вместе с местом работы) или это он так стебается?
Z>Вообще, среди академиков-практиков, типа Брахи, назревает некий реваншизм по отношению к ООП — С++, Java, C# сделали все неправильно — а вот если сделать как в Smalltalk или в CLOS только лучше — будет самое оно. Мультиметоды — это оттуда. Кстати, Scala — тоже в некотором роде об этом.
Скала то тут причем?
VD>>9. Поддержка параллелизма очень нужно. Но как ее реализовать мы (они) не знаем. Точно будет PLinq. Можно было бы конечно еще добавить в CLR что-то вроде авторов (из Скалы и Эрланга), но ведь хрен знает что из этого этого получится. Z>Кстати, акторы в Scala — библиотека.
Я знаю. Только эффективность на уровне плинтуса. Только относительно вычислительно-емкие подпроцессы можно выделять. В отличии от Эрланга где вроде как миллионы процессов можно создать.
VD>> А, ведь это серьезное основание чтобы даже не пробовать. И то правда. Ведь все мощные расширения (дженерики, лямбды) были добавлены ребятами пришедшими из МС Ресерч. Z>В статье выше про это немного есть.
А можно цитату. А то все читать времени пока нет.
VD>>Я что-то не так понял, или все же прав был Черчилль говоривший: «Кто в молодости не был радикалом — у того нет сердца. Кто в зрелости не консерватор — у того нет головы». Или говоря другими словами — старость не радость . Z>Черчилль был умный мужик
+1 Но сволочь.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Будущее C#, или почему C# ходит вокруг да около Nemer
Здравствуйте, VladD2, Вы писали:
Z>>Кстати, акторы в Scala — библиотека.
VD>Я знаю. Только эффективность на уровне плинтуса. Только относительно вычислительно-емкие подпроцессы можно выделять. В отличии от Эрланга где вроде как миллионы процессов можно создать.
Акторы в скале есть двух видов — вторых (Thread-less) можно создавать много.
Thread-blocking operations can be avoided by using react to wait for new messages (the event-based pendant of receive). However, there is a (usually small) price to pay: react never returns. In practice, this means that at the end of a reaction to a message, one has to call some function that contains the rest of the actor's computation.
VD>>> А, ведь это серьезное основание чтобы даже не пробовать. И то правда. Ведь все мощные расширения (дженерики, лямбды) были добавлены ребятами пришедшими из МС Ресерч. Z>>В статье выше про это немного есть.
VD>А можно цитату. А то все читать времени пока нет.
My main reason to join Microsoft as the company to infuse
mainstream programming languages with monads and other
functional programming features was that I believed the
quickest road to success would be to work on adding support
for exotic language features to the new Common Language
Runtime [74].
Пролистните по диагонали — она забавная.
Re[4]: Будущее C#, или почему C# ходит вокруг да около Nemer
Здравствуйте, z00n, Вы писали:
Z>Акторы в скале есть двух видов — вторых (Thread-less) можно создавать много. Z>
Z>Thread-blocking operations can be avoided by using react to wait for new messages (the event-based pendant of receive). However, there is a (usually small) price to pay: react never returns. In practice, this means that at the end of a reaction to a message, one has to call some function that contains the rest of the actor's computation.
Они используют явовские примитивы которые не очень то шустрые. К тому же понятие "много" растяжимое.
Где то были сравнения с Эрлангом. Когда количество процессов было малым, то скорость была выше у Скалы (компилятор все же). А на большом количестве Эрланг резко вырывался вперед.
Z>
Z>My main reason to join Microsoft as the company to infuse
Z>mainstream programming languages with monads and other
Z>functional programming features was that I believed the
Z>quickest road to success would be to work on adding support
Z>for exotic language features to the new Common Language
Z>Runtime [74].
Похвальное рвение. Тогда, похоже, что его слова в этом авишнике — это стеб.
Z>Пролистните по диагонали — она забавная.
ОК
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Будущее C#, или почему C# ходит вокруг да около Nemer
Здравствуйте, VladD2, Вы писали:
VD>F# не менее императивен нежели C#. Но он на 5 поддерживает и ФП. Не думаю, что язык станет хуже если он получит возможность кроме циклов и иф-ов писать и в функциональном стиле.
Все дело в приоритетах.
AVK>>Да и нет. Т.е. в рамках компилятора C# точно да. А вот в рамках инструментальных средств, как раз таки, начинает играть рояль CaaS. Плюс, наверное, Oslo.
VD>Не вижу как компилятор в виде объекта поможет в области встраивания ДСЛ-ей.
Будет сравнительно легко самостоятельно делать что то вроде asp.net.
AVK>>Да. Но это т.з. исключительно Хейлсберга. В 2 марта была интересная дисскуссия с C# team
VD>Где была? С кем? Это доступно в сети или это какой-то офлайн-междусобойчик?
Второе.
AVK>>после того, как я про ПМ спросил. И это, судя по всему, как раз отголоски той дисскуссии.
VD>Это сказал Меер. Какое, кстати, он имеет отношение к Хаскелю?
Никакого.
AVK>>Угу. Судя по всему, одна из killer features С# 5.
VD>Как бы он сам себя не убил. Реально поддержку нужно в CLR встраивать.
И это тоже.
AVK>>У тебя неверное представление о взаимодействии MSR и compiler team. MSR может работать не только по собственной инициативе, но и в рамках задач compiler team. Сейчас ряд таких исследований для C# 5 уже ведутся.
VD>Возможно. Но слова "а ведь это может не удаться" меня позабавили до глубины души. Сделайте, попробуйте... Выкинете если что.
Так и происходит.
AVK>>Помимо Хейлсберга есть еще Мэдс и Эрик (который Липперт).
VD>Что-то Меер пел ему в унисон.
При чем тут Меер? Он вообще не из compiler team.
VD>Вообще, не ясно зачем такие вот "разговоры на людях". С оной стороны что-то там говорят расплывчатое, но с другой никакой конкретики.
А по 5 шарпу никакой конкретики пока и нет. Они сейчас как раз и заняты определением того, что там будет.
VD> "Компилятор как сервис" — звучит красиво, а что за этим словами?
За этим словами вполне конкретная и детально проработанная технология. Только, еще раз повторяю, это не МП, это инструментальное средство, прежде всего упрощающее ряд задач по созданию расширений для VS.
... << RSDN@Home 1.2.0 alpha 4 rev. 1138 on Windows Vista 6.1.7000.0>>
AVK>Блин, пусть меня расстреляют. Вобщем, http://channel9.msdn.com/posts/Charles/Jeffrey-Richter-and-his-AsyncEnumerator/ AVK>А Синклер, если захочет, расскажет забавную историю в тему.
Да, получилось на редкость забавно. Там началось всё с того, что мы (то есть AVK) отловили Мэдса в коридорах и докопались с вопросом "Hi Mads, how about the c#4 specification"?
Я бы на его месте на такое, да еще и в 8:30 утра, ответил "Who's the ...k are you?", но Мэдс был на редкость приветлив и начал достаточно интересную дискуссию.
Потихоньку перешли к параллельности и асинхронности, причем Мэдс упирал на то, что в рядах товарищей согласья нет, и есть куча потребностей, и все типа работают по разному.
Ну, я со своим корявым английским стал заяснять, что вот вроде есть библиотечка некоего Рихтера, так вот она — почти то что нужно, но с корявостями. Тут дяденька, который сидел рядом со мной напротив Мэдса, стал встревать в разговор с вопросами типа "корявостями? какими корявостями?". Я сбивчиво попытался объяснить, что, дескать, ее в принципе можно улучшить, но не слишком, потому что ограничения языка. Минуты через полторы разговора в стиле "да нет, вряд ли ты ее улучшишь — да нет, улучшу, там только много грязной работы — да вот лучше чем этот парень улучшил уже вряд ли улучшишь" Мэдс таки сказал этому дяденьке "Джеффри, хватит стебаться, покажи бэджик". Так я и выяснил, что на глазах изумленной публики спорил с Джеффри Рихтером на тему ажно Power Threading Library:
Я как-то этого не ожидал, именно поэтому у меня такое охреневшее выражение лица.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Будущее C#, или почему C# ходит вокруг да около Nemer
Здравствуйте, z00n, Вы писали:
Z>Вообще, среди академиков-практиков, типа Брахи, назревает некий реваншизм по отношению к ООП — С++, Java, C# сделали все неправильно — а вот если сделать как в Smalltalk или в CLOS только лучше — будет самое оно. Мультиметоды — это оттуда. Кстати, Scala — тоже в некотором роде об этом.
Что значит "назревает", когда в С++ мультиметоды уже тыщу лет обсуждаются (зуб не дам, но помнится, что я читал про возможную реализацию чуть ли не в древнем ARM-e)
А вот тут хорошая обзорная статья с вариантами реализации (и с упоминанием других языков, в частности, того же CLOS)
Open Multi-Methods for C++: http://research.att.com/~bs/multimethods.pdf
Здравствуйте, AndrewVK, Вы писали:
AVK>>>после того, как я про ПМ спросил. И это, судя по всему, как раз отголоски той дисскуссии.
VD>>Это сказал Меер. Какое, кстати, он имеет отношение к Хаскелю?
AVK>Никакого.
Гы. Оказалось, что он один из его создателей.
Так что его слова — это на половину стеб.
AVK>>>Угу. Судя по всему, одна из killer features С# 5. VD>>Как бы он сам себя не убил. Реально поддержку нужно в CLR встраивать. AVK>И это тоже.
Это предположение или уже слухи?
VD>>Возможно. Но слова "а ведь это может не удаться" меня позабавили до глубины души. Сделайте, попробуйте... Выкинете если что.
AVK>Так и происходит.
Как-то не заметно. Тот же линк и дженерики имели прототипы в виде ресерчевских проектов.
Кстати, именно Меер оказывается создал СиОмера и вдохновил Линк.
Так что на него главная надежда. Его идея протащить лучшее из ФП в мэйнстрим мне очень нравится. Можно сказать мы занимаемся одним делом .
AVK>>>Помимо Хейлсберга есть еще Мэдс и Эрик (который Липперт).
VD>>Что-то Меер пел ему в унисон.
AVK>При чем тут Меер? Он вообще не из compiler team.
Ну, как бы Меер — это Линк и ФП фичи 3-его шарпа. Если уж и он поддерживает консерватизм Хейльсберга, то дело швах. В прочем, все больше склоняюсь к тому, что он стебался. Не даром они все ржали когда он говорил.
Если слова "я вообще-то не функциональщик" вообще прелесть.
AVK>А по 5 шарпу никакой конкретики пока и нет. Они сейчас как раз и заняты определением того, что там будет.
Дык как раз время обратиться к общественности.
Хейльсберг вас (МВПов) там в суе поминал. Мол сейчас придут и будут просить паттерн-матчинг и макросы .
VD>> "Компилятор как сервис" — звучит красиво, а что за этим словами?
AVK>За этим словами вполне конкретная и детально проработанная технология. Только, еще раз повторяю, это не МП, это инструментальное средство, прежде всего упрощающее ряд задач по созданию расширений для VS.
Компилить код с исходника и раньше можно было. Не уж то это за новую технологию пройдет?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Будущее C#, или почему C# ходит вокруг да около Nemer
Здравствуйте, z00n, Вы писали:
Z>Да, Meijer один из отцов-основателей Haskell, автор знаменитой "Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire". Возможно, чтобы понять его новое мировоззрение стоит прочитать: Erik Meijer, Confessions Of A Used Programming Language Salesman. Еще он называет сабя: "типоголик в завязке"
Статья и правда очень интересная. Значит он все же стебался большую часть времени.
Вообще надо понимать, что тебя будут смотреть в основном люди мало понимающие кто ты такой, так что такой стеб — это перебор.
Его слова "я вообще-то не функциональщик..." прозвучали весьма искренне, если бы не дружное ржание за кадром...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Будущее C#, или почему C# ходит вокруг да около Nemer
Здравствуйте, jazzer, Вы писали:
J>Что значит "назревает", когда в С++ мультиметоды уже тыщу лет обсуждаются (зуб не дам, но помнится, что я читал про возможную реализацию чуть ли не в древнем ARM-e)
С++ — это язык в котором все обсуждается. Но так как основная концепция языка — все положить в библиотеку, то ничего в язык не добавляют и получается полная задница.
J>А вот тут хорошая обзорная статья с вариантами реализации (и с упоминанием других языков, в частности, того же CLOS)
CLOS — это не язык. CLOS — это макро-бибилотека для лиспа.
Собственно Лисп — это единственный язык где на сегодня эти самые мультиметоды штатно поддерживаются... и то через макросы.
J>Open Multi-Methods for C++: http://research.att.com/~bs/multimethods.pdf
Это все не более чем треп.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Будущее C#, или почему C# ходит вокруг да около Nemer
Здравствуйте, IT, Вы писали: IT>А мне Ваня с АВК
Нда. Интересно было бы послушать эту историю в изложении, к примеру, Миши Купаева. Оценить, тскать, искажения в канале.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: Будущее C#, или почему C# ходит вокруг да около Nemer
Не совсем. Там только о 10-ой части рассказано. Самые важные вещи — это средства декомпозиции и склеивания кода. О них он и не заикался. Потом деревья выражений доступны только в рантайме, что упрощает их реализацию, но уменьшает их актуальность. АСТ Немерла доступно во время компиляции.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.