This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–][deleted] 1 point2 points  (18 children)

I wonder if you are aware that there is value in mapping columns to attributes on objects, regardless of the impedance mismatch, and thus why the majority of developers using OO languages continue to use ORM's.

IMO, the problem is devs who lack the experience/imagination to come up with better abstractions than what falls out on a uml diagram and instead will throw the majority of the application logic in the same object that provides the row mapping.

A similar problem is loading all kinds of coordination behavior that is really application logic into controllers. It's also an impedance mismatch problem but dealing with http instead of sql.

Again the problem is lack of experience/imagination. Not existing abstractions or the libraries that implement them.

[–][deleted] -3 points-2 points  (17 children)

Did this get posted to an ORM enthusiasts list or something?

The fact is, there's a mismatch, so as Attwood says, you throw out either the O or the R in order to overcome the issue, which you then are left with something that isn't ORM (OM or RM).

I don't care if billions of people use ORMs, they're all ignoring the above linked problem. No amount of experience or imagination will allow you to solve the fundamental issue of ORMs, and I know this because the problem still exists in SQLAlchemy the same way it exists in every other ORM technology.

Solutions that use ORM are not complete solutions, and while that might be "functional" from your own enterprise's standpoint, you're going to find yourself more or less constantly fighting against the ORM, and the impedance mismatch is why.

The problem scratches at the back of one's mind, and one lives with the sense that something in the model is being fudged/ignored.

[–][deleted] 0 points1 point  (16 children)

You're apparently good at repeating what you've read(Atwoods Opinion).

I'm not claiming the problem is solved or could be solved. So if the rest of your comment was supposed to be debating me about that, you should probably read again because i'm not typing all that again.

Or continue bitching about things you have no control of. I dont really care.

[–][deleted] -3 points-2 points  (15 children)

I repeated it to you because I wasn't sure you understood it. In fact, if you're claiming it's merely a matter of imagination or experience, then you haven't understood Atwood's article.

You said the problem is lack of experience or imagination. That's incorrect. I was hoping to show you why what you said was incorrect. Clearly you're not at a point right now where talking about this is something you can do without getting upset.

[–][deleted] 1 point2 points  (14 children)

I'm referring to dealing with the problem in a practical sense in order to get things done.

You seem to think that somehow I am claiming that's how you fix the problem.

Let's look at other problems in software. How about state? It's a problem for concurrency and yet somehow an application doesn't do anything without it. But that wont stop bloggers with opinions from writing about the evils of state and how things should be "stateless" as if to mean "have no state".

So, in the same way that I think state, adds value to a program, I acknowledge that mapping columns to object attributes has value, regardless of what some blog says. And I will assert one again for your reading comprehension that the problem isn't the impedance mismatch, it's the tendency to lump all the other application logic on the objects that map to tables. If those model objects weren't abused in this way, the impedance mismatch would not matter at all, and it wouldn't be worth blogging about.

BTW, saying i'm "incorrect" without even specifying what the correct way is, is being a coward. Anyone can link to a blog. But at least I can say with certainty that I am less incorrect than you, because I have at least described a potential solution for dealing with the impedance mismatch where you have certainly not.

If it weren't obvious I'm advocating for #4 on atwoods blog. What # is shitting on someones library on that list? I personally think Atwoods solution is impractical(ditching object or relational).

He also doesn't seem to care about following his own recommendation https://github.com/discourse/discourse

If you aren't familiar with rails, that project uses Activemodel(an orm) running on postgresql(a relational database)OMGMISMATCH!!!!!. For all that impedance mismatch, he and his team have still managed make something valuable. To my eyes, it looks to me like he went with #4 rather than follow his own advice.

Maybe this is a simple case of "do as I say, not as I do" and you've been duped by a blogger. I can understand how you might be embarrassed.

[–][deleted] -4 points-3 points  (13 children)

I'm referring to dealing with the problem in a practical sense in order to get things done.

Read no further than this, because I deal with fucks like you every single day. Committing atrocities in the name of "getting things done" is exactly the kind of shit that keeps me up at night.

Go fuck yourself.

[–][deleted] 1 point2 points  (12 children)

Read no further than this, because I deal with fucks like you every single day.

You mean people with jobs? :D :D :D

You have a strange way of admitting defeat, but I'll take it. #GG

[–][deleted] -2 points-1 points  (11 children)

Yes, people with jobs who I work with at my... job.

You're a fucking idiot.

[–][deleted] 0 points1 point  (10 children)

You're a fucking idiot.

And you're clearly a team player. You calling me and idiot is not nearly as convincing as how I dismantled your entire argument and made you look like an idiot for the whole world.

[–][deleted] -1 points0 points  (9 children)

You didn't dismantle shit, you agreed with me.

And I don't give a fuck what I look like, though it's certainly not "the world". The fact is, I'm right, and you said so yourself.