There are many advantages when using a language to build a 3d object instead of using a interactive editor.
You can use version control on your model, so you can see why something was changed or why it was build in that way.
Changes on your model are also easier. For example, if you want to change the size of a hole on a cube, you have to change just one line of code, instead of a minute fiddling with your 3d editor.
But the problem is that the openscad has its quirks. For example, the variable scope is really, really weird.
Here is a sample from a openscad wikibook :
p = 4; test(5); echo(p);
p = 6; test(8); echo(p); module test(q) { p = 2 + q; echo(p); p = 4 + q; echo(p); }
ECHO: 9 ECHO: 9 ECHO: 6 ECHO: 12 ECHO: 12 ECHO: 6
WTF!!
So, I thought why would I learn yet another language when I could use python and use an editor to wich I was already familiar?
At first, Blender seems to have all the functionalities openscad has, and even if it doesn't, it's easy to add them.
To prove it could be done I started rewriting the openscad examples as python scripts for blender on blender 2.67.
The first example worked, but I couldn't make the second example. Turns out there's a bug on blender when you try to use the boolean modifier union on two meshes that have a intersection on a plane and vertices on the same coordinate.
On this screenshot the rigth part is what you expect blender to do and the left is what it actually does. I moved the central cube a little on the left example so the union worked.
Blender file
Blender is not supposed to be used as a cad program, and from the looks of it, this bug will not be fixed .
So, back to openscad ....