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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 922—913 | 912—903 | 902—893 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 460


    № 912   22-08-2006 04:33 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 907« (Артем)
    ___________________________
    >>>Все дело в том, что при задании рекурсии нам всегда придется проанализировать, не произойдет ли при ее использовании комбинаторный взрыв. Если нет - используйте рекурсию на здоровье.
    Ну наконец-то.
    А то опять инструмент хвалят и критикуют без четкого осознания области применимости.
    Не бывает плохих и хороших инструментов (методов, алгоритмов), бывает использование к месту и не к месту.
    Посмотрите раздел "головоломки" на круглом столе: там есть несколько задачь, решенных сочетанием аналитических и переборных методов - вот пример грамотного сочетания подходов.



    № 911   22-08-2006 03:41 Ответить на это сообщение Ответить на это сообщение с цитированием


    № 910   Удалено модератором


    № 909   22-08-2006 03:13 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 612« (Geniepro)
    ___________________________


    Теперь мне остается надеяться, что вы таки представите цифры по прогону представленного алгоритма на mercury.
    Язык доступен для скачивания. За чем же дело встало ?

    >>>Хе-хе... А он в отпуск ушёл, ему не до Меркурия... :-)

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


    № 908   22-08-2006 03:03 Ответить на это сообщение Ответить на это сообщение с цитированием
    Кстати, почему-это были проигнорированы довольно странные временные результаты итеративного умножения матриц 200x200 в LispWorks? Алгоритм-то не рекурсивный, а все-равно медленнее чем в том же Delphi как-минимум в 44 раза? (сообщения 715 и 721)


    № 907   22-08-2006 02:36 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 893« (Jack Of Shadows)
    ___________________________
    Упертые императивщики в своем неприятии рекурсии, доходят до абсурда. Призывают программистов реализовывать низкоуровневой машинный механизм рекурсии своими ручками. :))
    Более того, у них, как вы видите, это считается своеобразным тестом на "правильно обученного" программиста.
    Правильно обученный программист оказывается должен бороться с рекурсией всеми мыслимыми способами.


    Интересно, кого здесь вы считаете упертым императивщиком? И что, вообще, вы понимаете под термином императивщик? Приверженца ООП? Так тут уже говорили, что ООП программистам доступна как рекурсия, так и итерация. Я лично уже ...надцать раз говорил, что однозначный выбор между рекурсией и итерацией - это глупость. Для каждого случая мы в отдельности решаем, что выбрать. Часто - это компромисс между производительностью и выразительностью. Хотя и это не 100% правило. То же умножение матриц в итеративном плане более выразительно, чем в рекурсивном.


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

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


    № 906   22-08-2006 02:22 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 627« (SJ)
    ___________________________

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


    Не могу сказать ничего определенного насчет Haskell, но в Лиспе это далеко не так (цитата из документа, который лежал в свое время по адресу fare.tunes.org/tmp/emergent/kmachine.htm):

    Analysis of the storage on existing Lisp Machines indicated that only about 20 percent of the storage was actually stored in lists (the rest being vectors, structures, or classes)


    Это было сочтено настолько важным, что в очередном поколении Лисп-машин от LMI выкинули поддержку CDR-coding, который до этого считался одной из их ключевых особенностей. С тех пор, конечно, утекло немало воды, но у меня есть некоторые основания думать, что это утверждение остается в силе.

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

    По крайней мере, в одной из достаточно старых Лисп-систем, внутренним устройством которой я интересовался, массивы реализуются именно как непрерывная область памяти. Весьма вероятно, что в остальных системах сделано то же самое. Впрочем, с учетом роста производительности железа, современные системы могут использовать и другие внутренние представления, но на этот счет я ничего конкретного сказать не могу, кроме "Use the Source, Luke!" :-)


    № 905   22-08-2006 02:20 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 904« (Антон Григорьев)
    ___________________________
    Антон, спасибо за чистку.
    Я срываюсь, а так не хочется загаживать тему.


    № 904   22-08-2006 02:15 Ответить на это сообщение Ответить на это сообщение с цитированием
    сообщение от модератора

    info21, вы опять занялись провокациями? Судьба обероновских веток вас ничему не научила?

    Jack of Shadows, вы тоже зря поддаётесь на эти провокации. Я же знаю, что вы умеете не делать этого.


    № 903   22-08-2006 01:02 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 902« (Trurl)
    ___________________________
    Это доказывает преимущество "подумать хорошенько" над "немного подумать" :)


    <<<... | 922—913 | 912—903 | 902—893 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 460


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

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

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

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

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

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