Scheme

Scheme
Lambda lc.svg
Información general
Paradigma multi-paradigma
Apareció en 1975
Diseñado por Guy L. Steele y Gerald Jay Sussman
Sistema de tipos Fuerte, dinámico
Implementaciones Scheme, Scheme 48, Chicken, Gambit, FLUENT, Guile, Bigloo, Chez Scheme, STk, STklos, Larceny, SCM
Dialectos T
Influido por Lisp
[ editar datos en Wikidata]

Scheme es un lenguaje funcional (si bien impuro pues sus estructuras de datos no son inmutables) y un dialecto de Lisp. Fue desarrollado por Guy L. Steele y Gerald Jay Sussman en la década de los setenta e introducido en el mundo académico a través de una serie de artículos conocidos como los Lambda Papers de Sussman y Steele.

La filosofía de Scheme es minimalista. Su objetivo no es acumular un gran número de funcionalidades, sino evitar las debilidades y restricciones que hacen necesaria su adición. Así, Scheme proporciona el mínimo número posible de nociones primitivas, construyendo todo lo demás a partir de un reducido número de abstracciones. Por ejemplo, el mecanismo principal para el control de flujo son las llamadas recursivas.

Scheme fue el primer dialecto de Lisp que usó ámbito estático, también conocido como ámbito léxico, (en lugar de dinámico) de forma exclusiva. También fue uno de los primeros lenguajes de programación con continuaciones explícitas, un mecanismo para guardar y usar el estado entero de un programa en un momento determinado. Scheme ofrece también gestión automática de memoria ( recolección de basura).

Las listas son la estructura de datos básica del lenguaje, que también ofrece arrays entre sus tipos predefinidos. Debido a su especificación minimalista, no hay sintaxis explícita para crear registros o estructuras, o para programación orientada a objetos, pero muchas implementaciones ofrecen dichas funcionalidades.

Scheme se llamaba originalmente "Schemer", siguiendo la tradición de los lenguajes Planner y Conniver. Su nombre actual es debido a que sus autores usaban el sistema operativo ITS, que limitaba la longitud de los nombres de fichero a 6 caracteres.

Ventajas de Scheme

Scheme, como todos los dialectos de Lisp, tiene una sintaxis muy reducida, comparado con muchos otros lenguajes. No necesita reglas de precedencia en su gramática, ya que usa notación prefija para todas las llamadas a función. En el mundo de Lisp tales expresiones son conocidas como S-expressions.

El poder característico de los Lisp reside en la simpleza de su sintaxis homoicónica hecha de listas anidadas, que refleja la estructura del árbol de sintaxis abstracta del programa y lo pone a disposición del programador. Esto facilita la metaprogramación mediante macros. Las macros de Scheme permiten adaptarlo a nuevos dominios con facilidad, por ejemplo, para añadir soporte a la programación orientada a objetos. Existe por ejemplo una extensión que implementa un sistema de objetos escrito en menos de mil líneas de código de Scheme, incluyendo comentarios.[1]​ Scheme proporciona un sistema de macros higiénico que, aunque no tan potente como el de Common Lisp, es mucho más seguro y, con frecuencia, sencillo de utilizar. La ventaja de un sistema de macros de este tipo (que también se encuentra en otros lenguajes, como Dylan) es que evita automáticamente colisiones entre los nombres usados en la definición de la macro y en el contexto en que ésta se expande. En contrapartida, las macros higiénicas no pueden introducir nuevos símbolos.

Scheme facilita la programación funcional. Aunque Scheme es impuro porque permite la asignación destructiva, usarlo al estilo de la programación funcional pura evita variables globales y sufrir de efectos secundarios, haciéndolo más seguro en presencia de procesos concurrentes ( thread-safe), amén de facilitar considerablemente la verificación de programas, al menos en comparación con el estilo imperativo.

En Scheme, los procedimientos o funciones son objetos de primera clase. Ello permite la definición de funciones de orden superior; funciones que reciben o devuelven otras funciones, que facilitan un mayor grado de abstracción en los programas. También es posible la creación de procedimientos anónimos (literales) mediante el primitivo (lambda (arg1 ...) (...)).

El estándar de Scheme es también minimalista. Ello conlleva ventajas e inconvenientes. Por ejemplo, escribir un compilador o intérprete de Scheme que sea fiel al estándar es más fácil que implementar uno de Common Lisp; empotrar Lisp en dispositivos con poca memoria será también más factible si usamos Scheme en lugar de Common Lisp. A los aficionados a Scheme les divierte mucho señalar que su estándar, con sólo 50 páginas, ¡es más corto que el índice del libro de Guy Steele Common Lisp: The Language!

Other Languages
azərbaycanca: Scheme
žemaitėška: Scheme
беларуская: Scheme
català: Scheme
čeština: Scheme
dansk: Scheme
Deutsch: Scheme
Ελληνικά: Scheme
Esperanto: Scheme
eesti: Scheme
فارسی: اسکیم
suomi: Scheme
français: Scheme
עברית: Scheme
hrvatski: Scheme
magyar: Scheme
Հայերեն: Scheme
italiano: Scheme
日本語: Scheme
lietuvių: Scheme
Malagasy: Scheme
Nederlands: Scheme
norsk nynorsk: Scheme
norsk bokmål: Scheme
polski: Scheme
português: Scheme
русский: Scheme
русиньскый: Scheme
srpskohrvatski / српскохрватски: Scheme (programski jezik)
српски / srpski: Scheme (programski jezik)
svenska: Scheme
தமிழ்: இசுகீம்
тоҷикӣ: Scheme
Türkçe: Scheme
українська: Scheme
Tiếng Việt: Scheme
中文: Scheme