В чем разница между функциями в математике и функциями в программировании?

В чем разница между функциями в математике и функциями в программировании?

23
задан houbysoft 31 August 2010 в 11:06
поделиться

3 ответа

В функциональном программировании у вас есть Ссылочная прозрачность, что означает, что вы можете заменить функцию ее значением без изменения программы. Это верно и в математике, но это не всегда верно в императивных языках.

математическая функция определяется: отношением, которое отображает элементы из одного набора (A) в другой (B), отображая каждый элемент первого набора только с одним из другого набора. В C (как и в других языках программирования) это также верно, у вас есть входной набор и выходной набор (который почти всегда только ОДИН).

Основное отличие состоит в том, что ВСЕГДА если вы вызовете f(x) в математике, вы получите тот же ответ, но если вы вызовете f '(x) в C ответ может быть другим (одинаковые аргументы не получают одинаковый вывод). (Я думаю, что это немного неверно. Если у вас есть две точно машины в одном и том же статус, они будут выводить одно и то же... но он пытается сказать, что функция в нефункциональных языках может зависеть не только от аргументов, которые вы им даете, но и от других вещей программы)

Еще одно различие между математикой и функции C, заключается в том, что в математике вы не можете создать функцию, которая переходит от непустого набора к пустому набору (в C это будет: вы не обязаны всегда что-то возвращать с помощью вашей функции). Кроме того, не все функции вычислимы (я не знаю, есть ли что-то подобное в математике...). У вас нет функций для бесконечных множеств (у вас конечная память, поэтому набор возможных входных параметров должен быть конечным), но в математике вы можете определить функцию для бесконечных множеств (например, f: N -> N) и для несчетных наборов (например, f: R -> R) (в C у вас есть числа с плавающей запятой, но они представляют собой только сокращенный набор действительных чисел, который конечен).

Наконец, знайте, что функциональное программирование ближе всего к математическим функциям, и вы МОЖЕТЕ использовать C как функциональный язык (или что-то в этом роде). Отметьте "Functional C"

Извините, если мой английский плохой, надеюсь, мой ответ вам поможет.

Резюмируя:

В C у вас не всегда есть ссылочная прозрачность.Ваши функции могут не всегда давать один и тот же результат для одних и тех же входных параметров. У вас могут быть математические функции, определенные для бесконечного набора входных данных, но в функциях C ваши входные данные конечны. В функциях C у вас могут быть функции, которые ничего не возвращают, но в Math у вас не может быть этого (если у вас есть функция с непустым входным набором, вы должны сопоставить каждый элемент с одним из другого набора).

22
ответ дан 29 November 2019 в 02:24
поделиться

Я думаю, что наиболее важным отличием является то, что функции в математике (и функциональном программировании) не могут изменять состояние, в то время как функции (императивного) программирования могут.

3
ответ дан 29 November 2019 в 02:24
поделиться

В математике функции не генерируют исключения. :)

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

В математике функция — это нечто очень конкретное и ничего больше. Функция обычно описывается как «машина», которая принимает входные данные и выдает выходные данные. В то время как функции информатики действительно принимают входные данные и выдают выходные данные, они не должны делать это с точным «один и тот же ввод всегда дает один и тот же результат», которого требует математика (например, bool IsMyApplicationRunningInFullScreen() возвращает различные значения без ввода вообще).

0
ответ дан 29 November 2019 в 02:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: