Rambler's Top100
"Knowledge itself is power"
F.Bacon
Поиск | Карта сайта | Помощь | О проекте | ТТХ  
 Базарная площадь
  
О разделе

Основная страница

Группы обсуждений


Тематический каталог обсуждений

Архив

 
 К н и г и
 
Книжная полка
 
 
Библиотека
 
  
  
 


Поиск
 
Поиск по КС
Поиск в статьях
Яndex© + Google©
Поиск книг

 
  
Тематический каталог
Все манускрипты

 
  
Карта VCL
ОШИБКИ
Сообщения системы

 
Форумы
 
Круглый стол
Новые вопросы

 
  
Базарная площадь
Городская площадь

 
   
С Л С

 
Летопись
 
Королевские Хроники
Рыцарский Зал
Глас народа!

 
  
ТТХ
Конкурсы
Королевская клюква

 
Разделы
 
Hello, World!
Лицей

Квинтана

 
  
Сокровищница
Подземелье Магов
Подводные камни
Свитки

 
  
Школа ОБЕРОНА

 
  
Арсенальная башня
Фолианты
Полигон

 
  
Книга Песка
Дальние земли

 
  
АРХИВЫ

 
 

Сейчас на сайте присутствуют:
 
  
 
Во Флориде и в Королевстве сейчас  06:52[Войти] | [Зарегистрироваться]
Обсуждение темы:
Функциональное программирование

Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.

Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.

Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.

 Jack Of Shadows

Количество сообщений на странице

Порядок сортировки сообщений
Новое сообщение вверху списка (сетевая хронология)
Первое сообщение вверху списка (обычная хронология)

Перейти на конкретную страницу по номеру


Всего в теме 5502 сообщения

Добавить свое сообщение

Отслеживать это обсуждение


Смотрите также обсуждения:
Средства разработки. Языки программирования.
  • Delphi 4 or Delphi 5
  • Что приобрести в качестве средства разработки?
  • Delphi6
  • Delphi vs PowerBuilder
  • Сравнение компиляторов
  • Вот и вышла Delphi 7... Вы рады?

  • <<<... | 2382—2373 | 2372—2363 | 2362—2353 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 314


    № 2372   31-03-2007 16:06 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2367« (AVC)
    ___________________________

    Можно ли определить ФП как "программирование на Хаскелле"?

    Программирование на Хаскелле - наиболее чистая форма функционального программирования.
    И пока что - наиболее современная.

    И разве недавно тут все (не только функциональщики) хором не повторяли, что Лисп -- язык на все времена?

    Лисп - язык особенный. Особенный тем, что он - один из немногих языков-хамелеонов, метаязыков, способных с минимумом имеющихся концепций (всего семь) реализовать максимум возможных парадигм программирования.
    Отсюда - его достоинства и недостатки. Достоинства - что хотите, то и получите. Недостатки - можно получить всё, что угодно, а значит и ограничения тоже - например, ограничения на автоматическое распараллеливание программ.

    В тех или иных формах языки типа Лиспа будут всегда. Вот, например, последний писк моды - кадаврик по прозвище Немерле...

    Получается, что авторы SICP затронули императив только по обязанности: мол, надо было сказать пару слов об ИП.
    Но я понял их не так.
    Ну, может быть, я просто тупой, и читать, не "перевирая", не умею. Я этот вариант не исключаю.
    Я понял, что там черным по белому было сказано об определенных ограничениях на применимость ФП.

    Эх, пожалуй, скажу всё, что я об этой книге думаю! :о))

    Это отличная книга - классика! НО! Эта книга не есть истина в последней инстанции!
    Время не стоит на месте, технологии развиваются, меняются и представления об ограничения на применимость ФП...


    № 2371   31-03-2007 15:54 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2366« (Илья Ермаков)
    ___________________________

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

    Ну что ж, тут уже вопрос привычек и приоритетов.
    Вы, похоже, предпочитаете размазывать состояние программы и затем мучиться с багами из-за его бесконтрольного изменения вместо того, что бы мучиться с изменением своего мышления на пути ограничения состояния программы... Если Вас устраивает текущее положение дел - тем лучше для Вас...


    А вот что касается ФЯ как первого языка программирования в школе - то тут, извините, нужны серьезные доводы и эксперименты.

    Школа не должна выпускать профессиональных программистов, так же как и профессиональных математиков или физиков-ядерщиков. Школа должна дать всего лишь основные представления о программировании и тут незачем забивать голову модулями, классами, синтаксисом, ключевыми словами в верхнем регистре и прочей мишурой.
    Для школ идеальны языки с минимумом синтаксиса и маскимумом приближения к школьной математике. Зачем забивать головы школьников разными типами целочисленной и вещественной арифметики? Гораздо лучше учить школьников на языках со встроенной бесконечной целочисленной арифметикой, дробными и комплексными числами - это куда полезнее объяснений, что есть 32-х или 64-х битные целые числа, 32-х или 64-х битные вещественные числа, а дроби и комплексные числа нужно имитировать записями, да ещё и инкапсулировать в них арифметические операции, к тому же неестественно представленные...
    Зачем школьникам все эти низкоуровневые сложности профессионального программирования?


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

    У меня лично такого опыта нет, но тут уже неоднократно приводился успешный пример американских учебных заведений, в которых первыми языками были Хаскелл и Scheme.
    Их опыт секретом не является - наоборот, эти преподаватели с восторгом делятся своим опытом... Лично я вполне склонен доверять им.


    Но задачка постановки школьного курса программирования для среднего ученика со стартом прямо с ФЯ... Можно кандидатскую степень по методике без диссертации получать :-)

    Вы явно преувеличиваете... Не так страшен чёрт, как Вы его тут размалевали... :о)
    Если в российских школах идёт постоянное снижение уровня образования - это беда России, с этим надо бороться. Впрочем, не только в России эта беда...


    По поводу Оберона в школе - в этом нет ничего революционного, это всего лишь развитие "паскалевского" обучения.

    По накатанной колее передвигаться конечно легче для учителей, но лучше ли для учеников? Вряд ли...
    "Залезть на дерево - не значит сделать первый шаг к Луне". (из какой-то статьи про Дельфы) :о))
    Стремиться-то надо не к тому, что бы было не хуже, а к тому, что бы было гораздо лучше.


    Короче, я к тому, что пока предмета для обсуждения системного ФП я, к сожалению, не вижу...

    Жёсткое РВ - это лишь мизерная доля всего ПО.
    Причём, как Вы сами же и признаёте, даже в Оберонах приходится отказываться от сборщика мусора - а значит и терять преимущества Оберонов перед теми же Адой и Модулой-2.

    Повторю вопрос, который задал тут на днях Jack Of Shadows, - стоит ли ориентировать язык общего назначения на узенькую облась систем реального времени, в которых даже Оберон не слишком пригоден?
    Да ещё заставлять бедных школьников перенапрягать свой бедный моск всеми хитростями и премудростями "грамотного проектирования фабрик объектов на Обероне"?

    Объяснить основы ФП школьникам с незамутнённым разумом - вероятно гораздо проще, чем профессионалам, подсевшими на жёсткий императив за десятилетия работы в нём...
    ФП гораздо ближе к школьной математике, чем ИП.
    Вся проблема - только в учителях, так же как и в любых других школьных предметах...


    № 2370   31-03-2007 15:24 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2363« (Jack Of Shadows)
    ___________________________

    Ответ на »сообщение 2362« (AVC)
    ___________________________
    А потом, где-нибудь главе к третьей, они вдруг сообщают, что все-таки приходится использовать присваивание...
    Это уже цирк чесслово. Мы им об ОГРАНИЧЕНИИ БЕСКОНТРОЛЬНОГО изменения состояния. Они нам об ОТСУТСТВИИ СОТОЯНИЯ в ФП
    Вот и говори после этого о взимопонимании.


    Давайте порассуждаем.
    У ФП есть определенная специфика, оно отличается, скажем, от ИП.
    Я-то полагал, что специфика ФП -- в отсутствии переменных, как они понимаются в ИЯ.
    Возможно, в специально отведенных местах (монадах?) можно как-то обойти этот жесткий запрет. Примерно так же, как на Обероне можно использовать псевдо-модуль SYSTEM.
    То, что Вы говорите об "ограничениях бесконтрольного изменения состояния", конечно, верно. Но несколько неопределенно.
    Например, сюда попадает как программирование "без переменных" (ФП), так и ряд конструкций императивных языков.
    Возьмем, к примеру, обычный оператор присвоения в паскале-подобном языке.
    var := expr;
    Выражение expr может включать в себя кучу операндов, но вычисления над ними будут производиться без побочных эффектов (в отличие от Си).
    Например: dx*dx + dy*dy.
    Добавим сюда тот факт, что в Аде функция не может иметь побочных эффектов.
    Следовательно, на Аде вычисление следующего выражения также не вызовет побочных эффектов: sqrt(dx*dx + dy*dy).
    И уже только в самом конце мы присваиваем полученное значение некоей переменной: distance := sqrt(dx*dx + dy*dy);
    Налицо явные "ограничения бесконтрольного изменения состояния".
    Спрашивается: это уже ФП?

    Главное, конечно, не в некоторой размытости границ (ФП -- не ФП).
    Насколько я понял то, что здесь говорилось о способе работы ФЯ с состояниями, работа с состояниями вынесена в самый верхний слой программы, который имеет дело с состоянием программы в целом.
    Именно это затрудняет понимание и приятие такой схемы.
    Получается, что функциональность противоречит инкапсуляции и др. замечательным свойствам, подробно расписанным в любой книжке по объектно-ориентированному дизайну.
    Если это недоразумение, то, пожалуйста, покажите, что это не так, объясните, как надо делать, чтобы это было не так.
    Повторю, что я эту мысль не с потолка взял, а вычитал у Абельсона и Сассмана.
     AVC


    № 2369   31-03-2007 14:36 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2365« (Geniepro)
    ___________________________

    >>>Вообще, SICP - универсальный учебник по программированию, а не учебник по функциональному программированию. Естественно, в этом учебнике рассматривается и ФП, и ИП.

    Получается, что авторы SICP затронули императив только по обязанности: мол, надо было сказать пару слов об ИП.
    Но я понял их не так.
    Ну, может быть, я просто тупой, и читать, не "перевирая", не умею. Я этот вариант не исключаю.
    Я понял, что там черным по белому было сказано об определенных ограничениях на применимость ФП.
     AVC


    № 2368   31-03-2007 14:20 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2365« (Geniepro)
    ___________________________

    Ответ на »сообщение 2362« (AVC)
    ___________________________
    Пора бы Вам уже взяться за учебники по функциональному программированию, и лучше - на функциональном языке (типа Хаскелла), а не на разных гибридных языках...

    Недавно вышедшая книга Романа Душкина на такой учебник тянет?
    Читал, разбирался - после этого, кстати, разочаровался в Хацкеле. Не нравится. Язык с чисто математическим стилем... Средств для выражения мат. абстракций много, средств для выражения архитектуры крайне мало. Хотя, если смотреть совсем со стороны, то язык красивый, логичный и стройный.


    № 2367   31-03-2007 14:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2364« (Geniepro)
    ___________________________

    Ответ на »сообщение 2362« (AVC)
    ___________________________

    А потом, где-нибудь главе к третьей, они вдруг сообщают, что все-таки приходится использовать присваивание...

    Этот учебник, конечно, классический, но довольно таки устаревший. В те годы не было Хаскелла...


    Можно ли определить ФП как "программирование на Хаскелле"?
    И разве недавно тут все (не только функциональщики) хором не повторяли, что Лисп -- язык на все времена?
     AVC


    № 2366   31-03-2007 14:15 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2361« (Geniepro)
    ___________________________

    Ответ на »сообщение 2359« (Илья Ермаков)
    Что такое - задачи не "на вычисление"? Непонятно... Разве есть хоть одна сколько-нибудь серьёзная задача, обходящаяся без вычислений? Я о таких никогда не слышал... Даже в жрайвере мышки и то есть какие-то вычисления...

    Ну я же весьма понятно провел "водораздел". Правильнее даже не задачи "на вычисление", а так: вычисляющие системы и управляющие системы. Элементы одного и другого, естественно, есть везде. Но делим по общему назначению системы - для вычисляющей системы важен результат ее "жизнедеятельности", а сама "жизнедеятельность" - всего лишь необходимый "побочный эффект", до которого пользователю нет дела, но с которым приходится мириться. Смысл существования управляющей системы, наоборот, в процессе ее постоянной работы, т.е. нам важен не результат, а именно ход ее работы, процесс синхронной смены состояний в ее блоках...


    Идеал - понятие субъективное.
    Есть преподователи, считающие ФЯ гораздо идеальнее других языков подходящими для начального обучения программированию. И таких преподователей существенно больше, чем преподователей Оберонов...

    Для ВУЗа - тут и спорить не с чем, ФЯ должно изучаться параллельно с ИЯ - и чем раньше, тем лучше, поскольку очень сильно расширяет кругозор. Нам в ВУЗе, увы, этого не преподавали, но я сам на первом курсе сильно интересовался историей ЯП и различными языками (особенно - Smalltalk, LISP и Prolog), даже свой ФЯ с динамической типизацией и макросами придумывал :-) ФЯ привлекало стройностью, абстрактностью, гибкостью ("можно лепить как из пластилина", что особенно характерно для LISPа с его идеей "программа - такой же список, как и данные"). Потом разочаровался в гибкости, "бесхребетности" (возможно, набил оскомину С++, на котором пришлось очень много поработать полтора года - сначала даже очень нравился все тем же - "гибкостью"), стал искать жестких, "каркасных" решений, стремящихся к минимализму. Вышел на Аду, затем, что уже стало самым серьезным переходом, на Обероны.

    А вот что касается ФЯ как первого языка программирования в школе - то тут, извините, нужны серьезные доводы и эксперименты. Может быть, "считающих, что ФЯ для этого лучше всего" и весьма много, но если эти "считающие" не провели ни одного урока в школе в своей жизни, то их "считание" представляет не особо большой интерес... Я не говорю, что это не возможно - пробуйте, делитесь опытом :-) Пока даже про единичные примеры не слышно, разве что в спец. школах, в профильных классах, в качестве дополнительного языка показывают где Пролог или Лисп... Но задачка постановки школьного курса программирования для среднего ученика со стартом прямо с ФЯ... Можно кандидатскую степень по методике без диссертации получать :-)

    По поводу Оберона в школе - в этом нет ничего революционного, это всего лишь развитие "паскалевского" обучения. Оберон превосходит Паскаль по всем параметрам, посему про необходимость этого перехода и доказывать нечего - можете не переживать, хуже-то точно не станет :-)

    То есть наличие операционных систем, написанных на ФЯ (в том числе и чистых ленивых ФЯ), в том числе написанных в далёкие семидесятые годы, для Вас абсолютно пустой звук?

    Нет, не пустой. Признать факт существования мало. Нужно, как минимум, больше информации - назначение, технич. параметры и т.п. В частности, телекоммуникационные системы на Эрланге - это показывает эффективную применимость ФЯ для задач конкретного "склада" - для систем мягкого реального времени с массовым параллелизмом со слабой связанностью по данным (я так предполагаю исходя из специфики задачи. Поэтому и стало возможным отказаться от разделяемых данных, перейти полностью на сценарий "процессы-сигналы". Для других системных задач и ОС менее специфичного профиля это может оказаться непростым).
    Чтобы признать наличие системного программирования на ФЯ как явление, нужно хотя бы наличие какого-то воспроизводимого опыта, методологии, доступной для изучения - это нет. Т.е. если и есть внутри каких-то компаний, то мы с вами к этому приобщиться не можем (а интересено было бы, кстати).
    Есть, например, типовая парадигма системного программирования на Си, сложившаяся в Юникс-системах. Ее можно увидеть, "потрогать", "пощупать", можно говорить о тех или иных ее недостатках и т.п. Есть уже ставшая типовой парадигма системного программирования на Оберонах - десяток операционных систем, из которых половина open-source - так же дает возможность об этом говорить, обсуждать, сравнивать - воочию видеть преимущества более современного и высокоуровневого подхода перед традиционным сишным (что, кстати, выражается в том, что приличный объем работ выполняется очень малыми командами с высоким качеством. Сравните с вылизывающимися десятилетиями "всем миром" open-source на Си).
    Короче, я к тому, что пока предмета для обсуждения системного ФП я, к сожалению, не вижу...


    № 2365   31-03-2007 13:56 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2362« (AVC)
    ___________________________

    А потом, где-нибудь главе к третьей, они вдруг сообщают, что все-таки приходится использовать присваивание...

    Вообще, SICP - универсальный учебник по программированию, а не учебник по функциональному программированию. Естественно, в этом учебнике рассматривается и ФП, и ИП.
    Пора бы Вам уже взяться за учебники по функциональному программированию, и лучше - на функциональном языке (типа Хаскелла), а не на разных гибридных языках...


    № 2364   31-03-2007 13:47 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2362« (AVC)
    ___________________________

    А потом, где-нибудь главе к третьей, они вдруг сообщают, что все-таки приходится использовать присваивание...

    Этот учебник, конечно, классический, но довольно таки устаревший. В те годы не было Хаскелла...


    № 2363   31-03-2007 13:11 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2362« (AVC)
    ___________________________
    А потом, где-нибудь главе к третьей, они вдруг сообщают, что все-таки приходится использовать присваивание...
    Это уже цирк чесслово. Мы им об ОГРАНИЧЕНИИ БЕСКОНТРОЛЬНОГО изменения состояния. Они нам об ОТСУТСТВИИ СОТОЯНИЯ в ФП
    Вот и говори после этого о взимопонимании.
    Уже сколько раз говорилось. И все равно, каждый раз когда императивщики натыкаются на изменение состояния в ФП, они ведут себыя так как будто им обещали (кто интересно) что этого НИКОГДА не будет, а потом жестоко обманули.


    <<<... | 2382—2373 | 2372—2363 | 2362—2353 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 314


    Добавить свое сообщение

    Отслеживать это обсуждение

    Дополнительная навигация:
    Количество сообщений на странице

    Порядок сортировки сообщений
    Новое сообщение вверху списка (сетевая хронология)
    Первое сообщение вверху списка (обычная хронология)

    Перейти на конкретную страницу по номеру
      
    Время на сайте: GMT минус 5 часов

    Если вы заметили орфографическую ошибку на этой странице, просто выделите ошибку мышью и нажмите Ctrl+Enter.
    Функция может не работать в некоторых версиях броузеров.

    Web hosting for this web site provided by DotNetPark (ASP.NET, SharePoint, MS SQL hosting)  
    Software for IIS, Hyper-V, MS SQL. Tools for Windows server administrators. Server migration utilities  

     
    © При использовании любых материалов «Королевства Delphi» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

    Яндекс цитирования