Форум сайта python.su
Добрый день.
Уважаемые, объясните мне что это значит “функциональные языки программирования”. Только сильно не пинайте, если глупости спрашиваю :) В википедии прочитал следующее:
В языках функционального программирования основным конструктивным элементом является математическое понятие функции.
…
Функция в математике не может изменить вызывающее её окружение и запомнить результаты своей работы, а только предоставляет результат вычисления функции.
не понятно вот это: не может изменить вызывающее её окружение и запомнить результаты своей работы. Это что значит?
вот код на питоне
def f(a, b):
return a+b
let f a b =
a + b;;
Отредактировано (Фев. 4, 2009 11:08:43)
Офлайн
iceНа примерах:
Функция в математике не может изменить вызывающее её окружение и запомнить результаты своей работы, а только предоставляет результат вычисления функции.
def get_sum(arg1, arg2):
return arg1 + arg2
a = 1
b = 2
print get_sum(a, b)
def append_arg(lst, arg):
lst.append(arg)
a = []
b = 3
append(a, b)
def append_arg(arg):
a.append(arg)
a = []
append_arg(134)
Офлайн
Большое спасибо! Стало понятнее.
То есть окамл как бы тоже не чисто функциональный? И схема в гимпе (функции могут менять изображения (массивы пикселей)).
Офлайн
А меня мучает вопрос про ООП :)
Программерского образования не имею, и не понимаю, почему для знакомых студентов ООП, тоже самое, что “термех”, “сопромат”. Вроде ничего сложного нет, а ему удиляют много времени, и считается сложным курсом %)
Офлайн
У меня тоже нет такого образования, но вот тут приятель сидит в политехе учится, так говорит, что это довольно не простая вещь - ооп. Просто, говорит, питон - язык очень простой, но сам принцип и законы ооп это не только питон :) ну вот как-то так.
Кстати по топику нашел вот что http://ru.wikibooks.org/wiki/Основы_функционального_программирования
Многое непонятно, так как математику у нас тоже абы как вели, но так интересно…очень понравилось вот такое:
fibb (0) = 1
fibb (1) = 1
fibb (N) = fibb (N – 2) + fibb (N – 1)
или на окамле:
let map_list f lst =
match lst with
[] -> []
| head::tail -> f (head) :: map_list f tail
;;
Отредактировано (Фев. 5, 2009 12:47:29)
Офлайн
iceНу это я понимаю… По мне, так все просто, и единожды хватило одного просветления разума, чтобы понять принципы ООП, и не понимаю, как это может быть сложным, как и с функциональным программирование.
Просто, говорит, питон - язык очень простой, но сам принцип и законы ооп это не только питон :)
Офлайн
igor.kaistПітон дуже багато чого не підтримує в ооп (що саме не підтримує можу написати пізніше - коли знайду свій конспект лекцій з ооп), тому і ооп в ньому виглядає легке. пітон обєктно-орієнтований тільки тому що підтримуються тільки 3 основних принципи ооп (наслідування, поліморфізм, інкапсуляція) і то в спрощеному вигляді. Насправді ооп набагато ширше за тих 3 принципи. С++ і Object Pascal насправді підтримують ООП. Деяких речей які стосуються ооп пітон принципово не може підтримувати так як в нього динамічна типізація а деяких просто не підтримує. Не можна сказати що пітон підтримує ооп на такому ж рівні як той же с++.
и не понимаю, почему для знакомых студентов ООП, тоже самое, что “термех”, “сопромат”. Вроде ничего сложного нет,
Отредактировано (Фев. 5, 2009 15:32:02)
Офлайн
crchemist
Пожалуйста, пишите по-русски. Уважайте окружающих.
Отредактировано (Фев. 5, 2009 15:51:30)
Офлайн
DaevaornУявляю собі таблички: ~не матюкайтесь в школі~, ~не смітіть на вулиці~, ~не сцяйте в підїзді~, ~не говоріть українською~ і внизу кожної таблички - ~поважайте оточуючих~. Просто пипець. Вибачайте, не можу адакветно вам відповісти. ну дуже вже задовбали такі просьби.
Пожалуйста, пишите по-русски. Уважайте окружающих.
Офлайн
crchemist
Що конкретно не підтримує в ООП пітон? Можливо при його реалізації частина ооп фішок з того ж С++ просто не потрібна?
Офлайн