Здравствуйте, AndrewVK, Вы писали:
AVK>Здравствуйте, VladD2, Вы писали:
VD>>Я вообще-то с тобой не спорил. Ясогласился с GlebZ по поводу того, что язык выпускается с недоработанными фичами.
AVK>В ответ на мое сообщение, в котором я написал, что далеко не все фичи там недоделаны. Потому и говорю, что не читаешь то, на что отвечаешь.
Ладно, это все рассплывчато. Лично мне не нравится, что вообще есть явные недоработки.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVK>>Ансейф ерунда. Ключик убрал и никакого ансейфа.
VD>Хм. А тебе не кажется, что такой же аргумент можно применить и к тем же макросам?
У компилятора Nemerle есть ключик, запрещающий макросы? Ну илди хотя бы макросы ввиде ключевых слов?
VD>>>Но ты то вроде о сложности говорил? C# 3.0 несомннено сложнее C# 1.0.
AVK>>Нет, я говорил не о сложности.
VD>Тогда о чем?
Здравствуйте, AndrewVK, Вы писали:
AVK>У компилятора Nemerle есть ключик, запрещающий макросы? Ну илди хотя бы макросы ввиде ключевых слов?
Макросы подключаются через ключ. Есть ключ отключающий стандартные макросы. И нет никаких проблем сделать ключ отключающий синтаксические макросы.
AVK>О побочных эффектах.
Подразумеваемых?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
По поводу доступа к анонимным типам появилось немножечко больше информации. Главная проблема их реализации в том, что анонимные типы могут быть использованы не в том модуле, в котором объявлены. Иными словами, одинаковые анонимные типы, объявленные в разных сборках, будут в рантайме разными типами. Следовательно, для полноценной поддержки кортежей нужно менять рантайм. Так что в первой версии LINQ полноценных кортежей, похоже, не будет, придется для экспорта описывать типы руками.
Здравствуйте, AndrewVK, Вы писали:
AVK>По поводу доступа к анонимным типам появилось немножечко больше информации. Главная проблема их реализации в том, что анонимные типы могут быть использованы не в том модуле, в котором объявлены. Иными словами, одинаковые анонимные типы, объявленные в разных сборках, будут в рантайме разными типами. Следовательно, для полноценной поддержки кортежей нужно менять рантайм. Так что в первой версии LINQ полноценных кортежей, похоже, не будет, придется для экспорта описывать типы руками.
Надо было не выпендриваться с именами полей в анонимных типах, тогда и проблем не было бы. Ведь классические кортежи не с дуру придумали такими какие они есть. Они внутри просто описываются через джененики.
Да и странно слышать от разработчиков дотнета о том, что им нужно менять рантайм. В чем проблема-то? Пусть меняют раз надо. Сделают патчь, обратно совместимый с FW 2.0 и нет проблем.
Когда они планируют выпуск LINQ-а?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Надо было не выпендриваться с именами полей в анонимных типах, тогда и проблем не было бы. Ведь классические кортежи не с дуру придумали такими какие они есть.
Вообще-то классические кортежи вполне себе содержат имена полей. В классической реляционной алгебре, кстати, на этой одноименности много чего построено — к примеру оператор естественного соединения. VD>Они внутри просто описываются через джененики.
Имхо нужно просто делать анонимный тип вот так:
namespace System
{
public class Tuple<T1, T2, T3>
{
protected T1 _f1;
protected T2 _f2;
public Tuple(T1 f1, T2 f2) { _f1 = f1; _f2 = f2; }
public Tuple(Tuple source): this(source._f1, source._f2) {}
}
}
namespace MyCode
{
public class MyAnonymousRecord : Tuple<string, int>
{
public string Name { get { return _f1; }}
public int Count { get { return _f2; }}
}
}
Т.е. есть встроенный набор туплов нужной размерности, а конкретный аноним будет наследоваться от этих туплов и заниматься переименованием. При этом анонимные типы с одинаковой сигнатурой становятся совместимыми, пусть и не одинаковыми.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, VladD2, Вы писали:
VD>Надо было не выпендриваться с именами полей в анонимных типах, тогда и проблем не было бы. Ведь классические кортежи не с дуру придумали такими какие они есть. Они внутри просто описываются через джененики.
Не согласен. Анонимные типы внутри выглядят простои понятно, а вот кортежи без именованных свойств запутывают код.
VD>Да и странно слышать от разработчиков дотнета о том, что им нужно менять рантайм.
От разработчиков компилятора.
VD> В чем проблема-то? Пусть меняют раз надо.
Было принято решение о том, что в Orcas рантайм кардинально менятся не будет, максимум выйдет сервис пак.
VD>Когда они планируют выпуск LINQ-а?
На данный момент вместе с Orcas. Т.е. либо в конце 2006, либо в начале 2007. Это релиз. Ближайший CTP должен выйти в течение месяца.
Здравствуйте, Sinclair, Вы писали:
S>Т.е. есть встроенный набор туплов нужной размерности, а конкретный аноним будет наследоваться от этих туплов и заниматься переименованием. При этом анонимные типы с одинаковой сигнатурой становятся совместимыми, пусть и не одинаковыми.
Нет, в твоем варианте они совместимыми не становятся. Ты сам можешь придумать массу примеров, когда несовместимость вылезет.
Здравствуйте, AndrewVK, Вы писали: AVK>Нет, в твоем варианте они совместимыми не становятся.
Ну, я подразумевал наличие implicit операторов конверсии из Tuple<>. AVK>Ты сам можешь придумать массу примеров, когда несовместимость вылезет.
Разве что в массивах
Впрочем, ты прав — получается сильно много костылей без значительных преимуществ.
1.1.4 stable rev. 510
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Здравствуйте, Sinclair, Вы писали:
S>Здравствуйте, VladD2, Вы писали:
VD>>Надо было не выпендриваться с именами полей в анонимных типах, тогда и проблем не было бы. Ведь классические кортежи не с дуру придумали такими какие они есть. S>Вообще-то классические кортежи вполне себе содержат имена полей. В классической реляционной алгебре, кстати, на этой одноименности много чего построено — к примеру оператор естественного соединения.
Причем тут "В классической реляционной алгебре"?
Я говорил про классическую реализацию кортежей в функциональных языках. В том же COmega кортежи были с безымянными полями вроде. И никому это не мешало. Ребята решили рацушку ввести и получили кучу несовместимостей.
VD>>Они внутри просто описываются через джененики. S>Имхо нужно просто делать анонимный тип вот так: S>
S>namespace System
S>{
S> public class Tuple<T1, T2, T3>
S> {
S> protected T1 _f1;
S> protected T2 _f2;
S> public Tuple(T1 f1, T2 f2) { _f1 = f1; _f2 = f2; }
S> public Tuple(Tuple source): this(source._f1, source._f2) {}
S> }
S>}
В Немерле почти так и сделано. Только _f2 публичные, что естественно.
S>namespace MyCode
S>{
S> public class MyAnonymousRecord : Tuple<string, int>
S> {
S> public string Name { get { return _f1; }}
S> public int Count { get { return _f2; }}
S> }
S>}
S>
А это уже лишнее. Я конечно понимаю и оцениваю стремление дать имена полям кортежей, но откровенно говоря и без этого не плохо. А полноценные имена дейсвтительно требуют поддержки от рантайма, что верно заметили разработчики C#-а.
S>Т.е. есть встроенный набор туплов нужной размерности, а конкретный аноним будет наследоваться от этих туплов и заниматься переименованием. При этом анонимные типы с одинаковой сигнатурой становятся совместимыми, пусть и не одинаковыми.
Да, можно было вообще приведение типов сварганить. Только кривь это все и куча побочных проблем гарантируется.
Чистых решений два:
1. Введиние анонимных типов в рантайм.
2. Использование проверенного временем подхода с безымянными полями.
Лично я не понимаю почему было не остановится на втором варинте. В конце концов никто не страдает от того, что параметры методов не указываются явно.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, AndrewVK, Вы писали:
AVK>Не согласен.
Значит у нас разные мнения.
AVK> Анонимные типы внутри выглядят простои понятно, а вот кортежи без именованных свойств запутывают код.
Ты меня конечно извини, но по-моему. запутывание высасано из пальца. Я в последнее время читаю много кода с тюплами и проблем не вижу. В коде все ясно и понятно.
Более того... Не знаю виноваты ли в этом тюплы, общие характеристики языка или просто умение авторов писать внятный код, но в последнее время я много читаю исходники Немероловского компилятора и постоянно ловлю себя на мысли, что даже без коментариев я отлично понимаю, что делает код. Декларативность очень высокая. В Шарповских исходниках такого же объема я запутался бы куда быстрее. И это при том, что у Шарпа супер IDE обеспечивающая охринительную навигацию по коду.
В общем, по-моему, tuple-ы нужно было вводить в язык просто для концептуальной стройности. Они решают тучу идеологических пробелм. Например, описание функций становится кристальным как слеза "tuple -> tuple".
Причем я не против если появиласб бы возможность определять подвиды tuple-лов с именованными членами. Но для этого действительно нужна поддержка рантайма. Это должно быть как функциональный тип и делегат. Другими словами tuple с именованными полями должен являться уточнением обычного tuple-а, как делегат является уточнением функционального типа. C# много потерял из-за отсуствия концептуальной законченности в этих вопросах.
VD>>Да и странно слышать от разработчиков дотнета о том, что им нужно менять рантайм.
AVK>От разработчиков компилятора.
Ты меня конично извини, но люди вроде Хейгельберга и Коробкина входят в любые комнаты любых групп разработки связанных с дотнетом без стука. И это не так проблема кторую они не могли бы решить.
VD>> В чем проблема-то? Пусть меняют раз надо.
AVK>Было принято решение о том, что в Orcas рантайм кардинально менятся не будет, максимум выйдет сервис пак.
Значит невреное решение приняли. В результате ведь в язык вводится концептуально незаконченная возможность. Это еще может боком в будущем выйти. Ведь это тот самый путь С++ который привел язык к монстроидальности.
VD>>Когда они планируют выпуск LINQ-а?
AVK>На данный момент вместе с Orcas. Т.е. либо в конце 2006, либо в начале 2007. Это релиз. Ближайший CTP должен выйти в течение месяца.
Хм. Это значит за год они не могут в рантайм изменение внести? Во, блин, дают! А чем же они там занимаются?
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVK>> Анонимные типы внутри выглядят простои понятно, а вот кортежи без именованных свойств запутывают код.
VD>Ты меня конечно извини, но по-моему. запутывание высасано из пальца.
Я тебя конечно извиню, но нет, не из пальца. Более того — объявить десяток Tuple<T1, T2, ...> можно и сейчас, и точно так же можно их спокойно использовать в LINQ.
VD>Более того... Не знаю виноваты ли в этом тюплы, общие характеристики языка или просто умение авторов писать внятный код, но в последнее время я много читаю исходники Немероловского компилятора
ЗАДОЛБАЛ!!!
AVK>>От разработчиков компилятора.
VD>Ты меня конично извини, но люди вроде Хейгельберга и Коробкина входят в любые комнаты любых групп разработки связанных с дотнетом без стука.
А в комнату тех людей, которые решили, что серьезных изменений рантайма в Orcas и Vista не будет?
VD>Значит невреное решение приняли.
Не факт. Им в итоге деньги надо зарабатывать.
AVK>>На данный момент вместе с Orcas. Т.е. либо в конце 2006, либо в начале 2007. Это релиз. Ближайший CTP должен выйти в течение месяца.
VD>Хм. Это значит за год они не могут в рантайм изменение внести? Во, блин, дают! А чем же они там занимаются?
Здравствуйте, AndrewVK, Вы писали:
AVK>Я тебя конечно извиню, но нет, не из пальца. Более того — объявить десяток Tuple<T1, T2, ...> можно и сейчас, и точно так же можно их спокойно использовать в LINQ.
Ага. А на goto и if-ах можно и паттерн-матчинг, и хвостовую рекурсию сэмулировать. Вот толко это уже не жизнь, а издевательство над собой. А так, да. Нет проблем. На Тьюринг-полном языке можно все.
VD>>Более того... Не знаю виноваты ли в этом тюплы, общие характеристики языка или просто умение авторов писать внятный код, но в последнее время я много читаю исходники Немероловского компилятора
AVK>ЗАДОЛБАЛ!!!
Чем, простите? И почему никто не задалбывает упоминанием Шарпа? Естить пример, его и пирвожу. Был бы это С++ привел бы его. Но вот извини из языков которыми пользуюсь тюплы есть толко в одном.
VD>>Ты меня конично извини, но люди вроде Хейгельберга и Коробкина входят в любые комнаты любых групп разработки связанных с дотнетом без стука.
AVK>А в комнату тех людей, которые решили, что серьезных изменений рантайма в Orcas и Vista не будет?
А это что на основе астрологических прогнозов было решено? Или на религиозной почве? Если нет, то могут и передумать. Чистота и стройность языка важнее. Пошли же на изменение рантайма ради концептуальной полноты нулабл-типов прямо перед релизом? Ну, а тут в чем дело? Еще год как иминимум до релиза.
VD>>Значит невреное решение приняли.
AVK>Не факт. Им в итоге деньги надо зарабатывать.
По мне так факт. Хотя конечно каждый имеет право на лево. А вот то, что они от этого денег больше получат — то точно не факт.
AVK>Спроси у них.
Я к сожалению к ним без стука (да и со стуком) пока зайти не могу.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Ага. А на goto и if-ах можно и паттерн-матчинг, и хвостовую рекурсию сэмулировать.
А при чем тут кортежи?
AVK>>ЗАДОЛБАЛ!!!
VD>Чем, простите?
немерлёй.
VD> И почему никто не задалбывает упоминанием Шарпа?
Потому что этот топик о C#.
AVK>>А в комнату тех людей, которые решили, что серьезных изменений рантайма в Orcas и Vista не будет?
VD>А это что на основе астрологических прогнозов было решено? Или на религиозной почве?
Это было решено на основании необходимости выпустить продукт в срок.
VD> Если нет, то могут и передумать. Чистота и стройность языка важнее.
Для тебя. А для них важнее заработать денег (и выпустить Висту в срок).
VD> Пошли же на изменение рантайма ради концептуальной полноты нулабл-типов прямо перед релизом? Ну, а тут в чем дело?
В Висте.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
VD>>Ага. А на goto и if-ах можно и паттерн-матчинг, и хвостовую рекурсию сэмулировать.
AVK>А при чем тут кортежи?
При том, что эмуляция кортэжей на базе дженерик-классов или структур это такая же порнография.
VD>> И почему никто не задалбывает упоминанием Шарпа?
AVK>Потому что этот топик о C#.
Мы вообще-то говорили о кортежах которых в C# еще нет и довольно логично, что когда ты начал обсуждать недостатки кортежей с безымянными членами, тебе привели пример из языка где одные уже есть и во всю используются.
Вообще чем дальше тем больше C# будет сравниваться с Немерлом, так как языки во многом близки, и все развитие C# идет по пути который Немерле уже прошел.
C#, С++ или Руби на этом форуме упомянаются куда чаще. Причем в большинсве случаев противопоставляются. На то это и филосфия.
AVK>Это было решено на основании необходимости выпустить продукт в срок.
Напомню, что дата выпуска еще не извесна, и она точно будет не раньше чем в следующем году. Так что на отмазку это не тянет.
VD>> Если нет, то могут и передумать. Чистота и стройность языка важнее.
AVK>Для тебя.
Для языка. Ну, и для меня естественно, так как я являюсь одним из его пользователей и сторонников.
AVK> А для них важнее заработать денег (и выпустить Висту в срок).
Виста никаким боком к языку отношения не имеет. Ее и с C# 2.0 можно выпускать. Фрэймворки, как ты знашь, живут параллельно.
Да и опять же за год уж такую мелочь можно было реализовать.
VD>> Пошли же на изменение рантайма ради концептуальной полноты нулабл-типов прямо перед релизом? Ну, а тут в чем дело?
AVK>В Висте.
А мне кажетчя в другом. Ботся они чего-то или банально не видят, что решение не полноценное выходит.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
AVK>> А для них важнее заработать денег (и выпустить Висту в срок).
VD>Виста никаким боком к языку отношения не имеет.
Зато имеет отношение к новой студии. Orcas собственно и выпускается как средство разработки под Vista, а не как независимый релиз.
VD>Да и опять же за год уж такую мелочь можно было реализовать.
Не думаю что это мелочь.
... << RSDN@Home 1.2.0 alpha rev. 646 on Windows XP 5.1.2600.131072>>
Здравствуйте, AndrewVK, Вы писали:
AVK>Зато имеет отношение к новой студии. Orcas собственно и выпускается как средство разработки под Vista, а не как независимый релиз.
Язык не должен привязываться к студиям или ОСям. Иначе это уже походит на стачу объектов к коммунистическим праздникам.
VD>>Да и опять же за год уж такую мелочь можно было реализовать.
AVK>Не думаю что это мелочь.
Что, ввести некий кэш типов и сопоставление типов из сборки с ним — это большая задача? Даже мсил править не прийдется.
Я бы просто формировал имя в стиле __UnnamedType_имяТипСвойства1_имяТипСвойстваX, добавл бы флажок говорящий, что тип анонимный и сделал бы помену ссылки на тип при первом обращении к нему.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.