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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 512—503 | 502—493 | 492—483 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 501


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


    № 501   24-07-2006 01:50 Ответить на это сообщение Ответить на это сообщение с цитированием
    Недописал прошлый пост. Например, проверку корректности SQL при работе с конкретной базой данных.


    № 500   24-07-2006 01:48 Ответить на это сообщение Ответить на это сообщение с цитированием
    Препроцессорные макросы также можно разделить на активные и пассивные. Пассивные просто разворачиваются в неких программный текст, активные на этапе прекомпиляции могут выполнять кроме генерации текста и другие действия, например.


    № 499   24-07-2006 01:43 Ответить на это сообщение Ответить на это сообщение с цитированием
    Макросы, насколько я понимаю, могут быть 2 типов. Первые, препроцессорные, разворачиваются до этапа компиляции. Вторые – разворачиваются в run-time и далее происходит их run-time компиляция, или, если хотите интерпретация. Все-таки Jack of Shadows, если я правильно понял, говорил о препроцессорных макросах-функциях, которые могут выполнять активные действия в precompile time. То, что сделал я, конечно, не похоже на макросы Лиспа, но по классификации подпадает в эту же группу. Если я не прав – объясните, плиз.


    № 498   24-07-2006 00:47 Ответить на это сообщение Ответить на это сообщение с цитированием
    Кстати, о надоевших предложениях об "отдельных ветках".
    SpeedTree - тулзовина, основанная на процедурной генерации
    для построения деревьев и даже леса в автоматическом
    режиме. На С++ опять:) Хотя я не фанат-геймер, но работал
    с VRML для ГИС и утверждаю, что проблема с кустами и деревьями
    актуальна и в бизнесе. Проработанность графики в SpeedTree вполне
    современная и близкая к реалистичной - зависит, в основном,
    от настроек, ну и возможностей компа.
    Так вот, если эту самую генерацию использовать широко, то разница
    между макросами (генерация не лету) и препроцессорами (генерация
    заранее до запуска программы) не колоссальна, а даже принципиальна.

    Так что не надо трогать яйца, независимо от того, какой конец Вы
    предпочитаете - тупой или острый :)


    № 497   23-07-2006 22:25 Ответить на это сообщение Ответить на это сообщение с цитированием

    Разница между препроцессорами и макросами колоссальная.


    Угу... и разница между разбиванием яйца с тупого конца и с острого тоже колоссальная :)

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


    № 496   23-07-2006 04:26 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 495« (Jack Of Shadows)
    ___________________________
    Но если вас интересует мы попозже эту тему раскроем.
    А я предлагаю вынести обсуждение макроязыков в отдельную ветку, потому что эта тема имеет весьма отдалённое отношение к ФП, как таковому.

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


    № 495   22-07-2006 16:01 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 494« (Артем)
    ___________________________
    И, в конце концов, что тут такого трудного. Свой компилятор командной строки я вставлял в меню Tools,
    Ну я так и знал. :)) Начинали с того что в дельфи макросы сделали, а выяснилось, что до дельфи, текст программы обрабатывает ваша программа.

    Это не макросы, Артем, это препроцессор. Их полно, наиболее известные это это SQL/J и AspectJ

    Разница между препроцессорами и макросами колоссальная.
    У меня сейчас нет времени, надо бежать. Но если вас интересует мы попозже эту тему раскроем.
    А пока что скажу вам что премия Тюринга за препроцессор вам не светит :))



    № 494   22-07-2006 15:38 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 493« (Jack Of Shadows)
    ___________________________
    Если вы мудрились создать макросы для дельфи на самом дельфи то вам полагается премия Тьюринга :)) Этого даже создателям дельфи не удалось.

    А они и не пытались. По причинам, о которых я говорил раньше. И, в конце концов, что тут такого трудного. Свой компилятор командной строки я вставлял в меню Tools, используя при этом встроенную макрокоманду $EXENAME для передачи моему макрокомпилятору имени проекта. Макрокомпиляция вызывалась мною перед компиляцией в случае добавления новых макровызовов или изменения самих макросов. Макрокомпилятор, использую стандартный компилятор Дельфи компилировал используемые макробиблиотеки в dll, после чего макрокомпилятором анализировались все pas-файлы проекта  на предмет вхождения директив {$Include filename.inc funcName param1..}. Из нужных dll вызывалась нужная функция с нужными параметрами и возвращаемая строка писалась в нужный инклуд-файл. В принципе можно было автоматизировать процесс вызова прекомпилятора перед компиляцией с помощью OpenToolsAPI, но мне уже было лень это делать. Вот и все. Ничего особенного, за что надо давать премию Тьюринга я здесь не вижу. Если очень хотите, я могу выслать вам проект.

    [Quoye]Скажем в CMUCL лиспе есть параметр компилятора -lazy который включает режим. А это во всех версиях Лиспа реализовано? – ведь их куча. И насчет стандарта Лиспа, как я слышал, тоже не все гладко. В Common Lisp такая возможность есть?  Если уж на то пошло, если не трудно, ответьте, что все-таки лучше использовать с дотнет? L#, Scheme.net или что-то еще?



    № 493   22-07-2006 13:21 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 492« (Артем)
    ___________________________

    Нет, она выполняется тоже precompile time. Я там не совсем полный вызов записал. Полный выглядит так:

    {$Include myfile myMacroFunc param1 param2 …}


    Артем, насколько я знаю макрос $Include вставляет текст из указанного файла, а не выполняет на этапе компиляции какую то функцию.
    Если можно приведите полный код проекта, или выложите его куда нибудь.
    Или обьясните что конкретно делает myMacroFunc и как это отражается на компиляции.

    Если вы мудрились создать макросы для дельфи на самом дельфи то вам полагается премия Тьюринга :))
    Этого даже создателям дельфи не удалось.

    Так что я думаю мы с вами просто не понимаем друг друга. И вы говорите о чем то другом.


    Не совсем похожа на нормальный SQL. Software Factories из ООП более гибки, и позволяют использовать метаязыки в любой форме.


    Макросы в лиспе может писать даже новичек.
    А Software Factories вешь чрезвычайно сложная в использовании, что будет ограничивать ее применение только немногими программистами.
    Попробуйте, мало не покажется :))


    Кстати, не из вредности, а по любопытсву. Если вам не трудно, приведите все-таки  пример ленивого вычисления в Лиспе


    Дык зависит от библиотеки или лиспа которую вы будете использовать.
    Скажем в CMUCL лиспе есть параметр компилятора -lazy который включает режим. То есть в данном случае вы получите автоматически отложенные вычисления точно как в хаскеле.

    А в других лиспах можно воспользоваться одной из библиотек.
    В таком случае режим lazy включается / выключается  макросами (delay ...)/(force ...)


    <<<... | 512—503 | 502—493 | 492—483 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 501


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

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

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

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

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

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