Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 2522 02-04-2007 15:37 | |
Ответ на »сообщение 2519« (Jack Of Shadows)
___________________________
Ответ на »сообщение 2516« (Илья Ермаков)
А вот с обероном и вообще языками этого уровня потяжелее. Никакая многолетняя практика не помогает. Вот тут ваша аналогия с муравьем ползающим по большой трехмерной поверхности и пытающимся подсчетом шажков понять по чему же это он лазит - точна.
Джек, но факт есть факт - качество/количество ошибок при программировании на Обероне на порядок ниже общепринятого по индустрии. Независимо от индивидуальных особенностей - в целом обероновский open-source дает именно такое впечатление. Операционные системы и другие "насыщенные" вещи реализуются малыми командами в короткие сроки.
Почему? Из-за совокупного эффекта - а) язык прост и включает минимум базовых средств для "чистого" выражения алгоритмов и проектных решений в стиле модульного и ООП-программирования б) эти средства безопасны и герметичны. Непосредственный (и, наверное, единственный) близкий аналог в этом смысле - Smalltalk. И тоже - поглядите на него - парадоксально - в чем причина резкого повышения качества? Никаких супер-абстракций вы в нем не найдете, это высокоуровневый, но чисто императивный язык. Типизация полностью динамическая, а это - весьма опасный "рассадник ошибок" в других языках... Однако работает фактор простоты и жесткости "скелета" языка, который включил минимум "кирпичиков" и минимум необходимых отношений между ними, на основе чего дальше строятся гибкие и надежные системы...
№ 2521 02-04-2007 15:27 | |
Ответ на »сообщение 2520« (Jack Of Shadows)
___________________________
Ответ на »сообщение 2518« (RBV)
___________________________
Джек, признайтесь, Вы провели хотя бы одно занятие в школе? В вузе?
Признаюсь, нет. И ?
:) Мне всегда нравятся заявления людей не имеющих отношения к образованию, о том, что лучше для оного. В особенности для школьного.
Откройте у себя в одной из школ факультатив по программированию и давайте ФП, а через годок-другой поделитесь успехами. Тогда беседа об образовании примет конструктивный характер. Я серьёзно.
№ 2520 02-04-2007 15:20 | |
Ответ на »сообщение 2518« (RBV)
___________________________
Джек, признайтесь, Вы провели хотя бы одно занятие в школе? В вузе?
Признаюсь, нет. И ?
№ 2519 02-04-2007 15:19 | |
Ответ на »сообщение 2516« (Илья Ермаков)
___________________________
Дело привычки... Я честно признаюсь, что даже с объяснениями, даже после чтения Душкина, я тяжело воспринимаю код на Хаскелле. Приходится как бы удерживать в голове сразу множество граней-соотношений.
Да вам просто приходится читать на иностранном языке. Вот и все. Вы совершенно правы - дело привычки.
Чтением книг без практики не научишься ни борьбе, ни игре на пианино, ни конечно же программированию.
Лечится участием в проекте среднего размера. Через пару недель будете просто "летать" над кодом :))
А вот с обероном и вообще языками этого уровня потяжелее. Никакая многолетняя практика не помогает. Вот тут ваша аналогия с муравьем ползающим по большой трехмерной поверхности и пытающимся подсчетом шажков понять по чему же это он лазит - точна.
№ 2518 02-04-2007 15:17 | |
Ответ на »сообщение 2509« (Jack Of Shadows)
___________________________
ФЯ именно в обучении дают преимущество. В том плане что прививают грамотный подход НЕЗАВИСИМО от размера задачи. Прививают ПРИВЫЧКУ к декомпозиции, модуляризации, упрятыванию всего лишнего внутрь, взаимодействия через жесткие и скупые интерфейсы функций (входные параметры, выходные значения)
Джек, признайтесь, Вы провели хотя бы одно занятие в школе? В вузе?
№ 2517 02-04-2007 14:22 | |
Ответ на »сообщение 2513« (Владимир Лось)
___________________________
Я представляю собой труп фортера-любителя (могилка здесь: http://www.forth.org.ru/~belugin/ приходите и положите цветы).
Фортом начал заниматься в школе (учитель информатики был любителем этого языка) продолжил дома на Вектор-06ц.
Тогда можно было сделать объектно-ориентированный язык из форта на 32к ОЗУ.
Но сейчас это просто не нужно.
Спасибо форту за то, что научил меня готовить равиоли ( http://c2.com/cgi/wiki?RavioliCode ) и за понимание того, как устроены машины
№ 2516 02-04-2007 14:15 | |
Ответ на »сообщение 2514« (Jack Of Shadows)
___________________________
Ответ на »сообщение 2512« (Jack Of Shadows)
___________________________
В отличии от КП, код на хаскеле читается практически как постановка задачи.
Дело привычки... Я честно признаюсь, что даже с объяснениями, даже после чтения Душкина, я тяжело воспринимаю код на Хаскелле. Приходится как бы удерживать в голове сразу множество граней-соотношений. Т.е., образно говоря, код на ФП для меня - это как одним взглядом представить себе куб в шестимерном пространстве, а код на ИП - неспешное и кропотливое построение многих проекций на двумерную плоскость. Подход муравья, проползшего по всем граням и пошагово выстроившего общее представление.
Между прочим, такое "приземление", работа на уровне большей детализации может также трактоваться как абстрагирование. Абстрагирование от сложности нотации/инструмента. Потому что большая "содержательность" конструкций инструмента ведет не только к сокращению кода, она ведет к усложнению возможных отношений между "кирпичиками", в случае чрезмерно навороченных языков - к "комбинаторному взрыву" таких возможностей, и как следствие - к тому, что инструмент выходит из под умственного контроля, удержать в голове все "встроенные" в него отношения становится тяжело.
№ 2515 02-04-2007 13:51 | |
Ответ на »сообщение 2513« (Владимир Лось)
___________________________
А фортеры кстати если и заглянут, будут на стороне императивщиков.
У них явное манипулирование состоянием (стеком) В КАЖДОЙ строчке, и не только строчке но практически в каждом слове программы :))
Они в этом плане святее папы римского, то есть императивнее даже императивщиков :))
Я не НАСТОЛЬКО умен, чтобы в такие игры играть. Лазание по стеку - не для меня.
Да и в общем как показывает судьба фортовских языков, не для подавляющего большинства людей.
Кстати если хотите пообщаться с фортовцами, то есть такая известная линость как Слава Пестов, автор весьма популярного программистского редактора Jedit, а также создатель языка Factor
http://factorcode.org/
№ 2514 02-04-2007 13:44 | |
Ответ на »сообщение 2512« (Jack Of Shadows)
___________________________
Да забыл, вторая проблема решения на КП (она тоже была озвучена GeniPro ранее). Запутанность решения.
Код write-only тяжело читается, тяжело понимается.
То есть каждая отдельная строчка вроде понятна. А вместе - вермишель какой то. Особенно места с вложенными двойными и тройными (!!!) циклами.
В отличии от КП, код на хаскеле читается практически как постановка задачи.
№ 2513 02-04-2007 13:41 | |
Я вот всё думаю, и как это сюда ещё фортер какой не заглянул? :о)
Вроде по теории вероятностей уже давно пора... Или перевелись уже все? Исчезли, как класс...
Они бы быстро всем растолковали что - к чему... ("крылья-крылья!... - НОГИ!") :о)
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|