Re[2]: Что нужно добавить в C#?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.02.13 00:16
Оценка: 24 (1)
Здравствуйте, Sinix, Вы писали:

S>Последнее, что я слышал — все по уши застряли в Рослине, сильно сомневаюсь, что у них хватит сил на что-то ещё


Я не могу озвучивать конкретики, но ситуация несколько иная сейчас.
... << RSDN@Home 1.2.0 alpha 5 rev. 23 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: Что нужно добавить в C#?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.02.13 00:26
Оценка:
Здравствуйте, IT, Вы писали:

IT>- ПМ и АТД.


Основная проблема с ПМ, как озвучил Мэдс, в АТД. Это новый first class citizen, который отчасти дублирует существующие сущности в языке. Так что АТД ака discriminated unions на данный момент однозначно no way. Теоретически можно обойтись без АТД существующими типами с какими то дополнительными доработками, но тут нужно говорить более конкретно.
... << RSDN@Home 1.2.0 alpha 5 rev. 23 on Windows 8 6.2.9200.0>>
AVK Blog
Re[3]: Что нужно добавить в C#?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.02.13 00:26
Оценка:
Здравствуйте, Jack128, Вы писали:

J>Туда же NotNull ссылки.


Боюсь, для этого нужно написать CLR с нуля
... << RSDN@Home 1.2.0 alpha 5 rev. 23 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: Что нужно добавить в C#?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.02.13 00:26
Оценка:
Здравствуйте, koodeer, Вы писали:

K>Хотелось бы иметь ограничение дженериков как простых типов, чтобы можно было реализовывать быстрые вычисления.


Это уже несколько лет как одна из самых востребованных фич к рантайму, и про это команде CLR известно, но пока ничего конкретного нет.
... << RSDN@Home 1.2.0 alpha 5 rev. 23 on Windows 8 6.2.9200.0>>
AVK Blog
Re[2]: Что нужно добавить в C#?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.02.13 00:26
Оценка: +2
Здравствуйте, matumba, Вы писали:

AVK>>Сейчас сложилась такая ситуация, что для следующего релиза C# нет big thing

M>Их не было и в 5 релизе — ну не async же — революция программазма!

Под революциями я имел в виду масштабные изменения конкретно в C#, а не новые открытия в computer science.

AVK>>Соответственно, от вас хотелось бы получить те фичи, которых не хватает лично вам.


M>Забавно — т.е. к народу обращаются только когда ИМ нужно?


Здесь к народу обращаюсь я, и я в МС не работаю, не переживай.

M>Хочется, чтобы офигевшие от своей крутости шарподелы спустились на землю и не выпежонивались "суперфичами", а слушали тех, кто РЕАЛЬНО использует шарп — это МЫ ежедневно колдыбасимся с их компилером и это нам виднее, что есть "мелочи". А если ради мелочей надо переписывать компилер, то.... в топку такие компилеры.


Ты продолжай в таком тоне общаться, и тебя вообще никто слушать не будет.
... << RSDN@Home 1.2.0 alpha 5 rev. 23 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: Что нужно добавить в C#?
От: Ziaw Россия  
Дата: 20.02.13 01:36
Оценка:
Здравствуйте, Jack128, Вы писали:

J>а тебе придумывать не нужно, я уже придумал. И даже написал этот пример, но ты при цитировании почему то удалил его.


В принципе это решаемо эвристиками в компиляторе. Так что если очень хочется, то можно.
Re[2]: Что нужно добавить в C#?
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.02.13 04:23
Оценка:
Здравствуйте, matumba, Вы писали:

M>Пробежался по треду и собрал ещё фич, которые поддерживаю (почему-то в голосовалке — мусор вместо дельных пунктов):


M>Упрощённая работа с атрибутами. Какой смысл рассуждать об их пользе, если работа с ними осущ. через анус? Хочется изящной простоты, типа: foreach(PropInfo pi in WindowType.class.GetProperties(Attr1, attr2, ..)); Или PropInfo.HasAttribute(AttrClass);


При чём тут C#?
public static IEnumerable<PropInfo> GetProperties<A1, A2>(this Type type) where A1: Attribute, A2: Attribute { ... }
public static bool HasAttribute<A1>(this PropInfo pi) where A: Attribute {...};
foreach(var pi in typeof(WindowType).GetProperties<Attr1, attr2>())
  if (pi.HasAttribute<Attr1>())
    ...


M>Вообще, у C# довольно помоечный синтаксис работы с классами: вместо элегантных конструкций с именами типов приходится влезать чуть ли не в ассемблер: Класс.ДайСвойТип().ШаманскиеФункции.... отстой полнейший. Нужен синтаксис сразу на уровне "Класс", типа "Класс.ДайПропертиСАтрибутом(Атрибут)". Это мелочи, но без них код загромождается фуфлом — хорошо бы девелоперам сишарпа заботиться не только "предоставить доступ к фиче", но и о элегантности кода с этими фичами.

M>Оператор .?
M>Улучшить оператор AS: нечасто, но изрядно упрощает бойлерплэйт a = b as SomeType; if (a != null) ....; Вариант: when(b = a as SomeType) { юзаем b }
public static void WhenIs<T>(this object o, Action<T> action) { 
  if (Typeof(T).IsAssignableFrom(o.GetType()))
    action((T)o);
}
a.WhenIs<SomeType>{b=>юзаем b }


M>Упрощ. иниц. объекта помимо new: var z = GetObject() <= { filed = 4, field2 = 5 }

Зачем?
M>Duck typing ака MapAs: приводить объект к интерфейсу, если он совместим по методам. Уж лучше в рантайме всё **нётся, зато в коде можно очень элегантно обруливать всякое гетерогенное фуфло из разных иерархий.
Реализовано в библиотеках — BLToolkit смотрели?
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Что нужно добавить в C#?
От: Философ Ад http://vk.com/id10256428
Дата: 20.02.13 05:13
Оценка:
заголовочного раздела в классе.

хотелось бы сразу после открытия файла видеть, какие public и protected методы в нём описаны.
Всё сказанное выше — личное мнение, если не указано обратное.
Re[2]: Что нужно добавить в C#?
От: Mihas  
Дата: 20.02.13 05:32
Оценка: +1 :)
Здравствуйте, k0st1x, Вы писали:

K> — просто ради красоты — возможность писать код без ";" в конце каждой строчки : )

Тогда придется спилить безымянный палец. Чтоб не стучал по клавише ;
Re[3]: Что нужно добавить в C#?
От: k0st1x Марс  
Дата: 20.02.13 05:47
Оценка:
Здравствуйте, Mihas, Вы писали:

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


K>> — просто ради красоты — возможность писать код без ";" в конце каждой строчки : )

M>Тогда придется спилить безымянный палец. Чтоб не стучал по клавише ;

как временное решение или workaround,
можно примотать мизинец к безымянному пальцу, ну или приклееть суперклеем.
Re[5]: Что нужно добавить в C#?
От: k0st1x Марс  
Дата: 20.02.13 05:49
Оценка:
Здравствуйте, Jack128, Вы писали:

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


J>>>Уже существующим синтаксисом не обойтись, нужно новый придумывать, иначе такая фича поломает обратную совместимость.



K>>я тут подумал и не смог придумать, какой сценарий поломает обратную совместимость?


J>а тебе придумывать не нужно, я уже придумал. И даже написал этот пример, но ты при цитировании почему то удалил его.


извиняюсь, действительно упустил.
btw, проверил этот сценарий в котлине — он ругается и не дает скомпилить.
Re[3]: Что нужно добавить в C#?
От: Sinix  
Дата: 20.02.13 05:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:

S>>Последнее, что я слышал — все по уши застряли в Рослине, сильно сомневаюсь, что у них хватит сил на что-то ещё

AVK>Я не могу озвучивать конкретики, но ситуация несколько иная сейчас.

Ок, значит отстал от жизни. Удачи им
Re: Что нужно добавить в C#?
От: HowardLovekraft  
Дата: 20.02.13 06:09
Оценка: :)
Здравствуйте, AndrewVK, Вы писали:

AVK>skipped


Добавлю свои 5 копеек:

1) switch по всему, чему угодно, очень надоело писать костыли в виде словарей. Т.е., вместо, например, этого:

    class A
    {
        private readonly Dictionary<Type, Action> helpers;

        public A()
        {
            this.helpers = new Dictionary<Type, Action>
            {
                // инициализация какими-то значениями
            };
        }

        public void Foo()
        {
            var type = someObject.GetType();

            helpers[type]();
        }
    }


писать так:

    class A
    {
        public void Foo()
        {
            var someVar = //...
            var type = someObject.GetType();

            switch (type)
            {           
                case typeof(string):
                    break;
                case typeof(A):
                    break;
                case someVar.GetType():
                    break;
            }
        }
    }


Пусть это все разворачивается в тот же Dictionary, но типовым и однообразным способом.

2) [PropertyChanging] и [PropertyChanged] для автосвойств искаропки:

        [PropertyChanging]
        [PropertyChanged]
        public int MyProperty { get; set; }


3) Разрешить инициализатору поля ссылаться на экземплярный метод, поле или свойство, сейчас вместо этого приходиться городить конструктор:

        private readonly Lazy<string> someLazy = new Lazy<string>(SomeLazyFactory);

        private string SomeLazyFactory()
        {
            return string.Empty;
        }


4) Разрешить использовать экземплярный метод, поле или свойство при вызове конструктора базового класса:

    class A 
    {
        public A(int i)
        {
        }
    }

    class B : A
    {
        public B()
            : base(Foo())
        {
        }

        private int Foo()
        {
            return 0;
        }
    }


5) Разрешить использовать значения свойств объекта в инциализаторе этого же объекта. Вместо:

            var value = 1;
            var a = new A
            {
                MyIntProperty = value,
                MyStringProperty = value.ToString()
            };


писать:

            var a = new A
            {
                MyIntProperty = 1,
                MyStringProperty = MyIntProperty.ToString()
            };


Если в текущем контексте уже есть MyIntProperty, разруливать неоднозначность в пользу уже существующего идентификатора, либо считать это ошибкой.

6) Убрать неоднозначность при явном задании размера массивов (для явно типизированных — можно, для неявно типизированных — почему-то нельзя, http://stackoverflow.com/questions/14597522/implicitly-typed-arrays-why-we-cant-set-array-size-explicitly).
Re[3]: Что нужно добавить в C#?
От: IT Россия linq2db.com
Дата: 20.02.13 06:23
Оценка:
Здравствуйте, AndrewVK, Вы писали:

IT>>- ПМ и АТД.


AVK>Основная проблема с ПМ, как озвучил Мэдс, в АТД. Это новый first class citizen, который отчасти дублирует существующие сущности в языке.


И чего оно такого дублирует?
Если нам не помогут, то мы тоже никого не пощадим.
Re[4]: Что нужно добавить в C#?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 20.02.13 06:53
Оценка:
Здравствуйте, IT, Вы писали:

IT>И чего оно такого дублирует?


Обычные классы с виртуальными методами.
... << RSDN@Home 1.2.0 alpha 5 rev. 23 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: Что нужно добавить в C#?
От: samius Япония http://sams-tricks.blogspot.com
Дата: 20.02.13 07:00
Оценка: 1 (1) +1
Здравствуйте, AndrewVK, Вы писали:

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


IT>>И чего оно такого дублирует?


AVK>Обычные классы с виртуальными методами.


А какая проблема в дублировании? В F# и Nemerle есть и обычные классы и АлгТД
Re[4]: Что нужно добавить в C#?
От: Qbit86 Кипр
Дата: 20.02.13 07:42
Оценка:
Здравствуйте, k0st1x, Вы писали:

M>>Тогда придется спилить безымянный палец. Чтоб не стучал по клавише ;

K>как временное решение или workaround,
K>можно примотать мизинец к безымянному пальцу, ну или приклееть суперклеем.

Я использовал более радикальный вариант: ездил на велосипеде по городу без гарда на руле. В итоге на три недели мизинец пригипсовали к безымянному.
Глаза у меня добрые, но рубашка — смирительная!
Re: Что нужно добавить в C#?
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 20.02.13 07:50
Оценка: +1
Здравствуйте, AndrewVK, Вы писали:

Сецчас язык настолько опережает рантайм, что дальнейшие "мажорные" фичи — это рост колосса на глиняных ногах.
С точки зрения людей, не знакомых с кухней MS, C# и .NET CLR — даже не муж и жена, а вообще один человек.

Так что все силы надо пускать на CLR — многоплатформенность, нормальные оптимизации, наконец-таки нормальный x64, внятный и предсказуемый GC
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Re[2]: Что нужно добавить в C#?
От: Tom Россия http://www.RSDN.ru
Дата: 20.02.13 08:19
Оценка:
X>Так что все силы надо пускать на CLR — многоплатформенность, нормальные оптимизации, наконец-таки нормальный x64, внятный и предсказуемый GC
А что не так с x64 если не секрет? Ну и чем GC не предсказуем?
Просто интересуюсь
Народная мудрось
всем все никому ничего(с).
Re[3]: Что нужно добавить в C#?
От: xvost Германия http://www.jetbrains.com/company/people/Pasynkov_Eugene.html
Дата: 20.02.13 08:37
Оценка:
Здравствуйте, Tom, Вы писали:

Tom>А что не так с x64 если не секрет?


Полное отсутствие оптимизаций

Tom>Ну и чем GC не предсказуем?


Тут я не могу строго сформулировать... Но общее ощущение что он "живет своей жизнью", в отличии от jvm. Ну и захлебывается на гораздо меньших объемах кучи.
Что надо и хочется чтоб было сделано —
1) инкрементальная фоновая сборка в gen2 БЕЗ релокации до определенного % наполнения кучи
2) сборка в LOH с релокацией
3) раздельные (конфигурябельно) GEN0 кучи для тредов для устраниния эффекта "кризиса среднего возраста"
и т.д.
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.