Para las personas con el apellido, consulte Sather (apellido) .
Paradigma | orientado a objetos , funcional |
---|---|
Diseñada por | Steve Omohundro |
Desarrollador | Universidad de California, Berkeley , Universidad de Waikato , proyecto GNU |
Apareció por primera vez | 1990 |
Lanzamiento estable | 1.2.3 [1] / 7 de julio de 2007 |
Disciplina de mecanografía | estático , fuerte |
Sitio web | www |
Implementaciones importantes | |
ICSI Sather, GNU Sather | |
Influenciado por | |
Eiffel , CLU , Common Lisp , Esquema | |
Influenciado | |
Fresco |
Sather es un lenguaje de programación orientado a objetos . Se originó alrededor de 1990 en el Instituto Internacional de Ciencias de la Computación (ICSI) de la Universidad de California, Berkeley , desarrollado por un equipo internacional dirigido por Steve Omohundro . Soporta recolección de basura y genéricos por subtipos .
Originalmente, se basó en Eiffel , pero ha divergido y ahora incluye varias características de programación funcional .
El nombre está inspirado en Eiffel; la Torre Sather es un hito reconocible en Berkeley, llamado así por Jane Krom Sather , la viuda de Peder Sather , quien donó grandes sumas de dinero a la fundación de la universidad.
Sather también se inspira en otros lenguajes de programación y paradigmas: iteradores , diseño por contrato , clases abstractas , herencia múltiple , funciones anónimas , sobrecarga de operadores , sistema de tipos contravariantes .
La implementación original de Berkeley (la última versión estable 1.1 fue lanzada en 1995, ya no se mantiene [2] ) ha sido adoptada por la Free Software Foundation convirtiéndose así en GNU Sather. La última versión estable de GNU (1.2.3) fue lanzada en julio de 2007 [3] y el software no se mantiene actualmente. Había varias otras variantes: Sather-K de la Universidad de Karlsruhe ; [4] [5] Sather-W de la Universidad de Waikato [6] (implementación de Sather versión 1.3); El puerto de Peter Naulls de ICSI Sather 1.1 al sistema operativo RISC ; [7] y pSather, [8] [9] una versión paralela de ICSI Sather que aborda arquitecturas de multiprocesador de acceso a memoria no uniforme, pero presenta un modelo de memoria compartida al programador.
El antiguo compilador ICSI Sather (ahora GNU Sather) se implementa como un compilador para C , es decir, el compilador no genera código objeto o máquina , sino que toma el código fuente Sather y genera código fuente C como lenguaje intermedio . La optimización se deja al compilador de C.
El compilador GNU Sather, escrito en Sather mismo, tiene doble licencia bajo GNU GPL y LGPL .
Hola Mundo
la clase HELLO_WORLD es principal es # OUT + "Hola mundo \ n" ; terminar ; terminar ;
Algunas observaciones:
- Los nombres de las clases son TODOS EN MAYÚSCULAS; esto no es solo una convención, sino que el compilador lo hace cumplir.
- El método llamado
main
es el punto de entrada para la ejecución. Puede pertenecer a cualquier clase, pero si es diferenteMAIN
, debe especificarse como una opción del compilador. #
es el símbolo del constructor: Llama alcreate
método de la clase cuyo nombre sigue al operador. En este ejemplo, se usa para crear instancias de laOUT
clase, que es la clase para la salida estándar .- La
+
clase ha sobrecargado el operador para agregar la cadena pasada como argumento a la secuencia. - Operadores como
+
son azúcar sintáctico para llamadas a métodos con nombres convencionales:a + b
significaa.plus(b)
. Las convenciones de precedencia aritmética habituales se utilizan para resolver el orden de llamada de los métodos en fórmulas complejas.
Ejemplo de iteradores
Este programa imprime números del 1 al 10.
la clase MAIN es principal es círculo i : = 1. hasta ! ( 10 ); # SALIDA + i + "\ n" ; terminar ; terminar ; terminar ;
La construcción loop
... end
es el medio preferido para definir bucles, aunque while
y repeat
- until
también están disponibles. Dentro de la construcción, se pueden usar uno o más iteradores. Los nombres de los iteradores siempre terminan con un signo de exclamación. (Esta convención la aplica el compilador). upto!
Es un método de la INT
clase que acepta un once
argumento, lo que significa que su valor no cambiará a medida que el iterador rinda. upto!
podría implementarse en la INT
clase con código similar al siguiente.
hasta ! ( una vez m : INT ): SAME es i : INT : = self ; - inicializa i con el valor de self, - ese es el número entero del cual este método se llama bucle si i > m entonces sale ; - dejar el bucle cuando i va más allá de m final ; rendimiento i ; - de lo contrario, use i como valor de retorno y permanezca en el ciclo i : = i + 1 ; - y fin de incremento ; terminar ;
La información de tipo para las variables se indica mediante la sintaxis de sufijo variable:CLASS
. El tipo a menudo se puede inferir y, por lo tanto, la información de escritura es opcional, como en anInteger::=1
. SAME
es una pseudoclase que se refiere a la clase actual.
Referencias
- ^ https://directory.fsf.org/wiki/sather .
- ^ Planes futuros de ICSI Sather
- ^ Descargas de GNU Sather
- ^ Página del proyecto Sather-K (archivo del año 2001)
- ^ Descarga de Sather-K 0.9, versión del año 1994
- ^ Página del proyecto Sather-W 1.3 (enlace archivado desde el año 2002)
- ^ El puerto de Peter Naulls ya no está disponible en la Web.
- ^ pSather descripción
- ^ pSather descargar
enlaces externos
- Página de inicio de Sather