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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 3252—3243 | 3242—3233 | 3232—3223 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 227


    № 3242   05-10-2007 15:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 3241« (Geniepro)
    ___________________________

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

    Как сообразуется Ваше высказывание с негативным высказыванием Вагифа про пришпиливание процедур к типам (про инкапсуляцию)? См. »сообщение 3154« и »сообщение 3135«.

    Вообще, это было забавное утверждение о том, что Хаскелл слишком самодостаточен, что бы использоваться в связке с другими языками. Увы, пока это не так, иначе не делали бы к нему foreign function interface, не придумывали бы всякие O'Haskell, OOHaskell...

    Может ли Haskell обойтись без работы с миром императива через монады? Если будет для этого специальный язык (вне Haskell'я)? Аналогично: может ли он обойтись без ООП, если за это отвечает свой язык?


    № 3241   05-10-2007 14:00 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 3159« (Руслан Богатырев)
    ___________________________

    А Вы не задумывались над тем, что можно иметь и то, и другое? Отдельно -- пришпиливание процедур (методов) к типам и отдельно -- функции?

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

    Вообще, это было забавное утверждение о том, что Хаскелл слишком самодостаточен, что бы использоваться в связке с другими языками. Увы, пока это не так, иначе не делали бы к нему foreign function interface, не придумывали бы всякие O'Haskell, OOHaskell...
    Ну что ж, "Haskell: the world's finest imperative programming language" (C) Simon Peyton Jones


    № 3240   05-10-2007 13:44 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 3153« (Евгений Непомнящий)
    ___________________________

    Как я понимаю, вещи типа
    filenames = [x for x in filenames if os.path.splitext(x)[1] in extensions]
    в Питоне это элементы ФП?

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

    Элементы же ФП - это lambda.

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


    № 3239   05-10-2007 13:43 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 3146« (Руслан Богатырев)
    ___________________________

    Асинхронное ООП в моем понимании не сильно отличается от декларатива (то бишь вообще не отличается).

    Это вообще поразительное утверждение. Этак можно договориться, что Смоллток - диалект Пролога... :о))
    Придётся Вам теперь объяснять, что такое декларативное программирование, и почему Ваше понимание декларатива так существенно отличается от распространённого...


    № 3238   05-10-2007 13:42 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 3145« (Сергей Осколков)
    ___________________________

    А можно чуть подробней? Я здесь спрашивал про эту книгу, никто не ответил (или я не заметил среди множества сообщений).

    Признаюсь сразу, я книгу Душкина не читал и судить о ней могу только по чужим впечатлениям (эх, сразу Солженицын вспоминатеся... :о) ) Хоть Душкин и настаивал, что бы я её выписал через Озон.ру, но так у меня и не дошло дело... Он сейчас с соавтором (deniok на РСДН.ру и ЖЖ) пишет вторую, более практическую книгу. Начало вроде интересное...

    Вообще, мне у Душкина понравилось (в плане какого-то интеллектуального развлечения что-ли; читаю по дороге на работу в электричке и метро) то, что чуть ли не впервые в программировании здесь столкнулся с "настоящей" математикой.

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

    Что посоветуете другое? Мне еще попалось "Мягкое введение в Haskell" c RSDN.

    К сожалению, на русском большого выбора нет...
    Функциональное программирование

    На инглише можно много чего насоветовать:

    Основной ресурс по Хаскеллу - http://haskell.org/haskellwiki/Haskell и http://haskell.org/haskellwiki/Ru/Haskell
    Также документация к GHC, так как это референсный компилятор Хаскелла, в котором появляются все новые возможности Хаскелла.
    "Yet another Haskell tutorial"
    "All about monads"
    и ещё много чего - жизни не хватит всё прочесть... :о))


    № 3237   05-10-2007 11:11 Ответить на это сообщение Ответить на это сообщение с цитированием
    Мне конечно очень приятно что на ветке по ФП такие жаркие споры идут. Но господа, может вы свои императивные for, while и break все таки перенесете туда где им и положено быть ? Например в ветку по оберону ?
    Хаскелистам и лисперам глубоко фиолетово как у вас там отношения с break складываются.
    Другой вопрос если дискуссия идет в русле сравнения этих самых for while break с аналогичным функциональным кодом, map fold и рекурсией. Вот тут можно и поговорить :)


    № 3236   05-10-2007 10:26 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 3235« (panda)
    ___________________________

    Ответ на »сообщение 3233« (Илья Ермаков)
    Т.е. если найденный элемент первый, то это никого не волнует и надо пройти все оставшиеся?
    М-да... Вирт был бы вами "доволен" за такой алгоритм...

    А Вы внимательнее смотрите.
    На условие цикла: не_вышли_за_конец && не_нашли_элемент.
    Цикл будет завершён либо в конце, если элемента нет, либо как только элемент будет найден.
    Здесь for применён как while, поскольку в С++ по семантике он таков и есть - while, в котором явно синтаксически оформлена инициализация, условие продолжения и изменение.


    № 3235   05-10-2007 10:21 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 3233« (Илья Ермаков)
    ___________________________

    А вы присмотритесь повнимательнее - там после for точка с запятой стоит (цикл с пустой нагрузкой). return снаружи цикла, в конце функции. Просто возврат значения. ПО дельфийски result := i <> list.end().
    Т.е. если найденный элемент первый, то это никого не волнует и надо пройти все оставшиеся?
    М-да... Вирт был бы вами "доволен" за такой алгоритм...


    № 3234   05-10-2007 10:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 3231« (Стэн)
    ___________________________

    Кстати без всяких явных break и return... И очень даже понятно...
    Не хочу, вас огорчать, но у нас тут вообще-то спор возник совершенно о другом: что понятнее в императивном программировании: чистый while или foreach + break/return
    ;-)


    № 3233   05-10-2007 10:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 3232« (panda)
    ___________________________
    Илья, я просил Вас привести пример структурного программирования "без goto и его суррогатов в виде break и return" (c) не мое ;-)

    А вы присмотритесь повнимательнее - там после for точка с запятой стоит (цикл с пустой нагрузкой). return снаружи цикла, в конце функции. Просто возврат значения. ПО дельфийски result := i <> list.end().


    <<<... | 3252—3243 | 3242—3233 | 3232—3223 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 227


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

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

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

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

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

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