Lo que Sql ha hecho mal.
Sql es el lenguaje básico de consultas a bases de datos relacionales. Y no está mal para ser un lenguaje al que tildan de declarativo.
Hasta ahora bien, por cierto, ¿sabéis quién ganó el premio O'Reilly y Google al mejor software de fuente abierta en 2005?.
Pues fue ni más ni menos que sqlite, que, puestos a mencionar, hay que decir que tiene unos excelentes bindings a tcl, su (meta)lenguaje interpretado favorito.
No en vano, DRH (D. Richard Hipp) es un auténtico fiera del tcl como podréis comprobar si os asomáis a los foros y al wiki.
Quizás la cita más famosa del mundo del tcl sea la de que everything is a string (o si no es un string tiene una representación que sí lo es).
Y todo esto venía a colación porque una de muchísimas cosas interesantes que encontraréis en las páginas de sqlite es la siguiente declaración:
Manifest typing
Most SQL database engines use static typing. A datatype is associated with each column in a table and only values of that particular datatype are allowed to be stored in that column. SQLite relaxes this restriction by using manifest typing. In manifest typing, the datatype is a property of the value itself, not of the column in which the value is stored. SQLite thus allows the user to store any value of any datatype into any column regardless of the declared type of that column. (There are some exceptions to this rule: An INTEGER PRIMARY KEY column may only store integers. And SQLite attempts to coerce values into the declared datatype of the column when it can.)
The SQL language specification calls for static typing. So some people feel that the use of manifest typing is a bug in SQLite. But the authors of SQLite feel very strongly that this is a feature. The authors argue that static typing is a bug in the SQL specification that SQLite has fixed in a backwards compatible way.
Fijáos que en el segundo párrafo apunta a algo que Sql ha hecho mal en la opinión de los desarrolladores de sqlite.
Y definitivamente he tenido que darle la razón a DRH et al cuando me he encontrado que tenía que leer cosas en bloque como texto de un Excel y tener que desmenuzarle los tipitos a Oracle.
Me parece que todos las comprobaciones de tipos del mundo, esas que parece nos prometen la máxima seguridad en el manejo de nuestros datos, están en cualquier lenguaje para ser violadas. Ya sea con los apropiados casts o de formas más salvajes.
E indeleble al ser humano, creo que siempre encontraremos la manera de necesitar esas excepciones, como cuando en series temporales necesitamos marcar algún dato como desconocido.
Por eso, y por la inherente belleza del paradigma propuesto por tcl y apoyado por sqlite, creo que DRH tiene razón y definitivamente algo había mal pensado en Sql.
Que no está mal para ser declarativo.



_gAñaN dijo
Muy buena reflexion. Son restricciones que francamente estorban y que los nuevos lenguajes radicados en la filosofia de lo simple logran solucionar.
Me parece extraño el fenomeno que ocurre cuando materializamos ideas en el mundo de lo "visible" (appendix..ver matrix). Tardamos más diseñando la logistica y el "medio ambiente" encargado de mantener viva (a veces obesa) a nuestra idea, que diseñando la idea como tal. Esto tiene un homologo muy conocido en nuestro planeta, se llama "Oracle".
Es un poco lo que ocurre con sistemas de informacion tan (aparentemente) completos como Oracle, el esfuerzo por desarrollar lo que en principio es la "idea", desemboca en un restrictiva y compleja mole de codigo que en ultimas frena el desarrollo en lugar de mejorarlo.
Animo con esos Blogs.. viva el open source..
Jejejejeje si te digo que todo se resume a 20 o 30 comandos (quiza menos si se trata de arquitecturas RISC).. programarias todo el dia en Assembler ?.. :-D .. te dejo con la duda .. Abrazos
1 Febrero 2006 | 12:19 PM