Homoikoniczność (łac. homo – ten sam, icon – przedstawienie) – cecha języków programowania, w których reprezentacja programu jest jednocześnie podstawową strukturą danych wykorzystywaną w języku.
Wykorzystanie i zalety
[edytuj | edytuj kod]Zaletą homoikoniczności jest prostsze rozszerzenie języka o nowe koncepcje programistyczne, ponieważ dane reprezentujące kod, mogą być przekazywane między meta a podstawowymi układami programu. Homoikoniczność pozwala także na pisanie programów, które piszą programy.
Przykłady
[edytuj | edytuj kod]Języki programowania uważane za homoikoniczne to rodzina Lisp a także Nemerle, Curl, REBOL, SNOBOL, XSLT, XQuery, TRAC, Tcl, Io, Ioke, Joy, Factor, Pico, PostScript, Prolog, R, Mathematica oraz V.
W systemie architektury von Neumanna cechę tę ma również surowy kod maszynowy a istotą typu danych są bajty w pamięci.