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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 1292—1283 | 1282—1273 | 1272—1263 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 423


    № 1282   20-09-2006 03:55 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1281« (Артем)
    ___________________________

    Кстати, в новых версиях Пролога (Mercury) отсечение использовать не обязательно.
    Не обязательно использовать и в классическом Прологе. Можно даже усилить утверждение: любое средство любого языка программирования использовать не обязательно.

    Это, уважаемый, не последовательность, а задание древообразной зависимости.
    В Пролог-программе важен порядок расположения клозов (равно как и порядок предикатов в клозе) - при совмещении (unification) просмотр ведется сверху вних слева направо. Поменяйте местами однородные клозы и при этом в общем случае изменится семантика.

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

    Императивность в программировании характеризуется последовательностью команд/инструкций (порядком выполнения) и изменением состояния программы. Состояние программы (программной системы, совокупности программных элементов/компонентов) - это совсем не обязательно (и не только) совокупность состояний переменных. Фактически любая программа на любом ЯП при своем исполнении изменяет свое состояние. Следовательно, последовательность команд/инструкций является наиболее значимой отличительной чертой императивного программирования.


    № 1281   20-09-2006 03:22 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1280« (bb)
    ___________________________
    Декларативность Пролога имеет известные императивные основы - для Пролог-программы важен порядок расположения клозов (просмотр клозов идет сверху вниз) плюс есть официальный механизм отсечения для бэктрекинга (cut, !). Чистой воды императивность.
    Вы не перестаете удивлять своими познаниями в области императивности. :) Однако в плане порядка расположения клозов вы несколько опоздали. Тут уже были попытки обозвать тот же OCaml императивным языком ввиду последовательного просмотра let-выражений. Это, уважаемый, не последовательность, а задание древообразной зависимости. А отсечение - это техника оптимизации (как в ФЯ мемоизация, например). Кстати, в новых версиях Пролога (Mercury) отсечение использовать не обязательно.


    № 1280   20-09-2006 03:11 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1220« (Артем)
    ___________________________

    >>С чистым ФЯ все просто. Там сам язык не приемлет просто другого подхода.
    >Когда мы в институте учили Пролог, глядя на код моих сокурсников мне становилось дурно. Хотя Пролог - это высокоуровневый декларативный язык. Их программы тоже работали, - да они были медленнее, гораздо длиннее, но они тоже работали.


    Чему удивляться? Декларативность Пролога имеет известные императивные основы - для Пролог-программы важен порядок расположения клозов (просмотр клозов идет сверху вниз) плюс есть официальный механизм отсечения для бэктрекинга (cut, !). Чистой воды императивность.


    № 1279   20-09-2006 02:59 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1277« (bb)
    ___________________________
    Многие языки, попав в прокрустово ложе .NET и начав играть по навязанным правилам, потеряли свою индивидуальность И потеря этой оригинальности вызвана тем, что вы должны знать C# (с чем я согласен)? "Оригинальная" аргументация. Где это вы так научились? :)


    № 1278   20-09-2006 02:56 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1275« (bb)
    ___________________________
    Как говорится, некоторые видят лишь то, что им хочется видеть. Такие фразы, как Меж тем мир ФП – это необычайно интересный мир с множеством находок, практически неизвестных основой массе программистов.
    и
    Ведь и слепая вера, и слепое отрицание могут причинить только вред
    вы не захотели увидеть. Впрочем, это ваши проблемы :)


    № 1277   20-09-2006 02:53 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1273« (Trurl)
    ___________________________

    >>>С появлением .Net это стало делать удобно и приятно.
    Как сказал бы старина Форд, в .Net вы можете легко  использовать особенности любого языка, если этот язык - C#.


    Трудно с этим не согласиться.

    Многие языки, попав в прокрустово ложе .NET и начав играть по навязанным правилам, потеряли свою индивидуальность, от чего выиграл один конкретный язык одной конкретной компании. Имя его - C#.

    Равноправие языков в .NET - это фикция. На самом деле любому .NET-программисту приходится смотреть на мир сквозь призму C#. Хочет он того или нет.


    № 1276   20-09-2006 02:50 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1273« (Trurl)
    ___________________________
    в .Net вы можете легко  использовать особенности любого языка, если этот язык - C# В .Net мы можем использовать ЛЮБЫЕ особенности любого языка. Если какой-то язык в .Net не реализован, или реализован не полностью, то это объясняется или тем, что не успели сделать, или что нет надобности, или что кто-то не любит Майкрософт.
    Другое дело, что части, ответственные за взаимодействие разных языков должны быть CLS-совместимыми. Так, например, даже в  написанной на C# библиотеке классов, если есть вероятность того, что ее может использовать программа на языке, не поддерживающем перегрузку операторов, лучше не использовать таковую. Или наряду с перегрузкой создавать соответствующие обычные методы.


    № 1275   20-09-2006 02:42 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1263« (Артем)
    ___________________________

    Я тут на rsdn читал одну статью про ФП, там есть классное замечание от редакции. Привожу его полностью.

    Все просто. Автор заметки использует известный прием - показательно выпятить не совсем корректную аргументацию в защиту ФП, использующую достижения Erlang. Затем, всенародно уличив в "подмене предмета" некоего "анонимного" апологета ФЯ (из серии "есть мнение"), снисходительно похлопать по плечу сторонников ФП. Потом упомянуть, что автоматическое распараллеливание в ФП все еще на уровне исследований, после чего плавно перейти к основной своей мысли - в C# и C++ это (читай ФП) можно пользовать через библиотеки, так зачем копья ломать?

    Увы, такой подход приводит к тому, что функциональное программирование из парадигмы программирования превращается в настоящую религию, отпугивающую многих потенциальных пользователей ФЯ фанатизмом и нетерпимостью.

    Пожалуй, то же самое можно смело сказать и в отношении ООП, вообще, и C#, в частности. Но не уверен, что RSDN поднимется до такого уровня критики.


    № 1274   20-09-2006 02:11 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1249« (Jack Of Shadows)
    ___________________________

    Но вот гарантия того что некая часть программы (Не вся программа а лишь НЕКОТОРАЯ ЕЕ ЧАСТЬ), некие ее модули, некие функции - чистые, без побочных эффектов. Такая гарантия и делает язык чистым ФЯ.

    "Гарантия" говорите?

    Видите ли какое дело, в том же Delphi можно элементарно использовать функции без побочных эффектов и с таким же успехом называть это чистой (в понимании purely functional) частью языка.

    Попробую подвести небольшие итоги по этому вопросу:
    1. Есть чистые ФЯ и нечистые ФЯ.
    2. При этом в чистом ФЯ (Haskell) есть чистая ФЯ-часть и нечистая ФЯ-часть.
    3. Плюс в чистой ФЯ-части (по утверждению Jan-Willem Maessen из MIT) есть "заднее крыльцо", где и прячут вещи с побочным эффектом.

    Так за что мы боролись, если в чистом ФЯ преспокойненько втихую можно "химичить"? А неявная "химия" по своим последствиям будет похлеще явной.


    № 1273   20-09-2006 00:14 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 1271« (Артем)
    ___________________________
    >>>С появлением .Net это стало делать удобно и приятно.
    Как сказал бы старина Форд, в .Net вы можете легко  использовать особенности любого языка, если этот язык - C#.


    <<<... | 1292—1283 | 1282—1273 | 1272—1263 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 423


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

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

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

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

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

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