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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 302—293 | 292—283 | 282—273 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 522


    № 292   20-06-2006 15:06 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 291« (hugi)
    ___________________________
    Практическая применимость? Нууу...
    Вот и я о том же :))


    № 291   20-06-2006 14:53 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 287« (Jack Of Shadows)
    ___________________________
    Практическая применимость? Нууу... Можете использовать привычный для Вас способ решения задач, если программировали на ФЯ и перешли на Яву. В дополнение к работе со спискам в духе ФП получаете полноценные классы и объекты, которые можно, наверняка, продуктивно использовать в приложениях ИИ и вычислениях. Получаете императивные возможности, без которых, как Вы сами говорили, ФЯ не существуют. Ну и кроссплатформенность, пожалуй.
    Зачем Вам это нужно, если у Вас есть Лисп? Это вопрос посложнее... Хотя, я знаю ещё один аргумент в пользу Явы: там нет макросов.
     hugi


    № 290   20-06-2006 14:51 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 289« (hugi)
    ___________________________
    Естественно, применение приоритетного подхода если не более удобно, то по-крайней мере более привычно в рамках того или иного языка (парадигмы).

    Что бы ни сказать, лишь бы не упомянуть "удобно" :))
    "привычно" (Это мне то ! с опытом работы в ИЯ более 17 лет!!),
    "идеологично" (да, да вот только вчера внес ежемесячный взнос в партком лиспа)
    "общепринято" (как будто у меня за спиной лиспер и больно бьет палкой по рукам если я использую не общепринятые циклы)

    Но ни в коем случае не удобно. Признать это было бы поражением для hugi. А поражения мы все очень не любим.
    Ну что ж. Обсуждение удобства\неудобства применения рекурсии в ИЯ\ФЯ зашло в тупик.
    Приведено достаточно кода, достаточно примеров чтобы каждый читающий эту тему составил себе мнение о применимости рекурсии в ИЯ и ФЯ.

    Я думаю надо закругляться и двигаться дальше.


    № 289   20-06-2006 14:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 283« (Jack Of Shadows)
    ___________________________
    hugi это смешно. :)))
    А почему я не смеюсь?
    По вашему я, работая на дельфи, использую циклы по идеологическим причинам, а перейдя на лисп, по тем же идеологическим причинам использую рекурсию ?
    Не нужно воспринимать идеологию, как нечто враждебное. В данном случае идеология рассматривается как естественная, органическая часть языка. Это, как я уже говорил, общепринятая практика, стиль мышления, характерный для языка. Поэтому применение того или иного метода решения отражает приоритетный для данного языка (парадигмы) подход. Естественно, применение приоритетного подхода если не более удобно, то по-крайней мере более привычно в рамках того или иного языка (парадигмы).
     hugi


    № 288   20-06-2006 14:03 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 282« ()
    ___________________________
    Ещё раз прошу Вас подписывать свои сообщения.

    Скажите, а в вашей интерпретации, элементы ДЕЙСТВИТЕЛЬНО полиморфны или только в рамках понятий полиморфности объектов Явы?
    Вы, я смотрю не очень то утруждали себя изучением моего кода, который всего то ~130 строк. Разумеется, элемент списка и информационную часть элемента списка приходится различать. Это ограничение языка. И я уже писал, что в отличие от ФЯ, в ИЯ список не является чем-то особенным, он один из многих, многих, многих... И отношения к списку в ФЯ и ИЯ соответственно разные.
    Я имею в виду воплощение прямого "постулата" Лиспа о неразличимости формы записей списка элементов и вызова функции? (Это важно, это - не просто каприз на счёт синтаксиса...)
    А я, кстати, так и не понял, почему это важно? Не могли бы доходчиво объяснить?
    К тому, что накропать набор основных функций работы с множествами можно и на ассемблере.
    Ещё бы. А на чём их интересно МакКарти реализовывал как не на ассемблере?
    Есть ещё один маленький вопросик. Всё-таки вы вынуждены акцентировать внимание пользователя вашей реализации на раздельности понятий объектов списка и элемента списка. Заметьте, я здесь даже не упоминаю лисповское понятие атома.

    Что Вы понимаете под объектом списка? Если атом, т.е. информационная составляющая элемента, естественно, не тождественна элементу списка. Но для пользователя моего кода это никак не видно. Пользователь видит список и атом, элементы никак в операциях, посроенных на основе базисных, не фигурируют. Операция head() возвращает атом. Возможно, единственным напоминанием об элементах является неудачное название класса списка FPListItem, но отбросьте слово Item и всё ОК!
    В вашем примере мне было бы интересно посмотреть даже не на код заполнения списка, а на код, например:
    - использующий элементы списка;
    - получающий доступ к элементам списка;
    - пытающийся получить хвост списка;
    - оперирующий списком, как целым.

    Пожалуйста, используя ваш класс, приведите полный пример для иллюстрации использования вашего класса "в деле", в которм были бы показаны перечисленные выше случаи...

    Да, похоже я не ошибся относительно того, что код Вы не изучили. Там всё есть. Повторю, в классе FP реализованы три базисные операции join(), head(), tail(). В классах FPLib и Test на их основе реализованы операции append() и sum() соответственно. Следовательно, в этих операция присутствует код, использующий элементы списка (особ. см. sum()), получающий доступ к элементам списка, получающий хвост списка, оперирующий списком как целым.
     hugi


    № 287   20-06-2006 13:34 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 284« (hugi)
    ___________________________
    Пример был призван доказать отвергаемую Вами возможность работы со спискам
    Хорошо, согласен. Вы доказали эту возможность. Признаю свою ошибку. Теперь как насчет практической применимости ?


    № 286   20-06-2006 13:32 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 282« ()
    ___________________________
    Кто-то из современных великих сказал, что постепенно все программисты приходят к тому, что начинают в своих программах эмулировать лисп-программы... ;)


    Называется "Десятое правило Гринспена"

    Greenspun's Tenth Rule of Programming

    Any sufficiently complicated C or Fortran program contains an ad hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

    Правило было сформулировано давно поэтому не включает в себя паскль, java и сишарп :))



    № 285   20-06-2006 13:27 Ответить на это сообщение Ответить на это сообщение с цитированием
    Кстати для того чтобы развеять ваши сомнения по поводу "идеологичности" рекурсий в лиспе.
    Начинающие лисперы, пришедшие из императивных языков (особенно с большим опытом) первое время (довольно долгое время) используют исключительно циклы и никаких рекурсий. Плачут, колются, но продолжают использовать циклы. Проходит довольно много времени, прежде чем до них "доходит".
    И уверяю вас, их никто не заставляет. :))


    № 284   20-06-2006 13:23 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 279« (Jack Of Shadows)
    ___________________________
    Как видите вы и сами не верите в сделанный вами же самими код. Потому что пишете таким образом только для бессмысленного доказательства теоретической возможности "и мы так могем".
    В очередной, десятый уже, наверное, раз повторяю. Пример был призван доказать отвергаемую Вами возможность работы со спискам в духе первый-последние по причине якобы обязательного копирования хвостовой части списка.
    Не достаточно чтобы язык имел возможность. Нужно еще чтобы эта возможность была ДОСТАТОЧНО УДОБНОЙ.
    Поэтому си не является обьекто-ориентированным языком, а ИЯ не является "рекурсивно-ориентированным".

    Некорректное сравнение. В языке C отсутствуют присущие ОО языкам средства (не только пресловутые наследование и полиморфизм, но и элементарная инкапсуляция), в то время как во всех ИЯ присутствует рекурсия, и используется даже, когда это необходимо. И вовсе это не выглядит как насилие над языком и программистом.
     hugi


    № 283   20-06-2006 13:21 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 281« (hugi)
    ___________________________
    Общепринятая техника. ... по идеологическим причинам и вследствие общераспространённой практики

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

    Вы сами сказали что терпеть рекурсию не можете. По вашему если вам доведется работать на лиспе, то придут затянутые в балахоны жрецы ФП и под страхом сожжения на костре, заставят вас ПРОТИВ ВАШЕЙ ВОЛИ использовать рекурсию ?

    Или вы будете ее использовать чтобы "не выделяться из толпы" ? Ну там общепринято и так далее. :)))


    <<<... | 302—293 | 292—283 | 282—273 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 522


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

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

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

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

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

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