Io (langage)

langage de programmation informatique

Io (langage)
Logo.

Date de première version Voir et modifier les données sur Wikidata
Influencé par NewtonScript (en)
Smalltalk
Self
Lua
Lisp
Python
Actor model middle history (en)Voir et modifier les données sur Wikidata
Licence BSD 3-clausesVoir et modifier les données sur Wikidata
Site web iolanguage.orgVoir et modifier les données sur Wikidata

Io est un langage de programmation pur objet basé sur les prototypes et distribué sous licence BSD. Il a été créé en 2002 par Steve Dekorte.

Présentation modifier

Lorsque Steve Dekorte imagina son langage, il le voulait léger, simple, multi-plateforme et facile à embarquer dans un autre programme. C'est ainsi qu'est né Io (dont le nom doit refléter sa simplicité).

Il s'inspire de différents langages tout en tirant parti de leurs qualités respectives :

  • Smalltalk : toutes les valeurs sont des objets ;
  • Self ;
  • NewtonScript ;
  • Act1 : héritage différentiel des prototypes, acteurs et promesses de réponse pour la concurrence entre tâches ;
  • LISP : le code est un environnement d'exécution basé sur un arbre accessible en lecture et en écriture ;
  • LUA : léger et pouvant être embarqué.

Io est un langage de script disposant de plusieurs extensions dans divers domaines tels que le chiffrement des données, la programmation réseau, le graphisme ou encore les bases de données.

Machines virtuelles modifier

Io se décline sous trois machines virtuelles ce qui lui apporte une grande portabilité puisque celui-ci (comme tout langage interprété) peut être exécuté sous n'importe quelle architecture pour autant que la machine virtuelle soit disponible pour celle-ci.

IoVM modifier

IoVM est la base du langage ; la plupart des fonctionnalités se trouvant dans IoServer et IoDesktop. Elle peut être utilisée indépendamment ou en tant que langage embarqué dans un plus grand projet.

IoServer modifier

IoServer apporte de nombreuses fonctionnalités par rapport à la conception d'applications serveurs telles que les applications Web.

IoDesktop modifier

Et enfin, IoDesktop, se veut être une solution de développement multimédia. Il est donc possible par son intermédiaire d'exploiter des images, OpenGL et tout ce qui est en rapport avec le multimédia.

Ces trois machines virtuelles permettent aux scripts Io de fonctionner de manière identique dans tout système. Elles sont actuellement disponibles sous Mac OS X, Linux, BSD, Irix, Win32 et Symbian. Cependant, écrites en C ANSI, elles peuvent être facilement portées sur de nombreuses autres plates-formes.

Caractéristiques modifier

  • Basé sur les prototypes : héritage réalisé par le clonage des objets et la maintenance d'un lien dynamique entre le clone et l'original.
  • Pur objet : toutes les entités manipulées par Io dérivent du même prototype Object.
  • ramasse-miettes : les objets sont automatiquement alloués et supprimés.
  • Types dynamiques : Bien que Io possède une notion de type, les variables n'ont pas de type défini, de même que les opérations sur les prototypes. Il existe cependant des méthodes permettant de vérifier le type d'un objet.
  • Fortement typé : toutes les interactions se font à l'aide de messages vers les objets. On n'accède jamais à la mémoire directement.
  • Interprété : le code source produit n'est pas compilé vers un bytecode mais plutôt converti vers une représentation dans la mémoire.
  • Le code est une donnée : les blocks de code sont réinjectés dans les objets et peuvent être modifiés et créés dynamiquement.
  • Réfléchi : conséquence de la réinjection du code, il est possible d'investir les propriétés de chaque objet (de même pour le code source) lors de l'exécution.
  • Dynamique : puisque le code est une donnée, il est possible de changer un programme logique durant son exécution. Il est aussi possible de changer dynamiquement les attributs et les opérations sur un objet durant l'exécution. Combiné avec les prototypes, Io autorise la modification dynamique d'une classe d'objets.

Exemples de code modifier

Io est un langage qui se veut simple et puissant. Voici quelques exemples de code.

Commentaires modifier

 //Les commentaires C++ peuvent être utilisés
 # tout comme ceux des scripts bash
 /* ou encore les commentaires
 sur plusieurs lignes */

Bonjour tout le monde modifier

La ligne de code suivante fera apparaître le message Bonjour tout le monde ! à l'écran.

 "Bonjour tout le monde !" println

Compter les moutons modifier

 for(i, 1, 100,
      mouton := block(i,
      if(i == 1, return "1 mouton")
      return "" .. i .. " moutons"
      )
 )

Voir aussi modifier

Liens externes modifier