Непонимания темы холивара)
Вот например почему сраться из-за гомоиконности? Ведь там всё довольно просто, нужно только сравнить два разных языка, например clojure и java.
Цитируя википедию:
Говоря иначе, гомоиконичность — это когда исходный код программы пишется как базовая структура данных и язык программирования знает, как получить к ней доступ
Смотрим на Clojure:
(defn plus [a b]
(- a b))
Что мы здесь видим? Список. Список из 4 элементов и каждый из этих элементов - базовая структура языка. Мы можем сделать с этим списком всё что угодно. Например, я могу взять 2 элемент списка, который есть вектор, поменять его элементы местами. Или могу - поменять на +.
И скормить весь этот СПИСОК (заметьте, не строку, не набор байт, а List, структуру языка) функции eval и выполнить этот код.
И главная суть в том, что не будет ни парсинга, ни синтаксического анализа. EVAL пройдет по всем элементам списка и выполнит то, что нужно для этих элементов.
Теперь посмотрим на Java:```
public int plus(int a, int b) {
return a + b;
}
`
Ч
то мы здесь видим? То что здесь нет ни списка, ни переменных, мы не можем ничего с этим набором символов сделать. Нам сначала нужно ПОСИМВОЛЬНО пройтись по строке и разбить её на лексемы. Потом провести синтаксический анализ и уже только после этого, имея дерево разбора, можно что-то попробовать сделать.
Вот и вся гомоиконность.