- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
void BubbleSort(dynamic arr)
{
for (int i = arr.Length - 1; i > 0; i--)
{
for (int j = 0; j < i; j++)
{
if (arr[j] > arr[j + 1])
{
int t = arr[j];
arr[j] = arr[j + 1];
arr[j + 1] = t;
}
}
}
}
WebKill_HochetVBan 11.07.2010 08:40 # 0
Webkill 11.07.2010 12:18 # +1
И вернуть на стадию 2.0
Поак что новые фичи все бесполезные.
Однак это не знчаит, что нужно пректатить юзать .NET
C# это только один из языков
Конечно по уму нужно делать void BubbleSort<T>(T[] arr)...
WebKill_HochetVBan 11.07.2010 12:42 # +1
Один только dynamic позволяет:
1)Писать программы схожие с истинно объектно-ориентированной моделью SmallTalk.
2)Позволяет легко и просто использовать паттерн Мултиметод.
3)Простое взаимодействие с COM.
4)Возможность обработки обращений к несуществующим методам (используя DynamicObject).
5)Добавляет часть возможностей, что теряются при использованиии generic C#, взамен отсутствующих template C++.
Хотя конечно он жутко устарел. Он был ещё в Delphi 7, а может и раньше. Да и обезьяны его могут понатыкать везде. Страшно будет поддерживать такой код. Да и реально нужно только 2,3,5.
Webkill 11.07.2010 12:55 # +1
Я знаю, что dynamic позволяет. Просто ящитаю, хотя я и фанат C# (v2.0), что у языка должна быть какая-то идеология и какие-то ограничения по поводу того, что в него пихать, а что нет.
С таким подходом майкрософта (в каждой новой версии нужно обязательно добавить каких-нибудь killer-фич, суть такова... динамики вызывают COM, interop и linq набегают на лямбды... можно yield'ить), через несколько лет C# будет большой неподъёмной кучей говна как C++.
late-bound давно был в бейсике, алсо.
WebKill_HochetVBan 11.07.2010 13:10 # +1
carsten 19.06.2011 12:59 # 0
Я вот думаю, для таких случаев нужно делать специальный domain-specific language, а не городить поддержку domain-specific-фич в general-purpose-языке. Ведь не зря же они постоянно рекламируют .NET как *Common Language* runtime, т.е. по идее особо сложную обёртку над COM мы можем описать на специальном COM-языке, и затем слинковать с C#, Basic и т.д. А в итоге выходит, что почти все пишут на C#, в который намешиваются куча всякой хрени на каждый случай, потому что "так удобнее". В том-то и дело, что как-раз таки говнокод удобнее и писать... Нормальный код требует усердия...
WebKill_HochetVBan 11.07.2010 12:50 # 0
Webkill 11.07.2010 12:58 # +1
появление бигинтегера в сишарпе это не появление фичи, а допиливание BCL по части отсутствующего функционала.
WebKill_HochetVBan 11.07.2010 13:07 # 0
Webkill 11.07.2010 13:13 # +1
Только он Internal Class в самих либах.
Можно было просто скопипастить класс из транка.
И никакой велосипедной промышленности.
WebKill_HochetVBan 11.07.2010 13:18 # 0
Webkill 11.07.2010 13:22 # +1
Pahan Menski 20.07.2010 13:20 # 0
Анонимус 12.07.2010 04:04 # 0
>>И вернуть на стадию 2.0
Лол, в кои-то веки я согласен с Вами.
Я писал на C# во времена 2.0 (и даже получит 70-536), и могу сказать что C# версии 2.0 -- отличный язык, во многом лучше джавы (если не считать делегатов, который приводили к утечке указателя в говнокодах).
Но потом пришли маркетологи и появился var, extensions methods, dynamic, linq итд...
А меня на джаву перевели, и слава богу)
WebKill_HochetVBan 12.07.2010 10:46 # +3
Ооо. А можете привести такой говнокод на говнокоде?
Webkill 12.07.2010 13:09 # −2
Чё-то тя заклинило на var'е. Тебе уже, по-моему, раз пять объяснили что это и почему это хорошо.
C# 2.0 с var'ом -- пиздатенюшка-пиздатень.
Lure Of Chaos 12.07.2010 16:17 # −3
в общем, радуйтесь, семейство дотнет скоро пополнится еще одним ЯП - пхп!
Webkill 13.07.2010 02:30 # +1
Мля, var никакого отношшения к dynamic не имеет.
Вообще же dynamic появился первоначально в CLR, как часть DLR, чтобы им могли пользоватьяс динамические языки.
Потом какому-то пришибленному пришгло в голову отразить это в C#. Видимо, больше отражать нечего было. Ведь как известно, в Майкрософт стараются в каждой новой версии добавлять всё больше новых фич, чтобы юзеры продолжали тратить денюжки. Вот видимо и сидел Хейльсберг чесал жопу: что бы ещё добавить в C#, а тут как раз ребята из Microsoft Relearch подготовили System.Dynamic (ещё они же для какого-то другого проекта и написали BigInteger, который потом впустили в CLR 4.0)
Короче если до C# 2.0, может быть, даже до C# 3.0, были какие-то идеи, то щас идёт в плане C# реактивное высасывание из пальца, к сожалению :(
Nagg 13.07.2010 09:50 # 0
1) var - отличная конструкция, позволяет повысить читабельность, особенно когда у длинные обобщенный тип (типа Dictionary<List<Smth>>)
2) dynamic - очень полезен в COM interop, особенно в excel, где раньше приходилось кучу нужных методов вызывать через рефлексию
3) linq\лямбды - вообще шикарная вещь. попробуйте на C# 2.0 взять 2 коллекции, отфильтровать\отсортировать\преобразоват ь и сджойнить - у вас туева куча кода будет, а тут всё красиво в 1 строчку кода (даже можно в красивом sql подобном синтаксисе)
Иногда кажется, что ругают дотнетошарп за эти фичи только те, кто не умеет ими пользоваться и боиться получить в поддержку код с их применением.
Анонимус 13.07.2010 18:52 # −2
Кроме того мне чужда идея добавления в язык всего говна, которого кому-то не хватает. Давайте еще встроим работу с регулярками (как в perl), унифицируем работу с массивами и мапами (как в php) и вообще каждый год будем добавлять по семь новых полезных конструкций в язык.
Кстати, покажите мне пожалуйста реально работающий проект с linq (опенсурсовый например) -- я не йорничаю, мне правда любопытно
Nagg 13.07.2010 19:00 # −1
Webkill 13.07.2010 20:36 # +1
где?
Nagg 13.07.2010 20:49 # −5
Webkill 14.07.2010 02:28 # −1
guest 19.06.2011 21:04 # 0
Мистер Хэнки 13.07.2010 11:33 # +5
P#P
inkanus-gray 11.07.2010 16:24 # 0
Меня беспокоит девятая строчка: int t = arr[j];
WebKill_HochetVBan 11.07.2010 16:51 # +2
WebKill_HochetVBan 11.07.2010 17:06 # +2