El poder de los lenguajes de programación

¿Qué aspectos deben incluirse para garantizar que, una vez diseñado e implantado un lenguaje de programación, no descubramos que existen problemas cuyas soluciones no pueden especificarse con el lenguaje, y que sí podrían haberlo sido si hubiéramos implantado una versión ampliada del lenguaje?

La estrategia va a ser desarrollar un sencillo lenguaje de programación esencial que permita, suponiendo verdadera la tesis de Church-Turing, expresar una solución para cualquier problema que puede resolverse de manera algorítmica.

Un lenguaje de programación esencial

  • El único tipo de datos que se requiere es el entero no negativo. En un computador digital moderno todo elemento de datos se representa como un entero no negativo, aunque el lenguaje de alto nivel pueda disfrazar esta realidad.
  • Tenemos también dos enunciados de asignación:
incr valor; //Incrementa en uno

decr valor; //Decrementa en uno hasta llegar a 0, una vez es 0 sigue en 0
  •  Finalmente tenemos dos enunciados de control:
while valor ≠ 0 do;
        .
        .
       end;

Este es nuestro lenguaje de programación esencial. Es muy sencillo y, por lo tanto, la primera meta es incorporar enunciados más poderosos que pueden simularse con secuencias de enunciados esenciales.

Por ejemplo:

  • clear x;
while x ≠ 0;
    decr x;
end;
  • x ← y;
clear aux;
clear x;
while y≠ 0 do;
   incr aux;
   decr y;
end;
while aux ≠ 0 do;
   incr x;
   incr y;
   decr aux;
end;
  • z ← x + y
z ← x;
aux ← y;
while aux ≠ 0 do
   incr z;
   decr aux;
end;
  • z ← x – y = {x – y si x ≥ 0;    0 en otro caso
z ← x;
aux ← y;
while aux ≠ 0 do
   decr z;
   decr aux;
end;
  • z ← x × y
clear z;
aux ← y;
while aux ≠ 0 do
   z ← z + x;
   decr aux;
end;
  • z ← x ÷ y
clear z;
w ← x - y;
while w ≠ 0 do
   incr z;
   w ← w - y;
end;

No se ha diseñado ningún lenguaje de programación que tenga mayor poder expresivo que nuestro sencillo lenguaje (aunque los lenguajes más elaborados que se emplean en la actualidad son obviamente superiores en cuanto a legibilidad)

J.G. Brookshear, Teoría de la Computación. Lenguajes formales, autómatas y complejidad. Addison Wesley Iberoamericana (1993).

Anuncios

2 respuestas a “El poder de los lenguajes de programación

    • El lenguaje ensamblador es un lenguaje de bajo nivel donde las instrucciones se refieren a posiciones de memoria, registros del procesador, etc. Aquí estamos en un nivel más alto, las expresiones se acercan más al lenguaje natural.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

w

Conectando a %s