C# начинает разочаровывать

6yrop

почему в нем нет анонимных и не статических классов, которые уже давно есть в Java?
иногда они очень удобны

Chupa

зато из C# скоро настоящий язык сделают
с лямбда выражениями и type inference

Helga87

Анонимные делегаты дают практически ту же функциональность, даже короче бывает порой.

6yrop

не совсем ту, а не статических классов совсем нет

Helga87

Покажи пример функциональности на java, которая недоступна в C# и нет его аналога.
//Я в java не большой рюх, поэтому не совсем уверен, что понимаю, что такое нестатические классы. Пример будет действительно к месту.

enochka1145

Это ещё что. Я вот вернулся в C++ и с каждым днём всё меньше и меньше понимаю, почему кто-то не любит Java. Ведь Java - это гармония в голове и в коде. Особенно если человек пользуется правильными библиотеками и правильными методами программирования (например, применяет design patterns). А на C++... кто во что горазд... постоянно изобретают велосипеды и создают плохо читаемый код, который потом надо кому-то поддерживать.......

enochka1145

С умными людьми всегда готов поговорить о чём угодно. Кабинетным теоретикам просьба не беспокоиться.

Ivan8209

А я не теоретик.
Чем же это твой "design patterns" (кстати, как это будет по-русски) правилен?
---
...Я работаю антинаучным аферистом...

kokoc88

Сейчас работаю на Java/C# проекте. 70% времени пишу на С++, просто потому, что другие языки не позволяют решать некоторые задачи либо вообще, либо эффективно. (Кстати, memory leaks пока что были только на Java, нашёлся у нас умелец.) Хотя больше всего мне не нравится C#: самый сырой и не проработанный, даже вторая версия оставляет желать много лучшего.

enochka1145

// А я не теоретик.
Конечно-конечно. Правда даже решить такую простую задачу как перевод "design patterns" на русский язык выполнить не можешь. Про это же не написано в Ландау-Лившице...
Про шаблоны проектирования есть минимум одна классическая работа, а сами они, по слухам, уже входят в курс обучения программированию. Так что Гугл в руки - и вперёд...

enochka1145

Понятно, что в основном всё зависит от конкретных людей, а не от языка. Это я так, вспоминаю замечательное время Java + Eclipse.

Ivan8209

> Про шаблоны проектирования есть минимум одна классическая работа,
Какая?
> а сами они, по слухам, уже входят в курс обучения программированию.
Не входят, иначе это были бы не слухи.
> Так что Гугл в руки - и вперёд...
Это всего лишь модные слова, поэтому Гугл не будет эффективен.
---
...Я работаю антинаучным аферистом...

enochka1145

Ты хоть понимаешь, что практически любой действующий программер прочтёт твоё сообщение приблизительно так: "Я кабинетный теоретик. Я не в курсе современных методологий. У меня нет нормальных знакомых. Я даже гуглом пользоваться не умею. Я же КОНТРА."?

Ivan8209

"Практически любой действующий программер" <> .
"Современная методология" <> "design patterns".
Мои знакомые, в большинстве своём, не занимаются программированием.
Отправлять в поиск по ключевым словам, которые ничего не значат,
а являются всего лишь очередным рекламным ходом, неприлично.
Ты говоришь о какой-то классической работе, но отказываешься её назвать,
ergo, этой работы не существует.
То, что ты не смог дать ссылку хотя бы на Wikipedia, тебе в минус.
---
...Я работаю антинаучным аферистом...

bobby

Ну, вот и ещё вот.

enochka1145

Ну ты и дебил... Даже просто набрать в Wikipedia "design patterns" уже не можешь?

Ivan8209

Я это уже прочитал.
---
...Я работаю антинаучным аферистом...

bobby

Я так и подумал, вообще-то, но на всякий случай =)

Ivan8209

Однако ты направлял меня почему-то не в "Википедию".
Кстати, доказательством, что "design patterns" никоим боком
не относятся к современной методологии, является использование в качестве примеров плохо воспринимаемого ООП,
к тому же ещё и с жутко громоздким синтаксисом,
на месте более воспринимаемых функционалов.
По факту, в науке стараются, по возможности,
отказываться от графических методов или хотя бы
ограничивать их применение.
Примеры к "design patterns" построены иначе,
они более напоминают книжку-раскраску,
растрачивая попусту зрительное пространство.
Это в "Wikipedia", в книгах это будет выглядеть ещё хуже,
ибо кто-кто, а американцы получают гонорар за объём.
---
...Я работаю антинаучным аферистом...

6yrop

C#: самый сырой и не проработанный, даже вторая версия оставляет желать много лучшего.
голословный наезд
Хотя больше всего мне не нравится C#:

а может ты просто не умеешь и не хочешь с ним обращаться?

kokoc88

а может ты просто не умеешь и не хочешь с ним обращаться?
Ну что не умею обращаться как "отец" - это, наверное, факт. Но трёх месяцев практики на этом языке вполне хватает, чтобы сделать какие-то выводы. Просто от балды могу вспомнить некоторые странности:
1. Uri нельзя создать по закодированной строке. Вернее, можно, но вот гемор в том, что все '\' (%5C) она РАСКОДИРУЕТ и заменит на '/'.
2. Повесить картинку на кнопку - банальная вроде бы задача. Почему-то эта картинка не нажимается вместе с кнопкой.
3. Не ясно, почему event надо проверять на null перед вызовом? Неужели, нельзя было встроить в его функциональность?
4. Некоторые классы в стандартных библиотеках названы как в Visual Basic (Dictionary, etc). Усложняет поиск решений тем людям, которые никогда не писали на этом языке, но писали на C++ или Java.
5. Windows Forms забавно работают с потоками: Invoke приходится делать через рефлекшн. Причём нет возможности запихнуть туда анонимный делегат. Или эта возможность дико нетривиальна?

Dasar

5 совсем не понял
причем здесь reflection? и в чем проблема с делегатами?

6yrop

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

некоторые из пунктов к язык не имеют отношения.
p.s. что ж такого в слове Dictionary от Visual Basic?

kokoc88

5 совсем не понял
причем здесь reflection?
Ну смотри: Invoke для произвольной функции получает аргументы в виде делегата и object[], то бишь вызывает он её через reflection? Или как ещё можно вызвать произвольную функцию?

kokoc88

не серьезные причины, чтобы делать вот таки утверждения
некоторые из пунктов к язык не имеют отношения.
В наше время язык представляет из себя не только язык, но и SDK. Стал бы кто-то писать на C#, не будь для него вполне мощного SDK? Не писать же на каждом шагу native код.

Dasar

> Ну смотри: Invoke для произвольной функции получает аргументы в виде делегата и object[], то бишь вызывает он её через reflection? Или как ещё можно вызвать произвольную функцию?
Ты и прав, и не прав - одновременно.
Если у Вас ничего не получается -то прочтите же наконец документацию.
В msdn-е для Control.Invoke русским по белому английскими буквами написано:
The delegate can be an instance of EventHandler, in which case the sender parameter will contain this control, and the event parameter will contain EventArgs.Empty. The delegate can also be an instance of MethodInvoker, or any other delegate that takes a void parameter list. A call to an EventHandler or MethodInvoker delegate will be faster than a call to another type of delegate.
Можно даже залезть в код, и найти этому подтверждение:

if (entry1.method is EventHandler)
{
EventHandler) entry1.methodentry1.caller, EventArgs.Empty);
}
else if (entry1.method is MethodInvoker)
{
MethodInvoker) entry1.method;
}
else
{
entry1.retVal = entry1.method.DynamicInvoke(entry1.args);
}

Соответственно вот такой код будет работать без всякого reflection-а:

textBox.Invoke(new MethodInvoker(delegate { textBox.Text = "bla-bla"; };

kokoc88

Я не жаловался на то, что у меня что-то не получается. В общем-то ты предлагаешь создать что-то типа безымянного класса в Джаве, а затем оттуда уже вызывать функцию с аргументами. Кстати, хэлп по Invoke я прочитал. Просто для вызова функции без параметров он принимает System.Delegate в качестве аргумента. MethodInvoker просто не стал смотреть.

dryadanna

Design patterns - это и есть классическая работа. Ну что ж поделать, если книжка именно так называется
Оставить комментарий
Имя или ник:
Комментарий: