Здравствуйте, Кэр, Вы писали:
Кэр>Не так давно наблюдал за обсуждением разговора "а почему бы не добавить сишные макросы в C#" в локальной переписке. Eric Lippert (насколько я понимаю, один из наиболее отвественных разработчиков этой фичи в C# 5.0) ответил вполне четко: мы еще толком не знаем, на что будет похоже мета-программирование в C# 5.0, но это гарантировано не будут сишные макросы. Просто потому с компилятором можно общаться на гораздо более высоком уровне, чем скриптовый язычок, который генерит строки кода. По его мнению, которое я полностью поддерживаю, от сишных макросов вреда больше, чем пользы. Так что они специально сопротивляются такой "фиче" C#.
Правильно делают, что сопротивляются.
Что касается "мы еще толком не знаем, на что будет похоже мета-программирование в C# 5.0", то уже пора (пока не стало поздно) посмотреть на Nemerle. Сколько уже граблей в язык засунули. Зачем еще одни стругать десятелетиями?
Так что все у кого есть связи с командой C# тычте их носом в этот язык.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
IT>>О процессе вмешиваться в процесс компиляции во время самой компиляции там ни слова. Этого я не слышал ни у Хейльсберга, ни в этой презентации. Если я ошибаюсь дайте временную отметку в презентации, я послушаю ещё раз.
VD>Смотри внимательно слайды (последние). Там все очевидно.
Может мы разные слайды смотрим?
IT>>А объектная модель может понадобиться и для run-time генерации кода.
VD>В рантайме есть рефлексия и городить еще оден огород смысла нет. Там явно показано, что компилятор будет предоставлять АСТ во время компиляции.
Ещё раз повторяю. Про компиляцию там ни слова. А объектная модель есть уже сейчас, см. System.Linq.Expressions. Можно набить дерево и даже его скомпилировать и выполнить. Только это не compile-time.
Если нам не помогут, то мы тоже никого не пощадим.
IT>Ещё раз повторяю. Про компиляцию там ни слова. А объектная модель есть уже сейчас, см. System.Linq.Expressions. Можно набить дерево и даже его скомпилировать и выполнить. Только это не compile-time.
Смотри 50-ую минуту и далее. Где-то на 50"25' идут слова "все это требует поддержки со стороны компилятора". Перед этим речь шла о мета-программировании, ДСЛ-ях, АСП-нэт и т.п. 55"7" звучит фраза, что залезть в современный компилятор нельзя... "...т.е. получить от него какие-то там деревья, а это необходимо. И это причина почему мы переписываем компилятор на менеджед-коде, на C#-е... Для того чтобы открыть это черный ящик..." — (51"24' — тут крышка ящика, олицетворяющего компилятор, открывается и из него вверх выезжает дерев отчетливо похожее на AST) — "и дать вам, всем, тем кто хочет иметь доступ к внутненним стркутурам компилятора и сделать возможными такие вещи как: мета-программирование, интерактивный цикла..." — имеется в виду REPL (Read-Eval-Print-Loop) — "...встраивание DSL... чтобы можно было читать программы на C#-е, писать свои рефакторинги и так далее...". Далее пошла демонстрациыя прототипа компилятора в которой нихрена из описанного доступа к внутренностям компилятора показано не было.
В общем, нужно быть объективными. Слова и картинки об открытии внутренностей компилятора прозвучали и кто хотел, тот их услышал. Слова конечно скомканные и невнятные. Но уже кое что. Очевидно, что у них пока что почти ничего нет (кроме прототипа менеджед-компилятора). И сейчас у них стадия эксперементов которая затянется еще минимум на 4-5 лет.
Думаю куцость новшеств которые мы будем наблюдать в 4-ом фрэймворке как раз и обусловлена работой над менеджед-компилятором.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, IT, Вы писали:
IT>Ещё раз повторяю. Про компиляцию там ни слова. А объектная модель есть уже сейчас, см. System.Linq.Expressions.
Она очень куцая, хуже даже CodeDOM. В 4 версии ее расширят под потребности DLR, но все равно это очень и очень маленький кусочек от того, что требуется. А требуется 100% покрытие всех фич шарпа.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
Здравствуйте, VladD2, Вы писали:
VD>Думаю куцость новшеств которые мы будем наблюдать в 4-ом фрэймворке как раз и обусловлена работой над менеджед-компилятором.
Здесь ты не прав. Куцость обусловлена значительным объемом работ по рефакторингу студии. На то, чтобы еще параллельно и большое количество новых фич ширпа поддержать просто нет ресурсов. Собственно, именно поэтому были выкинуты extension everything — в компиляторе это реализовано было, а вот интеллисенс и рефакторинг студийный дорабатывать не стали.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
Здравствуйте, Sinix, Вы писали:
S>Меня щас справедливо запинают, но добавлять возможность произвольного расширения мейнстрим-языка... оверкилл получается
На самом деле они сами же фактически убедили основную фишку платформы — многоязычность. Постепенно приходим к тому, что у нас есть один C# to rule them all. А потому он одновременно и мейнстрим, и не-мейнстрим и язык для расширения офиса, и черт знает для чего.
Хотя казалось бы развития нескольких языков, каждый из которых имел бы свою собственную специализацию, было бы идеальным решением. Развитие C# можно было бы сконцентрировать на ООП и вообще не вводить в него даже кучу фишек, которые есть сейчас — это был бы "высокоуровневый" язык для описания всяких объектных моделей и "склеивания" кода.
А уж какие-то отдельные задачи можно было бы и решать на более специализированных языков. Тут и тому же выбенету вполне бы место нашлось — хотя бы как языка, наиболее удобного для всяких интеропов.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>На самом деле они сами же фактически убедили основную фишку платформы — многоязычность. Постепенно приходим к тому, что у нас есть один C# to rule them all. А потому он одновременно и мейнстрим, и не-мейнстрим и язык для расширения офиса, и черт знает для чего.
Они не мало делают для подедржки разных языков. Тот же DLR как раз сдерство поддержки скриптов. То что они обратили внимание на F# может подтолкнуть развитие функциональных фич и оптимизаций. Так что не все так плохо.
ВВ>Хотя казалось бы развития нескольких языков, каждый из которых имел бы свою собственную специализацию, было бы идеальным решением. Развитие C# можно было бы сконцентрировать на ООП и вообще не вводить в него даже кучу фишек, которые есть сейчас — это был бы "высокоуровневый" язык для описания всяких объектных моделей и "склеивания" кода.
Не согласен. Параметры по умолчанию и именованные параметры — это то, что дико не хватало ранее. Собственно платформа поддерживает и язык который всего этого не поддерживает — С++ . Все недовольные могут использовать его.
В общем, на мой взгляд ребята исправили старую проблему и, что еще более важно, признали свои ошибки. Лично мне это нравится.
ВВ>А уж какие-то отдельные задачи можно было бы и решать на более специализированных языков. Тут и тому же выбенету вполне бы место нашлось — хотя бы как языка, наиболее удобного для всяких интеропов.
ВБ не более специализированный язык. Он вообще копия Шарпа с немного другим синтаксисом. Принципиальных различий между ними почти не осталось.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
AVK>Здесь ты не прав. Куцость обусловлена значительным объемом работ по рефакторингу студии. На то, чтобы еще параллельно и большое количество новых фич ширпа поддержать просто нет ресурсов. Собственно, именно поэтому были выкинуты extension everything — в компиляторе это реализовано было, а вот интеллисенс и рефакторинг студийный дорабатывать не стали.
Студией занимается другая команда. Изменения в языке микроскопические. Фактически кроме параметров все остальное — это прикручивание фич фрэймворка.
Да и что будут делать люди проевшие плешь на языкостроении в проекте где море голимого ком-интеропа с GUI Студии?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Andrei F., Вы писали:
VD>>Что же касается IReadonlyList, то (хотя это к теме отношения не имеет) я считаю, что методы модифицирующие списки вообще лишние в интерфейсах. Но обратного пути уже нет.
AF>Ну почему нет? Добавить ридонли-интерфейсы и сейчас можно, просто разработчики не чешутся. Как с другими косяками, вроде enum constraints.
Надо не добавлять, а удалять. Например, интерфейс IList<T> нельзя сделать ковариантным просто потому, что у него есть методы Insert и RemoveAt.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
ВВ>>На самом деле они сами же фактически убедили основную фишку платформы — многоязычность. Постепенно приходим к тому, что у нас есть один C# to rule them all. А потому он одновременно и мейнстрим, и не-мейнстрим и язык для расширения офиса, и черт знает для чего. VD>Они не мало делают для подедржки разных языков. Тот же DLR как раз сдерство поддержки скриптов. То что они обратили внимание на F# может подтолкнуть развитие функциональных фич и оптимизаций. Так что не все так плохо.
Мне кажется они немало делают для того, чтобы привлечь разработчиков на платформу — в т.ч. и разработчиков компиляторов. Но прошло уже достаточно много времени — и до сих всевозможные ХХХ.NET как были так и остались диковинными зверями.
С F# ситуация мне вообще не слишком понятная. Я так и не понял, что с ним будет — он появится in-box вместе со студией и будет поддерживаться MS? Или как? Опять-таки F# уже не вчера появился и то, что они сейчас вдруг неожиданно о нем вспомнили — по ходу вместе 1.5 программистов поручили им заниматься 3.5 — не так уж и показательно.
ВВ>>Хотя казалось бы развития нескольких языков, каждый из которых имел бы свою собственную специализацию, было бы идеальным решением. Развитие C# можно было бы сконцентрировать на ООП и вообще не вводить в него даже кучу фишек, которые есть сейчас — это был бы "высокоуровневый" язык для описания всяких объектных моделей и "склеивания" кода. VD>Не согласен. Параметры по умолчанию и именованные параметры — это то, что дико не хватало ранее.
Мне так кажется, что если поискать тут флеймы 2002-2003 гг. выпуска, то вполне можно найти заявления авторитетных личностей в стиле, что параметры по умолчанию — это не есть гуд да и вообще не объектно-ориентированно.
Мне не хватало параметров по умолчанию при работе с COM-интеропом. И все. В остальных случаях они не нужны. Да и косвенно вполне могут навязывать порочную практику описания функций — достаточно посмотреть на тот же офис-интероп. У функции не должно быть леса параметров. И тогда без optional очень даже можно обходиться
Но дело даже не в параметрах по умолчанию. Бог с ними, это по большому счету мелочь. Язык развивается по очень странным принципам, как-то "беспредметно" — фактически его начинают затачивать под конкретные задачи, но в то же время он по-прежнему остается универсальным языком. Есть вероятность, что получится "слегка помойка".
Мне кажется было бы куда логичнее, если б C# остался на уровне 1.0 (да еще и минус некоторые фишки вроде делегатов, да и статик можно тоже выкинуть), но при этом был бы полноценный ФП язык и язык поддерживающий мета-программирование.
Мне непонятно — зачем все это смешивать?
VD>Собственно платформа поддерживает и язык который всего этого не поддерживает — С++ . Все недовольные могут использовать его.
Там слишком многа букафф
VD>В общем, на мой взгляд ребята исправили старую проблему и, что еще более важно, признали свои ошибки. Лично мне это нравится. ВВ>>А уж какие-то отдельные задачи можно было бы и решать на более специализированных языков. Тут и тому же выбенету вполне бы место нашлось — хотя бы как языка, наиболее удобного для всяких интеропов.
VD>ВБ не более специализированный язык. Он вообще копия Шарпа с немного другим синтаксисом. Принципиальных различий между ними почти не осталось.
Теперь — да. На момент выхода отличий на самом деле было не так мало. и никто не мешал сделать его более специализированным и еще больше заточить под конкретные задачи. А так — получается действительно "другой синтаксис" для тех кому не нравятся фигурные скобки.
Помнится, я какой-то блог выбенетчика читал, страдающего дислексией — так вот он старательно всех убеждал, что си-шарп менее читабелен чем бейсик, так как является регистрозависимым, а он, в виду особенностей "графического" восприятия, буквы в разных регистрах различать не может.
В общем странная какая-то специализация у языка получается
Здравствуйте, VladD2, Вы писали:
VD>Студией занимается другая команда.
Во-первых не совсем другая, во-вторых это ничего не меняет, пока фичи не будут поддерживаться студией, их никто релизить не будет.
VD>Да и что будут делать люди проевшие плешь на языкостроении в проекте где море голимого ком-интеропа с GUI Студии?
Ты, видимо, чего то не понял. В итоге надо получить в обязательном порядке и компилятор, и поддержку в студии. Если нет чего то одного — в релизе ничего не будет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
Здравствуйте, Воронков Василий, Вы писали:
ВВ>С F# ситуация мне вообще не слишком понятная.
Интересно — ты не понял, а выводы далеко идущие уже делаешь. Ты уж что нибудь одно — либо интересуйся свежими новостями, либо тогда не пытайся делать предсказания на основании отсутствующей информации.
ВВ> Я так и не понял, что с ним будет — он появится in-box вместе со студией
Да.
ВВ> и будет поддерживаться MS?
Да.
ВВ> Или как? Опять-таки F# уже не вчера появился и то, что они сейчас вдруг неожиданно о нем вспомнили — по ходу вместе 1.5 программистов поручили им заниматься 3.5 — не так уж и показательно.
Зато показателен тот факт, что под F#, IronPython и IronRuby дорабатывается BCL и JIT.
ВВ>Мне кажется было бы куда логичнее, если б C# остался на уровне 1.0
Выбираешь соотв. настройку в проекте и наслаждаешься. Делов то.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
Здравствуйте, AndrewVK, Вы писали:
ВВ>>С F# ситуация мне вообще не слишком понятная. AVK>Интересно — ты не понял, а выводы далеко идущие уже делаешь. Ты уж что нибудь одно — либо интересуйся свежими новостями, либо тогда не пытайся делать предсказания на основании отсутствующей информации.
А можно уточнить, какой я сделал "далекоидущий" вывод? И что я конкретно предсказал?
ВВ>> Я так и не понял, что с ним будет — он появится in-box вместе со студией AVK>Да.
The current plan of record is that the F# core libraries and compiler will ship as an additional component, not in the .NET Framework itself. We expect this to be available as an F# redistributable package. Referencing this package from a Visual Studio setup project will be sufficient to deploy the core library DLL(s) it to a client machine.
То, что F# можно "подключить" и использовать — как бы не особо "свежая новость".
ВВ>>Мне кажется было бы куда логичнее, если б C# остался на уровне 1.0 AVK>Выбираешь соотв. настройку в проекте и наслаждаешься. Делов то.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>А можно уточнить, какой я сделал "далекоидущий" вывод? И что я конкретно предсказал?
На самом деле они сами же фактически убедили основную фишку платформы — многоязычность. Постепенно приходим к тому, что у нас есть один C# to rule them all.
ВВ>The current plan of record is that the F# core libraries and compiler will ship as an additional component, not in the .NET Framework itself. We expect this to be available as an F# redistributable package. Referencing this package from a Visual Studio setup project will be sufficient to deploy the core library DLL(s) it to a client machine.
Не находишь, что .NET Framework 4 и VS 2010 это не одно и то же? По твоей же ссылке:
I am now thrilled to announce one result of this investment: F# will ship as part of Visual Studio 2010!
Мне вот интересно — ты просто свою ссылку не читал, или решил что я туда не полезу?
AVK>>Выбираешь соотв. настройку в проекте и наслаждаешься. Делов то.
ВВ>А это уже передергивание того, о чем я писал.
Ничуть. Программировать в рамках C# 1.0 можно на самой последней студии. Это факт.
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>
На самом деле они сами же фактически убедили основную фишку платформы — многоязычность. Постепенно приходим к тому, что у нас есть один C# to rule them all.
А у тебя другое мнение? Возможно, основанное на широком использовании в проектах других языков, помимо C#?
Это не предсказание, а описание текущей ситуации.
AVK>Не находишь, что .NET Framework 4 и VS 2010 это не одно и то же? По твоей же ссылке: AVK>
I am now thrilled to announce one result of this investment: F# will ship as part of Visual Studio 2010!
AVK>Мне вот интересно — ты просто свою ссылку не читал, или решил что я туда не полезу?
Ну да, я что-то малость запутался — фреймворк, студия. ОК, F# включается в дистрибуцию студии, а не фреймворка. К слову, там и сейчас не один си-шарп. И какой тут вывод можно сделать? Да никакого.
Здравствуйте, Воронков Василий, Вы писали:
ВВ>Здравствуйте, AndrewVK, Вы писали:
AVK>>
На самом деле они сами же фактически убедили основную фишку платформы — многоязычность. Постепенно приходим к тому, что у нас есть один C# to rule them all.
ВВ>А у тебя другое мнение?
Да.
ВВ> Возможно, основанное на широком использовании в проектах других языков, помимо C#?
Возможно.
ВВ>Это не предсказание, а описание текущей ситуации.
"Постепенно приходим к тому" это именно что предсказание.
ВВ>Ну да, я что-то малость запутался — фреймворк, студия. ОК, F# включается в дистрибуцию студии, а не фреймворка. К слову, там и сейчас не один си-шарп.
Удивительно.
ВВ> И какой тут вывод можно сделать? Да никакого.
А какой ты хотел сделать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1132 on Windows Vista 6.0.6001.65536>>