История изменений
Исправление monk, (текущая версия) :
Эти ваши академические алгоритмы с рекурсиями никому не нужны — людям нужно работу работать, нам от языка нужна прагматика».
Те люди, которым нужна была прагматика, это не нынешние школьники. Это были инженеры, которые выучились на ассемблере и фортране. И рекурсия для них была просто ненужным украшательством. Зачем, если обычный условный переход для него естественен, а сделать стек для хранения промежуточных данных (если уж надо обойти что-то наподобие дерева) ему сделать не составляет труда? А понять, в какой ассемблерный код что развернётся без рекурсии в языке проще. Также как нормальному водителю, начавшему ездить ещё в СССР, является излишеством автоматическая коробка передач и бортовой компьютер. Без них машину проще чинить, а ездить оно ему не помогает.
Да, широкий класс алгоритмов становился очень труднореализуем, но на практике они были не нужны.
Пф-ф-ф, что может быть проще передачи указателя на функцию?
Указатель на что будешь возвращать из конструкции типа
(define (compose f g) (lambda (x) (f (g x))))
? Либо придётся в программу встраивать компилятор (привет FoxBase), либо функция в программе не имеет ничего общего с CALL/RET ассемблера (как это было изначально в лиспах).
С него и пошла мода на указатели.
Указатели были ещё в PL/I. Вот Undefined Behavior до C не было. Даже в ассемблерах.
Исходная версия monk, :
Эти ваши академические алгоритмы с рекурсиями никому не нужны — людям нужно работу работать, нам от языка нужна прагматика».
Те люди, которым нужна была прагматика, это не нынешние школьники. Это были инженеры, которые выучились на ассемблере и фортране. И рекурсия для них была просто ненужным украшательством. Зачем, если обычный условный переход для него естественен, а сделать стек для хранения промежуточных данных (если уж надо обойти что-то наподобие дерева) ему сделать не составляет труда? А понять, в какой ассемблерный код что развернётся без рекурсии в языке проще. Также как нормальному водителю, начавшему ездить ещё в СССР, является излишеством автоматическая коробка передач и бортовой компьютер. Без них машину проще чинить, а ездить оно ему не помогает.
Да, широкий класс алгоритмов становился очень труднореализуем, но на практике они были не нужны.
Пф-ф-ф, что может быть проще передачи указателя на функцию?
Указатель на что будешь передавать в конструкции типа
(define (compose f g) (f (g x)))
? Либо придётся в программу встраивать компилятор (привет FoxBase), либо функция в программе не имеет ничего общего с CALL/RET ассемблера (как это было изначально в лиспах).
С него и пошла мода на указатели.
Указатели были ещё в PL/I. Вот Undefined Behavior до C не было. Даже в ассемблерах.