Re: Нужен ли C#?
От: maloi_alex СССР  
Дата: 30.12.14 19:21
Оценка: +4 :))) :)))
Здравствуйте, vsb, Вы писали:

vsb>Часто читаю мнение. Мол C# безнадёжно обогнал джаву. Сам C# знаю примерно понаслышке (VS запускал, код писал, но, грубо говоря, месяц против 6 лет на Java).


С Наступающим!
Re: Нужен ли C#?
От: Sinix  
Дата: 30.12.14 19:46
Оценка: 9 (1) +3 :))) :)
Здравствуйте, vsb, Вы писали:

vsb>Часто читаю мнение. Мол C# безнадёжно обогнал джаву. Сам C# знаю примерно понаслышке


Сам виноват
  о набросах
Давным-давно, в тоталитарно-кровавом мире людей принуждали хотя бы поверхностно ознакомиться с обсуждаемым предметом. Иначе карма портилась.
Глупая ограниченность образованием и ответственностью нещадно подавляла тягу к самовыражению. Не давала нести правду через истинно истинные техники "я так вижу" и "не изучал == не нужно". Истязала логикой и требовала пруфов.
Мир был скучен и однозначен, и не было в нём места свободным от знаний.

Короче, дикие были обычаи. Но светлая эра интернета позволила отринуть рабские ограничения. Только троллинг, только набросы, только свобода! Так победим!!


Как же я скучаю по древним недобрым временам...



P.S. Если всё ещё нужно, я могу и серьёзно ответить
Re[2]: Нужен ли C#?
От: Pavel Dvorkin Россия  
Дата: 05.01.15 17:48
Оценка: 121 (5) :)
Здравствуйте, Sinix, Вы писали:

S>Давным-давно, в тоталитарно-кровавом мире людей принуждали хотя бы поверхностно ознакомиться с обсуждаемым предметом. Иначе карма портилась.


Э-хе-хе. И задолго до кроваво-тоталитарного мира это уже было.

////////////////////

— Браво! браво! Слушай, Аркадий... вот как должны современные молодые люди выражаться! И как, подумаешь, им не идти за вами! Прежде молодым людям приходилось учиться; не хотелось им прослыть за невежд, так они поневоле трудились. А теперь им стоит сказать: все на свете вздор! — и дело в шляпе. Молодые люди обрадовались. И в самом деле, прежде они просто были болваны, а теперь они вдруг стали нигилисты.

/////////////////////////

(C) Тургенев. Отцы и дети.
With best regards
Pavel Dvorkin
Нужен ли C#?
От: vsb Казахстан  
Дата: 30.12.14 19:13
Оценка: -3 :)
Часто читаю мнение. Мол C# безнадёжно обогнал джаву. Сам C# знаю примерно понаслышке (VS запускал, код писал, но, грубо говоря, месяц против 6 лет на Java).

LINQ. В теории клёво. На практике – где конкретно применяется? ORM? Часто слышу, что Entity Framework – тормознутый отстой. Сам Hibernate применяю, но крайне осторожно. В его кишках ползал не раз. Видел людей, которые вляпались в него с ушами и потом долго и мучительно отмывались, пытаясь добиться достойной производительности. Неужели EF решил все проблемы хибернейта и стал почти недырявой абстракцией? Или по факту надо так же на каждый чих контролировать генерируемые запросы, постоянно тюнинговать маппинги, периодически лазить в самое нутро фреймворка?

Вроде ими можно коллекции обрабатывать вместо функциональных Map/Filter. Реально так делают? Насколько эффективно работает? Сравнимо с тупым циклом?

Async/await. Клёво. Где оно надо? На первый взгляд идея прикольная чисто теоретически. На практике не придумаю, где применять. Тут особенность – пишу в основном веб на достаточно толстых серверах. В случае надобности пустить 1 или 10 потоков не страшно.

Properties. Клёво. Но по факту — те же геттеры-сеттеры. Не пишем 3 буквы и всё. Ерунда какая. Крошечный слой синтаксической сахарной пудры. Практически не стоит упоминания.

Лямбды. Реально надо. В Java 8 появились. То, что захватывают implicitly final переменные, серьёзным ограничением не считаю.

Extension methods. Ещё тоньше пудра. Даже упоминать не буду. Какая разница — писать a.b(c) или b(a, c). Никакой.

Да, всё по мелочи и всё накапливается, тут согласен. Но это всё некритично. Может про что-то важное забыл – напишите.

Хотелось бы спросить — насколько развитие стандартной библиотеки C# успевает за развитием языка? Вот LINQ – выглядит притянутым за уши, или реально отлично лёг на существующие классы коллекций? В Java есть эта беда. Новые фичи языка зачастую не находят достойного отражения в стандартной библиотеке.

Может ну её нафиг, эту Джаву, и нырнуть в C#? На макбук вроде венда ставится. Проблем то по сути не испытываю, но боязно в один момент остаться эдаким знатоком кобола. Языки новые мониторю, всё со своими проблемами. Не мотивирует переходить.
Re[2]: Нужен ли C#?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.02.15 10:14
Оценка: +2 -1
Здравствуйте, andyag, Вы писали:

A>2. В Java прикольные инструменты типа Gradle — одновременно и "проект", и "зависимости", и билд скрипт и ещё куча всего. В .NET всё отдельно: проекты отдельно (их делает студия, руками не получится), зависимости — NuGet (можно наверное руками писать XML, но обычно — мышкой или в студийной консоли), билд-скрипты — MSBuild (ещё более другой XML).


Ты не в теме.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re: Нужен ли C#?
От: andyag  
Дата: 30.12.14 21:05
Оценка: 14 (2)
Здравствуйте, vsb, Вы писали:

vsb>Часто читаю мнение. Мол C# безнадёжно обогнал джаву. Сам C# знаю примерно понаслышке (VS запускал, код писал, но, грубо говоря, месяц против 6 лет на Java).


У них в дотнетах нет всяких клёвых штук типа jetty или hsqldb. По состоянию на сегодня на дотнете невозможно сделать "app.exe", который будет стартовать веб-сервер с готовым к употреблению сайтом. Веб-сервис можно, а полноценный сайт нельзя (http://stackoverflow.com/questions/25478451/owin-self-host-asp-net-mvc). ХЗ как им это удалось, но факт. Но скоро обещают сделать. А язык круче, да.

vsb>LINQ. В теории клёво. На практике – где конкретно применяется? ORM? Часто слышу, что Entity Framework – тормознутый отстой. Сам Hibernate применяю, но крайне осторожно. В его кишках ползал не раз. Видел людей, которые вляпались в него с ушами и потом долго и мучительно отмывались, пытаясь добиться достойной производительности. Неужели EF решил все проблемы хибернейта и стал почти недырявой абстракцией? Или по факту надо так же на каждый чих контролировать генерируемые запросы, постоянно тюнинговать маппинги, периодически лазить в самое нутро фреймворка?


На практике тоже клёво. Если взять джавовский jpql/hql и сделать его частью синтаксиса Java, получится немного меньше, чем LINQ. Кроме монструозных EF и NH есть ещё более легковесные библиотеи (https://github.com/linq2db/linq2db), которые не столько ORM, сколько транслятор из LINQ — в SQL. В мире Java самое близкое, что есть — QueryDSL (http://www.querydsl.com/). Но его за 1 раз не осилишь — простые вещи делаются сложно, сложные вещи — тоже. В LINQ всё сравнительно просто.

vsb>Вроде ими можно коллекции обрабатывать вместо функциональных Map/Filter. Реально так делают? Насколько эффективно работает? Сравнимо с тупым циклом?


Всё что угодно можно обрабатывать. А что нельзя — можно написать немного кода и тоже можно. Если рассмотреть сценарий, когда из базы достаётся несколько коллекций записей и из них нужно скрутить какой-то красивый DTO, в Java это получится сильно длиннее, чем в C#/LINQ. Конкретно Map/Filter/Reduce — всё есть.

vsb>Async/await. Клёво. Где оно надо? На первый взгляд идея прикольная чисто теоретически. На практике не придумаю, где применять. Тут особенность – пишу в основном веб на достаточно толстых серверах. В случае надобности пустить 1 или 10 потоков не страшно.


Это убийственная фича для UI. Код выглядит так, будто все долгие операции выполняются на UI thread. При этом никаких коллбеков, сохранений состояний и прочего. Пишу про UI потому что кроме UI пока нигде не использовал. (http://msdn.microsoft.com/en-us/magazine/dn605875.aspx)

vsb>Properties. Клёво. Но по факту — те же геттеры-сеттеры. Не пишем 3 буквы и всё. Ерунда какая. Крошечный слой синтаксической сахарной пудры. Практически не стоит упоминания.


По большому счёту это те же джавовские bean properties и часто используются в аналогичных ситуациях.

vsb>Лямбды. Реально надо. В Java 8 появились. То, что захватывают implicitly final переменные, серьёзным ограничением не считаю.


Лямбды сами по себе — это фигня. А вот вместе с Expressions — убийственное сочетание. Можно, например, писать вещи типа getName(person => person.name) и получать "name" в виде строки (http://blogs.msdn.com/b/charlie/archive/2008/01/31/expression-tree-basics.aspx)

vsb>Extension methods. Ещё тоньше пудра. Даже упоминать не буду. Какая разница — писать a.b(c) или b(a, c). Никакой.


Сами по себе они довольно бестолковые, но нужны для реализации LINQ (http://msdn.microsoft.com/en-us//library/bb383977.aspx — искать по "the most common")

vsb>Да, всё по мелочи и всё накапливается, тут согласен. Но это всё некритично. Может про что-то важное забыл – напишите.


vsb>Хотелось бы спросить — насколько развитие стандартной библиотеки C# успевает за развитием языка? Вот LINQ – выглядит притянутым за уши, или реально отлично лёг на существующие классы коллекций? В Java есть эта беда. Новые фичи языка зачастую не находят достойного отражения в стандартной библиотеке.


vsb>Может ну её нафиг, эту Джаву, и нырнуть в C#? На макбук вроде венда ставится. Проблем то по сути не испытываю, но боязно в один момент остаться эдаким знатоком кобола. Языки новые мониторю, всё со своими проблемами. Не мотивирует переходить.


ИМХО, смотреть только на язык — не очень хорошая идея.
1. В Java очень крутые pure-Java штуки типа упомянутых ранее Jetty и HSQLDB. В .NET иногда такое встречается, но нечасто.
2. В Java прикольные инструменты типа Gradle — одновременно и "проект", и "зависимости", и билд скрипт и ещё куча всего. В .NET всё отдельно: проекты отдельно (их делает студия, руками не получится), зависимости — NuGet (можно наверное руками писать XML, но обычно — мышкой или в студийной консоли), билд-скрипты — MSBuild (ещё более другой XML). Тут же стоит добавить, что в Java-проектах ничего не стоит использовать параллельно несколько языков не имея никакой головной боли. Например, решение можно писать на Java, а тесты — на Groovy. В .NET такого нету.
3. В Java куча зрелых библиотек на все (бэкендные) случаи жизни. Для одной и той же задачи можно выбрать из нескольких решений, при этом у каждого решения будет своё большое коммьюнити. В .NET с ходу даже не вспомню что-нибудь достаточно масштабное и известное, при этом не сделанное майкрософтом.
4. В Java есть стандарты API, в .NET их нет. Например в Java есть стандарт "валидатор", а в .NET куча велосипедов один лучше другого. У майкрософтовских решений тоже свой.
Re: Нужен ли C#?
От: VladCore  
Дата: 28.01.15 21:45
Оценка: 4 (1)
Здравствуйте, vsb, Вы писали:

vsb>Часто читаю мнение. Мол C# безнадёжно обогнал джаву. Сам C# знаю примерно понаслышке (VS запускал, код писал, но, грубо говоря, месяц против 6 лет на Java).


Дело не в языке. У MS тоже был джава. В первой версии дот нета. я там вот что написал от шока после перехода на джаву из дот нета Java большими круглыми глазами сквозь очки .NET

А обогнал ли дот нет даже нет повода сомневаться. Наш MS всегда опаздывает, но все себе забирает.
Re: Extension methods
От: Qbit86 Кипр
Дата: 30.12.14 19:26
Оценка: 2 (1)
Здравствуйте, vsb, Вы писали:

vsb>Extension methods. Ещё тоньше пудра. Даже упоминать не буду. Какая разница — писать a.b(c) или b(a, c). Никакой.


Разница большая, когда используется fluent API — цепочки вызовов
Автор: Qbit86
Дата: 21.10.14
. Сравни «параллельные» скобки и вложенные, а также порядок вызова методов:

var y = x.First()
    .Second()
    .Third()
    .Fourth();

var y = Fourth(Third(Second(First(x)))); // )))))))
Глаза у меня добрые, но рубашка — смирительная!
Re[3]: Extension methods
От: lazy-cjow-rhrr Россия lj://_lcr_
Дата: 05.01.15 20:34
Оценка: 1 (1)
vsb,

Q>>
Q>>var y = x.First()
Q>>    .Second()
Q>>    .Third()
Q>>    .Fourth();
Q>>

Q>>
Q>>var y = Fourth(Third(Second(First(x)))); // )))))))
Q>>


vsb>Ну сахар это, сахар. Кто так пишет, First, Second, Third. Вынеси в промежуточную переменную и разница вообще сотрётся. Искусственный пример, надуманный. Я пишу постоянно такие утилитные мелкие методы на джаве. Жить можно. Смотрится в C# лучше, я не спорю, но это небольшая разница.


vsb>
vsb>var f1 = First();
vsb>var f2 = Second(f1);
vsb>var f3 = Third(f2);
vsb>var f4 = Fourth(f3);
vsb>var f5 = Nth(x, 5);
vsb>



Преимуществ у цепочек несколько
1. это выражение, и может быть использоваться везде, где можно вставить выражение. И для Скалы, Немерле, F# и подобных это означает "везде".
2. чёткое и ясное изложение того, что собственно требуется, мысль записана в естественном порядке справа налево. Вспомогательные вещи типа скобок, объявлений типов, функций-хелперов и вспомогательных переменных (им ещё имена нужны!) — это шум, наложенный на основной сигнал.
3. удобство программирования в IDE: ставишь точку и выбираешь метод. Если у тебя есть массив, то ты должен знать, что его можно засунуть в ArrayUtil.removeDuplicates(...), а если ты этого не знаешь — ты пишешь велосипед или гуглишь. В случае метода-расширения ты ставишь точку и находишь нужный метод.
quicksort =: (($:@(<#[),(=#[),$:@(>#[)) ({~ ?@#)) ^: (1<#)
Re: Нужен ли C#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.14 19:58
Оценка: +1
Здравствуйте, vsb, Вы писали:

vsb>Может ну её нафиг, эту Джаву, и нырнуть в C#? На макбук вроде венда ставится. Проблем то по сути не испытываю, но боязно в один момент остаться эдаким знатоком кобола. Языки новые мониторю, всё со своими проблемами. Не мотивирует переходить.


Если ты из мира Явы, то ныряй сразу в Котлин или Скалу. Они на ява-машине базируются. Ты в них освоишся куда быстрее. А по функционалу они Шарп превосходят оба.

Ну, немерл советовать не буду, он дотнентый.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Нужен ли C#?
От: vsb Казахстан  
Дата: 30.12.14 20:25
Оценка: +1
Здравствуйте, VladD2, Вы писали:

vsb>>Может ну её нафиг, эту Джаву, и нырнуть в C#? На макбук вроде венда ставится. Проблем то по сути не испытываю, но боязно в один момент остаться эдаким знатоком кобола. Языки новые мониторю, всё со своими проблемами. Не мотивирует переходить.


VD>Если ты из мира Явы, то ныряй сразу в Котлин или Скалу. Они на ява-машине базируются. Ты в них освоишся куда быстрее. А по функционалу они Шарп превосходят оба.


Скалу щупал и даже маленький транслятор написал на ней. У меня смешанные чувства. Такое ощущение, что у создателей была классная идея, но реализация получилась не такой, какой могла бы. Как то всё наворочено, накручено. Как в С++ boost. Но там хотя бы можно понять, они его 30 лет делали, груз веков и всё такое, но тут то лет 5 языку. Где то они промахнулись. Конкретных доводов привести вряд ли смогу, просто чувствую, что язык некрасив с инженерной точки зрения. Но, наверное, это таки лучше, чем Java, если сравнивать по всем параметрам. Но пока речь про C#.

VD>Ну, немерл советовать не буду, он дотнентый.


При всёмм уважении, немерл у меня ассоциируется примерно с хаскелем – в свободное время можно пощупать, но исключительно ради любопытства, ибо в работе сам он не пригодится никогда (полученные знания могут). Может зря.
Re[4]: Extension methods
От: vsb Казахстан  
Дата: 05.01.15 14:00
Оценка: -1
Здравствуйте, barn_czn, Вы писали:

_>Ты прикалываешся или и правда не понимаешь?


Скорее слишком много понимаю.

_>Вот те реальный пример, и про LINQ и про экстеншен методы сразу:


_>
_>var total = users.Where((u)=>u.IsActive).Select((u)=>u.Money).Sum();
_>


_>Напиши это на своей жабе и сравни где лучше.


        int sum = users.stream().filter(u -> u.isActive()).mapToInt(u -> u.getMoney()).sum();


Честно говоря в Java лучше. Пример совсем неудачный. В Java нормальные общепринятые названия для функциональных методов.
Re[5]: mapToInt
От: Qbit86 Кипр
Дата: 05.01.15 15:48
Оценка: +1
Здравствуйте, vsb, Вы писали:

vsb>
int sum = users.stream().filter(u -> u.isActive()).mapToInt(u -> u.getMoney()).sum();


vsb>Честно говоря в Java лучше. В Java нормальные общепринятые названия для функциональных методов.


Это `.mapToInt()` лучше?
А `.mapToMyCustomType()` есть?
Глаза у меня добрые, но рубашка — смирительная!
Re: Нужен ли C#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.14 20:07
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Extension methods. Ещё тоньше пудра. Даже упоминать не буду. Какая разница — писать a.b(c) или b(a, c). Никакой.

vsb>...
vsb>Хотелось бы спросить — насколько развитие стандартной библиотеки C# успевает за развитием языка? Вот LINQ – выглядит притянутым за уши, или реально отлично лёг на существующие классы коллекций? В Java есть эта беда. Новые фичи языка зачастую не находят достойного отражения в стандартной библиотеке.

Вот Extension methods и нужны чтобы можно было присобачить Linq к старым библиотекам. И никакие статические методы их в этом не заменят.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Extension methods
От: vsb Казахстан  
Дата: 30.12.14 20:29
Оценка:
Здравствуйте, Qbit86, Вы писали:

vsb>>Extension methods. Ещё тоньше пудра. Даже упоминать не буду. Какая разница — писать a.b(c) или b(a, c). Никакой.


Q>Разница большая, когда используется fluent API — цепочки вызовов
Автор: Qbit86
Дата: 21.10.14
. Сравни «параллельные» скобки и вложенные, а также порядок вызова методов:


Q>
Q>var y = x.First()
Q>    .Second()
Q>    .Third()
Q>    .Fourth();
Q>

Q>
Q>var y = Fourth(Third(Second(First(x)))); // )))))))
Q>


Ну сахар это, сахар. Кто так пишет, Fitst, Second, Third. Вынеси в промежуточную переменную и разница вообще сотрётся. Искусственный пример, надуманный. Я пишу постоянно такие утилитные мелкие методы на джаве. Жить можно. Смотрится в C# лучше, я не спорю, но это небольшая разница.

var f1 = First();
var f2 = Second(f1);
var f3 = Third(f2);
var f4 = Fourth(f3);
var f5 = Nth(x, 5);
Re[2]: Нужен ли C#?
От: vsb Казахстан  
Дата: 30.12.14 20:30
Оценка:
Здравствуйте, Sinix, Вы писали:

S>Здравствуйте, vsb, Вы писали:


vsb>>Часто читаю мнение. Мол C# безнадёжно обогнал джаву. Сам C# знаю примерно понаслышке


S>Сам виноват


Да я хотел вроде во flame.comp, но промазал, извиняюсь, пост не претендует на большую серьёзность, но за ответ буду благодарен.
Re[3]: Нужен ли C#?
От: VladD2 Российская Империя www.nemerle.org
Дата: 30.12.14 20:55
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>При всёмм уважении, немерл у меня ассоциируется примерно с хаскелем


При всем уважении, у тебя одни ассоциации и поверхностные суждения. Почти все твои утверждения вызывают, мягко говоря, скеписис.

Надо не домысливать, а разбираться с вещами как следует.

Что касается немерла, то писать на нем проще чем на шарпе. К хаскелю он никаким боком. Хаскель это эталонный ФЯ. Немерл, гибрид. В нем нет разных извратов вроде экзистенциальных типов и т.п. Он сугубо практичен. В двух словах Немерл — это соеденение удобного практичного языка и мощной макро-системы. Из минусов — не очень качественная реализация.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Нужен ли C#?
От: nikov США http://www.linkedin.com/in/nikov
Дата: 30.12.14 21:02
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Скалу щупал и даже маленький транслятор написал на ней. У меня смешанные чувства. Такое ощущение, что у создателей была классная идея, но реализация получилась не такой, какой могла бы. Как то всё наворочено, накручено. Как в С++ boost. Но там хотя бы можно понять, они его 30 лет делали, груз веков и всё такое, но тут то лет 5 языку.


Около 11 лет уже с первого релиза Scala.
Re[2]: Нужен ли C#?
От: vsb Казахстан  
Дата: 30.12.14 21:16
Оценка:
Здравствуйте, andyag, Вы писали:

A>ИМХО, смотреть только на язык — не очень хорошая идея.


Я смотрю так. Есть C# + .NET. Это всё обещали в каком то виде портировать на все платформы. Судя по тому, что Resharper уже есть, есть немаленькие шансы увидеть кроссплатыорменную IDE от JetBrains для C# в течениче 1-2 лет. Если всё это произойдёт, пойдёт развитие библиотек и народ может просто хлынуть с Java. Мода, она такая штука. Jetty, HSQLDB это всё по большому счёту пишется 1-2 энтузиастами за обозримое время. Хочется это предвидеть и заранее подготовиться.

Ну или не терять на всё это время, если это всё простой пшик и дела останутся так, как сейчас.
Re[3]: Нужен ли C#?
От: andyag  
Дата: 30.12.14 21:32
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Здравствуйте, andyag, Вы писали:


A>>ИМХО, смотреть только на язык — не очень хорошая идея.


vsb>Я смотрю так. Есть C# + .NET. Это всё обещали в каком то виде портировать на все платформы.


Они уже плюс-минус начали, но выглядит оно как-то подозрительно. Там будет "кроссплатформенное подмножество", а всё остальное — платформозависимое. В результате уже сейчас когда говорят "библиотека X", на самом деле там набор из пяти сборок под разные платформы. "Но этого почти не видно".

vsb>Судя по тому, что Resharper уже есть, есть немаленькие шансы увидеть кроссплатыорменную IDE от JetBrains для C# в течениче 1-2 лет.


Есть некий энтузиаст-хардгейнер: http://habrahabr.ru/post/246043/ но я не смотрел.

vsb>Если всё это произойдёт, пойдёт развитие библиотек и народ может просто хлынуть с Java. Мода, она такая штука. Jetty, HSQLDB это всё по большому счёту пишется 1-2 энтузиастами за обозримое время. Хочется это предвидеть и заранее подготовиться. Ну или не терять на всё это время, если это всё простой пшик и дела останутся так, как сейчас.


Можно посоветовать просто выделить часов 40-80 личного времени и попробовать сделать какой-то хелловорлд типа веб-сервиса с базой, с интеграционными тестами, и т.д. на попсовых ASP.NET Web API, EF, NUnit и чего там ещё вокруг этого. При этом посмотреть каково оно, когда нельзя сказать "./gradlew clean test" или "clean run". Майкрософт вон даже недавно сделал VS Community Edition (http://www.visualstudio.com/en-us/news/vs2013-community-vs.aspx).
Re[3]: Extension methods
От: barn_czn  
Дата: 05.01.15 12:39
Оценка:
vsb>
vsb>var f1 = First();
vsb>var f2 = Second(f1);
vsb>var f3 = Third(f2);
vsb>var f4 = Fourth(f3);
vsb>var f5 = Nth(x, 5);
vsb>


Ты прикалываешся или и правда не понимаешь?

Вот те реальный пример, и про LINQ и про экстеншен методы сразу:

var total = users.Where((u)=>u.IsActive).Select((u)=>u.Money).Sum();


Напиши это на своей жабе и сравни где лучше.
Отредактировано 05.01.2015 12:43 barn_czn . Предыдущая версия .
Re[6]: mapToInt
От: andyag  
Дата: 05.01.15 16:20
Оценка:
Здравствуйте, Qbit86, Вы писали:

Q>Здравствуйте, vsb, Вы писали:


vsb>>
int sum = users.stream().filter(u -> u.isActive()).mapToInt(u -> u.getMoney()).sum();


vsb>>Честно говоря в Java лучше. В Java нормальные общепринятые названия для функциональных методов.


Q>Это `.mapToInt()` лучше?

Q>А `.mapToMyCustomType()` есть?

mapToInt() в иллюстрации нужен, чтобы потом можно было написать sum(). Если вместо mapToInt() использовать просто map(), то ".sum()" нужно будет заменить например на reduce(...).
Re[6]: mapToInt
От: vsb Казахстан  
Дата: 05.01.15 17:02
Оценка:
Здравствуйте, Qbit86, Вы писали:

vsb>>
int sum = users.stream().filter(u -> u.isActive()).mapToInt(u -> u.getMoney()).sum();


vsb>>Честно говоря в Java лучше. В Java нормальные общепринятые названия для функциональных методов.


Q>Это `.mapToInt()` лучше?


mapToInt это следствие того, что в Java все типы делятся на примитивные и классы.

Q>А `.mapToMyCustomType()` есть?


map(u -> u.getAnything()) есть.
Re[7]: mapToInt
От: Yoriсk  
Дата: 05.01.15 17:57
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>mapToInt это следствие того, что в Java все типы делятся на примитивные и классы.


И поэтому деньги в int хранятся?

Q>>А `.mapToMyCustomType()` есть?

vsb>map(u -> u.getAnything()) есть.

У класса user есть поле типа Currency. Как это будет выглядеть в java?
Отредактировано 05.01.2015 17:57 Yoriсk . Предыдущая версия .
Re[8]: mapToInt
От: vsb Казахстан  
Дата: 05.01.15 19:11
Оценка:
Здравствуйте, Yoriсk, Вы писали:

vsb>>mapToInt это следствие того, что в Java все типы делятся на примитивные и классы.


Y>И поэтому деньги в int хранятся?


Да хоть в чём.

Q>>>А `.mapToMyCustomType()` есть?

vsb>>map(u -> u.getAnything()) есть.

Y>У класса user есть поле типа Currency. Как это будет выглядеть в java?


map(u -> u.getAnything()).collect(currencySum())


currencySum это т.н. collector, который пишется один раз и по-хорошему предоставляется разработчиком класса Currency. Пишется в 3 строчки. Можно без лишних функций через reduce, если это делается один раз и не хочется писать реюзабельный код:

        Currency sum = users.stream()
                .filter(u -> u.isActive())
                .map(u -> u.getMoney())
                .reduce(Currency.ZERO, (x, y) -> x.add(y));


Кстати это всё одной строчкой распараллеливается на много потоков, если у нас пользователей многие миллионы. И всё аккуратно посчитается, просуммируется, и вернёт один результат довольно эффективно. Насколько такое однострочное распараллеливание востребовано, я затрудняюсь сказать, я таким вряд ли буду часто пользоваться, но фича такая есть.
Отредактировано 05.01.2015 19:22 vsb . Предыдущая версия . Еще …
Отредактировано 05.01.2015 19:17 vsb . Предыдущая версия .
Отредактировано 05.01.2015 19:12 vsb . Предыдущая версия .
Re: Нужен ли C#?
От: Aлeкceй  
Дата: 15.01.15 18:28
Оценка:
Здравствуйте, vsb, Вы писали:

vsb>Может ну её нафиг, эту Джаву, и нырнуть в C#? На макбук вроде венда ставится. Проблем то по сути не испытываю, но боязно в один момент остаться эдаким знатоком кобола. Языки новые мониторю, всё со своими проблемами. Не мотивирует переходить.


Ну это все-таки не совсем кобол. Платформа развивается (особенно вот в последние годы), даже пилят нормальные дженерики и примитивы убрать собираются. Но и самое главное, что новые проекты пока что пишутся, не как на джаваскрипт, конечно, но все же. В любом случае, на дотнет кор не скоро еще начнут с джавы переписывать, года так 2-3 пройдет, и вообще вопрос, будет ли кто-нибудь переписывать.
Re[2]: Нужен ли C#?
От: agat50  
Дата: 15.01.15 20:36
Оценка:
Здравствуйте, Aлeкceй, Вы писали:

A>Здравствуйте, vsb, Вы писали:


vsb>>Может ну её нафиг, эту Джаву, и нырнуть в C#? На макбук вроде венда ставится. Проблем то по сути не испытываю, но боязно в один момент остаться эдаким знатоком кобола. Языки новые мониторю, всё со своими проблемами. Не мотивирует переходить.


A>Ну это все-таки не совсем кобол. Платформа развивается (особенно вот в последние годы), даже пилят нормальные дженерики и примитивы убрать собираются. Но и самое главное, что новые проекты пока что пишутся, не как на джаваскрипт, конечно, но все же. В любом случае, на дотнет кор не скоро еще начнут с джавы переписывать, года так 2-3 пройдет, и вообще вопрос, будет ли кто-нибудь переписывать.


А зачем переписывать? Есть же ikvm. Я правда не знаю насколько он активно используется.
Re[4]: Оффтоп, наверное
От: Mamut Швеция http://dmitriid.com
Дата: 15.01.15 21:13
Оценка:
LCR>2. чёткое и ясное изложение того, что собственно требуется, мысль записана в естественном порядке справа налево.

Ээээ. Что? Я вот пишу слева направо

Более того, записи в стиле
f(g(x))

x = f()
y = g()

h(i(j(x, y)))

это же банальная математическая запись, которую еще в школе изучают



А в ФП стиле сделать цепочку раз плюнуть:
start() ->
  case chain([ fun some_fun/1
             , fun some_fun/2
             ....
             ]) of
    {error, _} = E -> E;
    {ok, Output}   -> Output
  end.
  
some_fun1(Input0) ->
  Input = modify_input(Input0),
  {ok, Input}.
  
some_fun2(Input0) ->
  try
    {ok, weird_stuff(Input0)}
  catch
    _:Reason -> {error, Reason}
  end.
 
%% сама цепочка
chain([], Output) -> {ok, Output};
chain([F|T], Input) ->
  case F(Input) of
    {ok, Output}   -> chain(T, Output);
    {error, _} = E -> E
  end.


dmitriid.comGitHubLinkedIn
Re[4]: Extension methods
От: BrainSlug Израиль  
Дата: 15.01.15 21:43
Оценка:
ну Mamut уже ответил, я только добавлю — имхо скобки vs точки, не суть важно(хотя точки и мне больше нравятся...... ), а вот возможное применение — это внесение всяких примесей через расширения+интерфейсы.
.
Отредактировано 15.01.2015 21:50 BrainSlug . Предыдущая версия . Еще …
Отредактировано 15.01.2015 21:50 BrainSlug . Предыдущая версия .
Re[4]: Нужен ли C#?
От: Grienders Земля  
Дата: 12.02.15 16:19
Оценка:
Здравствуйте, VladD2, Вы писали:


VD>Что касается немерла, то писать на нем проще чем на шарпе. К хаскелю он никаким боком. Хаскель это эталонный ФЯ. Немерл, гибрид. В нем нет разных извратов вроде экзистенциальных типов и т.п. Он сугубо практичен. В двух словах Немерл — это соеденение удобного практичного языка и мощной макро-системы. Из минусов — не очень качественная реализация.


Код .NET ведь открыли, Nemerle скоро должен начать захватывать мир, вроде как? Мне он нравился, но я потом с винды уже на linux и mac, а там .net нет (моно не считается).
Re[3]: Нужен ли C#?
От: andyag  
Дата: 21.02.15 10:51
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, andyag, Вы писали:


A>>2. В Java прикольные инструменты типа Gradle — одновременно и "проект", и "зависимости", и билд скрипт и ещё куча всего. В .NET всё отдельно: проекты отдельно (их делает студия, руками не получится), зависимости — NuGet (можно наверное руками писать XML, но обычно — мышкой или в студийной консоли), билд-скрипты — MSBuild (ещё более другой XML).


AVK>Ты не в теме.


Развейте мысль.
Re[4]: Нужен ли C#?
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 21.02.15 22:36
Оценка:
Здравствуйте, andyag, Вы писали:

AVK>>Ты не в теме.

A>Развейте мысль.

.csproj это и файл проекта, и скрипт для msbuild, и ссылка на файл с описанием пакетов и еще много чего еще. И при этом для многих вещей есть design time support в студии.
... << RSDN@Home 1.0.0 alpha 5 rev. 0 on Windows 8 6.2.9200.0>>
AVK Blog
Re[5]: Нужен ли C#?
От: andyag  
Дата: 22.02.15 09:06
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, andyag, Вы писали:


AVK>>>Ты не в теме.

A>>Развейте мысль.

AVK>.csproj это и файл проекта, и скрипт для msbuild, и ссылка на файл с описанием пакетов и еще много чего еще.


Мысль немного другая была. Типичный проект на дотнете состоит из:

1. Одного sln. Интеграция со студией — да, есть смысл править руками — нет.
2. Одного repositories.config. Интеграция со студией — да, есть смысл править руками — нет.
3. Кучи csproj. Интеграция со студией — да, есть смысл править руками — в очень-очень редких случаях.
4. Кучи packages.config. Интеграция со студией — да, есть смысл править руками — нет.
5. Одного (или нескольких) отдельных "Build.xml", где в зависимости от специфики проекта описывается процедура построения дистрибутива (если это десктопный софт), либо процедура деплоймента (если веб). Интеграция со студией — нет, пишется полностью руками — да.

В своём оригинальном сообщении я это месиво сравниваю с Gradle — в нём для солюшна такого же масштаба будет один общий build.gradle на все проекты, плюс по одному build.gradle на каждый проект отдельно. Эти файлы пишутся руками, IDE туда никакого мусора не кладёт. Адреса репозиториев, зависимости из этих репозиториев, процедуры сборки дистрибутива, запуска, прогона тестов — это всё описывается в единственном месте.

AVK>И при этом для многих вещей есть design time support в студии.


Ну я так и написал — "мышкой".
Re[2]: Нужен ли C#?
От: andyag  
Дата: 22.02.15 16:59
Оценка:
Здравствуйте, VladCore, Вы писали:

VC>Здравствуйте, vsb, Вы писали:


vsb>>Часто читаю мнение. Мол C# безнадёжно обогнал джаву. Сам C# знаю примерно понаслышке (VS запускал, код писал, но, грубо говоря, месяц против 6 лет на Java).


VC> Java большими круглыми глазами сквозь очки .NET


Нет out-параметров, каждый решает проблему по своему. Проходит через пару недель реабилитации в форме активного портирования .NET паттернов в JAVA. Пиши в комментариях что делаешь ты вместо out.

Ответ очевиден: возвращать всё что нужно вернуть. Я параллельно пишу на дотнете и на джаве, не помню чтобы отсутствие out/ref хоть раз помешало.

Нет сборок.

Есть. Это файлы с расширением jar.

IDEA по умолчанию предлагает все зависимые библиотеки запаковать в один свой JAR.

Здесь есть отличия между миром .NET и миром Java: в мире дотнет вы полностью полагаетесь на студию — т.к. сборка в студии первична. В мире Java не так. В Java есть инструменты типа Gradle/Maven, которые собственно описывают все нюансы вашего проекта, а среды типа Idea смотрят на эти Gradle/Maven и глядя на них делают свой IDE-шный проект. Этот IDE-шный проект вторичен — его обычно даже в репозиторий с кодом не кладут.

У всех проблемы с деплойем приложений на Application Server – это, по моему, самая популярная проблема в JAVA.

Я не могу сказать, что Майрософтовский WebDeploy сильно адекватнее, чем деплоймент приложения на Tomcat например. Но это не очень важно: в мире Java сейчас тренд "bring your own servlet container" — деплоймент теперь делается на уровень ниже. Для Gradle даже есть плагин, который сразу строит образ Docker: собрал и деплой на любой линукс. Я тут немного в кучу собрал servlet container и application server, но, ИМХО, не принципиально: JEE — это далеко не вся Java.

Нет сборок – нет подписи сборок. Ты не можешь быть уверен какая именно версия попадет в продакшн. Пишите в коментариях если я не прав.

Всё сильно зависит от формата приложения и от процедуры деплоймента. Выше уже описал вариант с Docker. Там не то что "конкретно вот эту версию библиотеки" можно сделать, там конкретный билд JRE можно указать.

Нет привычного Windows окружения с хорошей интеграцией в .NET:

Службы Windows & IIS

Чтобы запустить .NET веб-приложение под Windows, нужно ставить IIS. Чтобы запустить Java веб-приложение, нужна только Java. Потому что Tomcat/Jetty доступны как библиотеки — их не обязательно качать, устанавливать, настраивать.
Есть инструменты для того, чтобы оформить свою Java-программу как Windows service. Популярны, всякие JIRA/YouTrack/TeamCity и ещё куча коробочных продуктов так и работают.

Простота обслуживания БД в SQL Server/Express.

Тут не понятно — какое отношение это имеет к Java или .NET? Если речь про IDE, то в Idea Ultimate есть возможность лазить на любые сервера БД прямо из среды. В студии не помню — кроме SQL Server куда-то лазить можно?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.