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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 832—823 | 822—813 | 812—803 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 469


    № 822   18-08-2006 11:48 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 818« (SJ)
    ___________________________
    Значит. Уважаемый Артем, Вы просто не понимаете разницу между формой и содержанием.
    Тогда уважаемый программист и питерский бомж эквивалентны. Форма разная,  а содержание – одно (спросите у хирургов).
    [Quote ] Если любую рекурсию можно записать в форме итерации и, наоборот, любую итерацию можно выразить в форме рекурсии, то это и означает их смысловую эквивалентность. Не смешите меня – у вас, что, есть формула для преобразования одного в другое? Это что, так просто? :) Если кто-то доказал теорему что любую рекурсию можно свести к итерации и наоборот, это не значит, что он пивел алгоритм преобразования. Он просто доказал, что такая возможность существует.
    В конце концов, если пользователю все равно, на чем написан его программа, то и ООП, и ФЯ, выражаясь вашим языком, - эквивалентны, т.к. приводят к одинаковым результатам. Зачем тогда все эти обсуждения?

    если хотя бы одно ДАННОЕ в видимой части Вселенной :) не является ОБЪЕКТОМ, то о тождестве этих категорий говорить нельзя. – Оставьте Вселенную в покое. Речь идет о конкретных реализациях. Если уж говорить о теории ООП, то в идеале в ней все типы являются классами, а экземпляры типов – объектами. Что мы и наблюдаем в чистых (не смешаных, как C++ и Delphi) ООП-языках.



    № 821   18-08-2006 11:48 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 804« (SJ)
    ___________________________
    Хорошо!
    Формулирую Вашу "теорему"
    "Тип данных и тип объекта - это равнозначные понятия (говоря языком логики, понятия одного объема). Другими словами, все, что является данными, является объектом, и все, что является объектом, является данными".
    Можете это доказать? Именно доказать, а не, как я, аксиомами, да аксиомами :) Только не забывайте, что данные в программировании появились лет на 30 раньше, чем ООП.

    Я и не утверждал, что у меня есть доказательство. Как я уже говорил, эта дискуссия ещё бесполезнее, чем о целях и средствах ООП.
    Но на это сообщение всё же отвечу :). Связанные логически данные являются объектом в концептуальном смысле :), но не обязательно являются объектом в смысле ООП.
     hugi


    № 820   18-08-2006 11:37 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 803« (Jack Of Shadows)
    ___________________________
    Не зря сами основатели ООП, теперь либо осторожно предупреждают против использования ОСНОВНОГО механихма ООП наследования, либо вообще уже в открытую ругают его и предлагают заменить интерфейсами, либо композицией.
    Никто не предлагает заменить наследование чем бы то ни было, просто призывают использовать его аккуратно. И это правильно. Разве механизмы ФП вы тоже используете "от балды", даже не задумываясь, что уместно в данной ситуации, а что нет?
    Да и вообще, автомобилем тоже нужно уметь пользоваться, и ездить где попало тоже нельзя, да ещё и правила дорожного движения нужно соблюдать, однако же никто не призывает отказаться от автомобилей и ходить пешком.
    Заодно сравните количество зарезервированных слов и сематнических понятий в императивных ОО языках и в функциональных.
    Тут уже привели в пример Smalltalk, а я вспомню о его потомке, языке Self, который имеет всего одно зарезервированное слово -- resend. Однако я поддерживаю уже высказывавшееся здесь мнение о том, что количество зарезервированных слов -- далеко не главный показатель "качества" языка.
     hugi


    № 819   18-08-2006 11:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 801« (Jack Of Shadows)
    ___________________________
    ФП не запрещает менять состояние обьектов. В лисп и Ocaml - полноценных ФЯ, вы может менять состояние обьектов столько сколько захотите.
    А Вы сами разве не называли эти возможности императивными? Я же специально подчеркнул, что говорю о чистом ФП! Вы либо совершенно не читаете сообщения, либо просто уже не знаете, к чему прицепиться.
    Несовместимость заключается в том, что основной механизм ФП - функции, не имеют независимого статуса в ООП. И как следствие не могут служить композицией для создания абстракций (пердача функций как параметров, возврат функций как результата) Опять таки не по физическим причинам, а потому что нет смысла.
    Всё это верно, но Вы же сами сказали: "Потому что нет смысла." ООП предоставляет другие механизмы декомпозиции и абстракции, поэтому выделять функции как первичный элемент никому не нужно. Вот Вам слова Страуструпа, которые я когда-то случайно увидел на каком-то сайте:
    "Основная проблема сообщества программистов на C++ заключается в том, что большинство из них воспринимают его как улучшенный C или как Smalltalk для бедных."
    А вот цитата из Буча:
    "...при попытках использовать такие языки, как C++ или Ada, в качестве традиционных, алгоритмически ориентированных, мы не только теряем их внутренний потенциал - скорее всего результат будет даже хуже, чем при использовании обычных языков С и Pascal.
    Дать электродрель плотнику, который не слышал об электричестве, значит использовать ее в качестве молотка. Он согнет несколько гвоздей и разобьет себе пальцы, потому что электродрель мало пригодна для замены молотка."

    Jack! Не хотите слушать про электричество -- продолжайте лупить электродрелью по пальцам!
    Кстати, после приведённой цитаты начинается глава "OOP, OOA и OOD", -- рекомендую прочесть.
    Ага и функции main в ОО языках нет
    Есть, но это никак не верхний уровень! Это своего рода "зажигание", как в автомобиле! Вы поворачиваете ключ, и система запускается! А уже после этого объекты взаимодействуют друг с другом как хотят и сколь угодно сложным образом, создаются новые обекты, уничтожаются старые, затем всё опять повторяется и т.д. Вы же не станете утверждать, что ключ зажигания в автомобиле -- это верхний уровень?! При структурном же подходе, -- а ФЯ представляет именно структурный подход, -- главная функция не только запускает систему, но ей же и возвращается результат, т.е. цель работы всей системы!
    А функции в ФЯ ну никак не могут быть использованы децентрализованно.
    А что могут? Как? Уж не объясните ли?
    hugi, Я понимаю, цели там и средства ООП, это вам учитель сказал (хотя учись вы по тем лекциям сслыку на которые я привел, вы бы имели другое мнение). Но это то откуда ? :))
    Jack, у Вас видимо какой-то комплекс насчёт учителя. Вы эту фразу каждому не согласному с Вами участнику дискуссии говорите. Я не Базаров, и не отрицаю авторитетов, но тем не менее, ко всему отношусь скептически. И учился я по "лекциям" Буча и других замечательных товарищей, Бадда, например. А, быть может, познакомься Вы пораньше с ООП, да почитав повнимательней вышеназванных авторов, тоже имели бы другое мнение? А? Как Вы думаете?
     hugi


    № 818   18-08-2006 10:20 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>Ну, так я вам говорю, что бывает и так, что все типы данных
    >>>(экземпляры типов данных) являются  объектами. Или опять проблемы
    >>>со смыслом?
    Я понял, в чем причина нашего взаимного непонимания. Я все время говорю о данных и объектах в ОБЩЕМ смысле слова, а не применительно к какому-то конкретному языку! А Вы прицепились к частным случаям: бывает, бывает, бывает... Еще раз повторю: если хотя бы одно ДАННОЕ в видимой части Вселенной :) не является ОБЪЕКТОМ, то о тождестве этих категорий говорить нельзя. Ибо ДАННЫЕ есть, а ОБЪЕКТОВ нет! И Ваши ЧАСТНЫЕ случаи ("бывает и так") не могут опровергнуть ОБЩЕЕ суждение.

    >>>Уважаемый, по смыслу они не эквивалентны. Ну, конечно, если смысл
    >>>для вас что-то значит.
    Значит. Уважаемый Артем, Вы просто не понимаете разницу между формой и содержанием. Если любую рекурсию можно записать в форме итерации и, наоборот, любую итерацию можно выразить в форме рекурсии, то это и означает их смысловую эквивалентность. Точно так же, как смысловую эквивалентность двух текстов на разных иностранных языках, которые выражают одинаковые мысли.



    № 817   18-08-2006 08:45 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 815« (Trurl)
    ___________________________
    я предпочитаю думать о сообщениях не "что оно может сделать" а "что с этим можно сделать" то есть 5 я могу превратить в строку.


    № 816   18-08-2006 08:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 815« (Trurl)
    ___________________________
    Это же может вызвать мировозренческий шок у неокрепшего ума. Не преувеличивайте влияние типа Integer на мировоззрение. :)


    № 815   18-08-2006 07:54 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 814« (Артем)
    ___________________________
    Изучать, оно не помешает. Но я не о языке.
    Это же может вызвать мировозренческий шок у неокрепшего ума. Оказывается, такие знакомые, казалось бы, числа обучены разным хитрым фокусам.


    № 814   18-08-2006 07:41 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 811« (Trurl)
    ___________________________

    Ответ на »сообщение 808« (Артем)
    ___________________________
    А вот, кстати об интуитивной понятности ООП.
    Для всех ли очевидно, что 5 умеет реагировать на сообщения и превращать себя в строку?


    Вообще-то, любой язык надо изучать. :) Это плюшками можно просто так баловаться, а даже катанию на роликах не мешало бы и поучитсья :)


    № 813   18-08-2006 07:36 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 809« (SJ)
    ___________________________

    Вы, наверно, не мои посты читали :)))
    Я никогда не говорил, что это одно и то же. Я говорил только об их смысловой эквивалентности. А Вы опять за меня что-то свое придумали и тут же бросились опровергать.

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



    Я не отрицаю, что есть типы данных, которые являются объектами. Я отрицаю, что не существует типов данных, которые объектами не являются. Вы на самом деле не понимаете разницы?!!!


    “Я отрицаю, что не существует типов данных, которые объектами не являются.” => “существуют типы данных, которые объектами не являются”
    Ну, так я вам говорю, что бывает и так, что все типы данных (экземпляры типов данных) являются  объектами. Или опять проблемы со смыслом?


    Кстати, из сообщения № 786:

    Давайте возьмем целочисленный тип данных, например, Integer (или Int). Экземпляр этого типа данных - это любая целочисленная переменная. НЕ ОБЪЕКТ, а ПРОСТАЯ ПЕРЕМЕННАЯ ВЕЛИЧИНА. О каком типе объекта мы можем говорить здесь, где вообще нет никакого объекта? А о типе данных можно говорить! Или Вы не слышали, что есть такой тип данных Integer?

    см. сообщение №808


    <<<... | 832—823 | 822—813 | 812—803 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 469


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

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

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

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

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

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