Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 2342 30-03-2007 16:10 | |
Ответ на »сообщение 2335« (Илья Ермаков)
___________________________
Пардон, но статья Пола Грэма - пустое сотрясание воздуха...
Это может себе позволить человек, занимающийся "интеллектуальными игрушками".
Интеллектуальные игрушки - это типа первого интернет-магазина, купленного затем Yahoo! ?
Пол Грэм (Грэхэм) - пожалуй, самый известнейший лиспер, если не считать Маккарти.
Посадите его за написание ПО для АЭС - и поглядите, каково запоется :-)
Пол там упоминал об исследовании компании Ericsson с выводом, что программы на Эрланге в 4-10 раз короче, чем на С++, и время их разработки пропорционально выше:
Сравнение внутренних проектов в Ericsson выявляют схожую продуктивность в строках кода в час, включая все фазы разработки, независимо от используемого языка (Erlang, PLEX, C, C++ или Java). Различия языков - только в общем объеме исходного кода.
Стоит ли в который раз повторять, что телекоммуникационное ПО фирмы Ericsson - практически эталон надёжности и безопасности?
№ 2341 30-03-2007 15:55 | |
Ответ на »сообщение 2340« (AVC)
___________________________
Я просто кинул поисковику сочетание "ЖЖ ICFP".
А черт. Я искал без ЖЖ. Ни черта не нашел :))
Рад что навел на интересный материал.
№ 2340 30-03-2007 15:53 | |
Ответ на »сообщение 2336« (Jack Of Shadows)
___________________________
>>>А ну ка обьясняйтесь :))
Вы сказали про рассказ в ЖЖ нашего программиста об участии в ICFP, намекнули, что это интересно.
Я просто кинул поисковику сочетание "ЖЖ ICFP".
И пока вы с Ильей затеяли очередной раунд, я с увлечением проглотил этот рассказ.
Это правда захватывающе.
Хорошо им, умным и молодым! :)
Чем-то далеким, из детства повеяло: соревновательностью в сочетании с увлекательным предметом.
Когда-то в детстве я увлекался шахматами, участвовал в соревнованиях. Правда, в юн. чемп. РСФСР выше 5-го места не поднимался; но у меня же ни школы, ни тренера за душой не было; да и дело не в "призах", а в увлеченности... :)
№ 2339 30-03-2007 15:43 | |
Ответ на »сообщение 2312« (З)
___________________________
Я вот не смотрел в источник, автор там сравнительно не представляет оба варианта для кожого из алгоритмов "с" и "без"?
Там у аффтара какие-то неадекватные замечания о том, что рекурсивная функция вычисления НОД перепоняет стек. Конечно переполняет, на языке, не поддерживающем хвостовую рекурсия - Visual Basic.
Затем он приводит решения в виде циклов и называет их хвостовыми рекурсиями.
Моё мнение - тот автор не очень владеет этим вопросом.
№ 2338 30-03-2007 15:40 | |
№ 2337 30-03-2007 15:38 | |
Ответ на »сообщение 2335« (Илья Ермаков)
___________________________
Посадите его за написание ПО для АЭС - и поглядите, каково запоется :-)
Почему оберонщики как что, так сразу всех отсылают код для АЭС писать ? Они что все на одной АЭС работают ? :))
"Предохранитель", страховка, дублирование в каждой строке. Пусть код будет в два раза объемней, но если при этом ровно в два раза сложнее будет ошибиться - то я выберу именно такой язык...
Тут логика начинает мне отказывать. Чем больше код тем ЛЕГЧЕ ошибаться. Во всяком случае так было всегда.
Код на ассемблере гораздо больше кода на обероне - одишиться в разы легче. Код на обероне гораздо больше кода на хаскеле - ошибиться гораздо легче.
Ну и потом если уж речь пошла о НАСТОЯЩЕЙ страховке. То более жесткой и надежной страховки чем хаскель со своими противотанковыми заслонами проникновению сотояния, ни один другой язык не дает.
Сообщите товарищам на АЭС, а то им все некогда головы поднять и осмотреться :))
№ 2336 30-03-2007 15:34 | |
Ответ на »сообщение 2334« (AVC)
___________________________
Не понял. Что за шуточки ?! :))
Совсем недавно вы говорили:
За информацию спасибо!
Интересно знать, что действительно есть соревнования, связанные с ФП.
То есть об ICFP вы вроде не знали.
И тут же вытаскиваете из рукава ссылку на рассказ...об ICFP, который судя по всему вы уже читали.
А ну ка обьясняйтесь :))
№ 2335 30-03-2007 15:29 | |
Ответ на »сообщение 2332« (Geniepro)
___________________________
Пардон, но статья Пола Грэма - пустое сотрясание воздуха...
Это может себе позволить человек, занимающийся "интеллектуальными игрушками". Посадите его за написание ПО для АЭС - и поглядите, каково запоется :-)
Читабельность кода не самоцель. Для серьезных задач цель - максимальная защита от ошибок. "Предохранитель", страховка, дублирование в каждой строке. Пусть код будет в два раза объемней, но если при этом ровно в два раза сложнее будет ошибиться - то я выберу именно такой язык... Как и любой разработчик, который отвечает за свой продукт.
№ 2334 30-03-2007 15:23 | |
Ответ на »сообщение 2330« (Jack Of Shadows)
___________________________
Ответ на »сообщение 2329« (AVC)
___________________________
О! Спасибо - оно самое :))
Советую к прочтению. На многие вопросы, в том числе и по организации ICFP, найдете ответы.
Рассказ и правда интересен.
Присоединяюсь, тоже рекомендую прочесть.
По-хорошему завидую этому Дмитрию Астапову.
Он ,к тому же, еще и хороший рассказчик.
№ 2333 30-03-2007 15:02 | |
Ответ на »сообщение 2328« (Илья Ермаков)
___________________________
Джек, могу Вам сказать по олимпиадному опыту, что "резво бегать" там мало зависит от того, на чем кодировать...
Илья, я не понимаю о каком опыте вы говорите, если вы всю жизнь именно в забегах инвалидных колясок и учавствовали. Как вы можете говорить зависит или не зависит результат от того на чем кодировать, если на всех ваших олимпиадах жестко регламениртуется на чем вы можете кодировать ?
Далее вы сами себе противоречите, тут же расхваливая паскаль как инструмент который ДЕЛАЕТ РАЗНИЦУ.
Однако, чтобы олимпиада по программированию не превратилась в олимпиаду по дискретной математике/логике, там ставятся жесткие требования на эффективность программной реализации.
Как в эту картину вписываются жутко требовательные к рессурсам машины java и сишарп, для меня остается загадкой. Где вы узрели жесткие требования на эффективность программной реализации в java коде, который только на свой запуск моментально отьедает 20 Mb оперативки ?
Что самое приколистое так это то что хаскель и ocaml многие задачи решают не только быстрее той же java (которая ялвяется королевой всех коммерческих программстских соревнований), но и еще и память требуют в разы меньше.
Илья, вы подменяете истинные причины (коммеческая заинтересованность) на высосанные из пальца и к тому же не соответствующие действительности.
Если завтра вдруг один из этой банды тостосумов выпустит VisualHaskell, то не сомневайтесь. Сразу же выяснится что он достаточно эффективен чтобы подходить по "жесткие требования на эффективность программной реализации" в их чемпионатах.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|