______________________________________________________________________________PHILOSOPHICA
Una Introducción a las Ciencias de la Computación
Por: Lic. Percy Huertas Niquén
Docente de la Escuela de Ingeniería de Sistemas de la UNSA
Las ciencias de la computación constituyen la disciplina que busca establecer una base científica para diversos temas, como el diseño de computadores, la programación de computadores, el proceso de información, la elaboración de algoritmos para resolver problemas y el proceso algorítmico en sí. También es la ciencia en la que se apoyan las aplicaciones actuales de los computadores y en la que se basarán las aplicaciones del mañana. Queda claro, pues, que no podemos aprender computación si sólo estudiamos unos cuantos temas como materias aisladas o si nos limitamos a prender a usar las herramientas de cómputo actuales.
Gracias al teorema de la incompleción de Gödel, los matemáticos ya habían comenzado a investigar los problemas concernientes a los procesos algorítmicos que empezaron a surgir por el avance de la tecnología. El escenario estaba listo para la aparición de una nueva disciplina conocida como ciencias de la computación.
Hoy día, esta nueva disciplina se ha establecido como la ciencia de los algoritmos. Su alcance es muy amplio, y toca áreas tan diversas como las matemáticas, la ingeniería, la psicología, la biología, la administración de empresas, la lingüística y otras; por lo que el papel central de los algoritmos en las ciencias de la computación queda representado en el siguiente gráfico:
| LIMITACIONES DE
EJECUCION DE COMUNICACION DE REPRESENTACION DE DESCUBRIMIENTO DE |
ALGORITMOS |
Un proceso importante en el desarrollo de una ciencia es la construcción de teorías que se confirman o refutan por vía experimental. En algunos casos tales teorías permanecen latentes por largos períodos, esperando que la tecnología avance hasta el punto en que sea posible comprobarlas. En otros casos, las posibilidades de la tecnología existente influyen en los intereses de la ciencia. Las ciencias de la computación han evolucionado, y siguen haciéndolo, por estas dos rutas. Se sabe que la ciencia surgió de teorías que se originaron mucho antes de que la tecnología pudiera producir las máquinas imaginadas por los primeros investigadores. Incluso hoy, los avances en nuestro conocimiento de los procesos algorítmicos están dando lugar a nuevos diseños de máquinas que desafían los límites de la tecnología. En contraste, otros aspectos de la ciencia se basan en la aplicación de la tecnología actual. Así pues, la computación es una mezcla de investigaciones teóricas y avances tecnológicos, y una cosa influye sobre la otra en una relación de beneficio mutuo.
Si fuéramos a construir una máquina para ejecutar algoritmos, uno de nuestros principales intereses sería la representación interna de los datos. Históricamente, son varias las tecnologías que se han usado para este fin. En teoría, la tecnología con que se almacenan los datos no determina qué problemas podrá resolver la máquina en última instancia; pero, en la práctica, la tecnología aplicada y las técnicas de implantación tienen un enorme efecto sobre las cuestiones de factibilidad, y constantemente se reflejan en las características externas del sistema. Así, del mismo modo que se requieren conocimientos de anatomía para practicar la medicina, conocer las técnicas de almacenamiento interno de una máquina es altamente provechoso para el estudio de las ciencias de la computación.
Al conjunto de componentes tangibles, el computador mismo, las impresoras, el papel de la impresora, las unidades de disco, etc. se le clasifica como hardware. El equipo por sí solo no sirve de mucho porque, sin programas para controlarlo, no hace mucho más que ocupar espacio. En consecuencia, los programas intangibles denominados software son tan importantes como el hardware para una instalación de cómputo.
El software más importante es el sistema operativo, el cual crea el entorno en el cual se lleva a cabo la interacción entre los seres humanos y las máquinas. Este es un software de gran tamaño, cuya comprensión completa rebasa al capacidad de memoria inmediata de la mente humana. Como ejemplos se puede nmencionar los sistemas de inventarios comerciales, los sistemas de matrículas de universitarios o los sistemas automatizados para mantener registros de clientes de firmas comerciales. Los problemas que surgen durante el desarrollo y construcción de estos sistemas son algo más que versiones amplificadas de los problemas a los que nos enfrentamos al escribir programas pequeños.
Por ejemplo, para crear tales sistemas se requieren los esfuerzos de más de una persona por un largo periodo durante el cual existe la posibilidad de que se alteren las especificaciones del sistema propuesto y de que cambie el personal asignado al proyecto. En consecuencia, el área de la ingeniería de software abarca temas, como la gestión de personal y de proyectos, que más bien solemos asociar con la administración de empresas que con las ciencias de la computación. Debemos ser conscientes de esta íntima asociación entre la ingeniería de software y el mundo de los negocios.
Quizá una de las tareas más difíciles para el principiante en las ciencias de la computación sea discriminar entre la ciencia ficción y la ciencia, y en ninguna otra parte es tan nebulosa esta distinción como en el área de la inteligencia artificial. Aunque el objetivo principal de estos estudios es tan sólo la construcción de máquinas capaces de avanzar en ambientes no controlados sin depender del respaldo humano (y así servir mejor a la raza humana), la prensa popular se esfuerza por hacernos creer que los científicos de la computación intentan construir seres humanos mecánicos. Desde luego, hay quienes sueñan en construir modelos de la mente humana. Los investigadores pioneros del área, como John Von Neuman, a menudo orientaban sus ideas es esta dirección e incluso analizaban los componentes de las primeras máquinas en términos de órganos. Sin embargo, todavía se requerirán extraordinarios avances antes de que dichos sueños tengan la posibilidad de convertirse en realidad.
Aunque muchas veces personificamos al computador, hay una distinción primordial entre sus propiedades y las de la mente humana. Las máquinas algorítmicas están diseñadas para efectuar con rapidez y exactitud tareas perfectamente definidas, y esto lo hacen extremadamente bien; sin embargo, las máquinas no poseen sentido común. Cuando se enfrentan a una situación no prevista por el programador, es casi seguro que el rendimiento de la máquina se deteriorará rápidamente. La mente humana, si bien muchas veces se ve abrumada por cálculos complejos, es capaz de entender y razonar. Así pues, aunque una máquina puede trabajar mejor que una persona al calcular soluciones a problemas de física nuclear, la mente humana tiene muchas más posibilidades de entender el problema y de captar el significado de los resultados.
Es evidente, pues, que si hemos de construir máquinas capaces de seguir adelante cuando se enfrenten a situaciones imprevistas o impredecibles, las máquinas deberán volverse más humanas en el sentido de que deben poseer (o al menos simular) la capacidad de razonar. Al reconocer este requisito, los científicos de la computación han recurrido a los psicólogos y a sus modelos de la mente humana con la esperanza de hallar principios que se puedan aplicar a la construcción de máquinas y programas más flexibles.
A pesar de todos los avances logrados en el campo de la inteligencia artificial, muchos problemas de dicho campo siguen rebasando las capacidades de los computadores tradicionales del presente. Las unidades centrales de proceso que ejecutan secuencias únicas de instrucciones no parecen ser capaces de percibir y razonar en niveles comparables con los del multiprocesador que es la mente humana.
Por esta razón, muchos investigadores están recurriendo a máquinas con arquitecturas multiprocesadoras, una de las cuales es la red neuronal artificial. Estas se construyen a partir de muchos procesadores individuales, que se llaman unidades de proceso, siguiendo el modelo de las redes de neuronas en los sistemas biológicos vivos.
Estos conocimientos vienen siendo aplicados en proceso de lenguaje, la robótica, los sistemas de bases de datos y los sistemas expertos que son paquetes de software diseñados para ayudar a las personas en situaciones en las que se requiere un experto en un área específica. Estos sistemas se construyen de modo que simulen el razonamiento de causa y efecto que seguirán los expertos si se enfrentaran a las mismas situaciones.