Хочется провети опрос по поводу любимых и наиболее часто используемых возможностей данного языка, появившихся в новом фреймворке (да и в старых тоже).
Хочется провети опрос по поводу любимых и наиболее часто используемых возможностей данного языка, появившихся в новом фреймворке (да и в старых тоже).
Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.
6 августа 2008 в 15:05
Александр Senpay Пушкарев:
> Возможно я консервативен слишком – я вот си и жаву люблю и хоть тресни
Возможно Всё-таки C# и .NET вообще развиваются гораздо быстрее, чем Java и JVM, что привлекает любителей функциональных и динамических языков.
Смотрите, например, //en.wikipedia.org/wiki/Dynamic_Language_Runtime и //en.wikipedia.org/wiki/Da_Vinci_Machine
6 августа 2008 в 15:05
Значит не прав. Давно не слежу уже за развитием проекта. Может даже появится желание посмотреть на него поближе еще раз.
6 августа 2008 в 15:04
Александр cutwater Сапрыкин:
> Тем более если не ошибаюсь он сейчас на уровне 1.1 фреймвокра.
Ошибаетесь, Mono сейчас в промежуточном состоянии между .NET 2.0 и 3.5. Например, поддерживаются C# 3.0, Window Forms 2.0, LINQ to XML, LINQ to Objects.
Текущий статус можно посмотреть здесь: //www.mono-project.com/Roadmap#Mono_1.9
Mono нужен тем, кто хотел бы иметь C# на платформах, отличных от Windows.
6 августа 2008 в 15:03
Немного с запозданием но отвечу. О моно слышал, не в деревне живем без инету. Моно не нужен. Тем более если не ошибаюсь он сейчас на уровне 1.1 фреймвокра. Просто есть уже стабильная платформа – джава. И моно не дотянет в ближайшее время до джавы или .NET. Хотя сам по себе проект интересный.
6 августа 2008 в 13:04
ну каждый останется при своем я думаю) моно как проект мне лично нравится. Но технология .нет мне лично не очень симпатично. Возможно я консервативен слишком – я вот си и жаву люблю и хоть тресни
6 августа 2008 в 11:05
2 Михаил m0zzzG Шаханов:
Monkey patching… Это скорее зло, чем полезный функционал, ИМХО
6 августа 2008 в 11:04
Александр, пытался Если не использовать Windows Forms то в общем-то возможно. Оно и понятно, Windows Forms как джавовский SWT использует для отрисовки API ОС (а не как Swing, который рисует контролы сам). Mono же изначально не расчитан исключительно на какую-то одну платформу, поэтому у него есть (неравноценная) замена — GTK#. И не стоит забывать — Mono – молодой проект и от текущей версии .NET отстает минимум на 2 года.
6 августа 2008 в 11:04
yield в C# используется для ленивых вычислений.
О ленивых вычислениях: //ru.wikipedia.org/wiki/%D0%9B%D0%B5%D0%BD%D0%B...
О ленивых вычислениях в C# (и их примерная реализация): //blogs.msdn.com/pedram/archive/2007/06/02/lazy...
6 августа 2008 в 11:04
Александр Senpay Пушкарев:
> интересно, Иван, пытались ли вы код написаные в вижул студио на моно откомпилировать? будете очень удевленны.
Я пытался, и да, был очень удивлён. Довольно сложное приложение, которое активно использовало Window Forms и сеть, практически без использования напильника заработало в OpenSUSE.
6 августа 2008 в 11:03
интересно, Иван, пытались ли вы код написаные в вижул студио на моно откомпилировать? будете очень удевленны.
6 августа 2008 в 11:03
В данный момент я пишу на руби, и мне было приятно увидеть новые возможности инициализации:
var myVar = new MyClass { MyProp1 = val1, MyProp2 = val2 };
и расширения для классов:
public static class StringExtension {
public static string Capitalize(this string str) {
// какой-то код
}
}
Сделав это, можно спокойно писать:
var str = "vasya";
Console.WriteLine(str.Capitalize());
Понятно, что это просто синтаксический сахар и компилятор переделает этот код в вызов статического метода, но всё равно приятно =)
6 августа 2008 в 11:02
> 2. ИМХО для джавы в том числе и свинг требования к ресурсам еще простительны, скорость как плата за кроссплатформенность.
.NET тоже кроссплатформенный, просто полная реализация в настоящее время существует для одной платформы (не считая Windows Mobile). Прочитайте про Mono.
6 августа 2008 в 9:02
Только начал осваивать новшества языка, переведя на него свой старый проект. Поэтому однозначно удобной фичей считаю автоматической выведение типа локальной переменной из инициализатора (т.е. ключевое слово 'var').
6 августа 2008 в 2:03
1. Работал. Знаю. Плевался долго, но приходилось.
2. ИМХО для джавы в том числе и свинг требования к ресурсам еще простительны, скорость как плата за кроссплатформенность.
3. Холивар начался бы, если бы я в бреду пытался доказать, что Java/Python/Brainfuck круче чем ваш .NET.
4оно же главное. Холивар не нужен. Тема ведь о "фичах" языка и платформы.
А требования к ресурсам всего лишь очередная "фича"
6 августа 2008 в 2:01
2Михаил m0zzzG Шаханов.
Вопрос насчет yeild меня сильно заинтересовал, поэтому провел маленькое исследование.
Про генерацию yeild нашел вот что:
When the compiler sees yield return it emits a nested private class. This nested private class will be named something like <Get>d__0. More importantly, the nested class implements IEnumerable, IEnumerator, and IDisposable. In short the dynamically generated class is a kind of state machine that uses an enumerator (an implementation of the Iterator behavior pattern) to keep track of where your code is in the iteration process.
То есть походу он строит конечный автомат на основе кода метода, при этом часть состояний этого автомата соответствуют вызовам yeild. По сути это приводит к тому что код метода выполняется не полностью, а ровно столько сколько надо вызывающему коду.
Пример:
public static IEnumerable<string> YeildTest()
{
Console.WriteLine("1st");
yield return "string 1";
Console.WriteLine("2nd");
yield return "string 2";
Console.WriteLine("3rd");
}
Если мы заберем только первый элемент:
foreach(string s in YeildTest())
{
Console.WriteLine(s);
break;
}
То вывод будет:
>1st
>string 1
А если все:
foreach(string s in YeildTest())
{
Console.WriteLine(s);
}
То вывод будет:
>1st
>string 1
>2nd
>string 2
>3rd
Поэтому истинными (ИМХО) кажутся следующие утверждения:
1) Не следует особо мудритьс кодом метода в котором используется yeild, дабы компилятор не свихнулся (и не налажал) переделывая его в конечный автомат
2) Можно смело использовать yeild в случае если будет нужна только часть возвращаемых значений, лишней работы (а следовательно и падения производительности) не произойдет
6 августа 2008 в 0:00
Пошол холивар, надо поучаствовать =)
2Александр cutwater Сапрыкин – Самое страшное в холиварах — это то, что они появляются на пустом месте и их зачинщики всегда забывают аргументировать свой ответ. Чем вам WPF-то не угодил? Вы с ним работали хотя бы? Если да, то скажите, пожалуйста, сколько он у вас отожрал ресурсов. На моей допотопной машине с 256мб озу можно терпеть, а приналичии гб+ всё работает просто отлично.
5 августа 2008 в 23:04
Александр, Java в среднем жрет не меньше. Один Swing чего стоит
5 августа 2008 в 23:01
это фичей языка то назвать нельзя. единственное в чем у .NET нет равных, так это быстрое создание юзеринтерфейса под винду и по части отжирания ресурсов.(эт я о 3.5 и WPF)
5 августа 2008 в 22:05
Но в других языках можно определить этот метод вручную. В любом случае в C# его нужно переопределять, чтобы он имел смысл.
5 августа 2008 в 22:01
на мой взгляд, самое удобное в C# – везде можно дописать после функции или класса ".tostring()" – иногда очень помогает, по крайней мере во многих языках такого не видел
5 августа 2008 в 21:05
2 Александр Senpay Пушкарев
поддерживаю
5 августа 2008 в 19:00
а я предпочитаю избегать платформо-зависимые технологии… мне как то java и c++ ближе
5 августа 2008 в 18:00
Меня интересуют итераторы, в частности конструкции с yield return. Возможность очень удобная, только я так и не понял, как это работает (на уровне MSIL), и следовательно, оценка производительности. Я пытался смотреть дизасемблированный код, но честно говоря, мало понял из сгенерённых конструкций (в частности, там генерится явно итератор, но вот сам алгоритм работы остался для меня загадкой).
5 августа 2008 в 17:01
- анонимные классы
- лямбда-выражения
- дженерики (обобщения)
5 августа 2008 в 16:02
LINQ