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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 1462—1453 | 1452—1443 | 1442—1433 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 406


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


    № 1451   08-11-2006 03:04 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1450« (panda)
    ___________________________
    И никто еще не поднимал по этому поводу вселенского хая.
    А мне как раз таки поставленные вопросы понравились. Совершенно нормальное развитие темы.
    Так и нужно проводить обсуждение.
    Вот только вторая часть сообщения господина "Как слышно? Приём!" действительно была похожа на хай. :))
    Но это я так понимаю неизбежные издержки общения на любую "огнеопасную" тему. :))
    То есть я бы хотел чтобы обсуждение больше шло по техническому руслу, как первая часть сообщения № 1446
    А не скатывалось бы к пассажам
    Нырнуть в ФЯ - отказаться от дотошливого вникания во всё,
    В конце концов это именно функциональщики здесь пытаются уговорить императивщиков попробовать и вникнуть а не наоборот. Кто отказывается как раз таки четко прослеживается.
    Ты мол мне гарантию дай сто-процентную, а потом может быть я еще попробую. :))


    № 1450   08-11-2006 02:39 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1446« (Как слышно? Приём!)
    ___________________________

    Скажите, Вы когда-нибудь пользовались TAction.OnUpdate? Судя по Вашему сообщению - никогда. А ведь в Delphi давно уже есть все те проблемы, которые Вы описали. И никто еще не поднимал по этому поводу вселенского хая.


    № 1449   08-11-2006 02:34 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1446« (Как слышно? Приём!)
    ___________________________

    Я налетал на кривые компоненты, на криворуко организованную
    работу COM порта в Win, Аккерман и ещё множество других вещей.
    Разведку надо проводить самому - противное смерти подобно.


    Увы, тут фундаментальная огромность зарыта:
    надо бы законом каким обозвать, что-ли, "звонко" сформулировать...


    № 1448   08-11-2006 02:32 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1446« (Как слышно? Приём!)
    ___________________________
    О, now we are talkin :)
    Приятно видеть мысль работающюю.
    Если температура дребезжит около 150 градусов, а такое реально,
    Ваш почтовик попросту заткнётся, захлебнувшись отправкой.


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

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


    То же самое, Если не хотите дергать отображение слишком часто, ставите между обьектами синапс, и отображаете скажем изменение на какой то процент.

    Но это крайние случаи. В большинстве примемений обьекты меняют свои значение далеко не каждую миллисекунду.
    Наиболее распространенный случай - работа с БД, где пользователь скролит по выборке очень очень медленно.


    № 1447   08-11-2006 02:20 Ответить на это сообщение Ответить на это сообщение с цитированием
    Информация к размышлению:

    http://common-lisp.net/project/cells/

    Cells is a mature, stable extension to CLOS that allows you to create classes, the instances of which have slots whose values are determined by a formula.

    Насколько позволяет мне судить мой скромный опыт в Лиспе, его объектно-ориентированная подсистема CLOS императивна по своей сути.

    Выводы об уместности cells как примера выгод функционального подхода предлагаю читателям сделать самостоятельно.


    № 1446   08-11-2006 02:19 Ответить на это сообщение Ответить на это сообщение с цитированием
    1) Инструмент и даётся, чтобы реализовать детали. А чохом ...
    >>> Logger.SendWarningEmail := ?f: Engine.Temperature > 150;
    Если температура дребезжит около 150 градусов, а такое реально,
    Ваш почтовик попросту заткнётся, захлебнувшись отправкой.

    >>> StatusBar.Position := ?f: FTPDownload.BytesDownloaded / FTPDownload.FileSize;
    Отображение статусбара - медленная операция и в случае отображения
    быстрых шагов может на несколько порядков затормозить работу.
    Так что с медленными операциями тщательне'е.
    И автоGUI из-под ФЯ с автообновлением - вешалка полная.

    >>> MenuItemFileSave.Enabled := ?f: CurrentFile.isDirty;
    Представляю, как будет перетрахиваться файловая система,
    когда Вы таким образом наладите средней сложности меню!

    2) А теперь представим, что Вы задействовали связи в цикле! :)

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

    Ну и критика императивного подхода ниже всякой критики,
    типа 99.99% императивщиков отлаживают программы
    исключительно в сборе, о модульном подходе и не слыхивали
    или ОТО в детском саду :)

    Ремонтопригодность сложной техники вызывает сомнение.
    Что если заколдобит? В Дельфи, асме и т.п. любой затык разрешим.
    А отладка в ФЯ?

    >>> в любой задаче с динамическим выделением памяти необходимы
    >>> те или иные механизмы ее возврата
    Если памяти терабайт, то и не обязательно. Запальное земледелие -
    насорили, переехали на чистое место. И в духе экстенсивного подхода ФЯ.


    № 1445   08-11-2006 02:14 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1444« (al_mt)
    ___________________________

    Что подразумевается под термином "связать"? Передача данных между полями объектов?


    Странно, я вроде приводил очень очень очень простенькие примеры в одну строчку. Неужели не понятно ?
    Есть 2 совершенно разных обьекта Object1 и Object2.
    У Object1 есть поле (свойство, property) скажем Property1.
    У Object2 есть поле (свойство, property) скажем Property2.

    Вы хотите чтобы каждый раз когда свойство Property2 у Object2 менялось, автоматически бы менялось и свойство Property1 у Object1.

    Для того чтобы задекларировать эту вот связь вы пишите что нибудь в таком духе:

    Object1.Property1 := ?f: Object2.Property2 + 10;

    Куда уж легче то ? Конечно это только в том случае если бы Дельфи предоставлял вам полноценные функциональные возможности, чтобы такую вот красотищу реализовать.
    На лиспе это сделано, сделано легко, одним человеком. Можете скачать и посмотреть, кода там не ахти как много: http://common-lisp.net/project/cells/

    Да вы так особенно губу не раскатывайте. Вам это не светит :)) Это только для лисперов.
    Ну или для любого другого ФЯ на который кто нибудь портирует cells.
    На паскаль, java, сишарп, такое портировать невозможно.


    № 1444   08-11-2006 02:02 Ответить на это сообщение Ответить на это сообщение с цитированием
    А можно поподробнее про чудеса cells???
    Это что? Я могу взять два заранее неизвестных объекта (или класса?) и "связать" их?
    Что подразумевается под термином "связать"? Передача данных между полями объектов?
    Либо Вы JOS чего-то не договариваете, либо внутре cells ИскИн спрятался...


    № 1443   08-11-2006 00:35 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1440« (Сварог)
    ___________________________
    Честнслово, сообщения Jack Of Shadows из мира функционального программирования я читаю прямо как книги Мулдашева о Шамбале. В каждом посте – сплошные чудеса!
    Абясняю.
    Наука отличается от веры повторяемостью результатов в своих экспериментах. Религиозный опыт и опыт, основанный на ВЕРЕ такой регулярности не даёт. Всё что подтверждает Мулдашев - верность предположения о разности психотипов человеческих особей и их разной степени (само)внушаемости...
    Вот и сейчас оказалось, что существует Святой Грааль... тьфу, библиотека cells, которая способно подключить любую БД безо всяких драйверов!
    При чём ТУТ драйвера???


    <<<... | 1462—1453 | 1452—1443 | 1442—1433 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 406


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

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

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

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

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

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