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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 802—793 | 792—783 | 782—773 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 472


    № 792   17-08-2006 04:13 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 790« (SJ)
    ___________________________
    функция в ФЯ не имеет побочных эффектов, т.е. в определенном смысле инкапсулирует свою логику вычисления. На основе одних функций можно определять новые (расширение функций, т.е. в определенном смысле наследование?)
    Ну, вы эквилибрист, однако.  :)


    № 791   17-08-2006 02:47 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 782« (info21)
    ___________________________
    Не совсем в тему, но пусть уж для статистики:
    я отказался от всяких таких попыток (типа на ФЯ алгебру, привинтить ИЯ для быстроты, т.к. невмоготу неделями ждать, когда своппинг начинается; или наоборот -- к числодробилке на ИЯ привинтить "ум" на ФЯ).
    Чушь все это. Мираж. Понять полезно, а использовать -- на фиг.
    Keep it simple -- stick to Oberon.


    Господа! Давайте не впадать в крайности. Неужели вы не понимаете, что взаимное отрицание ООП и декларативного программирования по сути своей контрпродуктивно? На декларативных (функциональных и логических) языках гораздо удобнее решать задачи, алгоритм работы которых сводится к комбинации формул, описывающих фрагменты общей системы. Я уже приводил в качестве примера статью http://delphikingdom.ru/asp/viewitem.asp?catalogid=1168 с макетом интерпретатора скриптового языка на основе Lisp. Это, просто, иллюстрация того, что некоторые задачи (программа "Ферзи" из статьи) лучше описывать именно на декларативном языке. К этим задачам можно отнести и программирование алгоритмического ядра разнообразных игрушек, и синтаксический разбор, и преобразование струткур и т.д.и т.п. Я лично не так давно начал пользоваться связкой Delphi+Prolog (попробуйте бесплатную реализацию http://www.swi-prolog.org  и интерфейс к Delphi http://gollem.science.uva.nl/twiki/pl/bin/view/Foreign/DelphiInterface ). Еще присматриваюсь к возможности взаимодействия .net-сброк и SICSTUS-Prolog.
    Вообще, Microsoft.net предоставляет хороший механизм для взаимодействия разнообразных языков. Тот факт, что техника смешивания в одном проекте еще не получила широкого распространения, можно объяснить относительной молодостью самого .net и некоторой инерцией программистского сообщества.


    № 790   17-08-2006 02:10 Ответить на это сообщение Ответить на это сообщение с цитированием
    1) Единственный пример "взаимодействия миров" у меня был такой. Замучился с красивым оформлением вывода результатов на Haskell. Забил на это дело - сделал вывод из модуля Haskell в текстовый файл в формате HTML. А потом обычным образом смотришь HTML-документ и наслаждаешься :).
    Keep it simple - stick to haskell&HTML/XML :)))))

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


    № 789   17-08-2006 01:32 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>в некоторых языках число, это объект. просто неизменяемый. Его
    >>>состояние и идентичность совпадают.

    Конечно! Поэтому я специально выделил, что говорил о целочисленном типе данных в "классическом" смысле слова. А если в языке все является классом, то ситуация меняется. Любой тип данных является классом, но вот классы бывают разные. Соответственно есть разные экземпляры классов (объекты) и у них могут быть разные типы. Типы не в смысле "типа данных", а в смысле "типа объекта". Тип данных у всех объектов один - это класс.



    № 788   17-08-2006 01:25 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>>Насчёт того, что тип данных и тип объекта -- совершенно разные
    >>>понятия, я бы не стал столь категорично заявлять.

    Проблема еще и в том что в русском и даже в английском языках не хватает слов, чтобы вместить туда все многообразие человеческих мыслей. Слова "тип" и "класс" тоже оказались слишком "узкими".
    Судите сами. Вот два утверждения.
    "Треугольник" принадлежит к типу "Многоугольники".
    "Треугольник" принадлежит к классу "Многоугольники".
    Если мы считаем, что по смыслу эти высказывания равнозначны, то надо признать, что в слова "тип" и "класс" мы вкладываем одинаковый смысл. А если нет, тогда в чем мы видим разницу?


    № 787   17-08-2006 01:14 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 786« (SJ)
    ___________________________
    в некоторых языках число, это объект. просто неизменяемый. Его состояние и идентичность совпадают.





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

    >>>И что это за "определённые свойства" такие у этого АТД, что делают
    >>>его классом?!
    Ну, например свойство определять новые типы на основе ранее определенных. Слышали о таком свойстве? Может не будем опять обсуждать вопрос, что должно быть у типа данных, чтобы он мог называться классом?



    № 785   17-08-2006 00:47 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 783« (Jack Of Shadows)
    ___________________________

    В SML.NET есть пример - игра Конвея Life.
    Там интерфейсная часть на C# сделана, а сам расчёт учёта соседей и тд. - на SML.
    Оформлено всё это в виде двух солюшнов - один на C#, другой на SML...
    На SML - сервер в виде DLL.

    ЗЫ. Что-то вроде несложная задачка, а начинает так жутко тормозить уже на поле размером 128х128...


    № 784   17-08-2006 00:41 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>> <Строка> ::= <Символ> {<Символ>}
    >>>То, что взято в фигурные скобки, повторяется 0 или большее число
    >>>раз. По-вашему, это недостаточно строгое определение?

    Вы забываете, что предмет в фигурных скобках - это и есть рекурсия. Только Вы ее не обозначаете явно, а только подразумеваете.
    Ваши фигурные скобки есть не что иное, как рекурсия следующего вида:

    {Символ} ::= <пусто> | {Символ}Символ
    где <пусто> ::=

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



    № 783   16-08-2006 21:41 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 782« (info21)
    ___________________________
    Кстати согласен. Тоже были мысли GUI на dotnet рисовать а логику на лиспе.
    Однако быстренько сообразил что легче все на одном языке делать.
    Keep it simple - stick to lisp :))


    <<<... | 802—793 | 792—783 | 782—773 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 472


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

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

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

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

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

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