Как вам язычок? Возможности? Lazy eval.? Closures? Правила explicit/implicit conv. (особенно для типов-параметров generics)? А learning curve? Размер стандарта?
пс: каждый день, когда наталкиваюсь на этюды nikov'а в ветке .net, ощущение того, что растет второй c++, укрепляется в моем мозгу. мне становится отчетливо понятно, что чтобы узнать этот язык хорошо и использовать его полноценно, мне нужно потратить еще кучу времени. c# 1.1 был довольно прост, чтобы не заглядывать в lang spec. не подумайте, что я собираюсь поднять панику, просто интересно, что кто думает по этому поводу.
Здравствуйте, Константин Л., Вы писали:
КЛ>Как вам язычок?
Супер КЛ> Возможности?
Супер КЛ>Lazy eval.? Closures? Правила explicit/implicit conv. (особенно для типов-параметров generics)?
А что раньше не было разве? Начиная со второго C# все это было. КЛ>А learning curve? Размер стандарта?
КЛ>пс: каждый день, когда наталкиваюсь на этюды nikov'а в ветке .net, ощущение того, что растет второй c++, укрепляется в моем мозгу. мне становится отчетливо понятно, что чтобы узнать этот язык хорошо и использовать его полноценно, мне нужно потратить еще кучу времени. c# 1.1 был довольно прост, чтобы не заглядывать в lang spec. не подумайте, что я собираюсь поднять панику, просто интересно, что кто думает по этому поводу.
Этюды nikov'a — это все же очень глубококопание — 90% разработчиков не знает ответов на большинство из них и живет себе припеваючи. В спек заглядывать не обязательно — программировать вполне можно прочитав например Троелсена (так сказать спек в разжеванном виде).
Х>Этюды nikov'a — это все же очень глубококопание — 90% разработчиков не знает ответов на большинство из них и живет себе припеваючи. В спек заглядывать не обязательно — программировать вполне можно прочитав например Троелсена (так сказать спек в разжеванном виде).
Но я не утверждаю что читать спек не надо, другое дело, что не обязательно.
Здравствуйте, Хэлкар, Вы писали:
Х>В спек заглядывать не обязательно — программировать вполне можно прочитав например Троелсена (так сказать спек в разжеванном виде).
Вот только не Троелсена. То что он пишет о C#, имеет очень мало общего с реальностью. Рихтер неплохо пишет.
Здравствуйте, nikov, Вы писали:
Х>>В спек заглядывать не обязательно — программировать вполне можно прочитав например Троелсена (так сказать спек в разжеванном виде). N>Вот только не Троелсена. То что он пишет о C#, имеет очень мало общего с реальностью. Рихтер неплохо пишет.
А что вам не нравится у Троелсена? Я не говорю что книга идеальная, но в целом нормальная книга на мой взгляд. Можно немного подробнее?
Ну если считать хорошими языки по длине спецификации — то конечно данный язык полный отстой. Но я бы определил правильный язык для mainstream — это насколько удобно пользоваться языком не заглядывая ни в спецификации, ни в хелпари, ни в google. И тут все таки С# на порядок более удобоваримый язык. В подавляющем большинстве случаев его поведение интуитивно понятно. Во многих случаях помогает сам компилятор выводя корректную информацию об ошибках. Так что, для чего он создавался, для того он и работает на ура. Правда это не всегда касается прилагаемых к нему библиотек.
Здравствуйте, MozgC, Вы писали:
MC>А что вам не нравится у Троелсена? Я не говорю что книга идеальная, но в целом нормальная книга на мой взгляд. Можно немного подробнее?
К сожалению книги под рукой нет. Но помню, что находил там много просто неверных утверждений.
Единственное, что помню наизусть — он писал:
* что метод помеченный unsafe можно взывать только тоже из unsafe метода.
* что из статического метода нельзя вызвать экземпляный
* при попытке обратиться из финализатора к другому объекту, того объекта уже может не существовать в памяти
Здравствуйте, Хэлкар, Вы писали:
Х>Здравствуйте, Константин Л., Вы писали:
КЛ>>Как вам язычок? Х>Супер КЛ>> Возможности? Х>Супер КЛ>>Lazy eval.? Closures? Правила explicit/implicit conv. (особенно для типов-параметров generics)? Х>А что раньше не было разве? Начиная со второго C# все это было.
было, но очевиден ли этот код?
delegate int d();
d func = null;
foreach(int a in new int[]{1, 2, 3})
func = delegate { return a; }
d();
КЛ>>А learning curve? Размер стандарта? Х>
угу
КЛ>>пс: каждый день, когда наталкиваюсь на этюды nikov'а в ветке .net, ощущение того, что растет второй c++, укрепляется в моем мозгу. мне становится отчетливо понятно, что чтобы узнать этот язык хорошо и использовать его полноценно, мне нужно потратить еще кучу времени. c# 1.1 был довольно прост, чтобы не заглядывать в lang spec. не подумайте, что я собираюсь поднять панику, просто интересно, что кто думает по этому поводу.
Х>Этюды nikov'a — это все же очень глубококопание — 90% разработчиков не знает ответов на большинство из них и живет себе припеваючи. В спек заглядывать не обязательно — программировать вполне можно прочитав например Троелсена (так сказать спек в разжеванном виде).
у меня почему-то совсем другое впечатление. может быть потому что я привык к с++...
Здравствуйте, GlebZ, Вы писали:
GZ>Здравствуйте, Константин Л., Вы писали:
GZ>Ну если считать хорошими языки по длине спецификации — то конечно данный язык полный отстой. Но я бы определил правильный язык для mainstream — это насколько удобно пользоваться языком не заглядывая ни в спецификации, ни в хелпари, ни в google. И тут все таки С# на порядок более удобоваримый язык. В подавляющем большинстве случаев его поведение интуитивно понятно. Во многих случаях помогает сам компилятор выводя корректную информацию об ошибках. Так что, для чего он создавался, для того он и работает на ура. Правда это не всегда касается прилагаемых к нему библиотек.
удобоваримее с++ да. но, похоже, это только у меня, но я пока не смогу ответить на 90% этюдов nikov'а буду считать что язык знаю плохо.
мне понадобилась куча времени, чтобы хорошо выучить с++. теперь надо чуть меньше, чтобы так же выучить c#. по-моему, это не есть хорошо.
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, Константин Л., Вы писали:
КЛ>>Размер стандарта?
N>Я бы обратил внимание в первую очередь не на его размер, а на то, что он написан очень доходчиво и хорошо структурирован.
насколько хватило времени понять, он гораздо проще стандарта с++ (уж простите что всюду приплетаю), но 500 с гаком страниц это слишком
Здравствуйте, Константин Л., Вы писали:
КЛ>удобоваримее с++ да. но, похоже, это только у меня, но я пока не смогу ответить на 90% этюдов nikov'а буду считать что язык знаю плохо.
Тем не менее на практике такое не встречается, а если и встречается, то обычно легко понять в чем дело, когда тебе не гадать надо, а просто посмотреть, как поведет себя компилятор. Дургими словами, имея ответ, гораздо проще восстановить причину.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
Здравствуйте, nikov, Вы писали:
N>Здравствуйте, MozgC, Вы писали:
MC>>А что вам не нравится у Троелсена? Я не говорю что книга идеальная, но в целом нормальная книга на мой взгляд. Можно немного подробнее?
N>К сожалению книги под рукой нет. Но помню, что находил там много просто неверных утверждений. N>Единственное, что помню наизусть — он писал: N>* что метод помеченный unsafe можно взывать только тоже из unsafe метода.
Может имелось ввиду наоборот ? Что например функции kernel.dll ( unsafe ) можно вызывать только из метода помеченным unsafe ?
N>* что из статического метода нельзя вызвать экземпляный
Дык это вроде верно
class A
{
public static void StatMethod()
{
Method (); //// И что спрашивается мы вызовем если в коде напишем A.StatMethod() ? Конечно нельзя экземплярные методы в статических дергать.
}
public void Method()
{
}
}
N>* при попытке обратиться из финализатора к другому объекту, того объекта уже может не существовать в памяти
Естествено, не факт что объект еще жив и не попал в мусороуборочную машину.
Здравствуйте, Константин Л., Вы писали:
КЛ>Как вам язычок? Возможности? Lazy eval.? Closures? Правила explicit/implicit conv. (особенно для типов-параметров generics)? А learning curve? Размер стандарта?
Вполне себе язык, разве что мне лично очень не хватает паттерн-матчинга и алгебраических типов данных.
КЛ>пс: каждый день, когда наталкиваюсь на этюды nikov'а в ветке .net, ощущение того, что растет второй c++, укрепляется в моем мозгу. мне становится отчетливо понятно, что чтобы узнать этот язык хорошо и использовать его полноценно, мне нужно потратить еще кучу времени. c# 1.1 был довольно прост, чтобы не заглядывать в lang spec. не подумайте, что я собираюсь поднять панику, просто интересно, что кто думает по этому поводу.
Я кажется Вас понимаю, тут нужно изучать не в глубину, а в ширину. Много различных концепций объединены в 3й шарп, в основном от мира ФП. Надо лишь немного расширить кругозор, изучить какой-либо простенький ФП язык, а когда поймете суть этих концепций, все встанет на свои места.
Lisp is not dead. It’s just the URL that has changed: http://clojure.org
КЛ>delegate int d();
КЛ>d func = null;
КЛ>foreach(int a in new int[]{1, 2, 3})
КЛ> func = delegate { return a; }
КЛ>d();
КЛ>
Извините, но то что на С++ концепция замыканий работает по другому еще не повод ругать концепцию C#.
КЛ>>>А learning curve? Размер стандарта? Х>>
КЛ>угу
Стандарт С++ имхо ничуть не проще. А сколько людей на нем пишет!
КЛ>у меня почему-то совсем другое впечатление. может быть потому что я привык к с++...