La ciencia de los algoritmos

En las primeras máquinas de computación, la complejidad de los algoritmos utilizados estaba restringida por limitaciones tales como la capacidad de almacenamiento de datos y lo intrincado y tedioso de los procedimientos de programación.

Sin embargo, a medida que estas limitaciones comenzaron a desaparecer las máquinas se empezaron a aplicar a tareas cada vez mayores y más complejas.

A medida que los intentos de expresar estas tareas en forma algorítmica comenzaron a plantear problemas a la capacidad de la mente humana, tuvieron que dedicarse cada vez más esfuerzos de investigación al estudio de los algoritmos y al proceso de programación.

Fue en este contexto en el que el trabajo teórico de los matemáticos empezó a dar sus frutos. Como consecuencia del teorema de incompletitud de Gödel, los matemáticos ya habían estado investigando cuestiones relativas a los procesos algorítmicos que los avances de la tecnología estaban entonces planteando.

Con ese bagaje, el escenario estaba dispuesto para la aparición de una nueva disciplina conocida con el nombre de Ciencias de la computación.

Actualmente, las Ciencias de la computación se han consolidado como ciencia de los algoritmos.

El ámbito de esta ciencia es muy amplio, abarcando campos tan diversos como las matemáticas, la ingeniería, la psicología, la biología, la administración empresarial y la lingüística.

De hecho, los investigadores que trabajan en diferentes ramas de las Ciencias de computación pueden tener definiciones muy distintas acerca de dichas ciencias. Por ejemplo, alguien que se dedique a investigar en el campo de la arquitectura de computadoras podría centrarse en la tarea de miniaturización de los circuitos y ver, por tanto, las Ciencias de la computación como una serie de avances tecnológicos junto con una aplicación de los mismos.

Sin embargo, alguien que investigue el campo de los sistemas de bases de datos podría ver las Ciencias de la computación como una manera de buscar la forma de hacer más útiles los sistemas de información.

Y un investigador en el campo de la inteligencia artificial podría considerar las Ciencias de la computación como el estudio de la inteligencia y del comportamiento inteligente.

Cuestiones que nos permitan centrar el estudio de las Ciencias de la computación.

• ¿Qué problemas pueden resolverse mediante procesos algorítmicos?

• ¿Cómo puede facilitarse el descubrimiento de algoritmos?

• ¿Cómo pueden mejorarse las técnicas de representación y comunicación de algoritmos?

• ¿Cómo pueden analizarse y compararse las características de los diferentes algoritmos?

• ¿Cómo pueden utilizarse los algoritmos para tratar la información?

• ¿Cómo pueden aplicarse los algoritmos para generar un comportamiento inteligente?

• ¿Cómo afecta a la sociedad la aplicación de algoritmos?

Abstracción

El concepto de abstracción impregna hasta tal punto el estudio de las Ciencias de la computación y el diseño de los sistemas de computadoras, que nos vemos obligados a tenerlo en cuenta en este capítulo preliminar.

El término abstracción, tal como lo estamos utilizando aquí, hace referencia a la distinción entre las propiedades externas de una entidad y los detalles de la composición interna de la misma.

Es la abstracción lo que nos permite ignorar los detalles internos de un dispositivo complejo tal como una computadora, un automóvil o un microondas y emplearlo como una única unidad comprensible.

Además, es gracias a la abstracción que se pueden diseñar y fabricar dichos sistemas complejos. Las computadoras, los automóviles y los hornos microondas se construyen a partir de componentes, cada uno de los cuales está a su vez construido a partir de otros componentes más pequeños. Cada componente representa un nivel de abstracción, en el sentido de que el uso de ese componente está aislado de los detalles de la composición interna del componente.

Es, por tanto, gracias a que aplicamos la abstracción que somos capaces de construir, analizar y gestionar sistemas de computadoras grandes y complejos que nos resultarían inmanejables si los contempláramos en su totalidad con un nivel detallado.

En cada nivel de abstracción, contemplamos el sistema en términos de una serie de componentes, denominados herramientas abstractas, cuya composición interna ignoramos. Esto nos permite concentrarnos en cómo interactúa con los restantes componentes del mismo nivel y cómo el conjunto de todos los componentes forma un componente de nivel superior. De este

modo, somos capaces de entender la parte del sistema que sea relevante para la parte del sistema que tengamos entre manos, en lugar de perdernos en un océano de detalles.

Conviene recalcar que el concepto de abstracción no está limitado a los campos de la ciencia y la tecnología. Se trata de una técnica importante de simplificación, gracias a la cual nuestra sociedad ha creado un estilo de vida que sería imposible si no utilizáramos ese concepto. Pocos de nosotros comprendemos cómo se implementan en realidad los diversos aparatos, productos y servicios que tan útiles nos son en la vida cotidiana. Ingerimos alimentos y vestimos prendas de ropa que no seríamos capaces de producir por nosotros mismos.

Utilizamos dispositivos eléctricos y sistemas de comunicación sin entender la tecnología subyacente. Empleamos los servicios de otras personas sin conocer los detalles de sus respectivas profesiones. Con cada nuevo avance, una pequeña parte de la sociedad decide especializarse en su implementación mientras que el resto de nosotros aprendemos a utilizar los resultados en forma de herramientas abstractas. De esta forma, el conjunto de herramientas abstractas de la sociedad se va expandiendo cada vez más y la capacidad de progresar de la sociedad se incrementa.

Veremos que los equipos de computación se construyen en una serie de niveles de herramientas abstractas. También veremos que el desarrollo de sistemas software de gran envergadura se lleva a cabo de una forma modular, de manera que cada módulo se emplea como una herramienta abstracta a la hora formar otros módulos de mayor complejidad. Además, la abstracción desempeña un papel importante en la tarea de hacer progresar a las propias Ciencias de la computación, haciendo a los investigadores centrar su atención en áreas concretas dentro

un campo complejo.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *