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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 842—833 | 832—823 | 822—813 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 468


    № 832   18-08-2006 13:07 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 831« (hugi)
    ___________________________
    Во-первых, работать на ОО языке и знать ООП -- совершенно разные вещи (цитаты я уже приводил).
    Во-вторых, меня терзают смутные сомнения, что Вы обучались программированию с использованием структурного подхода, а это накладывает отпечаток.


    Спасибо за комплимент :))

    Неправда. Вот Артём говорил, что использует Prolog, язык из декларативного семейства.
    Пролог это логическое а не функциональное программирование.
    Да, и ЛП и ФП это декларативное программирование. Но далеко не одно и тоже.

    Я тоже немного знаком с ФП хотя бы чисто теоретически.
    У вас очень глубокие теоретические позанния в ФП. Вы нам всем только что сообщили что ФП это структурное программирование :))

    hugi, структурное программирование означает что программа имеет жесткую структуру, то есть жесткую последовательной операций.
    ФП как и любое ДЕКЛАРАТИВНОЕ (то есть описательное) программирование, не имеет такой жесткой структуры.

    Для того чтобы знать AG хотя бы на теоретическом уровне недостаточно спорить о нем на форумах.
    Книжки в руки (ссылки здесь давались), запускаете среду (сслыки тоже давались) - и год практики.
    Через год поговорим.


    № 831   18-08-2006 13:00 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 828« (Jack Of Shadows)
    ___________________________
    hugi, программисты приходят к отрицанию ООП через практику, а не через незнание.
    Вы не найдете ни одного ФЯ программиста, который не имел бы продолжительный опыт работы на ОО языках.
    Так что апеллировать к незнанию ООП сторонниками ФП - это вы загнули.

    Во-первых, работать на ОО языке и знать ООП -- совершенно разные вещи (цитаты я уже приводил).
    Во-вторых, меня терзают смутные сомнения, что Вы обучались программированию с использованием структурного подхода, а это накладывает отпечаток. Многие авторы книг по ООП признавали, что научить программиста "структурника" со стажем писать программы в соответствии с методикой ООП -- очень непростая задача (слова Кея на этот счёт я тоже приводил).

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


    № 830   18-08-2006 12:57 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 829« (hugi)
    ___________________________
    Какой подход сменило ООП на этом поприще? Правильно, структурный. А что представляет собой ФП? Правильно, наиболее чистое воплощение этого самого структурного подхода.

    Вы неправы. ФП не имеет никакого отношения к структурному программированию.
    Структурное программирование это чистый императивный концепт.
    ООП появилось как разельтат развития императивного напрваления - структурное - потом ОО.



    № 829   18-08-2006 12:41 Ответить на это сообщение Ответить на это сообщение с цитированием
    Пока мысль ещё свежа, выскажусь!

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


    № 828   18-08-2006 12:33 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 819« (hugi)
    ___________________________
    А, быть может, познакомься Вы пораньше с ООП, да почитав повнимательней вышеназванных авторов, тоже имели бы другое мнение? А? Как Вы думаете?
    :))) hugi, в год когда вы родились я поступил в университет.
    К функциональному программированию шел через многие годы практики ООП, через фанатическую веру в идеи Страуструпа, Вирта, через обожание паскаля и дельфи.

    Каких автров вы мне советуете прочитать ? Буча ? Свою первую книгу он написал в 93 году. К тому времени все что только можно было сказать об ООП, было уже сказано многими авторами включая Страуструпа и Вирта.
    К тому времени я уже три года работал на ОО языках - си++ а потом на борландовских турбо-паскалях разных версий.
    Тогда у них была многооконная GUI-шная библиотека Turbo-Vision. под ДОС !!! :))
    Было интересное время.

    Буча я читал, потому что он является ключевой фигурой в развитии UML.

    hugi, программисты приходят к отрицанию ООП через практику, а не через незнание.
    Вы не найдете ни одного ФЯ программиста, который не имел бы продолжительный опыт работы на ОО языках.
    Так что апеллировать к незнанию ООП сторонниками ФП - это вы загнули.
    А вот незнание ФП сторонниками ООП - неоспоримый факт.


    № 827   18-08-2006 12:31 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 823« (Jack Of Shadows)
    ___________________________
    При этом сами же признаются что осознанно ставят в своих языках барьер росту абстракции, то есть ограничивают возможности программиста.
    ЦИ-ТА-ТУ!!!! ЦИ-ТА-ТУ!!!! ЦИ-ТА-ТУ!!!!

    А вообще, всё Ваше сообщение -- очередная пустышка, одна из тех листовок с лозунгами, что Вы тут разбрасываете. "Даёшь ФП!", "Нет ООП!", "ООП для посредственносей!", "ФП для гениев!", -- противно читать!
     hugi


    № 826   18-08-2006 12:21 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 824« (hugi)
    ___________________________
    Но, повторюсь в очередной раз: меньше всего мне хотелось бы продолжать эту дискуссию. Да, наверное, такие "доказательства" нам с вами придется игнорировать. Особенно, если они сыплются, как из рога изобилия. :)


    № 825   18-08-2006 12:16 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 815« (Trurl)
    ___________________________
    Это же может вызвать мировозренческий шок у неокрепшего ума.
    Кей утвреждает прямо противоположное. (Я о его высказывании про то, что детей проще обучить ООП, чем программистов со стажем.)
     hugi


    № 824   18-08-2006 12:04 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 805« (SJ)
    ___________________________
    А если без юмора, то доказать мою простую "теорему" можно очень просто, почти как в геометрии.
    Итак, мы должны доказать, что:
    Понятие "тип данных" не равносильно понятию "тип объекта".
    Для этого достаточно доказать, что понятие "данные" не равносильно понятию "объект" - другими словами, что могут быть данные, которые не являются объектами (в смысле ООП, конечно!) и могут быть объекты, которые не состоят только из данных.
    Докажем это.
    1) Данные, которые состоят только из значений и не поддерживают механизмы наследования, полиморфизма, инкапсуляции и другие характерные признаки ООП - это объекты в смысле ООП или нет. Конечно, нет.
    2) Могут ли существовать объекты, которые кроме данных содержат еще и алгоритмы (методы)? Могут. Их можно построить в любом ОО-языке.
    Таким образом, мы показали, что не все данные являются объектами и не все компоненты объекта являются данными.
    Следовательно, понятие "данные" не тождественно понятию "объект".
    Из этого следует, что понятие "тип данных" не тождественно понятию "тип объекта". Что и требовалось доказать.

    Вы не поверите, но Ваше доказательство опять неверно! Данные и в ООП состоят только из значений, но над любыми данными определены некоторые операции, причём не только в ООП. Таким образом, если рассматривать данные через призму операций, которые над ними определены, то в этом плане тип данных и тип объекта совпадают. Кроме того в Объектных языках программирования понятие объекта существует, но нет наследования и полиморфизма. А насчёт инкапсуляции, так это вообще отдельный разговор: в каждом языке она реализуется по разному.

    Придётся рассуждать за Вас самому :). Вы, как я понимаю всё твердите о тех привычных типах данных, которые были в структурных языках типа Паскаля и C. Экземпляры этих типов действительно отличаются от объектов. А именно, в ООП мы посылаем объектам сообщения, которые те интерпретируют, в случае же с экземплярами "привычных" типов мы совершаем операции над ними, и речь не идёт ни о какой интерпретации. Вот в этом, пожалуй, отличие. Если Вы это имели в виду, то я согласен.

    Но, повторюсь в очередной раз: меньше всего мне хотелось бы продолжать эту дискуссию.
     hugi


    № 823   18-08-2006 12:02 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 812« (info21)
    ___________________________
    Невозмножно отрицать, что ФЯ сразу закладывает дозу сложности, даже для тривиальных задач
    Кто ж отрицает ? Сложность она закладывается любым синтетическим языком будь то простенький лисп, сложнейший хаскель или оберон с его 34 зарезервированными словами.
    Проходить школу и натренировывать мозги в нужном направлении придется все равно. Иначе вы не открыли бы рессурс info21.
    Значит сложность есть везде.
    А вот потолок возможностей разный.
    Не я придумал термины LFSM (Language for smart people) и LFM (language for masses) Этими терминами оперируют евангелисты в Sun и Microsoft. И свои языки (java и сишарп) они включают в категорию языков для масс, а не языков для умных. По их же собственному признанию лисп и другие функциональные языки принадлежат категории LFSM. При этом сами же признаются что осознанно ставят в своих языках барьер росту абстракции, то есть ограничивают возможности программиста. Заметьте речь не о низкоуровневых возможностях типа указателей и ручной работы с памятью. Речь о верхнем потолке абстракции.

    Цитаты Гослинга о целевой аудитории java я уже приводил.
    Он делал язык для посредственностей. Парадокс - один из сложнейших императивных ОО языков, для посредственостей ?! Да любой кто умудрился не только понять java но и успешно решать на нем задачи - должен быть семи пядей во лбу. Любой кто продрался сквозь доведенную до идиотизма сложность java, поймет и функциональное программирование.

    Так значит нет разделения на умных и тупых ?
    Я считаю что нет, однако другое водораздел все таки существует.
    Программисты делятся на, скажем так - прагматиков и программистов по призванию.
    Первые пришли в программирование делать легкие деньги. Они не тупые, они очень умные. Они быстро и с блеском пройдут ваш класс по ООП, и быстренько начнут делать деньги. От понедельника до пятницы, от 9 утра до 5 вечера. Потолок, выставленный для них создателями java и сишарп их не беспокоит. Задача требует 2-х месяцев вместо двух недель ? Тем лучше. Больше денег заработаешь.
    Учиться еще пару лет, чтобы стать лучшим программистом ? Зачем ? Вокруг все такие же как он, упех достигнут, конкуренции особой нет. А то что работа давно превратилась в скучную рутину, так кого колышет ?
    От 9 до 5 отпахал, а дальше начинается настоящяя жизнь.
    То что решаемые задачи уже давно не похожи на те красивые примеры, которые щелкались как орехи в школе ООП, кого волнует ? То что баги множатся в геометрической прогрессии, и после ввода наскоро слепленного проекта (сроки поджимают, да и не ложится задача на прокрустово ложе ООП), последующие несколько лет превращаются в муторное "сопровождение", кому какая разница ?
    Кому угодно, только не праграмтику. Он свою нишу занял, каждую пару лет по сертификатику от Оракл, Sun и MS исправно на 5 дневных курсах получил. Все, карьера сделана.

    Но есть программисты которым интересно само программирование, а не только деньги и карьера.
    Как вы думаете, что произойдет с ними, когда выйдя из вашей школы ООП, и начав решать на производсте большие задачи, они стукнутся лбом в этот стеклянный потолк абстракции, и набьют себе шишку ?
    Смирятся с инструментом, который связывает их по рукам и ногам ? Испугаются сложности другого более мощного инструмента ? Ведь они знают свои возможности, они не боятся их проверить. Они жаждут достичь большего.
    Не в карьере, не в деньгах, в том что они любят больше всего на свете, в их призвании, в программировании.

    Эта ветка создана не для тех кто ударился об потолок абстракции в ООП.
    Его все кто решает не учебные примерчики, рано или поздно достигают.
    Эта ветка создана для тех, кого не устраивает этот чортов потолок, кто не хочет с ним мириться.

    Те кто пока учится, или решает небольшие задачи, никакой потребности в переходе на ФЯ испытывать не будут.
    До своего потолка им еще расти и расти.



    <<<... | 842—833 | 832—823 | 822—813 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 468


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

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

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

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

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

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