LINUX.ORG.RU

История изменений

Исправление 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 не было. Даже в ассемблерах.