Thoughts on SQL vs ORM
On Thu, Jun 12, 2014 at 5:39 AM, <suamere at gmail.com> wrote:
> When presented with options, these are the possible stances:
> 1. (Lead) Become educated on the options and decide on one.
> 2. (Follow) Become educated on the options and remain impartial.
> 3. Remain ignorant of the similarities/differences and decide on one.
> 4. (Get out of the way) Remain ignorant of the similarities/differences and remain impartial.
> Of course, deciding on one could also be a case-by-case basis. Maybe for one use you decide on one for one reason, and for the other case you decide on another option.
> Thank you for choosing number 3 and casting a vote without understanding. Any other stance is understandable, but like most people, you choose to hurt the social group you are participating in by making uninformed decisions.
That's not quite fair. Suppose I'm looking at working with a
PostgreSQL database, and I have five options:
1) Write SQL and use libpq (if C) or psycopg2 (if Python)
2) Use Fred's Fancy Feature-Rich Database Interface
3) Use Joe's Simple Database Interface
4) Use Nancy's Dict-Like Database Interface
5) Bypass all libraries and open a socket connection on port 5432
I have a fairly good understanding of what's needed for option 5, as
I've worked with Pike's PostgreSQL module. And it's a lot of work, so
I wouldn't do it. (That would be your choice 1, "Lead".) But it's not
worth my time to learn three pieces of middle-ware before making my
decision, so I'm going to remain fairly ignorant of at least two of
them - I'd look at their quick-start guides and basic feature lists,
possibly pick one of them to explore in detail, and then make a
decision between that and the first option. Ultimately, I have to make
a decision, because code can't be impartial - either I'm using some
module or I'm not - and it's usually impossible to truly become
educated on all the options.
So I'd say there's more of a spectrum between your choices 1 and 3
than you imply. Perhaps I can word it this way: Choose one of the
options you know about, and the quality of the decision scales with
the number of other options you also know. (Which is why I like to
know huge numbers of programming languages. When I choose Python for a
job, it's because it's better than possibly a hundred other languages
that I could have chosen.)