Здравствуйте, IT, Вы писали:
IT>Ничего так. Linq очень хорош. И как обманка для генерации SQL, и как молотилка данных в памяти. Но в целом развиваться ещё есть куда.
Становиться ещё более функциональным?
Здравствуйте, EvilChild, Вы писали:
IT>>Ничего так. Linq очень хорош. И как обманка для генерации SQL, и как молотилка данных в памяти. Но в целом развиваться ещё есть куда. EC>Становиться ещё более функциональным?
В том числе.
Неясность изложения обычно происходит от путаницы в мыслях.
Если нам не помогут, то мы тоже никого не пощадим.
Здравствуйте, EvilChild, Вы писали:
EC>Здравствуйте, Константин Л., Вы писали:
КЛ>>мне он кажется слишком сложным, а вам? EC>Сложным в каком месте? EC>Он же существенно проще в освоении, чем C++.
Интересное мнение. Хотя с C# я не работал, читая осуждения на форумах, у меня складывалось впечатление, что он сложнее С++. По крайней мере, там больше различных фитч. И не удивительно. Ведь у C# в отличие от C++ нет коммитета стандартизации — его разрабатывают в пределах одной компании, а следовательно изменения в язык могут вноситься быстрее.
Да, и чем, кстати, С++ сложен? ИМХО там всё довольно просто.
Здравствуйте, maggot, Вы писали:
EC>>Он же существенно проще в освоении, чем C++. M>Интересное мнение. Хотя с C# я не работал, читая осуждения на форумах, у меня складывалось впечатление, что он сложнее С++. По крайней мере, там больше различных фитч. И не удивительно. Ведь у C# в отличие от C++ нет коммитета стандартизации — его разрабатывают в пределах одной компании, а следовательно изменения в язык могут вноситься быстрее.
Стандарт есть.
В нём меньше граблей разложено. Гораздо сложнее случайно прострелить себе ногу.
Почти всё реализовано интуитивно понятно.
В плюсах один name lookup чего стоит. Шаблоны тоже сложнее в использовании чем дженерики.
На дженериках compile time metaprogramming не замутишь.
Нет макросов.
Есть компонентность.
Это первое, что на ум приходит, если подумать, то найдётся ещё много чего.
Любой вменяемый плюсовик может продуктивно использовать C# с минимальными услиями — обратное неверно.
M>Да, и чем, кстати, С++ сложен? ИМХО там всё довольно просто.
Сколько времени ты на нём пишешь?
Здравствуйте, Константин Л., Вы писали:
КЛ>Как вам язычок? Возможности? Lazy eval.? Closures? Правила explicit/implicit conv. (особенно для типов-параметров generics)? А learning curve? Размер стандарта?
КЛ>пс: каждый день, когда наталкиваюсь на этюды nikov'а в ветке .net, ощущение того, что растет второй c++, укрепляется в моем мозгу. мне становится отчетливо понятно, что чтобы узнать этот язык хорошо и использовать его полноценно, мне нужно потратить еще кучу времени. c# 1.1 был довольно прост, чтобы не заглядывать в lang spec. не подумайте, что я собираюсь поднять панику, просто интересно, что кто думает по этому поводу.
Согласен с p.s. Тоже укрепляюсь в подобном мнении. К сожалению.
На мой взгляд, реальным плюсом со времен C# 1.1 явились только generic'и причем без implicit.
Особенно меня огорчают extension methods. Интересная вещь, неплохо расширившая функциональность коллекций. Но! Но ведь это абсолютное нарушение концепции ООП! Это же фактически возврат к процедурному программированию. Поддавшись соблазну, ввел в проекте несколько "расширетелей", пользовались ими некоторое время. И всё же вернулись к типичной конструкции static helper'ов.
Подстановка типов для generic'ов. Ну зачем это? Кому оно необходимо? Зато результат — поди догадайся что вызовится. Либо конкретно знать стандарт, либо сидеть гадать — дай Бог, чтобы не на кофейной гуще. Интересно, прикольно, ничего не имею против этюдов, но на практике это скорее зло, чем благо.
А еще я бы убил yield return
P.S. Тем не менее, если оставить сам C# и посмотреть в целом на Framework, то очень радует развитие. Особенно WPF — давно жаждал такого.
Здравствуйте, EvilChild, Вы писали:
EC>Стандарт есть. EC>В нём меньше граблей разложено. Гораздо сложнее случайно прострелить себе ногу. EC>Почти всё реализовано интуитивно понятно. EC>В плюсах один name lookup чего стоит.
Конечно, можно написать код, в котором потом разбираться будет очень проблематично. EC>Шаблоны тоже сложнее в использовании чем дженерики. EC>На дженериках compile time metaprogramming не замутишь.
В этом их сила Кстати, в C# есть частичная специализация дженериков? EC>Нет макросов.
Макросы рудиментарный анахронизм. Я думаю, пора бы с новым стандартом избавить С++ от макросов. А для совместимости со старыми стандартами производители компиляторов могут делать дополнительные опции, включающие совместимость с ними.
А так, макросы не усложняют сам язык. Просто некоторые разработчики их лепят там, где без них можно обойтись. EC>Есть компонентность. EC>Это первое, что на ум приходит, если подумать, то найдётся ещё много чего. EC>Любой вменяемый плюсовик может продуктивно использовать C# с минимальными услиями — обратное неверно.
Ну а yield и всё что с ним связано считается простой вещью в C#?
EC>Сколько времени ты на нём пишешь?
3 года.
Здравствуйте, Klapaucius, Вы писали:
E>>Пока из ваших объяснений я так и не понял, чтоже именно произойдет с объектами A и B. Такое впечатление, что они либо остануться жить вечно, либо их финализаторы гарантированно вызовутся раньше очистки памяти.
K>Думаю, что это объясняется здесь.
Ну да, так и получается: f-reachable queue является одним из корней для GC, а изъятие объекта из f-reachable queue производится только после вызова финализатора. Т.е. пока оба финализатора для A и B не будут вызваны, ни один из них не попадет под очистку (т.к. кто-то из них остается в f-reachable queue). Следовательно, финализаторы гарантированно вызовутся раньше очистки памяти.
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, eao197, Вы писали:
E>>>Пока из ваших объяснений я так и не понял, чтоже именно произойдет с объектами A и B. Такое впечатление, что они либо остануться жить вечно, либо их финализаторы гарантированно вызовутся раньше очистки памяти.
E>Ну да, так и получается: f-reachable queue является одним из корней для GC, а изъятие объекта из f-reachable queue производится только после вызова финализатора. Т.е. пока оба финализатора для A и B не будут вызваны, ни один из них не попадет под очистку (т.к. кто-то из них остается в f-reachable queue). Следовательно, финализаторы гарантированно вызовутся раньше очистки памяти.
Если вызовутся, то вызовутся раньше очистки памяти. Вызов финализаторов, насколько я знаю, не гарантирован. Гарантирована жизнь объектов, к которым можно обратиться.
... << RSDN@Home 1.2.0 alpha 4 rev. 1110>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Здравствуйте, maggot, Вы писали:
EC>>В плюсах один name lookup чего стоит. M>Конечно, можно написать код, в котором потом разбираться будет очень проблематично.
Не о том речь. Почитай правила поиска имен стандарт писали садомазохисты.
EC>>Шаблоны тоже сложнее в использовании чем дженерики. EC>>На дженериках compile time metaprogramming не замутишь. M>В этом их сила
Посмотри на немерле... тогда ты может быть поймешь что такое метапрограммирование.
M>Кстати, в C# есть частичная специализация дженериков?
Нет и не надо.
M>А так, макросы не усложняют сам язык. Просто некоторые разработчики их лепят там, где без них можно обойтись.
Есть много мест где без хотябы текстовых макросов не обойтись (в смысле иначе геморой страшный).
M>Ну а yield и всё что с ним связано считается простой вещью в C#?
Тривиальной.
Я кстати к С++ его прикрутил. Макросами... ну влом мне было руками конечный автомат для парсинга HTTP протокола в асинхронном сервере писать.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, maggot, Вы писали:
EC>>>В плюсах один name lookup чего стоит. M>>Конечно, можно написать код, в котором потом разбираться будет очень проблематично. WH>Не о том речь. Почитай правила поиска имен стандарт писали садомазохисты.
ничего особенного
EC>>>Шаблоны тоже сложнее в использовании чем дженерики. EC>>>На дженериках compile time metaprogramming не замутишь. M>>В этом их сила WH>Посмотри на немерле... тогда ты может быть поймешь что такое метапрограммирование.
+1
M>>Кстати, в C# есть частичная специализация дженериков? WH>Нет и не надо.
Здравствуйте, Константин Л., Вы писали:
WH>>Не о том речь. Почитай правила поиска имен стандарт писали садомазохисты. КЛ>ничего особенного
Это ADL то ничего особенного?
M>>>Кстати, в C# есть частичная специализация дженериков? WH>>Нет и не надо. КЛ>-1
Специализация вобще и частичная в частности очень дорого стоят. Они несовместимы с компонентной моделью.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, WolfHound, Вы писали:
WH>Здравствуйте, Константин Л., Вы писали:
WH>>>Не о том речь. Почитай правила поиска имен стандарт писали садомазохисты. КЛ>>ничего особенного WH>Это ADL то ничего особенного?
ага
M>>>>Кстати, в C# есть частичная специализация дженериков? WH>>>Нет и не надо. КЛ>>-1 WH>Специализация вобще и частичная в частности очень дорого стоят. Они несовместимы с компонентной моделью.
не совместима и не надо разные вещи. да и наверняка что-нить можно было придумать, хоть и не тривиально это все
Здравствуйте, Константин Л., Вы писали:
КЛ>не совместима и не надо разные вещи.
На халяву почему бы и нет. Но если нужно платить...
КЛ>да и наверняка что-нить можно было придумать, хоть и не тривиально это все
Придумай.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн