En programmation informatique, l'homoiconicité (de homo- : semblable, et icône : image) est une propriété de certains langages dans lesquels la principale représentation des programmes est aussi une structure de données d'un type primitif du langage.

Les langages homoiconiques rassemblent la plupart des membres de la famille Lisp mais aussi APL, Prolog, REBOL, SNOBOL, XSLT, TRAC, Tcl, Io, Julia et Red.

Cette propriété s'apparente à la réflexion dans les langages informatiques.

Avantages

modifier

Cette propriété permet de développer des programmes évolutifs, susceptibles de se développer ou de s'optimiser par eux-mêmes[réf. nécessaire]. Ce genre de programmes se rencontre par exemple en intelligence artificielle et pour la simulation de systèmes sociaux, de système vivants, ou de robots.

Il devient également plus simple d'étendre le langage, puisque les données représentant du code peuvent être échangées entre le niveau de base et le niveau meta du langage[réf. nécessaire].