News for hackers. Stuff that matters.
Re:Linus vs C++, again by kscaldef on Thursday June 10, 2010 @05:52PM (#1421875)
I think ActiveRecord has exactly the sort of problems that Linus describes, when you get to large codebases and large teams. For example, what does 'save!' do? Well, it doesn't just update the row in the database; it also runs any validations on the object, and any before/after validation/save hooks. So, in general, you need that context to know whether a patch that updates something is correct or reasonable. And if you've got any triggers in your DB, there's a whole other area where something unobvious might be happening.

There's also lots of subtle ways for the DB and a particular object or set of objects in memory to get out of sync and cause hard-to-understand bugs.

ActiveRecord is definitely one of those tools that "make easy things easy". But, at the same time, it's not hard to get overly clever and make a mess with it as well.

Re:Linus vs C++, again by c00p3r on Friday June 11, 2010 @02:30AM (#1423032)
"a tool that make simple things easy" - thank you for this =)
Re:Linus vs C++, again by kscaldef on Friday June 11, 2010 @02:47AM (#1423064)
I was quoting Larry Wall who said that a programming language should "make easy things easy and hard things possible". (Or something close to that... the internet seems a little uncertain on his exact wording.)
Re:Linus vs C++, again by johnyzee on Friday June 11, 2010 @07:30AM (#1423504)
I usually hear it in the form of a denouncement of tools that "make easy things easier and hard things impossible". I think that perfectly describes a bad abstraction layer.
Re:Linus vs C++, again by eru on Friday June 11, 2010 @01:34PM (#1424039)
Haskell is claimed to make hard things easy, and impossible things happen. (Though, who knows, perhaps easy things will become impossible with it?)
Re:Linus vs C++, again by orblivion on Friday June 11, 2010 @04:47PM (#1424697)
Not before making easy things hard, though.
Re:Linus vs C++, again by eru on Saturday June 12, 2010 @12:34AM (#1425548)
You get used to it. The stuff that's easier in other languages than in Haskell is mostly done by hiding distinctions.
Re:Linus vs C++, again by eru on Monday June 14, 2010 @07:02AM (#1429325)
Though not completely. Some stuff is made more complicated than necessary because of the choice of syntax. E.g. variadic function in Haskell vs Scheme. Or the the Haskell record-syntax.