Lenguajes de programación y su sintaxis

August 11, 2005

Existen muchas maneras de clasificar los lenguajes de programación. Se puede ver si son orientados a objetos o no, si manejan validación estática o dinámica de tipos, etc.
Yo opino que una de las maneras de clasificar los lenguajes de programación que no ha recibido la suficiente atención es en base a su sintaxis.

La sintaxis de los lenguajes de programación se puede dividir en 2 categorias:

  • Los que tienen una sintaxis basada en Algol
  • Todos los otros lenguajes

Cuando hablo de una sintaxis basada en Algol no me refiero a que visualmente se parezcan al lenguaje Algol, lo que quiero decir es que la manera en que los lee un interprete o compilador esta basada en las tecnologias de compilación desarrolladas para los primeros compiladores de Algol: análisis léxico para separar el fuente en tokens seguido de un análisis sintáctico basado en la gramática del lenguaje.

Entre los lenguajes con una sintaxis basada en Algol se encuentran: Pascal, C, C++, C#, Java, JavaScript, Eiffel, Basic, Python, Ruby y hasta Perl. Entre los otros lenguajes están: Fortran, COBOL, Forth, Smalltalk, APL, Common Lisp y Scheme.
Dentro de la categoria de los otros lenguajes todavia se puede hacer una subdivisión basada en los lenguajes derivados de Lisp y los demás lenguajes. Los lenguajes derivados de Lisp, y que podriamos llamar dialectos de Lisp, que se emplean mucho actualmente son: Scheme, Common Lisp, AutoLisp y EmacsLisp.

Debido a su sintaxis “extraña” (es decir: no esta basada en Algol) muchos programadores se sienten intimidados por los dialectos de Lisp y esto ha evitado que estos lenguajes se vuelvan más populares, lo cual es una lástima ya que en Lisp hay muchos conceptos que pueden ser muy útiles en el desarrollo de software. De hecho, hay por lo menos un par de lenguajes (Python y Ruby) que han tomado varios conceptos de Lisp para plasmarlos en una sintaxis más “tradicional” y que han tenido en estos ultimos años mucho éxito entre los programadores, aunque el uso de una sintaxis basada en Algol unicamente permite aprovechar una pequeña fracción de estos conceptos.

El ciencias computacionales existe el premio Turing que es el equivalente al premio Nobel para otras ciencias. En 1978 el ganador del premio Turin fué Robert Floyd por: “Helping to found the following subfields of computer science: the theory of parsing, the semantics of programming languages, automatic program verification, automatic program synthesis and analysis of algorithms. Floyd implemented one of the first Algol 60 compilers, finishing his work on this project in 1962. In the process, he did some early work on compiler optimization. Subsequently, in the years before 1965, Floyd systematized the parsing of programming languages. For that he originated the precedence method, the bounded context method, and the production language method of parsing”.

En otras palabras: Robert Floyd recibió el premio Turing por inventar la tecnología empleada en la implementación de todos los lenguajes con una sintaxis badasa en Algol. Lo interesante es que el ganador del premio Turing, en la ceremonia donde se le entrega el premio, tiene que dar alguna conferencia sobre el tema que quiera. Lo siguiente es parte de lo que dijo Robert Floyd en su conferencia: “Contact with the programming written under alien conventions may help. Visiting MIT on sabbatical this year, I have seen numerous examples of the programming power which Lisp programmers obtain from having a single data structure, which is also used as a uniform syntactic structure for all the functions and operations which appear in programs, with the capability to manipulate programs as data. Although my own previous enthusiasm has been for syntactically rich languages like the Algol family, I see now clearly and concretely the force of Minsky’s 1970 Turing Lecture, in which he argued that Lisp’s uniformity of structure and power of self-reference gave the programmer capabilities whose content was well worth the sacrifice of visual form.”