О сложности C#
От: x64 Россия http://x64blog.name
Дата: 20.08.09 08:25
Оценка: 1 (1) +4 -8 :))) :))) :))) :)
Да, усложняют язык. При чём сильно. Достаточно почитать "этюды" от nikov'а (который, кстати, наверняка считает, что занимается чем-то очень полезным), например, вот этот
Автор: nikov
Дата: 15.08.09
. И мысль сия уже звучала не раз, вот здесь
Автор: Ovl
Дата: 17.08.09
, например. Мне этот момент тоже непонятен. Язык задач не решает, ну не решает. Решают дополнительные модули, библиотеки, фреймворки, но не сам язык. Когда мне нужно было написать что-то на .Net'е (как правило, это были UI и инструментарий внутреннего пользования), я брал VS2003 и тамошний "древний" C#, затем я брал VS2005 и писал на новом C# с шаблонами (это единственное, что я заценил из нового стандарта, остальное никак и нигде не пригодилось), теперь пишу на VS2008 и совершенно не парюсь про какие-то там лямбды или Linq'и. А не парюсь, потому что по-прежнему использую фреймворки, а не язык. Был .Net 2.0, теперь .Net 3.5, WPF, WCF и прочие, — вот это то, что действительно решает проблемы заказчика.

Так вот скажите мне, зачем развивают/усложняют сам язык? Это маркетинговый ход такой, чтобы Java перегнать, или чего? Классы, методы, свойства, события, — всё! Чего для полноценной жизни не хватает ещё? Какие "навороченные" элементы языка реально используются у вас у конторе и почему? Я не вижу в этом смысла, я системщик, на C пишу, ассемблером разбавляю иногда... Может кто мне доходчиво пояснить зачем навороты в языке?
JID: x64j@jabber.ru
Re: О сложности C#
От: Lexxpin  
Дата: 20.08.09 08:33
Оценка: 3 (3) +14
Здравствуйте, x64, Вы писали:

x64>ТМожет кто мне доходчиво пояснить зачем навороты в языке?


Чтобы вместо десяти строк написать одну. И эта одна строка стала понятней десяти.
Re: О сложности C#
От: Vi2 Удмуртия http://www.adem.ru
Дата: 20.08.09 08:35
Оценка: 3 (1) +3 :))) :))) :))
Здравствуйте, x64, Вы писали:

x64>Может кто мне доходчиво пояснить зачем навороты в языке?


Чтобы были заметны габаритные огни уходящего поезда для тех, кто не в поезде или решил пофилонить на перроне.
Vita
Выше головы не прыгнешь, ниже земли не упадешь, дальше границы не убежишь! © КВН НГУ
Re: О сложности C#
От: Sinix  
Дата: 20.08.09 08:35
Оценка: 2 (2) +1
Здравствуйте, x64, Вы писали:

x64>Да, усложняют язык. При чём сильно.


Хых... скажите, а у вас хоть раз возникали какие-то трудности с шарпом на практике? Что-то сильно-сильно сомневаюсь.
Этюды nikov'a интересны в первую очередь для лениво интересующихся языком, ибо читать стандарт (подозреваю, писать тоже) -- занятие крайне трудоёмкое и неблагодарное.

Введение новых фич вовсе не означает что их тут же надо бросаться использовать. C# team просто планово закрывает corner cases, расширяя для этого функциональность языка. Если вы с этими сценариями не сталкивались — вам не горячо и не холоджно от новых фич. Если сталкивались — должны радоваться

x64>Я не вижу в этом смысла, я системщик, на C пишу, ассемблером разбавляю иногда... Может кто мне доходчиво пояснить зачем навороты в языке?


Вы сами сказали — от языка вам надо очень немногое. Может, стоит поменять шарп на что-то другое

P.S. Всё вышесказанное в двух словах: нефиг жаловаться.
Re[2]: О сложности C#
От: x64 Россия http://x64blog.name
Дата: 20.08.09 08:47
Оценка: 3 (1) -1
x64>>ТМожет кто мне доходчиво пояснить зачем навороты в языке?
L>Чтобы вместо десяти строк написать одну. И эта одна строка стала понятней десяти.

Вот так и знал, что один из ответов затронет скорость реализации задачи. Ok, тогда для полноты картины не будешь ли так любезен, не подскажешь ли, почему нельзя вместо введения новой конструкции языка реализовать пару дополнительных классов, решающих ту же задачу. А чего? Тоже одна строчка будет — вызов метода. Ммм?
JID: x64j@jabber.ru
Re: О сложности C#
От: FR  
Дата: 20.08.09 08:52
Оценка:
Здравствуйте, x64, Вы писали:

x64>Так вот скажите мне, зачем развивают/усложняют сам язык?


http://russian.joelonsoftware.com/Articles/FireAndMotion.html
Re[3]: О сложности C#
От: Roman Odaisky Украина  
Дата: 20.08.09 09:01
Оценка: +1 :)
Здравствуйте, x64, Вы писали:

x64>>>Может кто мне доходчиво пояснить зачем навороты в языке?

L>>Чтобы вместо десяти строк написать одну. И эта одна строка стала понятней десяти.

x64>Вот так и знал, что один из ответов затронет скорость реализации задачи. Ok, тогда для полноты картины не будешь ли так любезен, не подскажешь ли, почему нельзя вместо введения новой конструкции языка реализовать пару дополнительных классов, решающих ту же задачу. А чего? Тоже одна строчка будет — вызов метода. Ммм?


Ну вот пример. Получить по строчке массив с частотами букв (например, «acccbe» → [1, 1, 3, 0, 1, ...]):
self.powers = [sum(ord(c) == ord("a") + i for c in s) for i in range(0, 26)]

и собрать строчку обратно (порядок букв не важен):
return "".join("".join(repeat(chr(ord("a") + i), self.powers[i])) for i in range(0, 26))

Какая пара классов решит эту задачу?
До последнего не верил в пирамиду Лебедева.
Re[4]: О сложности C#
От: FR  
Дата: 20.08.09 09:15
Оценка: +1
Здравствуйте, Roman Odaisky, Вы писали:

Это у меня в глазах двоится или шарп стал превращатся в питон?
Re[3]: О сложности C#
От: anton_t Россия  
Дата: 20.08.09 09:36
Оценка: +2
Здравствуйте, x64, Вы писали:

x64>>>ТМожет кто мне доходчиво пояснить зачем навороты в языке?

L>>Чтобы вместо десяти строк написать одну. И эта одна строка стала понятней десяти.

x64>Вот так и знал, что один из ответов затронет скорость реализации задачи. Ok, тогда для полноты картины не будешь ли так любезен, не подскажешь ли, почему нельзя вместо введения новой конструкции языка реализовать пару дополнительных классов, решающих ту же задачу. А чего? Тоже одна строчка будет — вызов метода. Ммм?


Не любую фичу языка можно классом заменить. Возьмём шаблоны С++, каким класом ты их заменишь? Или каким классом можно анонимные функции и анонимные типы в C# заменить? А без них Linq уже не получишь.
Re[3]: О сложности C#
От: Lexxpin  
Дата: 20.08.09 09:38
Оценка:
Здравствуйте, x64, Вы писали:

x64>Вот так и знал, что один из ответов затронет скорость реализации задачи. Ok, тогда для полноты картины не будешь ли так любезен, не подскажешь ли, почему нельзя вместо введения новой конструкции языка реализовать пару дополнительных классов, решающих ту же задачу. А чего? Тоже одна строчка будет — вызов метода. Ммм?


Как пример: лямбды — там, где необходимо подписаться на событие ради пару строк, можно прямо по месту использования их написать. Как результат в классе меньше функций, следовательно, меньше сложность.
Re: О сложности C#
От: FR  
Дата: 20.08.09 10:31
Оценка: 1 (1) +6
Здравствуйте, x64, Вы писали:

x64>Так вот скажите мне, зачем развивают/усложняют сам язык? Это маркетинговый ход такой, чтобы Java перегнать, или чего? Классы, методы, свойства, события, — всё! Чего для полноценной жизни не хватает ещё? Какие "навороченные" элементы языка реально используются у вас у конторе и почему? Я не вижу в этом смысла, я системщик, на C пишу, ассемблером разбавляю иногда... Может кто мне доходчиво пояснить зачем навороты в языке?


Мой взгляд на шарп со стороны. Он пытается усидеть на двух стульях, и практически повторяет судьбу C++. С одной стороны простой язык с мощным фреймворком для индустрии, на котором могут писать специалисты невысокой квалификации, с другой мощный язык для квалифицированных специалистов. Может лучше бы было разделить на два языка.
Re: О сложности C#
От: Ikemefula Беларусь http://blogs.rsdn.org/ikemefula
Дата: 20.08.09 10:34
Оценка: 1 (1)
Здравствуйте, x64, Вы писали:

x64>Да, усложняют язык. При чём сильно. Достаточно почитать "этюды" от nikov'а (который, кстати, наверняка считает, что занимается чем-то очень полезным), например, вот этот
Автор: nikov
Дата: 15.08.09
. И мысль сия уже звучала не раз, вот здесь
Автор: Ovl
Дата: 17.08.09
, например. Мне этот момент тоже непонятен. Язык задач не решает, ну не решает.


Решает в первую очередь язык.

x64>Решают дополнительные модули, библиотеки, фреймворки, но не сам язык.


Всегда выбирается баланс между возможностями языки и возможностями библиотек.

x64>Так вот скажите мне, зачем развивают/усложняют сам язык?


Для того что бы сложные вещи можно было выразить предельно просто.

Взять например автоматы — реализовать можно на каком угодно языке.

При этом если данные возможности есть в самом языке, то оформление автомата выглядит предельно просто — состояния, переходы и тд.

Библиотекой это всегда более громоздко. Разумеется, библиотека обладает и более широкими возможностями, но он не всегда востребованы.
Re[4]: О сложности C#
От: elmal  
Дата: 20.08.09 10:58
Оценка: +7
Здравствуйте, Roman Odaisky, Вы писали:

L>>>Чтобы вместо десяти строк написать одну. И эта одна строка стала понятней десяти.

Я бы не сказал что тут очень уж все понятно. Читается очень плохо (хотя, лет 10 назад меня бы подобная запись в восторг ввела, а то, что я такое могу написать и прочитать, я бы считал подтверждением своей крутости). И не сказал бы, что тут все в одну строчку, строчка уж большо длинная, каждое из выражений для меня состоит из трех строчек. Эдак можно что угодно в одну строчку длиной 100 000 000 символов запихнуть, и разбирайтесь как хотите .
На деле, мне очень нравятся некоторые из возможностей, многих из них мне не хватает. Но вот злоупотреблять этим всем не следует, как минимум от скобок рябит, а если б и скобок не было, было еще хуже. Увы, best practices для всего этого появятся наверно лет через 10 только, а сейчас будут все городить новые конструкции куда не попадя, пока в совершенстве не смогут легко такое читать. Как результат, поддерживаемость кода, написанного в таком стиле будет, увы, совсем не на высоте.
Re: О сложности C#
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.08.09 10:59
Оценка: 13 (8) +5
Здравствуйте, x64, Вы писали:

x64>Так вот скажите мне, зачем развивают/усложняют сам язык? Это маркетинговый ход такой, чтобы Java перегнать, или чего? Классы, методы, свойства, события, — всё! Чего для полноценной жизни не хватает ещё?

Много чего не хватает.
x64>Какие "навороченные" элементы языка реально используются у вас у конторе и почему? Я не вижу в этом смысла, я системщик, на C пишу, ассемблером разбавляю иногда... Может кто мне доходчиво пояснить зачем навороты в языке?
Для того, чтобы писать меньше кода. Примеры тебе уже привели. Просто ты мыслишь набором категорий существующего языка.
Вот, к примеру, спроси ты срежнего джавного программера десять лет назад про то же самое — так он процитировал бы тебе тот же список, только без свойств и событий.

С# 3.0, в частности, позволяет получать на порядки более компактную запись некоторых фрагментов кода.
Примеры можно посмотреть здесь.

То, что ты не видишь пользы в этих средствах языка, свидетельствует об одном из двух:
1. Тебе не приходится писать код, который можно сократить при помощи новых средств (и нельзя при помощи старых).
2. Тебе приходится писать такой код, но ты считаешь его совершенно нормальным и не чувствуешь никакой избыточности.

В среднем, у большинства программистов-скептиков чаще срабатывает пункт 2, чем 1.
Он проходит после того, как попользуешься "фишкой" вплотную. Ну вот добавили в третьем шарпе ключевое слово var, и что?
Ну так тем, кто к нему привык, код вроде
Dictionary<string, Pair<int, Func<Url, Rule>>> tranlationRules = new Dictionary<string, Pair<int, Func<Url, Rule>>>();

мозолит глаза. Тебе, наверное, он кажется прекрасным, удобным и естественным.

Или вот те же блоки итераторов — офигенная ведь штука! Неужели тебе нравилось вручную реализовывать GetIterator/MoveNext/Current? Никакой "парой классов" ты не заменишь yield return.

А вот, скажем, тот же dynamic из четвёрки. Даже если пренебречь отвалом башки от того же Барта, он банально позволяет в разы сократить объем кода, который раньше приходилось писать для позднего связывания вызовов через Reflection. И при этом опять же в разы увеличить надёжность кода — потому что алгоритм динамического биндинга, встроенный в язык, куда как сложнее (и аккуратнее) тупого привязывания к методу по имени, которым обычно ограничивались прикладные пользователи reflection.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[3]: О сложности C#
От: Sinclair Россия https://github.com/evilguest/
Дата: 20.08.09 10:59
Оценка: 1 (1) +2
Здравствуйте, x64, Вы писали:
x64>Вот так и знал, что один из ответов затронет скорость реализации задачи. Ok, тогда для полноты картины не будешь ли так любезен, не подскажешь ли, почему нельзя вместо введения новой конструкции языка реализовать пару дополнительных классов, решающих ту же задачу. А чего? Тоже одна строчка будет — вызов метода. Ммм?
В шарп не вводят новые конструкции, если можно реализовать их "парой дополнительных классов".
Такая уж у них философия дизайна.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[5]: О сложности C#
От: frogkiller Россия  
Дата: 20.08.09 13:31
Оценка: :)
Здравствуйте, FR, Вы писали:

FR>Это у меня в глазах двоится или шарп стал превращатся в питон?


Первая мысль была абсолютно такой же
Курица — это инструмент, с помощью которого одно яйцо производит другие.
Re: О сложности C#
От: fmiracle  
Дата: 20.08.09 13:41
Оценка: +1
Здравствуйте, x64, Вы писали:


x64>Так вот скажите мне, зачем развивают/усложняют сам язык? Это маркетинговый ход такой, чтобы Java перегнать, или чего? Классы, методы, свойства, события, — всё! Чего для полноценной жизни не хватает ещё?


Хм. А лет 10-15 назад частенько говорили, что для полноценной жизни нужны процедуры и модули. А "классы" всякие — ерунда полная и баловство бесполезное.
... << RSDN@Home 1.2.0 alpha 4 rev. 1237>>
Re[2]: О сложности C#
От: FR  
Дата: 20.08.09 13:46
Оценка:
Здравствуйте, fmiracle, Вы писали:


F>Хм. А лет 10-15 назад частенько говорили, что для полноценной жизни нужны процедуры и модули. А "классы" всякие — ерунда полная и баловство бесполезное.


Сейчас тоже самое говорят, что уже классы не очень то и нужны
Я вот в последнее время немного пишу на OCaml и начинаю соглашатся c этим мнением
Re[5]: О сложности C#
От: VoidEx  
Дата: 20.08.09 17:38
Оценка:
Здравствуйте, elmal, Вы писали:

E>Здравствуйте, Roman Odaisky, Вы писали:


L>>>>Чтобы вместо десяти строк написать одну. И эта одна строка стала понятней десяти.

E>Я бы не сказал что тут очень уж все понятно.
Ну это просто пример неудачный
Там писалось, чтоб короче. А чтоб понятнее, например так:
powers = map (count str) ['a'..'z'] where
  count str ch = length $ filter (== ch) str

unpowers = concat $ zipWith replicate powers ['a'..'z']
Re[3]: О сложности C#
От: criosray  
Дата: 20.08.09 19:36
Оценка: +1
Здравствуйте, FR, Вы писали:


F>>Хм. А лет 10-15 назад частенько говорили, что для полноценной жизни нужны процедуры и модули. А "классы" всякие — ерунда полная и баловство бесполезное.


FR>Сейчас тоже самое говорят, что уже классы не очень то и нужны

FR>Я вот в последнее время немного пишу на OCaml и начинаю соглашатся c этим мнением

Странно, ведь OCaml — это Caml, к которому прикрутили объектно-ориентированный "слой".
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.