Permitanme un comentario que espero que resulte útil. Soy de los que empezaron con Assembler en 1971 (oops), pasamos por Fortran, Basic y varios más, ahora trabajo con Delphi porque me resulta muy claro y es un lenguaje muy rico y eficiente. El tema es que veo que los principiantes se orientan demasiado rápidamente hacia los sistemas de Base de Datos, un invento que trajo muchos avances desde hace 30 años y actualmente es como un Mandamiento Sagrado.
Veámoslo así: una vez dominado el aspecto algorítmico de un proceso, su ingreso, validación, procesamiento y salida, nos encontramos con el problema de dónde poner los datos masivos, y después cómo extraerlos para mostrarlos de diferentes formas, compartirlos con otros sistemas, asegurar que no se borren, etc.
Ahí es donde aparecen las luces cegadoras: BASE DE DATOS. Parecería que nada se puede hacer sin estudiar SQL, BDE, IDE, ADO, ODBC, ORACLE, INFORMIX, y cien siglas más que ofrecen TODO: es decir, "Dime cómo son tus datos, Yo te los almaceno, Yo te los mantengo, Yo te los doy, Yo me encargo, tú no tienes que saber cómo lo hago" (Obviamente, "tú pagas")
Esto es tentador, pero más tentador es "Yo te doy pantallas de ingreso de datos, Yo te valido todo, Yo busco lo que necesites, Yo te doy reportes ordenados y subtotalizados como quieras, Yo te hago los cálculos y finalmente te hago la copia de backup"
Pero esto tiene su costo. Además del precio del sistema, que puede oscilar entre los 500 y los 50,000 dólares según la magnitud, hay que considerar que:
- El sistema donde van mis datos es una Caja Negra donde no puedo ver nada si no es a través de los programas propios de la Base de Datos.
- La velocidad de proceso puede ser entre 10 y 1000 veces menor que haciéndolo uno mismo
- El espacio en memoria y en disco puede ser entre 100 y miles de veces mayor
- Si falla el sistema, puedo perder los datos desde el último backup igual que si lo hiciera yo mismo.
- Los mensajes de error generalmente aparecen en inglés (al usuario, que no lo habla)
- La dependencia con el sistema y sus defectos es total
- Los programas más simples, para aplicaciones pequeñas, se transforman en pesados monstruos
Pero quizá el peligro más grande se encuentra en el entrenamiento: los programadores se ven tan restringidos por las normas del sistema, que no consiguen desarrollar la esencia de sus programas, que está en el algoritmo del proceso. Se pasan semanas y meses intentando cumplir con todas las normas para tareas que SIN base de datos tomarían un día. Dependen exclusivamente de rutinas hechas por otros, en una terminología abstracta que no dice nada sobre el proceso físico que se está produciendo.
Ignoran totalmente que el manejo de datos en disco está resuelto desde hace 40 años mediante rutinas sencillas que hacen del disco una extensión de la memoria RAM (a la que dan un uso limitadísimo), y que existen métodos de indexación y búsqueda que permiten el acceso directo, a cualquier sector del disco en milisegundos, y la lectura en microsegundos. Y que también está muy bien resuelto el tema de conflicto entre dos procesos que quieren modificar un mismo dato. (record lock y file lock)
Para no hacerla demasiado larga, la sugerencia es que al estudiar programación, inmediatamente se estudien los archivos de Acceso Directo, también llamados despectivamente Archivos Planos, y que se usen extensivamente hasta que llegue la verdadera necesidad de una Base de Datos que haga todo a su modo y sin decirme cómo lo hace.
Cuándo llegará esa necesidad ?
- Cuando tengamos cientos de miles de datos en estructuras complejas interdependientes
- Cuando varios programadores deban compartir los mismos datos y no hay tiempo para entrenar a todos
- Cuando las estructuras sean muy variables y hay que buscarle ubicación a nuevos campos sin parar el sistema
- Cuando la casa matriz internacional así lo exija.
Hace poco un pibe principiante se asombraba de que yo no uso base de datos, en un sistema administrativo y contable muy complejo. Me decía "eso es antiguo!!" Y bueno, la matemática también es antigua..