Fantom es un lenguaje de programación orientado a objetos de propósito general creado por Brian y Andy Frank [4] que se ejecuta en Java Runtime Environment (JRE), JavaScript y .NET Common Language Runtime (CLR) (el soporte .NET se considera "prototipo " [5] estado). Su objetivo de diseño principal es proporcionar una API de biblioteca estándar [6] que abstraiga la cuestión de si el código finalmente se ejecutará en JRE o CLR. Al igual que C # y Java , Fantom usa una sintaxis de llaves . El lenguaje es compatible con la programación funcional.mediante cierres y concurrencia mediante el modelo Actor . Fantom adopta un enfoque de "medio camino" para su sistema de tipos, combinando aspectos de la escritura estática y dinámica .
Paradigma | multi-paradigma |
---|---|
Desarrollador | Brian Frank, Andy Frank |
Apareció por primera vez | 2005 [1] |
Lanzamiento estable | 1.0.75 / 24 de agosto de 2020 [2] |
Disciplina de mecanografía | estático , dinámico |
Licencia | Licencia académica gratuita versión 3.0 [3] |
Extensiones de nombre de archivo | .fan, .fwt, .pod |
Sitio web | www |
Influenciado por | |
C # , Java , Scala , Ruby , Erlang |
Mecanografía
El sistema de tipos de Fantom es simple por diseño. Todas las variables se escriben estáticamente, como en C # y Java . Fantom rechaza tipos genéricos debido a su complejidad, pero tiene un conjunto de tipos genéricos incorporados: List
, Map
, y Func
. Fantom también puede asumir la sensación de un lenguaje escrito dinámicamente a través de llamadas dinámicas y abatimiento automático . Fantom tiene una API de reflexión y capacidades de metaprogramación fáciles de usar .
Fantom es de código abierto bajo la Academic Free License 3.0 y está disponible para plataformas Windows y tipo Unix (incluido Mac OS X). [7]
Vainas
En Fantom, la unidad de despliegue se llama pod . Los pods asumen el papel de espacios de nombres , paquetes y módulos . Se almacenan como archivos .pod, que son archivos zip que contienen el FCode (el código de bytes de Fantom), la documentación y los archivos de recursos necesarios para ejecutar el pod. Un pod puede definir cualquier número de tipos para su uso en otras bibliotecas y aplicaciones. Un nombre de pod califica completamente un nombre de tipo. Por ejemplo, fwt::Widget
es distinto de webapp::Widget
. Si un pod contiene un tipo con nombre Main
, entonces se puede ejecutar en la línea de comando con:fan
El sistema de compilación de Fantom puede empaquetar un conjunto de Pods en un archivo JAR a través de build::JarDist
.
Kit de herramientas de widget de Fantom
Fantom se envía con un kit de herramientas de ventanas estándar llamado Fantom Widget Toolkit, o FWT para abreviar. [8] Al igual que Fantom, FWT fue diseñado para ser portátil en varias plataformas. Actualmente está implementado en la JVM utilizando el kit de herramientas de widget estándar como backend. La implementación de JavaScript está respaldada por el elemento canvas y JavaFX , lo que permite que las aplicaciones FWT se ejecuten en un navegador web. Hay planes para una implementación de CLR usando Windows Forms .
Ejemplo de "Hola mundo"
Aquí está el programa clásico Hola mundo escrito en Fantom:
// ¡Hola de Fantom! class HelloWorld { estático vacío principal () { echo (" ¡Hola, mundo! ") }}
Observe que "Void" está en mayúscula. Esto se debe a que Void es una clase, no un tipo primitivo en Fantom.
Cambio de nombre
El nombre original del lenguaje de programación Fantom era Fan, llamado así por el vecindario donde viven los creadores en Richmond, Virginia . Después de que el idioma ganó algo de popularidad, los miembros de la comunidad expresaron su preocupación sobre la capacidad de búsqueda del nombre. En noviembre de 2009, [9] el nombre del proyecto se cambió oficialmente de Fan a Fantom. [10]
Otras características
Fantom tiene otras funciones útiles:
- Fantom admite la importación de clases y módulos Java con algunas limitaciones. [11]
- El número entero es de 64 bits. A diferencia de Java y C #, Fantom no tiene tipos de enteros Long o Short.
- Serialización y deserialización de clases hacia / desde cadenas. [12]
- Fantom no admite tuplas (es decir, tipos que son el producto cartesiano de otros tipos) [13]
Ver también
- Abucheo
- Ceilán
- Gosu
- Apache Groovy
- Kotlin
- Rubí
Referencias
- ^ Publicación de blog sobre la historia de Fantom
- ^ "Fantasma" . 26 de marzo de 2020.
- ^ Preguntas frecuentes del sitio web en idioma Fandoc
- ^ Preguntas frecuentes de Fantom: Contáctenos
- ^ Preguntas frecuentes de Fantom: Hoja de ruta
- ^ Preguntas frecuentes sobre Fantom: ¿Por qué Fantom?
- ^ McAllister, Neil (3 de enero de 2012). "10 lenguajes de programación que podrían revolucionar la TI" . InfoWorld . Consultado el 30 de octubre de 2015 .
- ^ "fwt - Fantom" . Fantom.org. 2015-01-08 . Consultado el 30 de octubre de 2015 .
- ^ Historia del lenguaje de programación Fantom
- ^ Fan es oficialmente ahora Fantom
- ^ Java FFI en la página de inicio de Fantom
- ^ Serialización en Fantom.org
- ^ Pregunta de tuplas en la página oficial de Fantom
Otras lecturas
- Binstock, Andrew (14 de julio de 2010). "Los cinco lenguajes de scripting más importantes en la JVM: Groovy y JRuby lideran un campo fuerte, con Scala, Fantom y Jython detrás" . Dr. Dobb's . Consultado el 30 de octubre de 2015 .
- Frank, Brian (18 de febrero de 2011). "Fantom" . Dr. Dobb's . Consultado el 30 de octubre de 2015 .
enlaces externos
- Página web oficial
- ¿No eres fanático de Scala? Un enfoque evolutivo | Ajaxonomy - entrada de blog sobre fan
- Fan de un nuevo idioma | Tiempos SD
- Re: Fan Programming Language (lista de correo [email protected]) una publicación en el foro de uno de los autores de Fantom.
- The Next Big JVM Language , una conversación con Stephen Colebourne por Bill Venners.
- Página de referencia de idiomas en LangRef.org