metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2010-08-04 10:14 am

DLR, IronPython, etc

Наткнувшись в процессе проектирования проги на то, что мне одновременно необходимы фичи обычного C# со статической типизацией и фичи динамических языков, полез смотреть на IronPython/DLR и тому подобное. Ну, с ходу того, что меня интересует (адекватная интеграция с DBMS) я не нашел, GUI сложнее чем MessageBox("Hello, world"); тоже и в связи с этим возник вопрос:
На кого рассчитаны все нововведения в .NET 3.5/4.0?
Всякие там LINQ to SQL/Entity Framework/Expression Trees/DLR и прочее, причем production статус этого всего совершенно непонятен, неизвестно, что отомрет, что будет использоваться, итд. Все примеры для этого, которые я видел, они, мягко выражаясь, на уровне "select * from Customers -> УРА, Я ЗНАЮ SQL".

DLR, Expression Trees - рассчитаны на дизайнеров языков, причем в проекте IronScheme от DLR отказались ("but decided to abandon this idea because the DLR branch the project used became out of sync with the trunk, and also because the DLR, according to the developers, could not support the majority of the Scheme's requirements"). Как будто и так языков мало.

В общем, это все выглядит каким-то откровенным гиковством со стороны Microsoft, похоже там всякие выпускники CS факультетов затрахали в мозг менеджмент до состояния "пусть теребят свои монады как хотят, абы нас не трогали".


Это все при том, что высокоуровневые фичи в .NET как были кривые, так и остались, типа медленной отрисовки DataGridView или over-architected мрака в System.ComponentModel.

Re: Так лучше?

[identity profile] zamotivator.livejournal.com 2010-08-04 11:13 am (UTC)(link)
Всё равно пиздец
(deleted comment)

Re: Так лучше?

[identity profile] zamotivator.livejournal.com 2010-08-04 11:17 am (UTC)(link)
А зачем это писать задом наперёд?
Что это даёт?

Re: Так лучше?

[identity profile] asinitsyn.livejournal.com 2010-08-04 12:04 pm (UTC)(link)
Так влезло в синтаксис языка. А есть лучшие примеры?

Re: Так лучше?

[identity profile] zamotivator.livejournal.com 2010-08-04 12:06 pm (UTC)(link)
Я не знаю, все примеры что видел как-то... Ну не очень, скажем так.

Re: Так лучше?

[identity profile] metaclass.livejournal.com 2010-08-04 12:08 pm (UTC)(link)
Да печаль там с этими примерами.
Такое ощущение, что авторы ничего сложнее "выбрать всех сотрудников отдела" никогда в жизни не писали, и то их это фрустрировало до состояния "а не придумать/заюзать ли нам очередной ORM"
(deleted comment)

Re: Так лучше?

[identity profile] metaclass.livejournal.com 2010-08-04 01:30 pm (UTC)(link)
ну шо вы все меня жыдь учите

Я знаю, кто это, я знаю историю разработки LINQ, монады, которые у него унутре, но практического смысла примерам вида "from c in Customers select c" это не придает.

Ну заменю я LINQ аналогичный запрос на сервере, если использовать LINQtoSQL - то еще заменю часть слоя маппинга между базой и приложением, но глобально это проблемы "двух мест представления предметной области" не решит
(deleted comment)

Re: Так лучше?

[identity profile] metaclass.livejournal.com 2010-08-04 01:55 pm (UTC)(link)
Сейчас я как раз эту генерилку "модель->схема, код, маппинги, gui" и пишу, и пытаюсь по максимуму использовать то что уже есть готового в .NET, чтобы не повторяться.

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

Re: Так лучше?

[identity profile] asinitsyn.livejournal.com 2010-08-04 12:11 pm (UTC)(link)
Отож. Так что этот пример достаточно хорош. Он уже есть.

Re: Так лучше?

[identity profile] valgring.livejournal.com 2010-08-04 06:29 pm (UTC)(link)
intellisense дает.

Re: Так лучше?

[identity profile] zamotivator.livejournal.com 2010-08-04 06:30 pm (UTC)(link)
И всё???
P.S. Крутой ник

Re: Так лучше?

[identity profile] valgring.livejournal.com 2010-08-04 06:51 pm (UTC)(link)
Ну это уже немало, когда много источников, с кучей полей, очень помогает, ну я не спец в линке, это то что очевидно сразу, кроме этого, думаю, syntax check and type checking сразу работают.
т.е. такая фигня не пройдет
from user in users select new {user.Name*user.Age}
пример искусственный, апроксимируйте на выборку из нескольких источников сразу и большим количеством полей.