Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 1232 17-09-2006 11:48 | |
Ответ на »сообщение 1230« (Владимир Лось)
___________________________
Чем больше программа, тем больше в ней ошибок. И если на более высокоуровневом языке программа занимает меньшееек оличество строк, то и ошибок в ней будет меньше. Что же касается 1.7 миллионов строк на Erlang, то это гигантский объем (ядро Linux - 2.5 млн.), что учитывая характер программы ( идентификация, контроль и дистрибуция трафика в интернете) позволяет сделать предположение, что большая часть ее - это перечень прецедентов, т.е. своеобразная БД.
На Си++ по прежнему будет писаться подавляющее большинство проектов. Интересно, а на основании чего вы пришли к такому выводу?
Желание приблизить (упростить) до уровня "обывателя от технических НАУК" математическую дисциплину, приводить к куче компромисов. С точки зрения "высоколобых" эти компромисы - вынужденная мера. С точки зрения "паренька от программистской сохи", во всю мощь своей рабоче-крестьянской глотки кричащего на всех форумах о необходимости иметь "удобный гибкий язык, в котором есть куча средств", - эти компромисы - неотъемлемая часть "любого нормального ЯП". А почему бы этим таинственным яйцеголовым не создать математически дисциплинированный и бескомпромиссный язык, дабы отсечь, как вы говорите, "рабоче-крестьянских пареньков", т.е. избавиться от низкооплачеваемых конкурентов и пребывая в счастливом осознании собственной исключительности создавать "божественные" программы?
То, что это протсо "интеллектуальные костыли", выданные "высоколобыми" "паренькам", последние или не понимают или понимают, но бояться признаться... Я смотрю, что это ваш любимый конек - делить программистское сообщество на панов и холопов. Я, конечно, не отрицаю, что дураки и в программировании есть (мало того, могу сказать, что образованный и нахватавшийся современной терминологии дурак - это особо опасный дурак). Хочу только вас спросить, а вы знаете что эти два лагеря четко не очерчены, что это не черный и белый цвета, и даже не градиентный переход от одного к другому?
№ 1231 17-09-2006 11:35 | |
во всю мощь своей рабоче-крестьянской глотки кричащего
Ого! Форум поднялся до классовой борьбы! На Зимний (на Смольный)!
Всё проще - Вагиф тут тренируется в обосновании перехода на LispWorks перед работодателями и хочет раскрутить их на AllegroCL :) А вы тут парадигмы философии программирования рассусоливаете.
Сообщение не подписано
№ 1230 17-09-2006 06:56 | |
Ответ на »сообщение 1229« (Артем)
___________________________
Ответ на »сообщение 1228« (Jack Of Shadows)
___________________________
Скорее всего большая часть из этих 1.7 миллиона все-таки является базой фактов со слабой связностью. Может, я не прав, но у меня есть опыт работы с Prolog. Там часто основная часть - это своеобразный гибрид программы и базы данных, состоящей или из элементарных фактов, или из простых правил.
Скорее всего, Вы не правы.
Вагиф поднял тему не только адекватности языка строящимся моделям, сколько способностью языка "удерживать" разработчика в рамках принятой парадигмы. Ещё (уже почти!) семь лет назад кем-то на обероновской теме ваысказывалась мысль, что оберон, в конечном итоге, ждёт печальная участь, не потому, что он такой "ограниченный", а потому, что создатели языка "пошли на поводу у страждущих"...
На Си++ по прежнему будет писаться подавляющее большинство проектов. И негде, кроме, как в этих проектах не будет такого бардака.
Желание приблизить (упростить) до уровня "обывателя от технических НАУК" математическую дисциплину, приводить к куче компромисов. С точки зрения "высоколобых" эти компромисы - вынужденная мера. С точки зрения "паренька от программистской сохи", во всю мощь своей рабоче-крестьянской глотки кричащего на всех форумах о необходимости иметь "удобный гибкий язык, в котором есть куча средств", - эти компромисы - неотъемлемая часть "любого нормального ЯП". То, что это протсо "интеллектуальные костыли", выданные "высоколобыми" "паренькам", последние или не понимают или понимают, но бояться признаться...
Уж лучше, в очередной раз, завести зурну о количестве скобок в языке...
№ 1229 17-09-2006 02:37 | |
Ответ на »сообщение 1228« (Jack Of Shadows)
___________________________
Скорее всего большая часть из этих 1.7 миллиона все-таки является базой фактов со слабой связностью. Может, я не прав, но у меня есть опыт работы с Prolog. Там часто основная часть - это своеобразный гибрид программы и базы данных, состоящей или из элементарных фактов, или из простых правил.
№ 1228 16-09-2006 18:38 | |
Ответ на »сообщение 1227« (Артем)
___________________________
Вы видели эти 1.7 миллиона строк кода от нескольких ребят? Это ж сколько времени им беднягам надо было писать? Может, посчитаем?
Можно и посчитать, если не путать Ericsson с BlueTail :)))
№ 1227 16-09-2006 16:38 | |
Ответ на »сообщение 1223« (Jack Of Shadows)
___________________________
Вы видели эти 1.7 миллиона строк кода от нескольких ребят? Это ж сколько времени им беднягам надо было писать? Может, посчитаем?
В Prolog тоже можно нагенерить базу фактов размером в пару миллионов строк. Только все эти строки не будут полноценной программой.
№ 1226 16-09-2006 11:53 | |
Ответ на »сообщение 1224« (info21)
___________________________
При локальных (в любом смысле) функциях, передаваемых куда-то в качестве параметров...
Для чистых функций понятия локальный\глобальный теряют всякий смысл.
Если результат функции зависит только от принимаемых агрументов и при этом исполнение функции не меняет состояния системы, то какая разница, локальная эта функция или глобальная ?
№ 1225 16-09-2006 11:23 | |
Ответ на »сообщение 1220« (Артем)
___________________________
беллетристика.
Наконец-то найдено слово, за которое нельзя забанить!
Артем, спасибо!
№ 1224 16-09-2006 11:15 | |
Ответ на »сообщение 1216« (Jack Of Shadows)
___________________________
Ответ на »сообщение 1212« (bb)
___________________________
А вот чистый ФП как я уже говорил - дает гарантии что независимо от того кто пишет код, этот код будет отвечать определенным требованиям - абстракции и инкапсуляции.
НЕ ДАЕТ.
Дальше от железа -- не значит ближе к человеку, ни к проблемной области.
Насчет инкапсуляции вообще -- как бы помягче выразиться, штоб не забанили? скажем так -- ерунда. При локальных (в любом смысле) функциях, передаваемых куда-то в качестве параметров...
№ 1223 16-09-2006 11:11 | |
Ответ на »сообщение 1221« (Артем)
___________________________
Пока же я выбираю такие средства, которые позволяют мне зарабатывать деньги,
http://armstrongonsoftware.blogspot.com/2006/08/making-money-from-erlang.html
В 1998 году несколько ребят из Erricson создали с нуля свою компанию Bluetail, написали на Erlang софт для идентификации, контроля и дистрибуции трафика в интернете.
Через 2 годы их купила крупная компания за 152 миллиона долларов.
Как вам 152 миллионов долларов за 2 года ? Позволяют ФЯ зарабатывать деньги ?
По поводу насаждения минимальной дисциплины программирования.
Эти мысли пришли мне в голову во время изучения книги Haskell The Craft of Functional Programming, которую я сейчас штудирую.
Написание примеров из книги натолкнуло меня на мысль, что использовать процедурный стиль у меня не получилось бы при все моем желании. Нет операций присваивания, нет циклов. Ты просто вынужден разбивать логику программы на независимые друг от друга функции.
Да если язык заточен на определенные проблемы (многопоточность, например, по нетребовательности к ресурсам там вообще уникальна), если один и тот же класс проблем воплощается на нем в меньшем количестве кода, чем в C++ (упомянем здесь и ~ одинаковую квалификацию программистов), то и ошибок там будет меньше.
В упоминаемом примере софта Errocon кода там 1.7 миллиона строк. Надежность программы - меньше миллисекунды простоя в год!!!
Никаким уменьшением кода невозможно обьяснить такую невозможную просто для императивных языков надежность, при таких обьемах кода.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|