Scheme

Dice Yukihiro Matsumoto que uno de los principios en los que se basó para crear el lenguaje de programación Ruby era el principio de la mínima sorpresa. Un lenguaje de programación debe sorprender lo mínimo posible a los programadores que lo utilicen.

Evidentemente, Matsumoto se refiere a los programadores aventajados del lenguaje. Un lenguaje que está aprendiéndose siempre sorprende, y esas sorpresas sirven para que compruebes que no tenías claro algún aspecto de su funcionamiento o de su semántica. Como ejemplo de un lenguaje que no cumple el principio de la mínima sorpresa, Matsumoto cita al C++, en un ingenioso y agudo comentario:

I was a C++ programmer before I started designing Ruby. I programmed in C++ exclusively for two or three years. And after two years of C++ programming, it still surprises me.

Todo esto viene al hilo del lenguaje que quería presentar en este comentario. No es Ruby (lo dejamos para otro día), sino Scheme. En lo que se refiere al principio de mínima sorpresa, apostaría a que Scheme gana a cualquier otro. Incluso ganaría el concurso al lenguaje más aburrido si no fuera por la recursión, por lambda y por su historia.

Scheme es un dialecto del Lisp, el mítico lenguaje diseñado por John McCarthy en 1956 (en el MIT Artificial Intelligence Project), cansado de utilizar el lenguaje máquina para programar el computador IBM 704. Lisp se convirtió pronto en el lenguaje preferido de los investigadores en Inteligencia Artifical. La facilidad de su sintaxis y de su semántica hizo proliferar distintas implementaciones de intérpretes y, en un tiempo en que no existía Internet, también generó numerosas variantes y dialectos del lenguaje. Scheme es uno de los dialectos del Lisp que ha sobrevivido hasta la actualidad (junto al Golden Common Lisp). Scheme es muy popular en facultades y escuelas de Informática en Estados Unidos y, en bastantes de ellas, es el lenguaje escogido para introducir a los estudiantes en el mundo de la programación.

Scheme (igual que Lisp) es un lenguaje interpretado. Uno de los intérpretes más populares en la actualidad es DrScheme.

Cuando abrimos el intérprete aparece un prompt esperando que tecleemos alguna expresión. Las siguientes expresiones son ejemplos de expresiones de Scheme (y de lo que devuelve el intérprete):


> 2
2
> (+ 2 5)
7
> (+ (* 2 3) (- 4 1))
9
> (define a 3)
> (+ a 4)
7
> (define (cuadrado x)
(* x x))
> (+ (cuadrado 3) (cuadrado 4))
25

Scheme es un lenguaje ideal para aprender a programar por la sencillez de su sintaxis y su semántica. De hecho, en Estados Unidos se utiliza para iniciar a la programación en educación secundaria (ver el proyecto Teach Scheme). En la enseñanza universitaria de Informática el lenguaje se ha popularizado debido al excelente libro SICP (Structure and Interpretation of Computer Programs, MIT Press).

Es curioso que en España apenas se haya divulgado. Sólo conozco un par de asignaturas en titulaciones universitarias que utilizan Scheme (Informática para Matemáticas en la Universidad de Sevilla y nuestra Lenguajes y Paradigmas de Programación en la Universidad de Alicante). ¿Conocéis alguna más?

This entry was posted in Programación. Bookmark the permalink.

4 Responses to Scheme

  1. Dani says:

    En Lenguajes de Inteligencia Artificial, de la Universidad de Córdoba se estudian Scheme y Prolog

  2. Gustavo Hernandez says:

    Scheme se enseña en la Universidad Tecnologica de Pereiera en colombia en el I semestre de Ingenieria de sistemas y computacion.

    Como estudiante de este curso puedo decir que es un lenguaje muy facil de manejar.

  3. Cheryll says:

    Scheme es visto de forma muy general en la Universidad Tecnológica de Panamá. Se tiende a profundizar más, es en .net, java, sql y otros.

  4. diesex says:

    Yo lo estoy viendo en el VII de Ingenieria Informatica en la Universidad de Guayana. Y el estar acostrumbrado al manejo de lenguajes estructurados e imperativos; Se me ha dificultado un poco familiarizarme con este tipo de programación.
    El Profesor nos comentó que tanto SCHEME y PROLOG se deberían impartir en el I Semestre porque así seriamos más inteligentes!

Leave a Reply

Your email address will not be published. Required fields are marked *