Re[6]: Что нужно добавить в C#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.13 20:26
Оценка:
Здравствуйте, k0st1x, Вы писали:

K>извиняюсь, действительно упустил.

K>btw, проверил этот сценарий в котлине — он ругается и не дает скомпилить.

В котлике есть неизменяемые локальные переменные. Для них этот прокатывает. Хотя, все равно дизайн спорный выходит. В немерле можно использовать стандартный ПМ:
when (x is Y as y)
{
  ...
}

"y" имеет тип "Y" и является неизменяемой переменной. В "x" по прежнему можно присваивать новое значение (если она изменяемая) и тип у него прежний.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Что нужно добавить в C#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.13 20:29
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


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


А чё ж с виртуальными то? Без них было бы проще?

А is/as их не дублирует? А то я тут много кода видел с is/as вместо "обычных виртуальных методов".

Об остальном я уже рядом написал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Что нужно добавить в C#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.13 20:32
Оценка:
Здравствуйте, samius, Вы писали:

S>А какая проблема в дублировании? В F# и Nemerle есть и обычные классы и АлгТД


Это не объектно-ориентированно! Вот то ли дело энумы в Яве?!

Хомечкам порвет мозг от возможности сделать что-то двумя путями. Пусть лучше паттернами проектирования пользуются и is/as-ами. А то не дай бок прострелят себе ногу не в том мести, а МС отвечать за это.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Что нужно добавить в C#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.13 20:36
Оценка:
Здравствуйте, xvost, Вы писали:

X>Так что все силы надо пускать на CLR — многоплатформенность, нормальные оптимизации, наконец-таки нормальный x64, внятный и предсказуемый GC


Там команды разные. Так что силы перебросить не удастся.

К тому же 90% хотелок, описанных в этой теме, реализуются без изменения рантайма.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Ковариантность по возвращаемому значению в виртуальных методах.
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.13 21:02
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>Вообще есть вероятность нарушения LSP при таком поведении.


Нет такой вероятности, если не разрешать делать тип возвращаемого значения более общим нежели был.

Ковариантность для возвращаемых значений работает в С++ и Яве.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Ковариантность по возвращаемому значению в виртуальных методах.
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.13 21:05
Оценка:
Здравствуйте, samius, Вы писали:

S>вот это уже ковариантность.

S>
S>object[] = new int[] { 1 };
S>


Это просто ошибка. Ковариантность в массивах работает только для ссылочных типов. А лучше бы ее вообще не было, так как для изменяемых типов для ее поддержки требуются рантайм-проверки. Дотент не хило тормозит из-за этого, при работе с массивами.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Ковариантность по возвращаемому значению в виртуальных методах.
От: Философ Ад http://vk.com/id10256428
Дата: 23.02.13 21:47
Оценка:
Здравствуйте, gandjustas, Вы писали:

G>object[] x = new int[] { 1 };


ЩИТО?
Всё сказанное выше — личное мнение, если не указано обратное.
Re[4]: Что нужно добавить в C#?
От: IT Россия linq2db.com
Дата: 23.02.13 22:28
Оценка: :)
Здравствуйте, VladD2, Вы писали:

VD>В общем, если у них проблемы с дизайном, могу за скромную сумму (ну, скажем 10К зеленых) спроектировать поддержку ПМ для шарпа, что называется под ключ (с грамматикой и описанием семантики).


Могу за 20K в аналогичной валюте сделать ревью дизайна Влада. Если оно окажется типа "Всё OK", то всё равно бабки вперёд.
Если нам не помогут, то мы тоже никого не пощадим.
Re[5]: Что нужно добавить в C#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 23.02.13 23:40
Оценка:
Здравствуйте, IT, Вы писали:

IT>Могу за 20K в аналогичной валюте сделать ревью дизайна Влада. Если оно окажется типа "Всё OK", то всё равно бабки вперёд.


Я не против. Все равно по сравнению с их затратами это демпинговые цены. Они же фичу рожают по два года и коллективно.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: В C# уже и так многое добавили
От: Xentrax Россия http://www.lanovets.ru
Дата: 25.02.13 07:20
Оценка:
Здравствуйте, AndrewVK, Вы писали:

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


К сожалению, необходимость умным людям придумывать себе работу, портит коммерческие языки программирования. В C# есть некоторые недостатки, но они не так важны.

На мой взгляд, на данном этапе команду C# надо занять трудоёмкой и полезной работой, которая не приведёт к бесконтрольному росту языка.

Я бы предложил им переписать компилятор, чтобы намного сильнее увеличить уровень оптимизации. Что-то типа LTCG (именно на уровне байт кода) было бы здорово получить.
Re: Что нужно добавить в C#?
От: Osaka  
Дата: 28.02.13 01:23
Оценка:
Записывать guid без кавычек и прочих выкрутасов, как обычное число.
Не
id = new Guid("218a8084-1e3d-4afa-8783-41df0147032d")

а
id = g218a80841e3d4afa878341df0147032d

или ещё лучше в base64 (24 символа)
Друга ищи не того, кто любезен с тобой, кто с тобой соглашается, а крепкого советника, кто полезного для тебя ищет и противится твоим необдуманным словам.
Re[6]: Что нужно добавить в C#?
От: Sinclair Россия https://github.com/evilguest/
Дата: 28.02.13 04:15
Оценка: 12 (1)
Здравствуйте, VladD2, Вы писали:

IT>>Могу за 20K в аналогичной валюте сделать ревью дизайна Влада. Если оно окажется типа "Всё OK", то всё равно бабки вперёд.

VD>Я не против. Все равно по сравнению с их затратами это демпинговые цены. Они же фичу рожают по два года и коллективно.
Работая в продуктовой конторе, могу вас, пацаны, разочаровать. В нужную работу, помимо проектирования и review, входит также мейнтенанс на пять лет вперёд (т.е. участие в дизайне всех будущих фич с учётом наличия этой существующей) и саппорт на десять лет вперёд (то есть помощь несчастным хомячкам, выстрелившим себе в ногу при помощи вашей фичи).
Стоимостью реализации при таких раскладах можно смело пренебречь. А запрошенные вами 30к на двоих эти две активности сожрут уже к концу 2014. Дальше вы будете работать себе в убыток.

А если вы откажетесь от этих "обременений" — то Редмонд ваше предложение никак не заинтересует. У них и своих проектировщиков хватает; с учётом ихних зарплат, проект+ревью им обойдётся тыщи в четыре, от силы в пять.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Что нужно добавить в C#?
От: Sinclair Россия https://github.com/evilguest/
Дата: 28.02.13 04:17
Оценка:
Здравствуйте, SergASh, Вы писали:

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


SAS>Нельзя ли сделать так, чтобы enum'ы реализовывали интерфейс IEquatable<> ?

А блоки итераторов — интерфейс ICloneable<>.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Что нужно добавить в C#?
От: Sinclair Россия https://github.com/evilguest/
Дата: 28.02.13 04:23
Оценка: +1
Здравствуйте, Osaka, Вы писали:
O>или ещё лучше в base64 (24 символа)
Стесняюсь спросить — а зачем?
Я бы ещё понял compile-time checking гуидных констант.
Но он сам по себе никак не требует переписывания кода — я бы скорее попросил валидации всех выражений new Guid(expr), если expr резолвится в string constant.
А экономить десяток байт в ущерб читаемости, имхо, нездоровая идея.
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Что нужно добавить в C#?
От: GlebZ Россия  
Дата: 28.02.13 07:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

Очень хотелось бы Dispose по exception. Пример, примерно такой:


class MyClass:IDisposableException
{
   public MyClass(Context c){...}
   public void Dispose(){ context.Commit();}
   public void Dispose(Exception e)
   {
    context.Rollback();
    Log.Exception(e);
    throw;
   }
}

void main()
{
   using(new MyClass(new Context()))
   {
/// do something
   }
}


Синтаксический сахар вырождается примерно в структуру:


void main()
{
   var myClass=new MyClass(new Context());
   bool bDisposed;
   try
   {
///do something
   }
   catch(Exception e)
   {
      myClass.Dispose(e);
      bDisposed=true;
   }
   finally
   {
      if (!bDisposed)
          myClass.Dispose();
   }

}


Доработка простая как 2 копейки. Но периодически её сильно не хватает.
Re[2]: Что нужно добавить в C#?
От: GlebZ Россия  
Дата: 28.02.13 08:13
Оценка:
Да и еще хотелось бы иметь switch по типам. Лучше даже в виде проверки is.

switch (myObj)
{
   case typeof(MyClass):....
   case typeof(MyClass2):....
}


Ручной полиморфизм иногда пригождается. Кроме того он более управляем, чем перегрузка методов.
Re[3]: Что нужно добавить в C#?
От: Osaka  
Дата: 28.02.13 09:11
Оценка:
O>>или ещё лучше в base64 (24 символа)
S>Стесняюсь спросить — а зачем?
Меньше занимает места на экране.
Друга ищи не того, кто любезен с тобой, кто с тобой соглашается, а крепкого советника, кто полезного для тебя ищет и противится твоим необдуманным словам.
Re[3]: Что нужно добавить в C#?
От: Osaka  
Дата: 28.02.13 09:45
Оценка:
S>Стесняюсь спросить — а зачем?
А вообще идея возникла из неудобного выделения мышью (надо бы как число или слово — dblclick в 1 точке, а приходится вручную выцеливаться в начало и конец).
Друга ищи не того, кто любезен с тобой, кто с тобой соглашается, а крепкого советника, кто полезного для тебя ищет и противится твоим необдуманным словам.
Re[2]: Что нужно добавить в C#?
От: Yoriсk  
Дата: 28.02.13 10:40
Оценка:
Здравствуйте, Osaka, Вы писали:

O>
id = g218a80841e3d4afa878341df0147032d


И как понять компилятору: это guid или переменная?

Зарезервируем все guid-ы?
Re[4]: Что нужно добавить в C#?
От: Sinix  
Дата: 28.02.13 10:50
Оценка:
Здравствуйте, Osaka, Вы писали:

S>>Стесняюсь спросить — а зачем?

O>А вообще идея возникла из неудобного выделения мышью (надо бы как число или слово — dblclick в 1 точке, а приходится вручную выцеливаться в начало и конец).
Двойной щелчок перед открывающей кавычкой пробовали?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.