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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 1502—1493 | 1492—1483 | 1482—1473 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 402


    № 1492   09-11-2006 00:05 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1477« (Как слышно? Приём!)
    ___________________________

    Но речь шла вообще-то о том, что при автосинхронизации, которая ещё
    существеннее в ФЯ, чем в Дельфи, поведение может быть непредсказуемым.
    Ну, или труднопредсказуемым - порядок выставления триггеров в логике
    существенен, а где "гарантии" корректности при непрожёванной генерации
    холодным умом компьютера?

    Т.е. Вы свято верите, что Delphi Вас не обманет правильно вызвав OnCalcFields, но не верите, что система, построенная на ФЯ сможет правильно сделать то же самое, но для данных, не связанных с БД?
    А в Excel Вы сложные формулы писали? Microsoft Вам дал "гарантии" корректности при непрожёванной генерации холодным умом компьютера?


    № 1491   08-11-2006 16:36 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1489« (Geniepro)
    ___________________________
    Ах вот вы о чем :) Нет, это придуманный сюжет, не из мультика :)


    № 1490   08-11-2006 16:30 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1487« (Geniepro)
    ___________________________
    Да есть в монадах самое обчное присваивание с изменением сотояния переменной, то есть заменой предыдущего значения на новое.
    Возьмите код подсчета запятых, который я здесь приводил, и вместо переменной t2 напишите t1
    то есть вот так:


    main = do fromHandle <- openFile "d:\\test.txt" ReadMode
              contents  <- B.hGetContents fromHandle
              t1 <- getClockTime
              putStr "Start Time "
              print t1
              putStr "Number of commas = "
              print  (calcCommas contents)
              t1 <- do getClockTime
              print t1
              hClose fromHandle



    Как видите вначале в переменную t1 запихивается одно значение времени, потом в нее же другое значение.
    Все точно также как и в любом другом императивном языке. Только вместо знака = пишется <- :))


    № 1489   08-11-2006 16:29 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1488« (Jack Of Shadows)
    ___________________________

    Вы о чем ? Не помню такого :)

    Ну как же? Сама основа статьи - задачка о том, как перевести четырёх игрушек через мост, по которому идти могут только двое одновременно, притом с фонариком, идти долго и опасно, а фонарик скоро погаснет... :о) Вроде бы сюжет их мультика "Toy Story 2"
    Статья о том, что в поисковых задачах Пролог нафик не нужен тому, кто знает Хаскелл... :о))


    № 1488   08-11-2006 16:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1487« (Geniepro)
    ___________________________
    С переводами да еще на русский я вам не помошник :))
    type classes как ни переводи коряво получается, а если переводить в два слова, то вы ведь знаете, одно из них  не приживется и останутся просто классы, что будет приводить к путанице, которой и сечас в мире ООП хватает.


    Да, и кстати, не довелось увидеть эту серию мультика, там действительно была эта история с мостом? :-)


    Вы о чем ? Не помню такого :)


    № 1487   08-11-2006 15:30 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1461« (Jack Of Shadows)
    ___________________________

    Присваивание даже в таком чистом функциональном языке как Хаскель есть. <...>
    С ограничениями, но все же.

    Ммм... Имхо, немного спорный момент...
    Я, правда, Хаскелл только учу, но, как я понял, говоря о Хаскелле, можно смело забыть о операции присваивания. Правильнее говорить об указании эквивалентности идентификаторов и значений, с ними связанными (там, где чисто функциональные определения). А там, где монады, - так там тоже не совсем присваивания, а, скорее, передача данных от одной функции к другой в качестве аргументов. А даже если и присваивания, то однократные, что тоже самое, что указание эквивалентности... ;о) Поэтому монадный ввод-вывод и считается функционально-чистым, т.е. не императивным...
    _________

    ЗЫ. Кстати, вопрос немного филологический.
    Перевожу сейчас статью Мартина Эрвига "Побег от Зурга" (ну помните, Вы её расхваливали как-то), так там упоминалось, что в Хаскелле есть multi-parameter type classes. Собственно, два вопроса:

    1) Можно ли перевести type classes как просто "классы", или всё же как "классы типов"? Или вообще как "метаклассы", что больше соответствует их сути? Хотя они также и на "интерфейсы" похожи, но, наверное, это уже не то...

    2) Как лучше перевести multi-parameter type class? "parameter class" я понимаю как "параметризованный класс". Получается что-то типа "мультипараметризованный класс", немного коряво... :-(

    Да, и кстати, не довелось увидеть эту серию мультика, там действительно была эта история с мостом? :-)


    № 1486   08-11-2006 12:53 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1484« (hugi)
    ___________________________
    И почему вы решили, что функции не "ориентируются" вокруг объектов? Прекрасно они "ориентируются"...

    Это не я решил, это Гослинг решил. С него и спрашивайте :)) Я как раз таки и говорю что обьекты это всего лишь еще один тип данных, с которым прекрасно можно работать как в императивном так и в функциональном стиле, как в паскале так и в лиспе.


    OK, давайте пихать в язык всё подряд, подозреваю, что получится второй Perl или что-то вроде этого.


    ОК, давайте защищать одну крайность приведением примера другой :) Кто здесь говорит о "пихании всего подряд" ?


    № 1485   08-11-2006 12:49 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1482« (hugi)
    ___________________________
    MOP очень часто используется в лиспе как раз для автоматического "распознавания" различных действий.
    Так например в обьектной базе данных AllegroCache автоматическое распознавание когда обьект был изменен и должен быть сохранен в БД, сделано именно при помощи MOP.

    Так что ваш вопрос можна задать и в этом случае. Откуда AllegroCache знает когда обьект изменен, и его надо записывать в БД. Ведь явно вы ему об этом не говорите :)


    № 1484   08-11-2006 12:49 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1480« (Jack Of Shadows)
    ___________________________
    Берем тип данных и начинаем "ориентировать" вокруг него все остальные возможности языка.
    Например берем тип integer, и обьявляем о создании Integer Oriented Programming (IOP). Так, а теперь начинаем ориентировать язык. Прямо с арифметических операций и начнем, что у нас там ? Сложение, вычитание, умножение ? работают с integer ? Прекрасно, оставляем. Деление ? О, о ! С делением проблемы. Как кратко и емко выразила проблему IOP с делением лиса Алиса "Пять на два не делится" :)) Вот мы деление то и выкинем из языка.
    Абсурд скажите вы, правильно ? Такого не может быть, на такой дебилизм никто не пойдет.
    Как бы не так! Известный крестоносец ООП Гослинг, создавая java выкинул из языка ФУНКЦИИ!! Ну не ориентируются они вокруг обьектов. :)) Ну как тут зубами не поскрежетать ? Любую идею ведь можно довести до по полно потери сознания :))

    OK, давайте пихать в язык всё подряд, подозреваю, что получится второй Perl или что-то вроде этого. Как же тогда быть с элегантностью языка, с его простотой, целостностью, чистотой дизайна, лаконичностью, единообразием внутренних концепций в конце концов?! Мне вот лично очень импонирует подход "Всё есть объект" принятый в языке Smalltalk (а в ещё большей степени в Self), а затем, 20 лет спустя и в C#. Так что, как видите, Гослинг не единственный "дебил" среди разработчиков языков.
    И почему вы решили, что функции не "ориентируются" вокруг объектов? Прекрасно они "ориентируются"...
     hugi


    № 1483   08-11-2006 12:43 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1482« (hugi)
    ___________________________
    Вопрос. КАК cells узнает об изменении значения y?


    Через MOP (Meta Object Protocol)
    Вам стало легче ? :)) Предупреждаю сразу, MOP я вам разжевывать не буду. Читайте книжки.


    <<<... | 1502—1493 | 1492—1483 | 1482—1473 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 402


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

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

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

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

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

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