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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 862—853 | 852—843 | 842—833 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 466


    № 852   19-08-2006 03:29 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 849« (Jack Of Shadows)
    ___________________________

    ФП придет к вам. Придет под давлением требований рынка.
    Большие корпорации одна за другой осознают что время пришло.


    Это не давление рынка. Это давление психиатрии.
    Давление рынка -- это конкуренция.
    На рынке ИТ нет настоящего давления -- и нет настоящей конкуренции. Если б была, то прибыль и зарплаты мерялись бы совсем другими процентами.

    Та конкуренция, что есть -- в области психиатрии.

    А большие корпорации смотрят друг на друга и боятся дать малейший повод своей клиентелле перебежать к конкуренту -- и ищут, чем еще "отличиться" от конкурентов. Кто-то додумался переманить "функционалистов". Теперь, конечно, все повстраивают.

    А "партизаны" от программирования будут уши развешивать...


    № 851   19-08-2006 03:26 Ответить на это сообщение Ответить на это сообщение с цитированием
    Постойте, постойте, а чего это я извиняюсь?! Я нигде не употреблял термина "структурное программирование" я сказал:
    А что представляет собой ФП? Правильно, наиболее чистое воплощение этого самого структурного подхода.
    Это Jack опять домысливает, вводит людей в заблуждение. Хотя, я тоже не уточнил понятие, "структурный подход", так что интерпретировать его как "структурное программирование" было, может и не очень, но всё же легко.
     hugi


    № 850   19-08-2006 03:14 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 839« (Jack Of Shadows)
    ___________________________
    Хотите я вам на пальцах покажу что такое структурное программирование ?
    Впервые термин структурное программирование официально использовал Дейкстра.
    И под структурным программированием он понимал конкретный набор операторов.
    А именно ЦИКЛ и IF
    Таки образом ЛЮБОЙ язык программирования в котором есть циклы и операторы ветвления отностится к категории структурных, что конечно теряет всяческий смысл.

    Я, конечно извиняюсь за не вполне обоснованное употребление термина "структурное программирование". Остаётся только оправдаться тем, что я имел в виду именно алгоритмическую декомпозицию (см. цитату из Буча). Да, Вы правы, структурное программирование -- концепция, пришедшая из мира ИЯ. Но, тем не менее, некоторые её положения адекватны по отношению и к ФЯ. Это -- организация программы в виде совокупности подпрограмм (в ФЯ -- функций), соответствие управляющих конструкций списку допустимых, определённых Дейкстрой (имеется в виду, что нет лишних, запрещённых конструкций типа GOTO), построение подрограмм в виде вложенных блоков, имеющих один вход и один (в более поздних версиях структурного подхода -- несколько) выход (в ФЯ это вырождается либо в элементарный вызов функции, либо в ветвление и вызов функции в зависимости от условия).
    Кстати, Ваше определение не вполне точное. Посмотрите-ка лучше здесь http://en.wikipedia.org/wiki/Structured_programming или здесь http://ru.wikipedia.org/wiki/Структурное_программирование .
    Ещё раз подчеркну, что я имел в виду, хоть это и было совершенно не явно (за что ещё рпз прошу меня извинить), именно противопоставление алгоритмической декомпозиции и объектно-ориентированной. В ФЯ во главу угла поставлена алгоритмическая декомпозиция, а в ООП -- объектно ориентированная.
    Можете снова пытаться проявить остроумие, но напоследок, приведу ещё одну цитату из Буча:
    В 60-70-е годы было разработано много методов, помогающих справиться с растущей сложностью программ. Наибольшее распространение получило структурное проектирование по методу сверху вниз. Метод был непосредственно основан на топологии традиционных языков высокого уровня типа FORTRAN или COBOL. В этих языках основной базовой единицей является подпрограмма, и программа в целом принимает форму дерева, в котором одни подпрограммы в процессе работы вызывают другие подпрограммы. Структурное проектирование использует именно такой подход: алгоритмическая декомпозиция применяется для разбиения большой задачи на более мелкие.
    Хоть здесь и употребляются императивные языки, сказанное в полной мере применимо и к функциональным.
     hugi


    № 849   19-08-2006 02:58 Ответить на это сообщение Ответить на это сообщение с цитированием
    Функциональное программирование продолжает пробивать себе дорогу в mainstream языки.
    Сишарп уже на полных парах внедряет closures и linq в треьей версии.
    Но сегодня новости пришли от самого обьектно ориетированного языка на свете - от java.
    Sun раскрыла планы по поводу JDK 7
    В java будут включены closures, анонимные функции, и вы не поверите - ЛОКАЛЬНЫЕ ФУНКЦИИ :))
    В самом популярном ОО языке на планете, через более чем 10 лет существования наконец то появится возможность создавать функции :)) Кто бы мог подумать!

    Так что господа, если вы не идете к ФП, то ФП придет к вам. Придет под давлением требований рынка.
    Большие корпорации одна за другой осознают что время пришло.

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

    Ну а апологетам ОО, придется теперь придумывать каким боком прикручивать к ОО эти чортовы closures :))
    Ведь раз есть в языке, значит надо описывать в книгах. И обьяснять как пользоваться. То то будет конфуз :))


    № 848   19-08-2006 02:05 Ответить на это сообщение Ответить на это сообщение с цитированием
    А почему флюгер это оскорбление и плохо?
    Это прибор, который показывает направление ветра.
    Если он независимо от ветра показывает в одну сторону -
    его надо починить или "понаделать других" :)
    А если ветер в программировании поменялся?

    Даже асы пилотажа при посадке смотрят на флюгер.
    Это ж атрибут аэродрома.

    >>> Представьте себе, в Обероне нет main ни в каком виде.

    Так Оберон не совсем ОО язык. Скорее модульный.


    № 847   19-08-2006 00:47 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 844« (Jack Of Shadows)
    ___________________________
    Это сколько же вам ждать придется чтобы не попасть под ваше собственное определение флюгера ? Аналогия с флюгером связана скорее не с промежутком времени, а с резкой сменой приоритетов, с прыжками от одного фанатизма к другому.  :)

    Во вторых вы явно пересекаете линию корректной дискуссии. У вас закончились агрументы относящиеся к ФП и вы начали обзывать оппонентов ? Какое отношение презрительная характерисктика ваших оппонентов "флюгер" имеет к ФП и ООП ? Не перекладывайте с больной головы на здоровую, Вагиф. Некорректность и демагогичность - это как раз признаки ВАШЕГО ведения дискуссии. Мне сейчас некогда перечислять все примеры вашего "оригинального" стиля, но если вы будете настаивать, то я это сделаю.

    То один из вас пройдется по моим умственным способностям, то другой обзовет флюгером. Неправда. Это вы пытаетесь изобразить тех, кто использует ООП посрдественностями и недоумками.

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


    № 846   18-08-2006 17:26 Ответить на это сообщение Ответить на это сообщение с цитированием
    Мы уже обсуждали несколько различных техника автоматизации распараллеливания программ.
    Это и специально созданный для этих целей функциональный язык Erlang,
    и Parallell Haskell с его полностью автоматическим par и seq.

    Хочу упомянуть еще одно очень интересное направление - транзакционная память. Software Transactional Memory - STM

    Это механизм позволяет работать с памятью как с базой данных.
    То есть вы инициируете транзакцию, записываете данные в память (переменную) и далее либо commit transaction либо если произошла ошибка и вылетело исключение - тогда rollback trancaction.
    Что это нам дает ?
    - Освобождает от deadlocks
    - Позволяет провести серию изменений данных в одной неделимой транзакции.
    - Позволяет компоновать большие транзакции из серий маленьких
    - Позволяет записывать распараллеливаемый код в простой декларативной форме, в отличии от очень трудной ручной манипуляции потоков.

    Самое интересное заключается в том что это не утопия, не фантастический прожект, а уже работающий механизм.
    STM были реализованы в хаскеле в 2005 году. И уже вошли в стандартный пакет.
    Более того уже используются в реальном приложении.
    Новый Perl 6, который пишется на хаскеле, вовсю использует STM.

    К сожалению реализация STM для ИЯ чревата трудно решаемыми проблемами.
    В основном из за побочных эффектов. Ведь при повторе транзакции, побочные эффекты будут повторены тоже.
    А это очень нежелательно. Кроме того при откате транзакции побочные эффекты откатить невозможно.

    Прочитать про STM подробнее можно вот здесь: http://www.haskell.org/~simonmar/papers/stm.pdf


    № 845   18-08-2006 16:44 Ответить на это сообщение Ответить на это сообщение с цитированием
    Уважаемые!

    Вспомните судьбу нескольких веток об Обероне!!!
    Не повторяйте тамошних ошибок!!! Это не есть гуд!!!
    Плиз!!!


    № 844   18-08-2006 14:43 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 843« (Артем)
    ___________________________
    Знаете, есть две крайности. Одна - ждать всю жизнь. Другая - быть как флюгер. Ни первое, ни второе меня не прельщает :)
    Артем, вы противоречите сами себе.
    Ждать всю жизнь вы не собираетесь. Флюгером быть тоже.
    Значит вы собираетесь подождать н-е количество лет чтобы не прослыть флюгером.
    Я практиковал ООП почти 15 лет наверное. И тем не менее вы меня обозвали флюгером.
    Это сколько же вам ждать придется чтобы не попасть под ваше собственное определение флюгера ?

    Это во первых. Во вторых вы явно пересекаете линию корректной дискуссии. У вас закончились агрументы относящиеся к ФП и вы начали обзывать оппонентов ? Какое отношение презрительная характерисктика ваших оппонентов "флюгер" имеет к ФП и ООП ?

    Придерживайтесь темы. Мн постоянно приходится одергивать вас и hugi.
    То один из вас пройдется по моим умственным способностям, то другой обзовет флюгером.

    В таких условиях тяжело держать себя в руках и не сорваться.


    № 843   18-08-2006 14:24 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 841« (Jack Of Shadows)
    ___________________________
    Да че там, я не против если вы всю жизнь прождете - это ваша жизнь. Знаете, есть две крайности. Одна - ждать всю жизнь. Другая - быть как флюгер. Ни первое, ни второе меня не прельщает :)


    <<<... | 862—853 | 852—843 | 842—833 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 466


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

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

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

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

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

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