Информация об изменениях

Сообщение Re[16]: С нуля научиться программировать девушке от 12.08.2016 19:56

Изменено 12.08.2016 20:03 VTT

Откуда у вас навязчивая идея о противоречиях этих подходов?
Любую императивную программу можно представить как цепочку вызовов функций, каждая из которых принимает на вход единственный аргумент — глобальное состояние от предыдущей и возвращает новое глобальное состояние соответствующее исполнению одной команды.
Любую функциональную программу можно представить как последовательность команд.

S>Ну так вы готовы продемонстрировать ФП на паскале без использования глобального или локального состояния явно?

"Найдите 10 отличий":
паскаль
function plus_one(x: integer): integer;
begin
    plus_one := x + 1
end;

хаскель
plus_one :: (Integral x) => x -> Integral 
plus_one x = x + 1


VTT>>2) реализация какого-либо математического формализма, типа лямбда-исчисления

S>Если вы здесь не ошиблись, то значит машина Тьюринга демонстрирует нам образцы функционального подхода. См. тезис Тьюринга.

Наверное мне стоило бы написать "математического формализма c функциями" для ясности (хотя это вроде и так понятно)...
Если язык основывается на формализме с узлами, то это будет уже узло-ориентированный язык или что-нибудь подобное.
Но суть в том, что императивные языки по большей части происходят от записи машинных инструкций.
А функциональные ориентируются на определенные математический формализм, причем по возможности близко к математическим обозначениям.
Re[16]: С нуля научиться программировать девушке
Откуда у вас навязчивая идея о противоречиях этих подходов?
Любую императивную программу можно представить как цепочку вызовов функций, каждая из которых принимает на вход единственный аргумент — "глобальное состояние" от предыдущей и возвращает новое "глобальное состояние" соответствующее исполнению одной команды.
Любую функциональную программу можно представить как последовательность команд.

S>Ну так вы готовы продемонстрировать ФП на паскале без использования глобального или локального состояния явно?

"Найдите 10 отличий":
паскаль
function plus_one(x: integer): integer;
begin
    plus_one := x + 1
end;

хаскель
plus_one :: (Integral x) => x -> Integral 
plus_one x = x + 1


VTT>>2) реализация какого-либо математического формализма, типа лямбда-исчисления

S>Если вы здесь не ошиблись, то значит машина Тьюринга демонстрирует нам образцы функционального подхода. См. тезис Тьюринга.

Наверное мне стоило бы написать "математического формализма c функциями" для ясности (хотя это вроде и так понятно)...
Если язык основывается на формализме с узлами, то это будет уже узло-ориентированный язык или что-нибудь подобное.
Но суть в том, что императивные языки по большей части происходят от записи машинных инструкций.
А функциональные ориентируются на определенные математический формализм, причем по возможности близко к математическим обозначениям.