1 2 3 4 5 6 7 8 9
Re[12]: Вопрос на интервью в избранное  новое горячее всё    подписка   модер. 
От: AngeL B. 
Дата: 11.12.09 09:25
Здравствуйте, nikov, Вы писали:

N>Там есть правило, выбранное из соображений совместимости с VB.NET, что имена именованных аргументов матчатся с именами параметров в самом производном статически известном override. Поэтому, если использовать у virtual и override разные имена параметров и использовать именованные аргументы, то могут получаться самые дикие результаты.


ага. То есть получается, что теперь имена параметров входят в контракт класса и, таким образом, override позволяет менять контракт. Так да?
А почему нельзя было запретить менять имена параметров при override-е?
Почему более строгий C# приводиться в менее строгому г...у, а не наоборот?
Почему при создании C# упор делался на безопасности кодирования, а теперь на нее же просто положили?
Re[13]: Вопрос на интервью в избранное  новое    модер. 
От: nikov экспертMy buzz
Дата: 11.12.09 09:34
Здравствуйте, AngeL B., Вы писали:

AB>ага. То есть получается, что теперь имена параметров входят в контракт класса и, таким образом, override позволяет менять контракт. Так да?

Увы, да.

AB>А почему нельзя было запретить менять имена параметров при override-е?

Потому что их было можно менять в предыдущих версиях языка, и теперь это был бы breaking change, затрагивающий даже те программы, которые не используют именованных аргументов при вызове и не столкнулись бы с этими проблемами.

AB>Почему более строгий C# приводиться в менее строгому г...у, а не наоборот?

AB>Почему при создании C# упор делался на безопасности кодирования, а теперь на нее же просто положили?
Я не знаю точных причин, почему было скопировано поведение с VB.
Но в VB это поведение естественно, т.к. Overrides-методы в нем участвуют в overload resolution наравне с другими.
Re[14]: Вопрос на интервью в избранное  новое    модер. 
От: AngeL B. 
Дата: 11.12.09 09:46
Здравствуйте, nikov, Вы писали:

AB>>А почему нельзя было запретить менять имена параметров при override-е?

N>Потому что их было можно менять в предыдущих версиях языка, и теперь это был бы breaking change, затрагивающий даже те программы, которые не используют именованных аргументов при вызове и не столкнулись бы с этими проблемами.

То есть типа подразумевается, что изменения контракта ключевым словом, которое это раньше не подразумевало, это не breaking change?
Re[15]: Вопрос на интервью в избранное  новое    модер. 
От: nikov экспертMy buzz
Дата: 11.12.09 09:51
Здравствуйте, AngeL B., Вы писали:

AB>>>А почему нельзя было запретить менять имена параметров при override-е?

N>>Потому что их было можно менять в предыдущих версиях языка, и теперь это был бы breaking change, затрагивающий даже те программы, которые не используют именованных аргументов при вызове и не столкнулись бы с этими проблемами.

AB>То есть типа подразумевается, что изменения контракта ключевым словом, которое это раньше не подразумевало, это не breaking change?


Совершенно верно, это не breaking change в языке. Так как контракт при добавлении override может измениться только для тех клиентов, которые используют именованные аргументы при вызове, а этой фичи не было в предыдущих версиях языка.
Теперь же добавление в код override, меняющего имена аргументов, будет breaking change в этом коде.
Re[13]: Вопрос на интервью в избранное  новое    модер. 
От: Воронков Василийhttp://elalang.net
Дата: 11.12.09 12:10
Здравствуйте, AngeL B., Вы писали:

AB>ага. То есть получается, что теперь имена параметров входят в контракт класса и, таким образом, override позволяет менять контракт. Так да?

AB>А почему нельзя было запретить менять имена параметров при override-е?
AB>Почему более строгий C# приводиться в менее строгому г...у, а не наоборот?

С другой стороны это лично. В C# добавляют чисто VB-шный фишки, вот он и приводится к "донору".

Тут логичней ставить вопрос, насколько вообще уместны эти вещи в C#.
Ela 0.9 Dynamic, functional, strict and lazy
Re[14]: Вопрос на интервью в избранное  новое    модер. 
От: nikov экспертMy buzz
Дата: 11.12.09 12:15
Здравствуйте, Воронков Василий, Вы писали:

ВВ>С другой стороны это лично. В C# добавляют чисто VB-шный фишки, вот он и приводится к "донору".


ВВ>Тут логичней ставить вопрос, насколько вообще уместны эти вещи в C#.


Хейлсберг в интервью неоднократно говорил, что это сделано в основном для облегчения взаимодейсвия с COM, особенно MS Office, где методы написаны в расчёте именно на такие вызовы и могут иметь 20-30 параметров, из которых передаваться могут только 2-3.
Re[15]: Вопрос на интервью в избранное  новое    модер. 
От: Воронков Василийhttp://elalang.net
Дата: 11.12.09 12:21
Здравствуйте, nikov, Вы писали:

N>Хейлсберг в интервью неоднократно говорил, что это сделано в основном для облегчения взаимодейсвия с COM, особенно MS Office, где методы написаны в расчёте именно на такие вызовы и могут иметь 20-30 параметров, из которых передаваться могут только 2-3.


Да это я помню. Не очень понятна "линия партии". Кто мешает взаимодействовать с COM из VB.NET? Я так и делал раньше, когда возникала необходимость. Да и что греха таить — отключенный Option Explicit тоже оказывался весьма удобен.

Раньше мне казалось, что дотнет как "многоязыковая" платформа по сути предоставляет разные языки для разных задач. Сейчас же они пытаются сделать C# максимально универсальным. На фига я не понимаю

Впрочем, обсуждалось это уже раньше.
Ela 0.9 Dynamic, functional, strict and lazy
Re[16]: Вопрос на интервью в избранное  новое    модер. 
От: nikov экспертMy buzz
Дата: 11.12.09 12:36
Оценка: :)
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Да это я помню. Не очень понятна "линия партии". Кто мешает взаимодействовать с COM из VB.NET? Я так и делал раньше, когда возникала необходимость. Да и что греха таить — отключенный Option Explicit тоже оказывался весьма удобен.

ВВ>Раньше мне казалось, что дотнет как "многоязыковая" платформа по сути предоставляет разные языки для разных задач. Сейчас же они пытаются сделать C# максимально универсальным. На фига я не понимаю

Сейчас линия партии — курс на максимальное сближение языков по их фичам. Называется co-evolution.
Re[17]: Вопрос на интервью в избранное  новое    модер. 
От: _FRED_ экспертProfile on Google
Дата: 11.12.09 14:16
Оценка: +4
Здравствуйте, nikov, Вы писали:

N>Сейчас линия партии — курс на максимальное сближение языков по их фичам. Называется co-evolution.


Очень интересно, когда C# начнут приближать к F#

К бейсику и скриптам благодаря динамику и параметрам по-умолчанию уже приблизили. Ждём сахара для тупл, паттерм-матчинг и… что там ещё очень интересное есть в F#, что хотелось бы видеть в C#?
What I've learned about software engineering: 1) Listen to smart people 2) Prefer simple to clever 3) Have no ego 4) Shut the fuck up.
Не бойтесь делиться своими методами работы. Большинству людей будет тупо лень их использовать.
Re[18]: Вопрос на интервью в избранное  новое    модер. 
От: samiushttp://sams-tricks.blogspot.com
Дата: 11.12.09 14:27
Оценка: :)
Здравствуйте, _FRED_, Вы писали:

N>>Сейчас линия партии — курс на максимальное сближение языков по их фичам. Называется co-evolution.


_FR>Очень интересно, когда C# начнут приближать к F#


_FR>К бейсику и скриптам благодаря динамику и параметрам по-умолчанию уже приблизили. Ждём сахара для тупл, паттерм-матчинг и… что там ещё очень интересное есть в F#, что хотелось бы видеть в C#?


Как бы F# не приблизили к C#-у!
Re[17]: Вопрос на интервью в избранное  новое    модер. 
От: AngeL B. 
Дата: 11.12.09 14:37
Оценка: +2 :)
Здравствуйте, nikov, Вы писали:

N>Сейчас линия партии — курс на максимальное сближение языков по их фичам. Называется co-evolution.


А в чем смысл?
Ведь в том и вся фишка, что разные языки позволяют (используя разные возможности и сильные стороны каждого) выразить быстро и удобно то, для чего этот язык и предназначается. А если будет куча разных языков с одинаковыми "фичами", то нафига тогда они вообще нужны?
Пусть тогда сделают один язык и откажутся от остальных, а то ведь получается одно и то же по возможностям, только ключевые слова по разному называются.
Да и вообще получается спагетти-язык. С одной макарониной вроде все ясно, а как наложишь в тарелку, концов не найдешь.
Re[18]: Вопрос на интервью в избранное  новое    модер. 
От: nikov экспертMy buzz
Дата: 11.12.09 14:48
Здравствуйте, AngeL B., Вы писали:

N>>Сейчас линия партии — курс на максимальное сближение языков по их фичам. Называется co-evolution.


AB>А в чем смысл?

AB>Ведь в том и вся фишка, что разные языки позволяют (используя разные возможности и сильные стороны каждого) выразить быстро и удобно то, для чего этот язык и предназначается. А если будет куча разных языков с одинаковыми "фичами", то нафига тогда они вообще нужны?

http://channel9.msdn.com/posts/VisualStudio/C-40-Questions-and-reasons-behind-the-answers/
Re[18]: Вопрос на интервью в избранное  новое    модер. 
От: Пельмешкоprofile blog
Дата: 11.12.09 15:10
Здравствуйте, _FRED_, Вы писали:

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


N>>Сейчас линия партии — курс на максимальное сближение языков по их фичам. Называется co-evolution.


_FR>Очень интересно, когда C# начнут приближать к F#


_FR>К бейсику и скриптам благодаря динамику и параметрам по-умолчанию уже приблизили. Ждём сахара для тупл, паттерм-матчинг и… что там ещё очень интересное есть в F#, что хотелось бы видеть в C#?


member constraints! partial application! function values!

Очень интересно, когда F# начнут приближать к Haskell
Нормальных type classes не хватает

А вообще не понимаю почему такие возмущения возникают, не нравится фича — не юзай, и членам команды не давай
Как будто, блин, насильно все теперь будут named arguments везде ставить так, что у людей будет голова лопаться от overload resolution...
Develop with pleasure!
Re[19]: Вопрос на интервью в избранное  новое    модер. 
От: Воронков Василийhttp://elalang.net
Дата: 11.12.09 15:31
Оценка:2 (1)
Здравствуйте, nikov, Вы писали:

N>http://channel9.msdn.com/posts/VisualStudio/C-40-Questions-and-reasons-behind-the-answers/


Ролик длится 28 минут. Про коэволюцию начинают говорить где-то с 25:30. — Это я для тех, кто захочет все-таки посмотреть.
Причем общий смысл такой: стоит нам добавить фишку в один язык, как пользователи другого бегут и клянчат — дайте нам эту фишку тоже. И что-де они (т.е. МС) "открыли" для себя то, что и те кто пишут на шарпе, и те кто пишут на выбенете решают в сущности одинаковые задачи, а языки выбрали в силу "религиозных" причин.

Ну а собственно чему тут удивляться-то? С самого начала надо было делать грамотное позиционирование. Глядишь, у программистов появились бы и другие причины, кроме религиозных.

А так ИМХО получается все же ерунда. Языки, представляющие собой все же исторически довольно разные "ветки" языков, сращивается в нечто единообразное и аморфное.
В итоге можно просто прийти к одному языку, в котором можно просто "переключать" синтаксис. Задача более чем решаемая, к слову.
Ela 0.9 Dynamic, functional, strict and lazy
Re[12]: Вопрос на интервью в избранное  новое    модер. 
От: nikov экспертMy buzz
Дата: 11.12.09 16:08
Оценка:22 (1)
ВВ>>Кстати, в поряде самообразования. А что произойдет в C# 4.0? То же самое?
N>Там есть правило, выбранное из соображений совместимости с VB.NET, что имена именованных аргументов матчатся с именами параметров в самом производном статически известном override. Поэтому, если использовать у virtual и override разные имена параметров и использовать именованные аргументы, то могут получаться самые дикие результаты.

Интереса ради, попробуйте догадаться, что напечатает такой код:

using System;

class B
{
    public virtual void Foo(int x)
    {
        Console.WriteLine(1);
    }

    public virtual void Foo(long x, long y = 1)
    {
        Console.WriteLine(2);
        Console.WriteLine(y);
    }

    public virtual void Foo(object x)
    {
        Console.WriteLine(3);
    }
}

class C : B
{
    public override void Foo(int y)
    {
        Console.WriteLine(4);
    }

    public override void Foo(object x)
    {
        Console.WriteLine(5);
    }
}

class D : C
{
    public override void Foo(int x)
    {
        Console.WriteLine(6);
    }

    public override void Foo(long a, long b = 2)
    {
        Console.WriteLine(7);
        Console.WriteLine(b);
    }

    public override void Foo(object x)
    {
        Console.WriteLine(8);
    }


    static void Main()
    {
        C c = new D();
        c.Foo(x:1);
    }
}
Re[13]: Вопрос на интервью в избранное  новое    модер. 
От: Константин Л. 
Дата: 11.12.09 16:23
Оценка: :))) :)
Здравствуйте, nikov, Вы писали:

[]

ееее!

Что не делай, все равно получается с++
Estuve en Granada y me acorde' de ti
Re[13]: Вопрос на интервью в избранное  новое    модер. 
От: olegkr 
Дата: 11.12.09 17:04
Здравствуйте, nikov, Вы писали:

N>Интереса ради, попробуйте догадаться, что напечатает такой код:

Зуб не дам, но похоже, что 5. Мда, печально, даже после прочтения всей этой темы и то, на 100% неуверен.
Re[2]: Вопрос на интервью в избранное  новое    модер. 
От: olegkr 
Дата: 11.12.09 17:07
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Интересный вопрос для собеседования.

Интересно другое, кого он призван отсеять и кто сможет на него ответить. Если случайно не встретился с такой ситуацией, то ответят только фанаты, просиживающие пол-рабочего дня на форумах и в блогах.
Re[3]: Вопрос на интервью в избранное  новое    модер. 
От: Воронков Василийhttp://elalang.net
Дата: 11.12.09 17:16
Здравствуйте, olegkr, Вы писали:

ВВ>>Интересный вопрос для собеседования.

O>Интересно другое, кого он призван отсеять и кто сможет на него ответить. Если случайно не встретился с такой ситуацией, то ответят только фанаты, просиживающие пол-рабочего дня на форумах и в блогах.

Ну знать-то точно не зазорно
Но просто хотелось понять, какие цели ставил интервьюер, когда задавал такой вопрос. Я бы, например, на него не ответил, т.к. много работаю с разными языками, везде это поведение отличается, а проблема достаточно "узкая", чтобы отпечататься в памяти и все время быть "на виду".

А потому, собственно, и возник вопрос — на кого и куда было собеседование. Ибо подход к интервью определенно оригинальный. Я вот сам всегда очень прагматично провожу интервью — гики и супер-спецы это круто, но как правило нужен человек для решения вполне конкретных типовых задач, как бы "приземленно" это ни звучало.
Ela 0.9 Dynamic, functional, strict and lazy
Re[4]: Вопрос на интервью в избранное  новое    модер. 
От: olegkr 
Дата: 11.12.09 17:21
Здравствуйте, Воронков Василий, Вы писали:

ВВ>Но просто хотелось понять, какие цели ставил интервьюер, когда задавал такой вопрос.

Я думаю, что просто русские программеры РСДН-а перечитали на ночь, вот и составили такой опросник. Типа круто.
1 2 3 4 5 6 7 8 9