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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 152—143 | 142—133 | 132—123 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 537


    № 142   13-06-2006 05:14 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 141« (Руслан Богатырев)
    ___________________________
    Параллельно, имея возможность достраивать Лисп до собственного языка.
    Это интересный момент. Что значит достраивать? В смысле синтаксиса или семантики?

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


    № 141   13-06-2006 04:28 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 139« ()
    ___________________________

    Параллельно, имея возможность достраивать Лисп до собственного языка.

    Это интересный момент. Что значит достраивать? В смысле синтаксиса или семантики? И значит ли это, что при достраивании я вынужден тащить за собой все богатство и своеобразие Лиспа, не имея возможности от него отгородиться (ведь язык-то собственный)?


    № 140   13-06-2006 04:23 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 138« ()
    ___________________________

    А кто сказал, что их там нет?

    Так расскажите, в каких. Интересно разобраться, что за сия конструкция в мире функциональных языков. А то, быть может, разумеем под словом "модуль" разное? Тут в мире императивности на эту тему споры до хрипоты. Но раз так уверенно возражаете -- буду признателен за примеры таких языков.

    Кой толк выяснять что первично, если в разных местах мне разные подходы по разному предпочтительны? Что ж мне акцентироваться только на одном каком-то подходе и носиться с ним как "дурень с писаной торбой"?

    Объясню, зачем нужно выяснять. Предположим есть желание (производственная необходимость, нужное подчеркнуть) использовать обе парадигмы в одном языке. Какой выбрать (ФЯ/ИП или ИЯ/ФП) и почему?


    № 139   13-06-2006 04:17 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 137« (Руслан Богатырев)
    ___________________________
    Ответ на »сообщение 125« (Jack Of Shadows)
    ___________________________
    ... это совершенно ортогональные понятия. Т.е. одно не заменяет другое. ...

    ... а – дополняет. В чём проблемы? Тут уже не раз говорилось, что можно выражать подходы "иной" парадигмы в языке, не предназначенном для неё. Но затраты и усилия будут велики. А в Лиспе вы всё множество парадигм выражаете без "напряга". Единообразно. Параллельно, имея возможность достраивать Лисп до собственного языка.
    Если речь зашла о параллельностях и ортогональностях. А если вся совокупность имеющихся у вас возможностей выражения той или иной парадигмы ну никак не ложится своей "проекцией" на задачу?
    Важно не наличие в языке готового набора средств для выражения той или иной парадигмы, а возможность создания их с минимальными усилиями.
    Сообщение не подписано


    № 138   13-06-2006 04:00 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 137« (Руслан Богатырев)
    ___________________________
    Вот и хотел узнать, что там на фронте функционального программирования -- отсутствие модулей не сильно напрягает?
    А кто сказал, что их там нет?

    Чем таким интересно ФП здесь (при создании больших программных систем) и в чем оно выигрывает по отношению к остальному миру программирования?
    Ничем. "В обоих смыслах".

    1. Первично ФП (в одном языке)
    2. Первично ИП (в одном языке)
    3. Равноправны (каждый в своем языке)
    Какой из них предпочтительнее (теоретически), какой Вам больше по душе и почему?

    Первично не яйцо и не курица, а неопреодолимое желание оставить потомство.
    Кой толк выяснять что первично, если в разных местах мне разные подходы по разному предпочтительны? Что ж мне акцентироваться только на одном каком-то подходе и носиться с ним как "дурень с писаной торбой"?
    На счёт "своего языка" - почитайте первые несколько глав "Мир Лиспа" горячих финских парней. В каком ещё языке вы такую возможность для выражения стольких парадигм найдёте?
    Сообщение не подписано


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

    Поправьте меня если ошибаюсь. Но по моему модульность и функциональность это совершенно ортогональные понятия. Т.е. одно не заменяет другое. И оба являются свойствами первостепенной важности.

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

    Попутно вот о чем подумалось. Пока что обсуждение использования ФП идет в разрезе программирования в малом (programming-in-a-small), а как насчет программирования в большом? Чем таким интересно ФП здесь (при создании больших программных систем) и в чем оно выигрывает по отношению к остальному миру программирования?

    И еще вопрос: как мы выяснили, ФП без ИП (императивного программирования) обходиться не может (или почти не может). Если говорить об их совместном использовании, то (если не учитывать имитацию) есть три варианта сосуществования двух систем с разным "общественным строем":

    1. Первично ФП (в одном языке)
    2. Первично ИП (в одном языке)
    3. Равноправны (каждый в своем языке)

    Какой из них предпочтительнее (теоретически), какой Вам больше по душе и почему?


    № 136   13-06-2006 02:49 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 119« (Geo)
    ___________________________
    Ответ на »сообщение 116« ()
    ___________________________
    >>> А если вам нужно использовать эти функции в разных контекстах и одновременно? :о)
    У меня с терминологией проблемы. Можно пояснить?

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


    № 135   13-06-2006 02:36 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 132« (panda)
    ___________________________
    Через классы - запросто. ;-)
    Это будет считаться решением?


    Конечно будет! :)) О том и речь. ОО и closures оба мощные инструменты с одинаковыми возможностями.
    Но как через ОО делать тут все знают.
    Просто это 2 разных мира, императивный и функциональный, каждый со своими механизмами решения одних и тех же проблем.

    Сначала в фаворе был более эффективный, экономный к рессурсам компьютера подход.
    Теперь чашу весов перевешивает более экспрессивный, легкий, понятный.


    № 134   13-06-2006 02:29 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 130« (Trurl)
    ___________________________
    Мне тоже. Пока я не попробовал SML и OCaml.

    А вот это очень интересно! Если есть время и желание, не поделитесь подробностями ?


    № 133   13-06-2006 02:25 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 128« (torvic)
    ___________________________
    Кстати, про list comprehensions. Вы говорили, что порядок записи деклараций в функциональных языках неважен.
    Пример:


    Это пример pattern matching.
    Из документации: The patterns are tried in textual order.
    Поскольку меняя паттерны местами можно задавать стратегии выборки, то паттерны вполне логично решено было проверять по мере написания.

    Я же говорю об этом:

    a = b + c
    b = 7 + 10
    c = 50 - 2

    Такой код в императивном языке даст ошибку. A a чистом функциональном сработает. Поскольку присваивания нет, то компилятор знает что b и с, нважно где бы они не были описаны, все равно будут иметь одно единственное значение. А потому просто продолжает читать код дальше, пытаясь их найти.



    <<<... | 152—143 | 142—133 | 132—123 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 537


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

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

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

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

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

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