>Почему люди, которые пишут на .NET так радуются такой фичи как запросы на подобие SQL из коллекций? Это и вправду такая killer feature?
На .NET не пишу, но SQL это и на самом деле гораздо лучший способ работать с множествами чем через for(i=0,..., for(i=0,... , for(i=0,... Все эти ООП-аппликейшен сервера по факту суть регрессия к навигационному способу работы с данными.
> Почему люди, которые пишут на .NET так радуются такой фичи как запросы на подобие SQL из коллекций? Это и вправду такая killer feature?
Люди, которые пишут на Common Lisp, такими фичами несколько десятилетий как пользуются. И, да, это очень удобно. Может и C# допилят до такого удобства, лет через 15.
>Люди, которые пишут на Common Lisp, такими фичами несколько десятилетий как пользуются. И, да, это очень удобно. Может и C# допилят до такого удобства, лет через 15.
> Кто-нибудь использует Mono на работе, т.е. не j4f, а для коммерческого пр-я?
Я, например. Причём, под Win32, а не только OS X и Linux. Причина - IKVM и managed C# compiler. Таких killer features у оригинального .NET ещё долго не появится.
Все, кто оправдывает, привидите, пожалуйста, ситуацию, когда у вас есть коллекция, из которой нужно сделать хитрую выборку, с учетом того, что эта коллекция ранее была не получена из БД.
> Все, кто оправдывает, привидите, пожалуйста, ситуацию, когда у вас есть коллекция, из которой нужно сделать хитрую выборку, с учетом того, что эта коллекция ранее была не получена из БД.
Да элементарно, даже обычные кэши с LINQ гораздо проще и нагляднее организуются.
Я это читал давно и со временем пришел к выводу что реляционный подход - это все разумное, доброе и вечное а ООП - это трата времени на написание бесполезных маппингов и их мэйтенанс. Ходя индусов много и все жрать хотят, да.
как правило, нетривиальный проект потребует нетривиального подхода. Хочешь писать под mono - надо писать именно на нем, написать под .NET, а потом чтобы работало под mono - либо тривиально либо работать не будет.
Особенной задницей прикручивается ASP.NET, mod_mono - глюкалка, и к ней нужен свой "подход". Наблюдаются постоянные проблемы с кодировками и несовместимостью web.config (сейчас точно не помню, но было летом)
В целом если приложение написано прямыми руками - работает стабильно. Не течет, не греет воздух. Даже на маломощных VPS ведет себя прилично. Используется 1.9.1 (да, кстати, удручает свежесть моно в дистрибутивах, в частности Debian.)
Windows.Forms не использую, если что-то и писалось для себя на WF - работает под mono, но выглядит на рабочем столе как куча говна посреди клумбы (особенно на маке).
>Да понятно, что ты. Ты же не программист, а тупое ламерьё. >У тебя все структуры данных простые и примитивные? Поздравляю, ты быдлокодер. А у меня сложная логика, и высокие требования к производительности.
вах-вах! и ты всю сложную логику держишь исколючительно в структурах, а еще ты наверное свое хранилище данных написал, правильно? ведь БД - это ж настраивать надо, уметь с ней работать, да и тормозят они... я понял твою логику и уровень образования. вопрос закрыт.
>> ООП - это трата времени на написание бесполезных маппингов и их мэйтенанс.
>Надеюсь, ты перепутал OOP и ORM от усталости или еще какой-то уважительной причины.
Да не совсем так - начинать разработку приложений надо отталкиваясь от стратегии потребления IO и прочих ресурсов а не от объектной структуры. Но всегда делают наоборот, предварительно почитав Эриха Гамму и Ко.
Интересно. Расскажи в двух словах, как можно проектировать приложение отталкиваясь от стратегии потребления ресурса. Мне просто интересно. И, что в твоем понимании "стратегия потребления ресурса"? Это случаем не набор use case?
Ну, вот например, есть поток однотипных записей, поступающих в реальном времени, с time stamp. Приложение должно реагировать на каждое новое поступление (строго n раз в секунду), и при этом может требоваться доступ к значениям за заданные промежутки времени в прошлом. Типичнейшая в финансах задача. Когда подобные задачи лошьё пытается проектировать в объектно-ориентированной религии, получается полный швах.
Блин, ты знаешь, что приложение "потребляет ресурсы". Ты знаешь как оно их потребляет - API у тебя есть какой-то или еще что. Составь список того, что твое приложение должно делать - это все Use Case. От них и отталкиваешься в дальнейшем проектировании.
> А как делать модель приложения не зная как оно должно потреблять ресурсы?
Ыыыы.... выzснение, сколько ресурсов будет будет потребляться - одна из задач модели. Аналитическая модель, имитационная; для простых случаев - прикидки на клочке бумаги, для сложных - полнофункциональный прототип.
P.S. вообще-то разговор был о навигационном способе данных vs SQL, тебя всегда так заносит в сторону?
>Ты знаешь как оно их потребляет - API у тебя есть какой-то или еще что. Составь список того, что твое приложение должно делать - это все Use Case. От них и отталкиваешься в дальнейшем проектировании.
По факту обязательно кто-нибудь будет передавать 1Гб рекордов через ArrayList в построитель отчетов, и с имея гибкую объектную модель Жавы отрефакторить все это можно будет только переписав все нафиг.
Но, при проектировании мы же не говорим о реализации. Поэтому кто это будет - ArrayList или другой объектик, который будет прозрачно тянуть данные из БД мы не знаем. Нам важна структура. Важно что есть построитель отчетов - ReportBuilder, есть какой-нибудь ReportDataRepository или как тебе больше нравится. И ReportBuilder получает этот ReportDataRepository. Ну или как-то так. А что из себя внутри представляет ReportDataRepository - это не дело проектирования.
Согласен, что при проектировании невозможно предусмотреть все тонкости связанные с производительностью, но процесс-то не линейный, а спиралевидный.
P.S. Я не сторонник чистого RUP, но основные концепции... почему бы и нет.