Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[52.90.121.17] |
|
Страницы: (495) 1 [2] 3 4 ... 494 495 ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
Что такое события я пока не понял, а вот про делегаты можно похоливарить: делегаты vs boost::signal vs что там придумают в дельфи.
|
Сообщ.
#17
,
|
|
|
Ну давайте пока про делегаты. Что есть в Дельфи - я хз. А про бустовский вариант хотелось бы услышать
|
Сообщ.
#18
,
|
|
|
Ну я с делегатами ознакомился буквально только что, но пока мне не нравится:
1) для удаления из списка вызова нужно иметь полное описание исключаемого объекта (имею ввиду тип), хотя в реале я могу таковой и не иметь. 2) невозможно создать нулевой делегат, хотя ИМХО, полезно. Во всяком случае, когда я строил на сигналах бустовских систему документ/вид документ не обязательно мог иметь хотябы один вид в каждую единицу времени. 3) собственно из п. 2 -- искусственно созданный нулевой делегат провоцирует ошибку при вызове. |
Сообщ.
#19
,
|
|
|
kanes, а запрет множественного наследования чем хорош?
|
Сообщ.
#20
,
|
|
|
Цитата D_KEY @ kanes, а запрет множественного наследования чем хорош? Тем что нет проблем с перекрытием имен, как пример, да еще нет проблем с перекрытием значений. Хотя конечно у плохих проектировщиков запрет множественного наследования сразу вызывает желание использовать антипаттерн God object |
Сообщ.
#21
,
|
|
|
Цитата kanes @ Самый главный для меня вопрос - какие преимущества у Delphi перед С# по теме разработки софта под Windows? На мой взгляд, никаких. Но сторонники Delphi вроде называли какие-то плюсы Delphi. Цитата Какие плюсы у С++ перед C# для разработки прикладного софта под Windows? Не знаю, наверно никаких.Ну кстати и у С++ хотелось бы тоже мнения узнать. А так понятно - кроссплатформенность(не такая мифическая, как у шарпа), скорость работы, аппетиты, возможность поработать напильником в случае необходимости. Добавлено Цитата kanes @ Цитата D_KEY @ kanes, а запрет множественного наследования чем хорош? Тем что нет проблем с перекрытием имен, как пример, да еще нет проблем с перекрытием значений. Ну так зачем запрещать? Как будь-то возможность заставляет применять множественное наследование там, где оно не нужно. |
Сообщ.
#22
,
|
|
|
Повстанець, честно сказать не понял первый пункт, а насчет второго не вижу полезности.
Цитата D_KEY @ кроссплатформенность согласен Цитата D_KEY @ аппетиты в смысле? Цитата D_KEY @ возможность поработать напильником в случае необходимости. это про какие такие напильники? |
Сообщ.
#23
,
|
|
|
Цитата D_KEY @ Какие плюсы у С++ перед C# для разработки прикладного софта под Windows? Не знаю, наверно никаких. Всетаки думаю на мало-мощных компах у С++ всетаки есть плюсы перед шарпом, но так как маломощные компы уже прошлый век, то наверно и нема... разве что ядро какой нибудь сложной системы написать, а интерфейс на С# |
Сообщ.
#24
,
|
|
|
Цитата kanes @ Цитата D_KEY @ аппетиты в смысле? В смысле прожорливости. Памяти и сборщика мусора. Цитата Про потенциальные возможности оптимизации. Цитата D_KEY @ возможность поработать напильником в случае необходимости. это про какие такие напильники? |
Сообщ.
#25
,
|
|
|
Цитата D_KEY @ В смысле прожорливости. Памяти и сборщика мусора. А в чем прожорливость? Цитата D_KEY @ Про потенциальные возможности оптимизации. А можно пример конкретнее? |
Сообщ.
#26
,
|
|
|
Цитата kanes @ Ну вот пример из дока:Повстанець, честно сказать не понял первый пункт, а насчет второго не вижу полезности. using System; class App { delegate void MyDelegate(string s); // Это функция, на которую мы будем ссылаться при помощи // экземпляра делегата. static void MyHandler(string s) { // Просто выведем на консоль аргумент, полученный нашей // функцией. Console.WriteLine(s); } static void Main() { // Создадим экземпляр делегата, описанного ранее. // В качестве единственного параметра конструктора // передадим ссылку на метод MyHandler. MyDelegate del = new MyDelegate(MyHandler); // Создадим новый делегат и скомбинируем его // с ранее созданным делегатом. del += new MyDelegate(MyHandler); // То же самое можно сделать следующим образом. del = del + new MyDelegate(MyHandler); // А теперь уберем из списка вызова делегата // одну из ссылок на метод MyHanlder. del -= new MyDelegate(MyHanlder); // Затем обратимся к конечному делегату, естественно, // что при этом по цепочке будут вызваны все методы, // связанные с ним. del("Hello, world!"); } }; del -= new MyDelegate(MyHanlder); а конкретнее MyHanlder. В том месте программы, где я удаляю из списка вызовов функтор я могу просто не видеть этого MyHanlder. Мало того, его на момент разработки системы, потенциально юзающей этот MyHanlder может просто не существовать. Добавлено А на счёт полезности второго, дык я вроде описал пример. |
Сообщ.
#27
,
|
|
|
Фишки шарпа, которые сразу приходят на ум:
- методы-расширения - partial-классы - свойства - события - лямбды - yield - reflection - и да, сборка мусора |
Сообщ.
#28
,
|
|
|
Цитата kanes @ Синтаксис Pascal - лично для меня чуть ли не самый главный был в свое время аргумент, чтобы перестать писать на Delphi он неплох, но жутко примитивен и туп Добавлено Цитата kanes @ Эм, но про LINQ - я пожалуй говорить не буду, тут один уже наговорил (это я про Террагоста). Лично для меня - намного более удобно в языке реализована концепция ООП, запрещено множественное наследование, ключевое слово для абстрактных классов - и это тоже удобно. Свойства, правда они в Delphi вроде появились. Делегаты, События. В новом 4.0 - очень простой код для распараллеливания кода, ну точнее для написания параллельных циклов Ну это первое что на ум приходит один фиг жалкое убожество по сравнению со SmallTalk, Ruby, CLOS и т.п. |
Сообщ.
#29
,
|
|
|
Цитата korvin @ он неплох, но жутко примитивен и туп Щас тебе Делфийцы сделают атата |
Сообщ.
#30
,
|
|
|
делегаты -- жалкие подобия замыканий |