La Lengua de la Computadora

Este artículo es parte de una serie, acceder al índice de la serie.

Binario es genial y todo, pero ¿cómo conseguimos que la computadora haga lo que queremos? Hemos discutido cómo las representaciones binarias se alimentan en un procesador que toma esa entrada y pasa por una serie de pasos dependiendo de esa entrada para crear una salida, pero ¿cómo hacemos realmente que suceda? Para ello, elegiría un lenguaje de programación o crearía el suyo propio, dependiendo del nivel de control deseado sobre la máquina.

¿Qué es un lenguaje de programación?

Wikipedia.org define un lenguaje de programación muy bien, así que voy a citarlo aquí:

“Un lenguaje de programación es un lenguaje artificial diseñado para expresar cálculos que pueden ser realizados por una máquina, particularmente una computadora”.

Un lenguaje de programación es lo que usas para decirle a la computadora lo que quieres que haga. Es “procesado” por un programa conocido como compilador o intérprete y convertido en algo que la computadora puede entender. Un ejemplo podría ser:

Esto imprimirá 3, como un + b = 1 + 2 = 3. Como puede ver un lenguaje de programación es un conjunto de instrucciones que le dicen a la computadora qué hacer.

El procesador utiliza el lenguaje de programación más básico. Las especificaciones del procesador nos dicen qué representaciones binarias hará que el procesador haga qué. Luego usamos las representaciones binarias y las encadenas juntas en una serie de pasos para alcanzar nuestro objetivo final. En los primeros días de las computadoras, esto se logró introduciendo las instrucciones directamente en el panel frontal. Esto era conocido como programación de primera generación (lenguaje).

Este tipo de programación rara vez se hace en el nivel de bits por bit hoy en día y en su lugar se suele desplegar utilizando un “ensamblador”. Un ensamblador ensambla el lenguaje ensamblador (un lenguaje de programación) para crear las instrucciones específicas del procesador. Como cualquier lenguaje de ensamblaje es simplemente un conjunto de mnemónicos para las instrucciones del procesador con el único beneficio añadido de un ensamblador es conocido como lenguaje de programación de segunda generación.

Del mismo modo que existe un lenguaje ensamblador, hay lenguajes de “nivel superior”. Estos lenguajes de programación se caracterizaron por refinamientos del proceso de programación que estaban orientados hacia el programador en lugar de la máquina. Característicamente, un lenguaje de programación de tercera generación tiene la computadora se encarga de ciertos detalles automatizados para que un programador ya no tiene que hacerlo. Ejemplos de dichos lenguajes son Fortran y COBOL, pero puede reconocer a sus primos más populares como C, Java y Python.

Una vez que comienzas a obtener más alto que los lenguajes de programación de tercera generación, comienzas a entrar en la tendencia inversa de la especialización más que en la generalización. No tome eso como una declaración general de 100%, aunque, como hay excepciones. Un lenguaje de programación de cuarta generación está generalmente orientado hacia la resolución de problemas y la ingeniería de sistemas. Están diseñados como mecanismos para reducir aún más el esfuerzo de programación, generalmente diseñados con un propósito específico (medio ambiente) en mente. A menudo toman una forma de especificación y luego generan la programación necesaria para resolver el problema. Esto es una simplificación excesiva, pero esa es la idea general.

Del mismo modo, un lenguaje de programación de quinta generación se basa en el uso de restricciones dadas al programa para resolver el problema en lugar de un algoritmo predefinido suministrado por un programador humano. Si piensas en ello, esta sería una solución obvia para las inteligencias artificiales. Es muy similar a cómo la computadora en Star Trek tiende a resolver los problemas automagically. Desafortunadamente, estos programas son muy difíciles de escribir y sólo un puñado pequeño existe con capacidades limitadas.

Bloques de construcción

Pero, ¿qué es lo que constituye un lenguaje de programación?

En primer lugar, los lenguajes de programación sólo se pueden construir a partir de lo que se puede introducir en la computadora. Con esto quiero decir, si la única forma de entrada de la computadora eran ocho interruptores, el lenguaje de programación sería construido de lo que usted podría hacer con esos ocho interruptores. Afortunadamente para nosotros las computadoras modernas tienen hoy un ratón y un teclado, como discutido en un artículo anterior.

Un lenguaje de programación se compone de dos partes: una sintaxis y semántica.

La sintaxis define cómo se debe formatear la entrada. Dado que la mayoría de los lenguajes de programación están formados por lo que puede introducir en el teclado, la sintaxis se convierte en un conjunto de reglas sobre cómo organizar fragmentos de texto en una parte comprensible de la programación. La sintaxis se define tanto léxica como gramaticalmente. Cubriremos la mecánica de estos dos en un artículo aparte. En resumen, sin embargo, diremos que la sintaxis se define comúnmente mediante el uso de “Backaus-Naur Form”. Hablaremos más sobre este formulario en otro artículo también. Mientras tanto, aquí hay un ejemplo rápido de esta definición:

Por favor, disculpe cualquier error que pueda haber cometido ya que no escribo a menudo en este formulario. Este formulario aceptaría la siguiente línea:

Encima de usted verá aunque no un ejemplo particularmente útil, pero que ilumina. Un número entero puede ser 1, 14, 555, etc. Un identificador puede ser una letra seguida por otras letras y números, y formaría algo así como una variable. Una cadena es una serie de letras y números entre comillas dobles. Cualquiera de estos tres puede ser un argumento, que podría encajar en una definición de función. Como he dicho, por favor disculpe cualquier error (o me dicen acerca de ellos en los comentarios). Este es sólo un ejemplo simplificado. Por favor, no se sienta desanimado si no entiende lo anterior. Con el tiempo lo harás, sólo pensé que era importante mostrar esa construcción en la introducción para que puedas contemplarla antes de tiempo.

Así que esa sería la sintaxis. La semántica es parte de la programación del compilador, el programa que procesa el lenguaje de programación. La semántica son las varias reglas por las cuales el programa de la entrada (o el código) debe acatar, por ejemplo manipulación y mecanografía apropiadas de la variable. La semántica define los contextos por los cuales escribirías un programa y, a su vez, darías a tus declaraciones el significado. ¿Está intentando asignar un valor a un lugar en la memoria de otro lugar en la memoria, o de una función?

Conclusión

Este artículo fue concebido sólo como una introducción a los lenguajes de programación, y no como un fin de toda la información. Muchos de los temas de este artículo se tratarán con mayor detalle en artículos posteriores para que pueda aprender acerca de los lenguajes de programación de una manera mucho más detallada y desde el principio. Mientras tanto, espero que esto sea algo útil.

Este artículo es parte de una serie, acceder al índice de la serie.

Si usted aprecia mis tutoriales y su sabiduría, por favor considere apoyarme en Patreon.

Sin embargo, si un compromiso mensual es un poco demasiado necesitado para usted, podría considerar comprarme una taza de café.

photo credit: working dog learning ‘Go’ via photopin (license)

También te podría gustar...

Deja un comentario

A %d blogueros les gusta esto: