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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 62—53 | 52—43 | 42—33 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 546


    № 52   08-06-2006 14:40 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 51« (Geo)
    ___________________________

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


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

          *<-------------------------------->*
    объекты (данные)              процессы (алгоритмы)

    Каждая из парадигм порождения вычислительного процесса в разных пропорциях обращает
    внимание
    (ракурс) на эти элементы (или их соотношение). Например, функциональная парадигма - в чистом виде представляет процессуальный подход, декларативная парадигма - чистый подход "от данных", императивная парадигма есть паритет обоих составляющих (может именно в следствии такой "толерантности" она и получила столь широкое распространение, в том числе, - и воплощенная в архитектуре подявляющего большинства современных вычислительных систем, т.е. фон Неймановской архитектуре).
    Следует отметить, что при любом подходе, невозможно принципиально отбросить ни один из элементов ИС (программы). То, что функциональный (апликативный) подход фокусируется на процессах (получении результата как композиции функций), отнюдь не означает отбрасывания другого компонента - данных. Просто данные подразумеваются при разработке программы неявно (как ОДЗ функции). В декларативном (логическом) же подходе декларируются правила отношения между данными. Но... процессы имеют место присутствовать в виде "автоматического решателя", основанного на методе резолюций, а предметная область описывается с помощью логики предикатов первого порядка. Ну, и императивные языки, как я уже отмечал, одинаково фокусируют внимание разработчика и на данных, и процессах их преобразования. Да, и еще - ООП. Судя по всему - это расширение императивного программирования (мне понравилась такая метафора - это множество императивных "компьютеров", взаимодействующих между собой посредством сообщений. К сожалению, источник не помню :( ).
    Еще раз делаю ударение - сугубо мое ИМХО, после изучения области программирования в течении 12 лет :)
     AK


    № 51   08-06-2006 13:00 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 50« (Jack Of Shadows)
    ___________________________
    >>> Одна строчка, понятная даже ребенку

    echo Hallo, World!

    Тут тоже все понятно даже ребенку (ДОСовский BAT-файл). И даже кавычки не нужны.

    Но это я так, повыпендриваться. Есть ли где-нибудь материалы, поясняющую разницу между императивными и функциональными подходами к языкам программирования. Желательно на научнопопулярном уровне (пусть это и нестрого). А то я, конечно, помню машину Тьюринга и нормальные алгоритмы Маркова, но не настолько хорошо, чтобы понять разницу в языках программирования, построенных на этих принципах.

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


    № 50   08-06-2006 12:12 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 48« (Q. Werty)
    ___________________________
    (print "Hello World")

    Классно правда ? Одна строчка, понятная даже ребенку.


    № 49   08-06-2006 12:08 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 45« (Q. Werty)
    ___________________________
    Вот когда у меня в сети будет работать хотя бы 1 (одна!!!) реальная программа,
    У меня работают программы на лиспе. Как видите для меня это реальность.
    При этом нет ни одной (!!!) программы на обероне.
    При сравнении популярности оберона и лиспа я не опираюсь на то что работает на моем компьютере.
    Выборка была бы слишком нерепрезентативной :))

    Речь идет о таких вещах, как количество книг, изданных в последнее время, количество кода написанное в последнее время, да черт возьми количество рабочих мест ! Поищите по job search серверам, поймете о чем это я.

    Вот например список библиотек для лиспа http://www.cl-user.net/asp/vCKQ2/sdataQ0mvC0SNCx9oDQjr-br28xqk8yBX8yBX8oQ5Ss9v-ujg$Np5/sdataQu3F$sSHnB==
    Вы можете пройтись и посмотреть сколько кода и когда он написан / изменен

    Вот список разных реализаций лиспов:
    http://www.cl-user.net/asp/b0LQ2/sdataQ0mvC0SNCx9oDQjr-br28xqk8yBX8yBX8oQ5Ss9v-ujU-eAgDM==/sdataQu3F$sSHnB==

    Вот список реализаций scheme (тоже лисп)
    http://community.schemewiki.org/?scheme-faq-standards#implementations

    Достаточно провести некоторое время изучая эту информацию, чтобы составить себе представление об уровне распространения лиспа и о тенденциях.


    № 48   08-06-2006 12:00 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>Я могу пособирать данные если вас интересует эта тема.

    Можете смеяться, но меня вот что интересует.
    Как выглядит на Лиспе программа "Hello, world!".



    № 47   08-06-2006 11:57 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 39« (AVC)
    ___________________________


    Все же, мне кажется, можно дать и иное объяснение.
    До последнего времени многопоточный код в обычных программах не давал ощутимой пользы.


    Как мне кажется, и на LISP параллельных/многопоточных программ немного.
    По крайней мере, было до последнего времени.
    А это, ИМХО, снижает вес аргумента, что многопоточных программ было мало по причине засилья императивного стиля программирования.
     AVC


    № 46   08-06-2006 11:53 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 45« (Q. Werty)
    ___________________________
    Если Вас именно слово "грязь" зацепило, то примите мои извинения - оно не главное в моем сообщении.

    Спасибо. Мне бы очень не хотелось чтобы технологии затыкания рта неугодным проникли и сюда. Здесь нет авторитетов и истин в высшей инстанции. Здесь все имеют право на ошибку. И никто не делает ее намеренно. Никто не врет. Если вы не согласны с моим или чьим то утверждением - возразите, приведите свои аргументы.
    Я с удовольствием поменяю свое мнение, что делал уже не раз.

    Главное - в другом. Не надо вообще на ветке о ФЯ обсуждать императивные языки.

    Вот тут вы ошибаетесь сравнения неизбежны. Ибо это ветка о функциональном программировании на сайте императивного языка. Здесь нет лисперов и хаскелистов. Здесь все дельфисты, джависты, сишники и оберонщики.
    И потому столкновения мнений неизбежны. Только вот не надо их бояться. :))

    Второе. Насчет огромного роста популярности ЛИСПА - это ведь тоже из области агитпропа
    Я могу пособирать данные если вас интересует эта тема.

    А пока Руслан прав - C++/C#, VB, Java. Вот реальность, с которой придется мириться еще долго.

    Этого никто не оспаривает.
    Сравните. Быстрый рост популярности Линукса никто не оспаривает. И тем не менее windows - Вот реальность, с которой придется мириться еще долго. Одно другому не противоречит, верно ?


    № 45   08-06-2006 11:42 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>Константация факта малой популярности оберона есть поливание грязью ?

    Если Вас именно слово "грязь" зацепило, то примите мои извинения - оно не главное в моем сообщении.
    Главное - в другом. Не надо вообще на ветке о ФЯ обсуждать императивные языки. Это все равно, что на ветке о дельфинах обсуждать и сравнивать их с бизонами. Они не плохие, и не хорошие - они просто РАЗНЫЕ.
    Второе. Насчет огромного роста популярности ЛИСПА - это ведь тоже из области агитпропа (видите, я использую мягкие формулировки :)
    Вот когда у меня в сети будет работать хотя бы 1 (одна!!!) реальная программа, написанная на Лиспе - тогда я сам в это поверю. А пока Руслан прав - C++/C#, VB, Java. Вот реальность, с которой придется мириться еще долго.



    № 44   08-06-2006 11:25 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 42« (Q. Werty)
    ___________________________
    Простите меня уважаемый. Но где и когда я поливал грязью оберон ?
    Константация факта малой популярности оберона есть поливание грязью ?
    Я всегда думал что поливание грязью - это вранье с целью очернить, нанести вред, испортить репутацию.
    Может укажете мне где и что я врал про оберон ?
    Если уж на то пошло, я первый скажу что оберон лучший из императивных языков.
    И пожалуйста не надо на меня бочку катить. Я же не виню вас или Руслана в том что вы поливаете грязью лисп или функционаьный подход только потому что вы критикуете их, или указываете на недостатки.
    Я буду только рад если вы противопоставите моему энтузиазму свой трезвый и критический подход.
    Никаких поливаний грязью.
    Уж я достаточно навидался этого поливания в обероновских форумах. Потому и ушел оттуда.



    № 43   08-06-2006 11:19 Ответить на это сообщение Ответить на это сообщение с цитированием
    Вот интересная страничка где собраны высказывания многих людей пришедших в лисп: http://wiki.alu.org/RtL_Highlight_Film

    Несколько цитат:

    Within a couple weeks of learning Lisp I found programming in any other language unbearably constraining.

    the desperate search for Something Better is gone

    The final language.

    It feels like lightning between your fingertips.

    The language God would have used to implement the Universe.

    If I find a better language, I'll let you know.

    I'm amazed at how many of the features of CL are just now appearing in more "modern" languages."

    To me, the concepts that Lisp stands for are an embodiment of all that is beautiful in the Universe.

    И так далее.



    <<<... | 62—53 | 52—43 | 42—33 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 546


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

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

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

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

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

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