Cuarzo

Lenguaje de programación orientado a objetos similar a Eiffel
Cuarzo
Paradigmaorientado a objetos , funcional
Diseñado porSteve Omohundro
ReveladorUniversidad de California, Berkeley , Universidad de Waikato , Proyecto GNU
Apareció por primera vez1990
Versión estable
1.2.3 [1] / 7 de julio de 2007 ; hace 17 años ( 7 de julio de 2007 )
Disciplina de mecanografíaestático , fuerte
Sitio webwww.gnu.org/software/sather/
Implementaciones principales
Sather ICSI, Sather GNU
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 . 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:

  • Los nombres de clase están TODOS EN MAYÚSCULAS; esto no es solo una convención sino que lo exige el compilador.
  • El método llamado maines el punto de entrada para la ejecución. Puede pertenecer a cualquier clase, pero si esta es diferente de MAIN, debe especificarse como una opción del compilador.
  • #es el símbolo del constructor: llama al createmétodo de la clase cuyo nombre sigue al operador. En este ejemplo, se utiliza para crear una instancia de la OUTclase, que es la clase para la salida estándar .
  • La +clase ha sobrecargado al operador para agregar la cadena pasada como argumento a la secuencia.
  • Los operadores como +son una sintaxis simplificada para las llamadas a métodos con nombres convencionales: a + bsignifica a.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 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. {{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 )
  • Página de inicio de Sather
Obtenido de "https://es.wikipedia.org/w/index.php?title=Sather&oldid=1221290083"