#43 Re: Programacion general desde cero
Excelente observación. Ahora lo que interesa es la eficiencia, y afortunadamente es mucho más fácil de conseguir que , digamos, 20 años atrás.
Un factor del que no hablamos, y que también corresponde al tema "Programación desde cero", es el trabajo en equipo. Es sabido que un proyecto para un solo programador debe ser clarísimo y estar muy bien documentado, porque si no, ese mismo programador no entenderá nada de lo que hizo, pasado un año. Mucho más delicado es el tema cuando son varios programadores en el mismo proyecto o en otros proyectos que usan los mismos datos.
En ese caso mi veloz ChotoBase tiene un inconveniente grave: el diseño de datos es mío, y si no lo documento bien, va a ser más fácil para otros programadores hacerlo de nuevo, que modificarlo o usar sus datos en otra aplicación. Ahí es donde brillan los sistemas SQL, porque las estructuras están a la vista y son modificables (con cuidado) sin afectar programas existentes.
Por ejemplo, yo tengo definido un diseño de registro para una Carta de Porte (documento que acompaña y legaliza la carga de un camión y después sufre muchos procesos), que tiene muchos datos de distintos tipos, que ocupan 1400 bytes. Para mayor eficiencia de disco, lo dimensiono a 2048 bytes dejando esos 648 bytes vacíos. La semana que viene la AFIP pide que se agreguen los Nros. de Patente de Hasta Cuatro Perros que Persiguen al Camión, y fecha de vacunación (del chofer). Bien, tengo lugar y lo agrego, amplío unos campos en la pantalla de Carta de Porte, introduzco unas validaciones, envío el nuevo programa a los usuarios, y chau. Pero si me piden ALGO QUE OCUPE 650 bytes ? Si no encuentro un lugarcito libre, tendré que definir un NUEVO diseño y hacer un programa CONVERSOR que lea el archivo original y pase todo al nuevo archivo, obviamente parando los sistemas y realizando el proceso en 10, 100 ó 500 usuarios.
Esto lo resuelve un sistema DataBase sin necesidad de convertir nada. Puede hacer esto y mucho más, y los datos siguen accesibles para los demás programadores y las demás aplicaciones.
Ahí tenemos entonces otro de los criterios que hay que evaluar ANTES de hacer la primera línea de código. Hay otros programadores en mi proyecto? Hay otras aplicaciones que usen mis datos ? Debo usar yo los datos de otras aplicaciones ? Es aceptable exportar/importar datos en formatos compatibles, o necesito compartir datos en tiempo real?
Nótese que no hablo de otros USUARIOS de la misma aplicación en una red. Eso se resuelve muy bien con un esquema de bloqueo y desbloqueo de archivos compartidos, para evitar que dos usuarios choquen en la modificación de un registro, sin recurrir a Base de Datos.
Por las dudas, toda la entrada/salida a disco en mi sistema, está concentrada en una biblioteca de procedimientos genéricos llamados DBIN(..) DBOUT(..) DBEXTRAER(..) DBNEXT(..) DBPREV(..) DBEMPTY(..) DBEXISTS(..) etc. que diseñé justamente para poder un día reemplazar toda la entrada/salida por llamados a algún sistema Base de Datos standard. Pero así no voy a aprovechar todo el sistema Base de Datos. Simplemente voy a salvar el resto de mi programa de caer en el olvido total. No va a ser más eficiente.
Perdón por la extensión, saludos !
Editado por escamillo - 20.08.2009 01:40 hs.