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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 2792—2783 | 2782—2773 | 2772—2763 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 273


    № 2782   11-04-2007 16:50 Ответить на это сообщение Ответить на это сообщение с цитированием
    А вот подарочек императивщикам:
    http://neilbartlett.name/blog/2007/04/11/haskell-an-imperative-language-with-mutable-state/
    Неплохая статейка показывающая как на хаскеле можно писать чистые фунцкии, теме не менее манипулирующие локальным состоянием.


    fact n = runST (do
        r <- newSTRef 1
        for (1,n) (\x -> do
          val <- readSTRef r
          writeSTRef r (val * x))
        readSTRef r)



    Это функция факториала, написанная на хаскеле в императивном стиле.
    Заметьте даже опреатор цикла for есть (на самом деле функция, но внешне похоже :)) )

    В данном случае монада ST позволяет инкапуслировать манипулирование состоянием в локальном пространстве, гарантируя таким образом что функция, использующая эту монаду, чистая, то есть глобальное состояние не меняется, и функция от глобального состояния не зависит.

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


    № 2781   10-04-2007 14:55 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2779« (Geniepro)
    ___________________________

    Там ещё предлагалось пакел lang задействовать, но я его у себя не нашёл, и без него нормально скомпилировалось... 8 мин 18 сек комиплировалось! Это Вам не Оберон... :-)

    Это точно. Как писал американский программист Тэйлор Хатт, посетивший Цюрих на 60-летие Вирта в 1994 г., чтобы перекомпилировать операционную систему Oberon и компилятор Oberon, требуется в общей сложности всего 15 секунд! Стоит напоминать, что это была за аппаратура и какой на дворе был год? А Оберон с тех пор жир особо-то и не наращивал. См. http://www.europrog.ru/paper/swiss94.pdf




    № 2780   10-04-2007 12:05 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2779« (Geniepro)
    ___________________________
    там в папке src файл Epigram-bin.exe
    Вот это правильно. А скачивать из всяких там darcs и самому все это собирать, это пусть студенты этим занимаются. А у меня времени нет :(


    № 2779   10-04-2007 11:40 Ответить на это сообщение Ответить на это сообщение с цитированием

    К сожалению все эти "исходники доступны а бинарников нет" open source проекты, на поверку оказываются заточены под линукс. Ни винде хрен че скомпилируешь.

    Да нет же, я скачал по ссылке http://e-pig.org/downloads/epigram1-windows.zip , там в папке src файл Epigram-bin.exe - вполне даже работает, только я пока описание не читал...
    Там ещё несколько лисповских скриптов для Emacs'а.

    А исходники Epigram'а я скомпилировал, посмотрев makefile и добавив в командную строку ключи использования расширений языка, которые по умолчанию запрещены. Там ещё предлагалось пакел lang задействовать, но я его у себя не нашёл, и без него нормально скомпилировалось... 8 мин 18 сек комиплировалось! Это Вам не Оберон... :-) При компиляции не только GHC и GCC запускались, но ещё и Perl зачем-то... А результат компиляции при запуске выглядит также, как и их собственный бинарник, только чуть побольше весит...

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

    До Лискелла у меня пока руки не дошли ещё. :о) Там надо через darcs исходники скачивать...
    В описании сказано, что транслятор Лискелла подготавливает данные после синтаксического и лексического разбора для GHC в его внутреннем формате для дальнейшей обработки, так что это - вариант GHC. Я как-то пытался скомпилить сам GHC - не вышло... Блин, каак они это делают... :о(
    Там, кстати, а макросы там таки есть...


    № 2778   09-04-2007 16:05 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2774« (Trurl)
    ___________________________

    >>>Коллеги! Не подскажет ли кто, где можно скачать "Definition of Standard ML (Revised)"?
    На books.google.com :-)


    Из 116 стр. нет 79-ти страниц, т.е. представлено около 30%. Ровно столько, сколько положено для беспроблемного цитирования (30-40%), когда можно вообще даже не спрашивать правообладателя.

    Google в своем репертуаре. Хоть бы предупреждал. Хотя в этом его и не обвинить. Меленько стоит скромная такая пометка: Limited preview. Доля книг с Full View по тому же Standard ML -- менее 1%.


    № 2777   09-04-2007 15:48 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2774« (Trurl)
    ___________________________

    На books.google.com :-)

    Интересный сервис. Введите в строке запроса Niklaus Wirth и попробуйте почитать книгу "The School of Niklaus Wirth: The Art of Simplicity"... На диверсию как-то непохоже...


    № 2776   09-04-2007 14:17 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2775« (Geniepro)
    ___________________________

    Транслятор написан на Хаскелле, исходники доступны,

    К сожалению все эти "исходники доступны а бинарников нет" open source проекты, на поверку оказываются заточены под линукс. Ни винде хрен че скомпилируешь.
    Я вот до сих пор liskell не могу попробовать по той же самой причине. Приходится ждать когда они соизволють выложить бинарники.


    № 2775   09-04-2007 13:27 Ответить на это сообщение Ответить на это сообщение с цитированием
    Любопытнейший проект: Epigram, функциональный язык  с системой зависимых типов ...
    Эта штука способна сорвать башню не только ярым императивщикам, но и истым функциональщикам. `Эта вещь покруче "Фауста" Гёте` (C) :о))

    Основная фишка - классы типов являются объектами первого рода и ими можно оперировать так же, как и с обычными значениями. Двухмерный синтаксис - основа всего, хотя ASCII версия исходников выглядит не так кульно, как версия для LaTeX.

    The home page of the Epigram project
    The Epigram Tutorial
    Примеры
    Качать отсюда

    Thorsten Altenkirch, Conor McBride and James McKinna (2005), Why Dependent Types Matter (pdf)

    Транслятор написан на Хаскелле, исходники доступны, вот только собрать у меня с ходу не вышло, так что надо ещё бинарники скачать...


    № 2774   09-04-2007 08:32 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2772« (Михаил)
    ___________________________
    >>>Коллеги! Не подскажет ли кто, где можно скачать "Definition of Standard ML (Revised)"?

    На books.google.com :-)


    № 2773   09-04-2007 05:41 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2772« (Михаил)
    ___________________________

    Он выходил в MIT Press, поэтому если где-то есть, то это отсканированный (распознанный) вариант коммерческой книги. Проще попробовать поискать ее эквивалент, который должен проще распространяться: http://www.lfcs.inf.ed.ac.uk/reports/88/ECS-LFCS-88-62/

    Это технический отчет университета Эдинбурга. Думаю, где-то отчет в открытом виде наверняка имеется (надо искать, скорее всего, по университетским сайтам (страницам преподавателей), где преподается SML, лучше в районе Великобритании, поскольку тот же SML.NET есть проект Кембриджской лаборатории Microsoft Research).


    <<<... | 2792—2783 | 2782—2773 | 2772—2763 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 273


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

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

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

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

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

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