Saltar al contenido

LDP | §1.1 - Introducción

Programa de la asignatura

Para el público general, el mundo de la computación y de la informática están plagados de términos, algunos familiares y otros no tanto, que ya no producen asombro y de hecho quizás hasta usemos con alguna frecuencia, sin que ello implique que tengamos una idea cabal de su significado. Términos como programar, algoritmo, lenguaje, aplicación, código y varios otros, se emplean de manera corriente, justificados por el hecho que la experiencia compartida de herramientas y dispositivos permiten que la comunicación tenga lugar sin sobresaltos ni necesidad de aclaraciones posteriores.

Es así que, en el imaginario de ese público general, la sentencia "las computadoras sólo hacen lo que se les programa" se acepta como el fundamento sobre lo cual toda nuestra experiencia informática descansa. Esto es cierto (al menos por el momento...), y en los comienzos de la computación hasta podríamos decir que era toda la verdad, pero a la vista de los obvios avances en este campo debemos anticipar que simplifica demasiado la realidad. Por ejemplo, las primeras computadoras tenían una forma de ser "preparadas" para que realicen un cierto cálculo. Esta tarea sólo era posible para quien conociera a fondo cómo la máquina había sido construída, ya que implicaba de alguna forma interactuar con sus partes (por ejemplo mediante el accionar de "llaves" que conectaban o desconectaban circuitos internos) lo que resultaba una tarea laboriosa y destinada a unos pocos expertos. El trabajo de definir esas "preparaciones", para las cuales la máquina había sido construída, recibió el nombre de "programar", término que precede a la tecnología, como lo muestra esta definición de la RAE:

programar

  1. Formar programas, previa declaración de lo que se piensa hacer y anuncio de las partes de que se ha de componer un acto o espectáculo o una serie de ellos.
  2. Idear y ordenar las acciones necesarias para realizar un proyecto.
  3. Preparar ciertas máquinas o aparatos para que empiecen a funcionar en el momento y en la forma deseados.
  4. Elaborar programas para su empleo en computadoras.

Vemos que recién la última de las acepciones tiene que ver con el tema que estamos tratando, aunque está claro por qué se eligió el término, especialmente si nos detenemos en la segunda acepción: "idear y ordenar las acciones necesarias". Aquí radica la esencia de la programación, ya sea que hablemos de computadoras o de organizar un viaje.

La disciplina de la programación, a su vez, trajo aparejado el estudio de cómo llegar a un método para resolver una tarea, lo que hoy se conoce como algoritmo, término que definimos con la ayuda de la RAE así:

algoritmo

  1. Conjunto ordenado y finito de operaciones que permite hallar la solución de un problema.

Cuando el algoritmo es conocido (vale decir, dispongo ya de un método para resolver la tarea) resta el problema de indicar a una computadora que lo realice, esto es, programarla. La complejidad que inicialmente implicaba este paso dió lugar a la idea de reemplazar cada una de las acciones necesarias por un símbolo o una palabra fácil de relacionar con su propósito y que permitiera razonar sobre su funcionamiento a nivel más "humano", para luego convertir la descripción resultante a las acciones físicas necesarias y a la puesta en funcionameinto de esa máquina así programada, es decir, ejecutar (o también correr) el programa. El conjunto de esas palabras o simbolos elegidos, junto con las reglas de sintaxis impuestas sobre su utilización, dio lugar al nacimiento de los primeros lenguajes de programación. En este punto, un lenguaje tal no era más que el intento de hacer más simple y menos susceptible a errores la tarea de programar una máquina.

Al principio, un computadora sólo estaba en uso al ejecutar un programa, cuyo fin era producir un resultado a partir de ciertos datos para luego "detenerse". En cambio, en la actualidad, uno interactúa con una computadora (o un dispositivo con capacidad análoga) mediante una pantalla que ofrece una interfaz para ello, y en general se realizan acciones como resultado de nuestra interacción. Un buen ejemplo es un procesador de texto o una hoja de cálculo, donde el "programa" parece no estar haciendo "nada" mientras uno no escriba o pulse botones o enlaces. Estamos en presencia de las aplicaciones, que se encargan de asistirnos en una tarea y que internamente están formadas por una serie de programas que se ejecutan como respuesta a ciertos eventos.

La ciencia de la computación, originada poco después de la computadora, estudia la cuestión de la definición de un problema, de su complejidad, de la existencia de un algoritmo que lo resuelva y eventualmente de su eficiencia. También se encargó de estudiar qué debería tener un lenguaje de programación desde un punto de vista formal para que sirva a su propósito, lo que trajo a su vez el desarrollo de varias formas o paradigmas bajo los cuales se pueden escribir programas. Esta ciencia tiene consecuencias tan profundas como para afirmar que existen problemas para los cuales no puede existir un algoritmo que lo resuelva, y llega a demostrar que deben existir límites a lo que al ser humano le es posible conocer.

Nuestro objetivo

Debe quedar claro que la programación en particular y las ciencias de la computación en general son campos realmente enormes y con consecuencias en muchas otras áreas del conocimiento. Nosotros, más humildes, nos enfocaremos en aprender cómo definir los pasos para la resolución de una tarea concreta (es decir, buscaremos algoritmos) para luego describir esos pasos mediante un lenguaje de programación convenientemente elegido (es decir, escribiremos programas). El propósito ulterior es doble: desarrollar en el alumno el enfoque lógico y crítico que permite encontrar un algoritmo, y ponerlo en contacto con las herramientas prácticas que permiten escribir y ejecutar el programa correspondiente.

Desde un punto de vista muy general, la variedad de lenguajes de programaciòn es tal que es virtualmente imposible elegir uno sin antes saber el objetivo perseguido, ya que en muchos casos un lenguaje es más afín para su aplicación en un ambiente concreto, o está directamente diseñado para un cierto tipo de tecnologìa, o pensado para una familia particular de problemas. De todas formas, para que un lenguaje de computadora sea considerado de programación, debe tener ciertas propiedades que le permitan describir algoritmos. Esto los diferencia de otros lenguajes en uso en informática, sumamente útiles para ciertos propósitos, pero que no son de programación.

En este curso nos enfocaremos en una versión limitada de las llamadas aplicaciones web, que son aquellas donde los programas que la componen están en la "nube" (es decir, accesible sólo por internet) pero son ejecutados por nuestro navegador como resultado de su descarga (al acceder a la aplicacióm mediante su dirección). Nos servirá también para aprender cómo la misma interfaz visual se describe mediante lenguajes que no son de programación, y de esa manera tener una mirada más amplia sobre ambos tipos de lenguaje.

§1.2 Lenguajes informáticos >