metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2008-12-13 01:25 am

ORM

Чтение споров про ORM приводит меня в дикое уныние. Такое ощущение, что все мегагуру-разработчики языков программирования никогда сами не писали DB-centric applications и поэтому ни один язык общего назначения для ORM не подходит в принципе.
Единственное, что мне приходит в голову в этом плане - это язык, у которого докомпиляция бы производилась уже в рунтайме, с метаданными из живой базы. Или же чтобы код автоматически генерился и компилировался при разработке тоже из метаданных базы, а в рунтайме производилось сравнение метаданных на которых прога компилировалась и на которых ее запускают.
На данный момент из похожего - разве что Nemerle с его метапрограммированием на макросах, но это ж экспериментальное шыло, без развитой userbase.

[identity profile] inhate.livejournal.com 2008-12-13 06:48 am (UTC)(link)
ABAP ? :)

[identity profile] gds.livejournal.com 2008-12-13 07:44 am (UTC)(link)
разумные моменты в тех спорах, которые я читал, касались вопроса "нафига orm?", а не "подходит ли язык для orm?". orm можно на любом ОО-языке изобразить.

А кроме Nemerle есть ещё одно известное мне "конкретное решение" -- плохо, что только для postresql+ocaml -- pgocaml.

[identity profile] samurai-within.livejournal.com 2008-12-13 08:44 am (UTC)(link)
PowerBuilder ? :) Оно с базой чуть ли не срощеное. Правда увы проприертарщина и вендовщина

[identity profile] max-posedon.livejournal.com 2008-12-13 09:20 am (UTC)(link)
"Единственное, что мне приходит в голову в этом плане - это язык, у которого докомпиляция бы производилась уже в рунтайме, с метаданными из живой базы."

#!/usr/bin/ruby

require 'active_record'
ActiveRecord::Base.establish_connection(
:adapter => "mysql",
:host => "localhost",
:database => "mydb",
:username => "root"
)

# предположим что users(id, nickname, email);
class User < ActiveRecord::Base
end

User.find_by_nickname('metaclass').email
=> "metaclass@some.domain.com"

Так что, зря ты так про всех разработчиков, есть и вменяемые. Да, для нормального юзабельного ORM, нужен язык с !широчайшей поддержкой метапрограммирования! -> таких я знаю 2: Lisp и Ruby (Nemerle я в глаза не видел), причём ruby есть и на .Net-е в виде IronRuby, так что пользуйтесь, а не нойте.

[identity profile] tonal.myopenid.com (from livejournal.com) 2008-12-13 12:12 pm (UTC)(link)
На Python-не ORM пишется не задумываясь. :)
Ну и есть кучка готовых под любой вкус.

[identity profile] slonopotamus.livejournal.com 2008-12-13 04:42 pm (UTC)(link)
Нафига SQL? :) Он чужероден любому языку программирования. Посматриваю на happs. Я не хочу делать 'select count(*) from table where field > 5'. Я хочу Table.filter(field > 5).size()

[identity profile] http://users.livejournal.com/renny_/ 2008-12-13 09:00 pm (UTC)(link)
A Entity Framework + LINQ чем понравились?

[identity profile] http://users.livejournal.com/_zerg/ 2008-12-21 05:51 am (UTC)(link)
BLToolkit? Это не ORM, но примерно вот это "у которого докомпиляция бы производилась уже в рунтайме, с метаданными из живой базы."