metaclass: (Default)
[personal profile] metaclass
Наткнувшись в процессе проектирования проги на то, что мне одновременно необходимы фичи обычного 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.

Date: 2010-08-04 11:08 am (UTC)
From: [identity profile] zamotivator.livejournal.com
new Query ().Where (c => c.Name.StartWith ('i')).Select (c => new {c.Id, c.Name}) ;
Какой пиздец, а.
(deleted comment)
(deleted comment)

Re: Так лучше?

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

Re: Так лучше?

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

Re: Так лучше?

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

Re: Так лучше?

From: [identity profile] metaclass.livejournal.com - Date: 2010-08-04 12:08 pm (UTC) - Expand
(deleted comment)

Re: Так лучше?

From: [identity profile] metaclass.livejournal.com - Date: 2010-08-04 01:30 pm (UTC) - Expand
(deleted comment)

Re: Так лучше?

From: [identity profile] metaclass.livejournal.com - Date: 2010-08-04 01:55 pm (UTC) - Expand

Re: Так лучше?

From: [identity profile] asinitsyn.livejournal.com - Date: 2010-08-04 12:11 pm (UTC) - Expand

Re: Так лучше?

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

Re: Так лучше?

From: [identity profile] valgring.livejournal.com - Date: 2010-08-04 06:51 pm (UTC) - Expand

Date: 2010-08-04 11:12 am (UTC)
From: [identity profile] metaclass.livejournal.com
Не, в коде там более культурно выглядит:

from c in db.Customers
where c.Name="zhopnij ad"
select c.ID,c.Address

а вышеприведеннное это то же самое, но собранное руками, вместо монад :)

Date: 2010-08-04 11:13 am (UTC)
From: [identity profile] zamotivator.livejournal.com
from c in db.Customers
where c.Name="zhopnij ad"
select c.ID,c.Address

Зачем они запросы задом наперёд переписали?

Date: 2010-08-04 11:14 am (UTC)
From: [identity profile] metaclass.livejournal.com
Ну монада же. return в конце)

Date: 2010-08-04 11:19 am (UTC)
From: [identity profile] metaclass.livejournal.com
Я скорее спросил бы почему в SQL задом наперед сделано, если представить запрос как последовательность фильтров для данных (у меня радиофизика бэкграунд, если чо), то логичнее как раз запись аналогичная LINQ

Date: 2010-08-04 11:23 am (UTC)
From: [identity profile] zamotivator.livejournal.com
SELECT Что читаем FROM откуда, WHERE как фильтруем.
Что не так? =)

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2010-08-04 11:25 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 11:31 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2010-08-04 11:32 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 11:32 am (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-08-04 11:49 am (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 11:53 am (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-08-04 11:59 am (UTC) - Expand

(no subject)

From: [identity profile] asinitsyn.livejournal.com - Date: 2010-08-04 12:06 pm (UTC) - Expand

Date: 2010-08-04 06:18 pm (UTC)
From: [identity profile] http://users.livejournal.com/_windwalker_/
затем что code completion имён выбираемых полей делать тривиально в варианте когда эти поля / колонки идут после собственно запроса.
когда сначала имена колонок а затем откуда их можно выбрать - то code completion должен иметь прямой интерфейс к мозку, чего щаз нет.

never send a man to do a machine's job (c) agent Smith

Date: 2010-08-04 01:47 pm (UTC)
From: [identity profile] voidbent.livejournal.com
Толсто :)

Date: 2010-08-04 11:15 am (UTC)
From: [identity profile] w00dy.livejournal.com
имхо в функциональном виде выглядит оно явно приличней, посему в таком и не пишу никогда :)

Date: 2010-08-04 11:18 am (UTC)
From: [identity profile] metaclass.livejournal.com
Хм, я в голове как-то могу LINQ транслировать в выполняемый код, а вот обратно не могу :)

Date: 2010-08-04 11:29 am (UTC)
From: [identity profile] w00dy.livejournal.com
Ну а как правильно то?

Я это рассматриваю как конвеер (чем, по сути, это всё и является). По конвееру едут кортежи. Каждый этап это одна элементарная операция: фильтрация (Where), агрегация (GroupBy), слияние (Join), маппинг (Select), сортировка (OrderBy). В конце может стоять предикат (Any, All). Всё просто.

Date: 2010-08-04 11:32 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Ну а как правильно то?
Правильно не выпендриваться с маргинальной хуйнёй, которая будет в моде год-другой, а писать обычный, тупой код - SQL, Perl/Python по вкусу.
(deleted comment)

Date: 2010-08-04 11:45 am (UTC)
From: [identity profile] zamotivator.livejournal.com
Вот только тут надо решить кто маргинальная хуйня - LINQ или SQL :)
Вы упоролись что ле?
(deleted comment)

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 12:04 pm (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-08-04 03:16 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 04:19 pm (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-08-04 04:56 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 04:59 pm (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-08-04 05:25 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 05:26 pm (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-08-04 05:59 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 09:37 pm (UTC) - Expand

(no subject)

From: [personal profile] wizzard - Date: 2010-08-04 10:27 pm (UTC) - Expand

(no subject)

From: [identity profile] w00dy.livejournal.com - Date: 2010-08-04 10:50 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 10:58 pm (UTC) - Expand

(no subject)

From: [identity profile] zamotivator.livejournal.com - Date: 2010-08-04 10:56 pm (UTC) - Expand

(no subject)

From: [identity profile] thedeemon.livejournal.com - Date: 2010-08-05 01:39 am (UTC) - Expand

Date: 2010-08-04 12:10 pm (UTC)
From: [identity profile] asinitsyn.livejournal.com
Они из разных миров. Для БД лучше SQL-я нет. Ну да больше и вообще ничего нет.
Юзать базу из приложения может LINQ и хорош. Но мне не нравится LINQ для SQL никак вообще. Не полетит это.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Sep. 24th, 2025 11:30 pm
Powered by Dreamwidth Studios