stringtranslate.com

Cuarzo

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 . Admite recolección de basura y genéricos por subtipos .

Originalmente se basaba en Eiffel , pero se 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í en honor a Jane Krom Sather , la viuda de Peder Sather , quien donó grandes sumas a la fundación de la universidad.

Sather también se inspira en otros lenguajes y paradigmas de programación: 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 se publicó en 1995, ya no se mantiene [2] ) ha sido adoptada por la Free Software Foundation, por lo que se convirtió en GNU Sather. La última versión estable de GNU (1.2.3) se publicó en julio de 2007 [3] y el software actualmente no se mantiene. Hubo otras variantes: Sather-K de la Universidad de Karlsruhe ; [4] [5] Sather-W de la Universidad de Waikato [6] (implementación de la versión 1.3 de Sather); el puerto de Peter Naulls de ICSI Sather 1.1 a RISC OS ; [7] y pSather, [8] [9] una versión paralela de ICSI Sather que aborda arquitecturas multiprocesador de acceso a memoria no uniforme pero que presenta un modelo de memoria compartida al programador.

El antiguo compilador ICSI Sather (ahora GNU Sather) está implementado como un compilador de C , es decir, el compilador no genera código objeto o de máquina , sino que toma el código fuente de Sather y genera código fuente de C como lenguaje intermedio . La optimización queda en manos del compilador de C.

El compilador GNU Sather, escrito en el mismo Sather, tiene licencia dual GNU GPL y LGPL .

Hola Mundo

 La clase HOLA_MUNDO es   principal es   # OUT + "Hola mundo\n" ;  fin ;  fin ;

Algunas observaciones:

Ejemplo de iteradores

Este programa imprime números del 1 al 10.

 La clase PRINCIPAL es   principal es  bucle i := 1. hasta ! ( 10 );   # FUERA + i + "\n" ;     fin ; fin ; fin ;

El constructo loop... endes el medio preferido para definir bucles, aunque también están disponibles whiley repeat- until. Dentro del constructo, se pueden utilizar 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 INTclase que acepta un onceargumento, lo que significa que su valor no cambiará cuando el iterador ceda. upto!podría implementarse en la INTclase con un código similar al siguiente.

 hasta ! ( una vez m : INT ): MISMO es i : INT := self ; -- inicializa i al valor de self, -- que es el entero del cual se llama este método loop si i > m entonces quit ; -- sale del bucle cuando i va más allá de m end ; yield i ; -- de lo contrario usa i como valor de retorno y permanece en el bucle i := i + 1 ; -- e incrementa end ; end ;                           

La información de tipo de las variables se indica mediante la sintaxis de sufijo variable:CLASS. El tipo se puede inferir a menudo y, por lo tanto, la información de tipado es opcional, como en anInteger::=1. SAMEes una pseudoclase que hace referencia a la clase actual.

Referencias

  1. ^ https://directory.fsf.org/wiki/Sather/sather. {{cite web}}: Falta o está vacío |title=( ayuda )
  2. ^ "Planes futuros de ICSI Sather". Archivado desde el original el 5 de febrero de 2012. Consultado el 2 de marzo de 2012 .
  3. ^ "Descargas de GNU Sather". Archivado desde el original el 5 de abril de 2012. Consultado el 2 de marzo de 2012 .
  4. ^ Página del proyecto Sather-K (archivo del año 2001)
  5. ^ "Descarga de Sather-K 0.9, versión del año 1994". Archivado desde el original el 29 de abril de 2024. Consultado el 2 de marzo de 2012 .
  6. ^ Página del proyecto Sather-W 1.3 (enlace archivado desde el año 2002)
  7. ^ El puerto de Peter Naulls ya no está disponible en la Web.
  8. ^ "Descripción de pSather". Archivado desde el original el 5 de febrero de 2012. Consultado el 2 de marzo de 2012 .
  9. ^ "Descargar pSather". Archivado desde el original el 6 de julio de 2017. Consultado el 11 de octubre de 2021 .{{cite web}}: CS1 maint: bot: estado de URL original desconocido ( enlace )

Enlaces externos