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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 42—33 | 32—23 | 22—13 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 548


    № 32   08-06-2006 06:25 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 31« (Q. Werty)
    ___________________________

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

    Небольшое лирическое отступление...

    Невольно вспоминается Маяковский:
    Разевают дети рот.
    – Мы же ехали вперед,
    а приехали туда же.
    Это странно, страшно даже.


    Для Лиспа, как и Оберона, в нашей стране, похоже, актуальны революционные лозунги:

    1. "Пролетарии всех стран, соединяйтесь!"
    Девиз Союза коммунистов, выдвинутый Марксом и Энгельсом

    2. "Мы на горе всем буржуям мировой пожар раздуем"
    Александр Блок (Двенадцать)


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

    Что бабе масштаб грандиозный наш?!
    Бабе грязью обдало рыло,
    и баба, взбираясь с этажа на этаж,
    сверху и меня и власти крыла.
    Правдив и свободен мой вещий язык
    и с волей советскою дружен,
    но, натолкнувшись на эти низы,
    даже я запнулся, сконфужен.
    Я на сложных агитвопросах рос,
    а вот не могу объяснить бабе,
    почему это о грязи на Мясницкой
    вопрос никто не решает в общемясницком масштабе?!



    № 31   08-06-2006 05:09 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>Ну хорошо, попробую еще раз.

    Действительно, ну что Вы так бурно реагируете, Jack.
    Мы уже все давно поняли, что функциональные языки - это другой подход к представлению алгоритма.

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

    А насчет схожей ситуации оберона и лиспа - я это понял по-другому. Они схожи, потому что им обоим приходится завоевывать место под солнцем. В то время как другие, не лучшие с любой точки зрения языки, заняли чуть ли не все пространство в умах homo programmicus. Не обижайтесь, но я думаю, что число сторонников и активных пользователей Лиспа не намного превосходит число сторонников и активных пользователей Оберона.




    № 30   08-06-2006 03:51 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 28« (Jack Of Shadows)
    ___________________________

    Вы ошибочно считаете что оберон и лисп находятся в схожих ситуациях.
    Но это не так.


    :o)  Не принимайте все всерьез и близко к сердцу. Прокладывать дорогу к неизведанному для других можно разными способами: через известное, давая ориентиры и, наоборот, -- через нечто кардинально новое (для них), что способно разрубить гордиев узел познания.


    № 29   08-06-2006 03:28 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 27« (Q. Werty)
    ___________________________
    нмм странно, я вроде думал понятно обьяснил про декларативный характер ФЯ.
    Ну хорошо, попробую еще раз.

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


    Да как угодно называйте. Главное имеет значение в какой последовательности вы это пишите.

    В ФЯ не имеет значения, потому что нет присваивания, нет этих переменных, которым присваиваются, нет ящичков, куда запихивается.
    x = 5 воспринимается как "Назовем пятерку иксом"
    При этом не имеет значения в каком конкретно месте программы вы это сделали,
    Вы можете везде использовать этот х и только в конце сказать что х это вообще то 5.
    Потому что не может возникнуть ситуации что вот здесь присваиваем иксу 5 а вот попозже уже 10
    От такого вот мышления вы никуда не убежите, как бы не старались не упоминать всуе не к ночи помянутые ячейки памяти :)))


    № 28   08-06-2006 03:20 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 26« (Руслан Богатырев)
    ___________________________
    Вот если бы Вы предложили воспринимать Лисп как Simple C++ или Difficult Basic, агитпропом не назвал бы. 

    Руслан. Великому и могучему лиспу на черта не нужно камуфлироваться под всякие си и васики.
    Вечному лиспу не нужно также никуда торопиться. Он будет жив тысячи лет после того как канут в небытие не только все остальные языки, но и машины для которых они делались.
    Вы ошибочно считаете что оберон и лисп находятся в схожих ситуациях.
    Но это не так.


    № 27   08-06-2006 03:12 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>Так что от вашего желания не мыслить в терминах ячеек памяти ничего
    >>>не зваисит. Императивные языки заставляют вас это делать.

    Может где-то и заставляют, но не в этом случае.
    Причем тут какие-то ячейки и какая-то память? Мы говорим об императивных языках высокого уровня, а не об ассемблерах.
    Запись присваивания вида <имя> := <выражение>
    означает, что значение выражения <выражение> вычисляется и переменная с именем <имя> получает это значение. И все. И если Вы при этом хотите говорить о каких-то ячейках, то это уже Ваше личное желание отразить, что именно скрывается за этим с точки зрения реализации.
    Кстати, человек, который сразу начинает программировать на языке высокого уровня, именно так и понимает оператор присваивания - как присваивание переменной нового значения. А об ячейках памяти он может в этом случае вообще не думать.

    P.S.
    Вашу мысль я, конечно, понимаю, только пример Вы выбрали неудачный. Для присваивания говорить о ячейках памяти не требуется. Вот объяснять, что такое указатель - это другое дело.


    № 26   08-06-2006 03:06 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 24« (Jack Of Shadows)
    ___________________________

    Есть такое дело. :))) Вы в ветках про обероны несете что то про light java :))) А я здесь в меру своих сил, тяну одеяло на сторону лиспа.

    Java Light -- это, на мой взгляд, полезное восприятие неизвестного (Оберона) через известное (Java). Людям нужны маяки-ориентиры. Без них им трудновато. Хотя, конечно, определенное отношение к пропаганде это имеет.

    Вот если бы Вы предложили воспринимать Лисп как Simple C++ или Difficult Basic, агитпропом не назвал бы.


    № 25   08-06-2006 02:43 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 22« (Q. Werty)
    ___________________________
    Если Вы не хотите мыслить в терминах ячеек памяти, то и не надо. В математике, кроме ламбда-исчисления Черча есть и другие базовые понятия, например, понятие продукции (подстановки), которое, собственно, и является математическим эквивалентом операции присваивания. x:=5 означает, что в дальнейшем контексте всюду, где символ x встречается в составе выражения вместо x надо подставить 5. Например, y := x + 1 надо заменить на y := 5 + 1. Это не сложнее, чем ЛИСП и никаких ссылок на физическое понятие "ячейки" - такая же чистая математика.


    А вот тут вы не правы. Понятие продукции не означает "выполни операцию и сохрани результат в этой ячейке"
    Оно означает "замени эту операцию на вот эту" т.е.
    y := 5 + 1 не будет означать "прибавь 1 к 5 и запомни что это 6"
    Это будет означать "замени везде Y на (5 + 1)"

    И это кстати именно как работает скажем в таком языке как Хаскель.
    В нем конструкция типа y = 5 + 1 не будет выполнена пока y не понадобится где то еще.

    Это например позволяет писать не заботясь о последовательности.
    т.е.
    z = x + y
    y = 5 + 1
    x = 4 * 2

    Это не будет ошибкой. Последовательность деклараций не имеет значения, потому то это именно декларации, а не выполнение операции и запоминание результата где то в ячейке.
    z будет равен 14, хотя у привыкшего к императивному программированию человека это может в голове не укладываться. Потому что он именно в терминах ячеек памяти и мыслит. По другому не может.

    Так что от вашего желания не мыслить в терминах ячеек памяти ничего не зваисит. Императивные языки заставляют вас это делать.

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

    В императивных языках, где последовательность является принципиальной, добиться такого вот автоматического распараллеливания практически невозможно. Приходится явно указывать в программе что и как вычислять.


    № 24   08-06-2006 02:23 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 20« (Руслан Богатырев)
    ___________________________
    А вот эти рассуждения уже начинают отдавать агитпропом.
    Есть такое дело. :))) Вы в ветках про обероны несете что то про light java :)))
    А я здесь в меру своих сил, тяну одеяло на сторону лиспа.

    Так сравните для себя разницу в реализациях. Речь не о том, можно или нет, а о том, как это выглядит.

    Спасибо мне уже не надо. :)) Да кстати я для той же цели вам привел примеры реализации сетей Петри на лиспе и хаскеле. Сравнивайте, раз уж вы затронули эту тему.


    Скажите, если есть "кульная визуальная среда с рюшечками и компонентами", сколь существенна разница в том, каков целевой язык?

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


    № 23   08-06-2006 02:14 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 21« (Руслан Богатырев)
    ___________________________
    Я не запамятовал. Реализаций МЛ десятки. Я просто не знаю про все.
    Поскольку эта ветка в общем о функциональных языках то я только рад любой информации о них.


    <<<... | 42—33 | 32—23 | 22—13 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 548


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

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

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

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

    Перейти на конкретную страницу по номеру
      
    Время на сайте: 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» необходимо указывать источник информации. Перепечатка авторских статей возможна только при согласии всех авторов и администрации сайта.
    Все используемые на сайте торговые марки являются собственностью их производителей.

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