1. Ciencias de la computación
Las ciencias de la computación o ciencias computacionales (popularmente solo computación) son
aquellas que abarcan las bases teóricas de la información y la computación, así como su aplicación
en sistemas computacionales.1 2 3
Existen diversos campos o disciplinas dentro de las ciencias de la
computación o ciencias computacionales; algunos resaltan los resultados específicos del cómputo
(como los gráficos por computadora), mientras que otros (como la teoría de la complejidad
computacional) se relacionan con propiedades de los algoritmos usados al realizar cómputos y otros se
enfocan en los problemas que requieren la implementación de cómputos. Por ejemplo, los estudios de
la teoría de lenguajes de programación describen un cómputo, mientras que la programación de
computadoras aplica lenguajes de programación específicos para desarrollar una solución a un
problema computacional específico.
La informática se refiere al tratamiento automatizado de la información de una forma útil y oportuna. No
se debe confundir el carácter teórico de esta ciencia con otros aspectos prácticos como Internet.
Según Peter J. Denning, la cuestión fundamental en que se basa la ciencia de la computación es: "¿Qué
puede ser (eficientemente) automatizado?".4
Historia
La historia de la ciencia de la computación antecede a la invención del computador digital
moderno. Antes de la década de 1920, el término computador se refería a un ser humano que
realizaba cálculos.
5
Los primeros investigadores en lo que después se convertiría las ciencias de la
computación estaban interesados en la cuestión de la computabilidad: qué cosas pueden ser
computadas por un ser humano que simplemente siga una lista de instrucciones con lápiz y papel,
durante el tiempo que sea necesario, con ingenuidad y sin conocimiento previo del problema. Parte
de la motivación para este trabajo era el desarrollar máquinas que computaran y que pudieran
automatizar el tedioso y falible trabajo de la computación humana.
Durante la década de 1940, conforme se desarrollaban nuevas y más poderosas máquinas para
computar, el término computador se comenzó a utilizar para referirse a las máquinas y ya no a sus
antecesores humanos. Conforme iba quedando claro que las computadoras podían usarse para
más cosas que solamente cálculos matemáticos, el campo de la ciencia de la computación se fue
ampliando para estudiar a la computación (informática) en general. La ciencia de la computación
comenzó entonces a establecerse como una disciplina académica en la década de 1960, con la
creación de los primeros departamentos de ciencia de la computación y los primeros programas de
licenciatura (Denning 2000).
Campos de las ciencias de la computación
Fundamentos matemáticos
Criptografía
Consta de algoritmos para proteger datos privados, incluido el cifrado.
Teoría de grafos
Recursos elementales para las estructuras de almacenamiento de datos y para los algoritmos de
búsqueda.
Lógica matemática
La lógica matemática estudia los sistemas formales en relación con el modo en el que se codifican
nociones intuitivas de objetos matemáticos como conjuntos, números, demostraciones y
computación.
Teoría de tipos
Análisis formal de los tipos de datos y el uso de estos para entender las propiedades de los
programas, en particular la seguridad de estos.
Teoría de la computación
Teoría de la computación
Teoría de autómatas
Teoría de la computabilidad
Teoría de la complejidad computacional
Límites fundamentales (en especial de espacio en memoria y tiempo) de los cómputos.
2. Algoritmos y estructuras de datos
Análisis de algoritmos
Algoritmos
procesos formales usados para los cómputos, y eficiencia de estos procesos.
Estructuras de datos
organización y manipulación de los datos
Lógica y computabilidad
estudio de diferentes tipos de lógicas, su poder expresivo, decidibilidad, aplicaciones.
Especificación
desarrollo de métodos para definir formalmente (matemática y lógicamente) el comportamiento
esperado de un algoritmo, para luego probar terminación y correctitud.
Lenguajes de programación y compiladores
Compiladores
formas de traducir programas computacionales, usualmente a partir de lenguajes de alto
nivel a lenguajes de bajo nivel.
Teoría de lenguajes de programación
lenguajes formales para expresar algoritmos y las propiedades de estos lenguajes.
Bases de datos
Bases de datos
Estructura de datos
Minería de datos
estudio de algoritmos para buscar y procesar información en documentos y bases de datos; muy
relacionada con la adquisición de información.
Sistemas concurrentes, paralelos y distribuidos
Programación concurrente
teoría y práctica de cómputos simultáneos y computación interactiva.
Redes de computadoras
algoritmos y protocolos para comunicar eficientemente datos a través de largas distancias, incluye
también la corrección de errores.
Cómputo paralelo
computación con el uso de múltiples computadoras y múltiples procesadores en paralelo.
Sistemas distribuidos
sistemas que utilizan múltiples procesadores repartidos en una gran área geográfica.
Inteligencia artificial
Inteligencia artificial (IA)
la implementación y estudio de sistemas que exhiben (ya sea por su comportamiento o
aparentemente) una inteligencia autónoma o comportamiento propio, a veces inspirado por las
características de los seres vivos. Las ciencias de la computación están relacionadas con la IA, ya
que el software y las computadoras son herramientas básicas para su desarrollo y progreso.
Razonamiento automatizado
Robótica
algoritmos para controlar el comportamiento de los robots.
Visión por computador
algoritmos para extraer objetos tridimensionales de una imagen bidimensional.
Aprendizaje automático
Gráficos por computador
Computación gráfica
algoritmos tanto para generar sintéticamente imágenes visuales como para integrar o alterar la
información visual y espacial tomada del mundo real.
Procesamiento digital de imágenes
por ejemplo, para sensores remotos.
Geometría computacional
3. por ejemplo, algoritmos veloces para seleccionar solo los puntos visibles en un poliedro visto desde
cierto ángulo, usado en motores 3D.
Computación científica
Bioinformática
Computación cuántica
Paradigma de computación basado en la mecánica cuántica
Neurociencia computacional
Relación con otros campos
Por ser una disciplina reciente, existen varias definiciones alternativas para la ciencia de la
computación. Esta puede ser vista como una forma de ciencia, matemáticas o una nueva disciplina
que no puede ser categorizada siguiendo los modelos actuales.
Las ciencias de la computación frecuentemente se cruzan con otras áreas de investigación, tales
como la física y la lingüística. Pero es con las matemáticas con las que se considera que tiene un
grado mayor de relación. Eso es evidenciado por el hecho de que los primeros trabajos en el área
fueran fuertemente influenciados por matemáticos como Kurt Gödel y Alan Turing. En la actualidad
sigue habiendo un intercambio de ideas útil entre ambos campos en áreas como la lógica
matemática, la teoría de categorías, la teoría de dominios, el álgebra y la geometría.
Otro punto a destacar es que, a pesar de su nombre, las ciencias de la computación raramente
involucran el estudio mismo de las máquinas conocidas como computadoras. De hecho, el
renombrado científico Edsger Dijkstra es muy citado por la frase "Las ciencias de la computación
están tan poco relacionadas con las computadoras como la astronomía con los telescopios."
Debido a esto, se propuso buscar un nombre definido para esta ciencia emergente, que evitara la
relación con las computadoras.
Una primera propuesta fue la de Peter Naur, que acuñó el término datología, para reflejar el hecho
de que la nueva disciplina se ocupaba fundamentalmente del tratamiento de los datos,
independientemente de las herramientas de dicho tratamiento, fueran computadoras o artificios
matemáticos. La primera institución científica en adoptar la denominación fue el Departamento de
Datología de la Universidad de Copenhague, fundado en 1969, y fue el propio Peter Naur el primer
profesor de datología. Esta denominación se utiliza principalmente en los países escandinavos.
Asimismo, en los primeros momentos, un gran número de términos aparecieron asociados a los
practicantes de la computación. En esta lista se pueden ver los sugeridos en las revistas y
comunicados de laAssociation for Computer Machinery: turingeniero, turologista, hombre de los
diagramas de flujo (flow-charts-man), metamatemático aplicado y epistemólogo aplicado.
Tres meses más tarde se sugirió el término contólogo, seguido de hipólogo al año siguiente.
También se sugirió el término compúticapara la disciplina. Informática era, sin embargo, el término
más frecuentemente usado en toda Europa.
El diseño y desarrollo de computadoras y sistemas computacionales generalmente se considera un
campo reclamado por disciplinas ajenas a las ciencias de la computación. Por ejemplo, el estudio
del hardware suele considerarse parte de la ingeniería informática, mientras que el estudio de
sistemas computacionales comerciales y su desarrollo suelen denominarse tecnologías de la
información(TI) o sistemas de información. Sin embargo, hay una estrecha comunicación de ideas
entre las distintas disciplinas relacionadas con las computadoras.
4. La ciencia de la computación a menudo recibe críticas desde otros estamentos que la consideran
escasamente rigurosa y científica. Esta opinión se plasma en la expresión: "La ciencia es a las
ciencias de la computación como la hidrodinámica a la fontanería", atribuida a Stan Kelly-Bootle y
otros afines.
La investigación en ciencias de la computación también suele relacionarse con otras disciplinas,
como la ciencia cognitiva, la física(véase computación cuántica), la lingüística, etcétera.
La relación entre las ciencias de la computación y la ingeniería de software es un tema muy
discutido, por disputas sobre lo que realmente significa el término ingeniería de software y sobre
cómo se define a las ciencias de la computación. Algunas personas creen que la ingeniería de
software sería un subconjunto de las ciencias de la computación. Otras, tomando en cuenta la
relación entre otras disciplinas científicas y de la ingeniería, creen que el principal objetivo de las
ciencias de la computación sería estudiar las propiedades del cómputo en general, mientras que el
objetivo de la ingeniería de software sería diseñar cómputos específicos para lograr objetivos
prácticos, con lo que se convertiría en disciplinas diferentes. Este punto de vista es el que sostiene,
por ejemplo, Parnas (1998). Incluso hay otros que sostienen que no podría existir una ingeniería de
software.
Los aspectos académicos, políticos y de financiamiento en las áreas de ciencias de la computación
tienden a verse influidos drásticamente por el criterio del departamento encargado de la
investigación y la educación en cada universidad, que puede estar orientado a la matemática o a la
ingeniería.
Los departamentos de ciencias de la computación orientados a la matemática suelen alinearse del
lado de la computación científica y las aplicaciones de cálculo numérico.
El término computación científica, que no debe confundirse con ciencia de la computación, designa
a todas aquellas prácticas destinadas a modelar, plantear experimentos y validar teorías científicas
sirviéndose de medios computacionales. En estos casos la computación es una mera herramienta
y el esfuerzo se dirige a avanzar en los campos objetivo (física, biología, mecánica de fluidos,
radiotransmisión,...), más que en la propia ciencia de la computación.
Finalmente, el público en general algunas veces confunde la ciencia de la computación con áreas
vocacionales que trabajan con computadoras o piensan que trata acerca de su propia experiencia
con las computadoras, lo cual suele incluir actividades como los juegos, la navegación web y el
procesamiento de texto. Sin embargo, el punto central de la ciencia de la computación va más allá
de entender las propiedades de los programas que se emplean para implementar aplicaciones de
software como juegos y navegadores web, y utiliza ese entendimiento para crear nuevos
programas o mejorar los existentes.
6