Articulo de referencia

Io (lenguaje de programación)

{{cite web |url=https://github.com/IoLanguage/io/releases |title=Io Releases |website=[[GitHub]] |access-date=2020-02-06}} "},"latest preview version":{"wt":"2019.05.22-alpha"},...

Io es un lenguaje de programación orientado a objetos puro inspirado en Smalltalk , Self , Lua , Lisp , Act1 y NewtonScript . [ 2 ] Io tiene un modelo de objetos basado en prototipos similar a los de Self y NewtonScript, eliminando la distinción entre instancia y clase . Al igual que Smalltalk, todo es un objeto y utiliza tipado dinámico . Al igual que Lisp, los programas son simplemente árboles de datos. Io utiliza actores para la concurrencia.

Las características más destacadas de Io son su tamaño mínimo y su apertura al uso de recursos de código externos. [ 3 ] Io se ejecuta mediante una máquina virtual pequeña y portátil .

Historia

El lenguaje fue creado por Steve Dekorte en 2002, después de intentar ayudar a un amigo, Dru Nelson, con su lenguaje, Cel. Se dio cuenta de que realmente no sabía mucho sobre cómo funcionaban los lenguajes y se propuso escribir un pequeño lenguaje para comprender mejor los problemas. [ 4 ]

Filosofía

El objetivo de Io es explorar la unificación conceptual y los lenguajes dinámicos , por lo que las prioridades tienden a favorecer la simplicidad y la flexibilidad por encima del rendimiento.

Características

Sintaxis

En su forma más simple, la sintaxis de Io se compone de un identificador: [ 5 ]

hacerCosas

Suponiendo que el método doStuff anterior sea un método , se llama sin argumentos y, como resultado, no se requieren paréntesis explícitos.

Si doStuff tuviera argumentos, se vería así:

hacerCosas ( 42 )

Io es un lenguaje de paso de mensajes , y dado que todo en Io es un mensaje (excepto los comentarios ), cada mensaje se envía a un receptor. El ejemplo anterior lo demuestra bien, pero no del todo. Para explicar mejor este punto, veamos el siguiente ejemplo:

Versión del sistema

El ejemplo anterior demuestra el paso de mensajes en Io; el mensaje "versión" se envía al objeto "Sistema".

Los operadores constituyen un caso especial donde la sintaxis no es tan sencilla como en los ejemplos anteriores. El analizador sintáctico de Io intercepta un conjunto de operadores definidos por el intérprete y los traduce a llamadas a métodos. Por ejemplo, lo siguiente:

1 + 5 * 8 + 1

se traduce como:

1 + ( 5 * ( 8 )) + ( 1 )

En Io, todos los operadores son métodos; el hecho de que no requieran paréntesis explícitos es una conveniencia. Como puede verse, también existe un cierto grado de precedencia entre operadores , y los niveles de precedencia son los mismos que en C.

Métodos y bloques

En Io existen dos formas de crear funciones anónimas : métodos y bloques. Entre sí, son casi idénticos, excepto por el ámbito . Mientras que los bloques tienen ámbito léxico , los métodos tienen ámbito dinámico .

Tanto el método como el bloque son funciones de orden superior .

Ejemplos

El omnipresente programa "Hola mundo" :

"¡Hola, mundo!" println

Los nuevos objetos se crean mediante la clonación de objetos. En Io, específicamente, se crea un objeto nuevo y vacío, y solo las diferencias entre este y su padre se almacenan dentro del nuevo objeto; este comportamiento se conoce como herencia diferencial . A continuación se muestra un ejemplo de este comportamiento:

A := Clon de objeto // crea un nuevo objeto vacío llamado "A"

Una función factorial simple no recursiva, en Io:

factorial := método ( n , si ( n == 0 , devolver 1 ) res := 1 Rango 1 a ( n ) para cada ( i , res = res * i ) )

Dado que la asignación res * ies resla última acción realizada, la función devuelve implícitamente el resultado, por lo que no se necesita una expresión de retorno explícita. El ejemplo anterior muestra el uso de rangos y no utiliza un for()bucle, lo que resultaría más rápido.

Referencias

  1. "Io ​​Releases" . GitHub . Consultado el 6 de febrero de 2020 .
  2. "Guía – Io" . iolanguage.org . Consultado el 9 de mayo de 2026 .
  3. "Programación Io: Escritura de complementos" . Wikibooks.org: libros abiertos para un mundo abierto . Consultado el 22 de junio de 2023 .
  4. Tate, Bruce (2010). «Capítulo 3: Io» . Siete lenguajes en siete semanas: Una guía pragmática para aprender lenguajes de programación (1.ª ed.). Raleigh, Carolina del Norte: Pragmatic Bookshelf . págs. 60, 72. ISBN   978-1934356593.
  5. "Guía de io" . iolanguage.org . Consultado el 22 de junio de 2023 .
  • Sitio web oficial
  • Io en GitHub
  • Io en el Centro de Investigación Synrc
  • Jasmine.Io en GitHub , marco de pruebas de desarrollo basado en el comportamiento (BDD) para Io
Obtenido de " https://en.wikipedia.org/w/index.php?title=Io_(programming_language)&oldid=1353322168 "