Descripción
Dos de las disciplinas clásicas en todas las carreras relacionadas con la Informática y las Ciencias de la Computación son Estructuras de Datos y Algoritmos, o bien una sola disciplina, si ambas se estudian integradas en Algoritmos y Estructuras de Datos. El estudio de estructuras de datos y de algoritmos es tan antiguo como el nacimiento de la programación y se ha convertido en estudio obligatorio en todos los currícula desde finales de los años sesenta y sobre todo en la década de los setenta cuando apareció el Lenguaje Pascal de la mano del profesor Niklaus Wirtz, y posteriormente en la década de los ochenta con la aparición de su obra ya clásica Algorithms and Data Structures en 1986. ¿Porqué C y no C++/Java o Visual Basic/C#? Muchas Facultades y Escuelas de Ingeniería, así como Institutos Tecnológicos, comienzan sus cursos de Estructuras de Datos con el soporte de C y muchas otras con el soporte de C++ o Java, fundamentalmente, de hecho, en nuestra propia universidad, en algunas asignaturas relacionadas con esta disciplina se aprende a diseñar y construir estructuras de datos utilizando C++ o Java. ¿Existe una solución ideal?
Evidentemente, consideramos que no y cada una de ellas tiene sus ventajas y es la decisión del maestro y profesor quien debe elegir aquella que considera más recomendable para sus alumnos teniendo en cuenta el entorno y contexto donde se desarrolla su labor, al ser él quien llevará la dirección y responsabilidad de la formación de sus alumnos y pensará en su mejor futuro y encuadre dentro del currículo específico de su carrera. Sin embargo, hay muchas razones por las cuales pensamos que C es más apropiado que C++ o Java, para la introducción y formación a nivel medio, inclusive avanzado, en estructuras de datos, siempre que se recurra al paradigma estructurado, con soporte en tipos abstractos de datos y no al puro enfoque orientado a objetos en cuyo caso C++ o Java tienen, sin duda, todas las ventajas y sería necesario utilizar uno u otro lenguaje, y también como antes el profesor tendría siempre la última palabra. Una de estas razones es evidente y se deduce del propio nombre de los lenguajes. C++ es un C más es decir, un C más amplio y potente que se construyó para manejar complejidad a gran escala. Iguales razones, incluso aumentadas, se puede decir de Java, al ser un lenguaje más moderno, con mejores funcionalidades, orientado a la programación en Web
El primer problema que se suele presentar al estudiante de estructura de datos que, probablemente, procederá de un curso a nivel básico, medio o avanzado de introducción o fundamentos de programación o bien de iniciación de algoritmos, es precisamente el modo de afrontar información compleja desde el principio. Aunque es verdad que C++1 tiene muchas ventajas sobre C, muchas de estas ventajas no se hacen evidentes hasta que un programa se vuelve o hace más complejo y, si me apuran, más completo. En este caso el paradigma orientado a objetos $POO$ es una herramienta de programación y organizativa muy poderosa y con grandes ventajas para la enseñanza y posterior tarea profesional. Por otra parte, la mayoría de los estudiantes de informática, ciencias de la computación, ingeniería de sistemas o de telecomunicaciones, requieren conocer bien el flujo C-C++ y viceversa.
Por consiguiente, parece más natural enseñar primero las estructuras de datos en C y una vez conocidas y mejor dominadas las técnicas de diseño y construcción de estructuras de datos en C, y cuando se tenga constancia de que el alumno dispone de conocimientos, al menos, básicos de POO entonces intentar pasar a C++ o Java. Por otra parte, aunque a primera vista por su enfoque orientado a objetos, C++ podría ser más interesante, en el caso del análisis y diseño de algoritmos y estructuras de datos esta propiedad añade una complejidad inherente, ya que pensamos la idea conceptual de algoritmo encaja mejor en el paradigma estructurado, aunque luego la implementación en clases y objetos, puede darle una nueva potencialidad. Pensando en esta transición es la razón por la cual se ha incluido un capítulo dedicado a conceptos teórico-prácticos de orientación a objetos. En cualquier caso, el curso está soportando la comprensión del Tipo Abstracto de Datos $TAD$ de modo que, aunque, se enseñan las estructuras de datos bajo la metodología estructurada, el estilo de programación empleado en el texto se basa en el estudio de tipos abstractos de datos como base para la formación en orientación a objetos.
¿Qué piensas de este libro?
No hay comentarios