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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 1492—1483 | 1482—1473 | 1472—1463 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 403


    № 1482   08-11-2006 12:36 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1466« (hugi)
    ___________________________
    Похоже, проповедниками ФЯ мои вопросы были вновь пропущены мимо ушей, поэтому считаю необходимым их повторить:

    Ответ на »сообщение 1448« (Jack Of Shadows)
    ___________________________
    Совершенно верно. Есть такое. Конечно и Кени Тилтон стал сталкиваться с подобными роблемами, когда реализовал идею, и его библиотеку начали применать многие другие люди. Она развивается, на месте не стоит.
    Эта проблема привела к тому что он ввел в cells новое поняти - синапсы как он их называет.
    Если у вас ситуация когда какое то значение очень быстро меняется, вы вместо непосредственной связи между двумя значениями, ставите туда специальный обьект синапс, в котором можно запоминать предыдущие значения переменной, и принимать решение стоит ли дергать связь и оповещать обьект.

    А разница между этим подходом и подходом, когда объект, в котором можно запоминать предыдущие значения переменной, и принимать решение стоит ли дергать связь , будет сам устанавливать значение чего ему там надо, останется???
    Если мне не изменяет память, -- а я вполне могу сейчас серьёзно ошибиться, -- в Smalltalk существует паттерн Value Holder, делающий что-то наподобие. Ещё раз повторю, я могу ошибаться, и прошу знающих людей поправить меня в таком случае.

    Ответ на »сообщение 1454« (Jack Of Shadows)
    ___________________________
    Например

    var
      x, y : integer

    x := ?f: y+5;

    После чего меняете значение y и наблюдаете как автоматом меняется значение x.
    Вот такой вот своеобразный OnChange навешенный на простенький integer.

    Вопрос. КАК cells узнает об изменении значения y?
     hugi


    № 1481   08-11-2006 12:26 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1467« (Сергей Перовский)
    ___________________________

    >>>Без императивности то никуда. Но лучше эту императивность свести к минимуму
    К какому минимуму?
    Собственно это из Вас и тянут уже тысячу постов.
    Где Вы видите эту границу?


    Что опять в "процентном отношении по классам задач" выражать ? Увольте :))
    Это как чувсто меры в еде. У каждого свое. Не обьедайтесь манипулированием состояния, не пихайте его в каждую строчку своей программы, и будет вам щастье. А в каких порциях, это уже в каждом конкретном случае - решение за вами, программистом. При этом решение может быть совершенно разным в зависимости от вашего опыта.
    То есть если вас сейчас силком застваить работать на лиспе, то ваши первые задачи будут 1 в 1 калькой от паскалевского мышления. Однако пройдет несколько лет, и вернувшись к своему старому коду вы осознаете что уже сейчас многое бы делали совершенно по другому. То есть этот самый минимум императивности разный для каждого программиста, даже для одного и того же, в разные периоды его жизни.


    № 1480   08-11-2006 11:48 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1477« (Как слышно? Приём!)
    ___________________________
    Я бы с удовольствием попинал ООП, но это уж точно оффтоп.
    Почему офтоп ? Нельзя говорить об ФЯ как о сферическом коне в ваккууме, да еще на сайте ОО языка дельфи.
    Конечно сравнения неизбежны, и офтопиком не являются.


    А насчёт синапсов поподробнее или ссылочку?

    Дык идея Тилтона, соответственно и описана в файлах cells.
    К сожалению, как это часто бывает с opensource проектами ведомыми одним единственным разработчиком - документация там зачастую на уровне "проект хорошо документирован на языке лисп" :))
    Но конкретно про синапсы у него где то в одном из pdf файлов было описано.

    Так, теперь к "охаиванию" ООП. Термин хреновый честно говоря. Не я его начал употреблять, он был подброшен Артемом в пыл перебранки. Корректно конечно говорить о критике ООП, а не о охаивании.
    НУ а то что в ООП есть много чего покритиковать я думаю сомнений (по крайней мере на этой ветке :)) ) ни у кого не вызывает. При этом никакая критика не сможет принизить гигансткую роль ООП на некотором отрезке развития программирования.
    Это как скажем сравнивать паровые двигатели с дизельными. Можно сколь угодно критиковать паровые двигатели, но для своего времени они совершили революцию в промышленности и транспорте. Этого у них не отнять несмотря ни на какую пусть и справедливую критику.
    Человечество движется вперед. Как бы хороша не была идея, но считать что это конец пути и вершина развития - наивно. Рано или поздно появится новая идея, и тогда уже можно будет сравнивать и выявлять недостатки.
    Ну или как в случае с ФЯ, идея не новая, но ситуация резко поменялась. Технические ограничения во многом сформировавшие современные ОО языки и закрывшие дорогу в широкое применения ФЯ, с некотрого времени просто перестали действовать.
    Новые условия, пора осматриваться и решать что в этих НОВЫХ условиях можно сделать лучше.

    Что касается обьектов (не обьектно ориентированного программирования а именно обьектов) - это шаг в эволюции типов. Не последний надо сказать шаг. Например позднее была разработана теория типов Милнера, получившая реализацию в языках семейства ML. Ну а последние подвижки уже идут на территории хаскеля (type classes)

    Конечно обьекты в том или ином виде - вряд ли сойдут со сцены в обозримом будущем, неважно какая парадигма, функциональная или императивная будет превалировать. Но ОРИЕНТИРОВАТЬ на них язык - это я полагаю уже будет отходить в прошлое. Ограничивать язык только инструментами работы с обьектами, выкидывая все остальные, которые не хотят "ориентироваться" вокруг обьектов - хотелось бы чтобы этот этап языкостроения закончился.
    А то ведь некоторые рьяные крестоносцы от ООП доводят идею до абсурда.

    Берем тип данных и начинаем "ориентировать" вокруг него все остальные возможности языка.
    Например берем тип integer, и обьявляем о создании Integer Oriented Programming (IOP). Так, а теперь начинаем ориентировать язык. Прямо с арифметических операций и начнем, что у нас там ? Сложение, вычитание, умножение ? работают с integer ? Прекрасно, оставляем. Деление ? О, о ! С делением проблемы. Как кратко и емко выразила проблему IOP с делением лиса Алиса "Пять на два не делится" :)) Вот мы деление то и выкинем из языка.
    Абсурд скажите вы, правильно ? Такого не может быть, на такой дебилизм никто не пойдет.
    Как бы не так! Известный крестоносец ООП Гослинг, создавая java выкинул из языка ФУНКЦИИ!! Ну не ориентируются они вокруг обьектов. :)) Ну как тут зубами не поскрежетать ? Любую идею ведь можно довести до по полно потери сознания :))



    № 1479   08-11-2006 10:24 Ответить на это сообщение Ответить на это сообщение с цитированием
    сообщение от модератора

    Ответ на »сообщение 1468« (hugi)
    ___________________________

    Ответ на »сообщение 1464« (Антон Григорьев)
    ___________________________
    Я понимаю, что это моё сообщение Вы тоже удалите, но не кажется ли эта мера Вам слишком, СЛИШКОМ жестокой?!
    За что?!


    По совокупности. Артём уже получал несколько предупреждений, баны у него тоже были. И я считаю, что я и так относился к нему снисходительнее, чем он того, как я теперь понял, заслуживал, и оставил без внимания не одну жалобу других посетителей на Артёма. Но в своём последнем сообщении он начал открыто хамить модератору. У модератора в таком случае два пути: или расписаться в собственном бессилии и пустить форум в свободное плавание, либо  применить очень жёсткие меры. Я не хочу, чтобы эта ветка превращалась в помойку, поэтому Артёма здесь больше не будет.

    Дальнейшие обсуждения моих действий допустимы только в ветке "Книга жалоб и предложений", здесь они будут удаляться.


    № 1478   08-11-2006 09:10 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>> Увы, тут фундаментальная огромность зарыта:
    >>> надо бы законом каким обозвать, что-ли, "звонко" сформулировать...
    ... but I'm not jeddai yet ...

    >>> кучки кода
    Такое нарочно не придумаешь.
    Бывало, разгребаешь код - "точно оно".

    А насчёт синапсов поподробнее или ссылочку?


    № 1477   08-11-2006 08:57 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>> специальный объект синапс, в котором можно
    >>> запоминать предыдущие значения переменной
    или состояние переменной ? :)

    >>> А ведь в Delphi давно уже есть все те проблемы, которые Вы описали.
    >>> И никто еще не поднимал по этому поводу вселенского хая.
    То есть мне можно подать заявку на копирайт на постановку проблемы? :)
    Или лучше замалчивать проблемы?
    TAction - замечательная вещь. Замечательна она тем, что ещё больше
    запутывает обработку Event типа переходов по GOTO в кодировании.

    Но речь шла вообще-то о том, что при автосинхронизации, которая ещё
    существеннее в ФЯ, чем в Дельфи, поведение может быть непредсказуемым.
    Ну, или труднопредсказуемым - порядок выставления триггеров в логике
    существенен, а где "гарантии" корректности при непрожёванной генерации
    холодным умом компьютера? (Если кулер хороший). Причём корректность
    не только в смысле принципиальной решаемости, но и решаемости в рамках
    разумного количества вычислительных ресурсов, времени разработки, счёта,
    сопровождения (например поиска глюков).

    То есть, если не абстрактно, а конкретно - нужны спецсредства (синапсы)
    (читай - императивность?) для реализации не только работы со специфическим
    железом или в диалоговом режиме, но и при автоорганизации логики по
    декларациям - в самом логове ФЯ.

    P.S. Я бы с удовольствием попинал ООП, но это уж точно оффтоп.


    № 1476   08-11-2006 08:35 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1475« (Как слышно? Приём!)
    ___________________________
    >>> Эволюционная спираль сделала очередной виток...
    В смысле: всё чаще встретишь неадертальца?

    Ах, если бы всё так просто и чётко очерченно было!...
    Сейчас неедяки оборотистей пошли... Всё больше "доктора опиры" попадаться стали... :о)


    № 1475   08-11-2006 08:16 Ответить на это сообщение Ответить на это сообщение с цитированием
    >>> Эволюционная спираль сделала очередной виток...
    В смысле: всё чаще встретишь неадертальца?


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


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


    <<<... | 1492—1483 | 1482—1473 | 1472—1463 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 403


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

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

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

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

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

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