Ответ 1
Тот факт, что слишком много деталей реализации протекало на более высоком уровне, т.е. слишком много отображалось
В История Lisp Маккарти пишет:
Неожиданное появление интерпретатора, как правило, задерживало форму языка, а некоторые из решений, сделанных довольно беззаботно для "рекурсивных функций...", позже оказались неудачными. Они включали нотацию COND для условных выражений, которая приводит к ненужной глубине скобок и использование числа 0 для обозначения пустого списка NIL и значения истины false. Помимо стимулирования порнографического программирования, давая специальную интерпретацию адреса 0 вызвало трудности во всех последующих реализациях.
О чем он говорит?
Тот факт, что слишком много деталей реализации протекало на более высоком уровне, т.е. слишком много отображалось
... ноль, чтобы обозначить пустой список...
потому что 0==()
был смайлик порнографии с 1958 года.
Теперь вы знаете.
Оригинальный спецификатор Fortran III, технический документ, распространенный зимой 1958 года, описывает некоторые очень явные дополнения к языку Fortran II, включая... встроенную сборку.
PDF здесь
Тантализирующее описание "дополнений" следует:
Некоторый код табу
Загадочно, Fortran-III был никогда не выпускался публике (см. раздел 5.), но распространялся ограниченным образом, прежде чем тихо исчезать.
Возможно, это был его способ поговорить о null ссылках: ошибка в миллиард долларов (Т. Хоар).
Я думаю, что это смешение числовых и логических значений, которые все еще можно увидеть в популярных конструкциях, возможно, возникших в Fortran, например while (1)
. Существует множество "умных" алгоритмов C, которые полагаются на факт, что 0 является ложным, а каждое другое значение не является.
То же самое применимо в целом к вызовам API, как в POSIX или Linux, некоторые из которых возвращают 0 при неудаче, а некоторые -1 (есть правило, когда применять, который, но это просто фольклор, так часто он сломан). Учитывая тот факт, что во времена Маккарти эти вещи еще не были разработаны, вы можете увидеть его "пророческую" силу даже здесь.