Pharo es un lenguaje dinámico y reflexivo de código abierto inspirado en el lenguaje de programación Smalltalk . Pharo ofrece varias funciones de programación en vivo , como manipulación inmediata de objetos, actualización en vivo y recompilación en caliente.
Paradigma | Orientado a objetos |
---|---|
Desarrollador | Comunidad Pharo |
Apareció por primera vez | 2008 |
Lanzamiento estable | 8.0 / 20 de enero de 2020 |
Disciplina de mecanografía | Dinámica |
Lenguaje de implementación | Charla |
SO | Windows , Linux , macOS , otros |
Licencia | Licencia MIT , en parte Apache License 2.0 [1] |
Sitio web | pharo |
Influenciado por | |
Smalltalk ( chirrido ) |
Introducción
Pharo es un lenguaje reflexivo y dinámicamente escrito orientado a objetos puro. El objetivo declarado de Pharo es volver a visitar el diseño de Smalltalk y mejorarlo.
El nombre Pharo viene de la palabra francesa "Phare" ( pronunciación francesa: [faʁ] ) lo que significa faro. Es por eso que el logotipo de Pharo muestra un dibujo de un faro dentro de la última letra O del nombre.
Caracteristicas clave
- Fusión opcional de programa desarrollado y entorno de desarrollo
- Un enfoque puramente orientado a objetos
- Sintaxis simple
- Intercambio de identidad de objeto inmediato
- Excepciones reanudables
- Inspección de objetos vivos
- Herencia dinámica
- Máquina virtual multiplataforma con JIT , recolector de basura generacional combinado , efemérides, reenviadores
- Manipulación sencilla de la pila de llamadas
- Enumeración rápida de objetos
- Objetos como métodos
- Hilos verdes opcionales
- Vínculos metálicos AST
- Metaclases personalizables
- Consumo de memoria relativamente bajo
- Compilador personalizable
- Persistencia de memoria de objeto completa opcional
- Serialización rápida de objetos
- Fácil uso de objetos proxy
Relación con Smalltalk
Pharo se basa en conceptos generales de Smalltalk pero busca mejorarlos para no limitarse a ellos. La sintaxis básica del lenguaje se parece mucho a Smalltalk. Sin embargo, la forma en que se definen las clases en Pharo difiere de otros dialectos de Smalltalk. [ ¿cómo? ]
Sintaxis del lenguaje
La sintaxis de Pharo se basa en la sintaxis del lenguaje Smalltalk-80 con varias extensiones. Algunos de estos son comunes entre los dialectos Smalltalk modernos.
- literales para matrices dinámicas. Las expresiones que especifican el contenido de la matriz se evalúan en el momento de la ejecución del programa.
{ 1 . 2 . 1 + 2 }
- literales para matrices de bytes que pueden estar compuestas solo por números enteros en el rango de 0 a 255
# [ 1 2 3 4 ]
- literales para decimales escalados, una representación de números decimales de coma fija capaz de representar con precisión fracciones decimales
3,14 s2
- pragmas. En Smalltalk-80, los pragmas se utilizan solo para métodos primitivos. En Pharo son anotaciones de métodos totalmente capaces
< gtInspectorPresentationOrder: 30>
- dos comillas dobles dentro de un comentario se interpretan como un carácter de comillas dobles simples que es parte del contenido del comentario
Se supone que la sintaxis del lenguaje Pharo es muy simple y minimalista. Los elementos básicos del lenguaje a menudo se presentan en una sola postal. La gramática se clasifica como LL (1).
La gramática del lenguaje no especifica directamente cómo se debe almacenar el código en los archivos. Pharo usa Tonel como el formato de serialización de código preferido.
Historia
Pharo surgió como una bifurcación de Squeak , un entorno Smalltalk de código abierto creado por el equipo Smalltalk-80 ( Dan Ingalls y Alan Kay ). Pharo fue creado por S. Ducasse [1] y M. Denker en marzo de 2008. Se centra en técnicas modernas de desarrollo e ingeniería de software. [ cita requerida ] Pharo cuenta con el apoyo del consorcio Pharo (para personas jurídicas) [2] y la asociación Pharo para personas físicas [3] .
Versión | Fecha de lanzamiento | Características principales |
---|---|---|
16 de marzo de 2008 [2] | Entorno de Fork of Squeak | |
Pharo 1.0 | 15 de abril de 2010 | cierres reales, EToys y MVC eliminados |
Pharo 1.1 | 26 de julio de 2010 | Cog JIT VM, marco de configuración |
Pharo 1.2 | 29 de marzo de 2011 | nuevo Finder, herramienta de cambios recientes, ayuda mejorada, mejores temas |
Pharo 1.3 | Agosto de 2011 | Imágenes de zinc, headless |
Pharo 1.4 | Abril de 2012 [3] | Metamodelo de anillo, mejor simulador de código |
Pharo 2.0 | 18 de marzo de 2013. [4] | mejoras del navegador, herramientas de control de calidad, serializador de combustible, mejor API de archivos |
Pharo 3.0 | Abril de 2014. [5] | nuevo compilador modular (Opal) y depurador, continuaciones |
Pharo 4.0 | Abril de 2015. [6] | GTools, tragamonedas |
Pharo 5.0 | Mayo de 2016. [7] | Spur VM, UFFI, reflectividad mejorada |
Pharo 6.0 | 6 de junio de 2017. [8] | Soporte de 64 bits y Git |
Pharo 6.1 | 24 de julio de 2017. [9] | soporte mejorado de Git |
Pharo 7.0 | 22 de enero de 2019. [10] | bootstrapping, nuevo navegador de código (Calypso), rasgos con estado |
Pharo 8.0 | 20 de enero de 2020. [11] | soporte mejorado de Git, testing, refactoring y Windows |
Uso de Pharo
Empresas y consultores
Algunas empresas utilizan Pharo para sus proyectos de desarrollo. [12] En particular, utilizan:
- Seaside para el desarrollo web dinámico [13]
- Zinc para arquitecturas de servidor [14]
- Moose [15] para analizar datos y software de todos los lenguajes de programación
- Bibliotecas gráficas para interfaces de usuario evolucionadas
- Roassal para visualizar datos [16]
El consorcio Pharo [17] se creó para empresas que desearan apoyar el proyecto Pharo. La asociación Pharo [18] fue recientemente [ ¿cuándo? ] creado para usuarios que deseen apoyar el proyecto.
Rendimiento y máquina virtual (VM)
Pharo se basa en una máquina virtual que está escrita casi en su totalidad en Smalltalk. A partir de 2008, se desarrolló una nueva máquina virtual (Cog) para Squeak, Pharo y Newspeak que tiene un nivel de rendimiento cercano al de la máquina virtual Smalltalk más rápida. [19] En 2014/2015, la comunidad de VM está trabajando en Spur, un nuevo Administrador de memoria para Cog que debería aumentar nuevamente el rendimiento y brindar un mejor soporte de VM de 64 bits. [20]
Ver también
- Smalltalk ámbar
- GNU Smalltalk
- Chirrido
- VisualWorks
Referencias
- ^ Información de la licencia de Pharo
- ^ "Pharo tiene 10 años" . Pharo-project.org . Consultado el 31 de mayo de 2018 .
- ^ "Pharo Open Source Smalltalk - Versión 1.4" . Pharo-project.org. 17 de abril de 2012 . Consultado el 5 de abril de 2013 .
- ^ "Pharo Open Source Smalltalk - Versión 2.0" . Pharo-project.org. 18 de marzo de 2013 . Consultado el 5 de abril de 2013 .
- ^ "Pharo Open Source Smalltalk - Versión 3.0" . pharo.org. 30 de abril de 2014. Archivado desde el original el 23 de agosto de 2017 . Consultado el 1 de mayo de 2014 .
- ^ "Pharo Open Source Smalltalk - Versión 4.0" . pharo.org. 15 de abril de 2015. Archivado desde el original el 23 de agosto de 2017 . Consultado el 16 de abril de 2015 .
- ^ "Pharo Open Source Smalltalk - Versión 5.0" . pharo.org. 12 de mayo de 2016. Archivado desde el original el 29 de diciembre de 2017 . Consultado el 13 de mayo de 2016 .
- ^ "Pharo Open Source Smalltalk - Versión 6.0" . pharo.org. 6 de junio de 2017.
- ^ "Pharo 6.1 lanzado" . pharo.org. 24 de julio de 2017.
- ^ "Pharo 7.0 lanzado" . pharo.org. 22 de enero de 2019.
- ^ "¡Lanzamiento de Pharo 8.0!" . pharo.org. 20 de enero de 2020.
- ^ "(Comunicado de prensa) Pharo Open Source Smalltalk - Historias de éxito" . Pharo-project.org . Consultado el 5 de abril de 2013 .
- ^ "Inicio" . seaside.st. 18 de marzo de 2007 . Consultado el 5 de abril de 2013 .
- ^ "Componentes HTTP de zinc" . Zn.stfx.eu . Consultado el 5 de abril de 2013 .
- ^ Girba, Tudor. "Inicio" . Tecnología Moose . Consultado el 5 de abril de 2013 .
- ^ "Visualización ágil" . Perfil de objeto . Consultado el 31 de mayo de 2018 .
- ^ "web: Consorcio Pharo" . Consortium.pharo.org. 31 de marzo de 2013 . Consultado el 5 de abril de 2013 .
- ^ Ducasse, Stephane. "asociación: Asociación Pharo" . Association.pharo.org . Consultado el 5 de abril de 2013 .
- ^ "Blog de Cog" . Mirandabanda.org . Consultado el 5 de abril de 2013 .
- ^ "Resumen de 7 puntos del administrador de memoria Spur" . Clément Béra . Consultado el 17 de abril de 2015 .
enlaces externos
- Página web oficial