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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 2342—2333 | 2332—2323 | 2322—2313 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 318


    № 2332   30-03-2007 14:57 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2300« (Trurl)
    ___________________________

    >>> Мне очень понравилась статья Пола Грэма (Paul Graham) "Краткость - сила" , где он обосновывает своё мнение о том, что чем выше уровень языка и чем он удобнее, тем короче программы, на нём записанные.

    Жуткая эзотерика опущена...
    > ;-)

    Выдержки из той статьи Пола Грэма :

    Читабельность

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

    Здесь мы должны быть осторожны с понятиями читабельности отдельной строки кода и читабельности программы в целом. Важно только последнее. Соглашусь, что одна строка на Бейсике скорее всего более читабельна, чем одна строка на Лиспе, но программа написанная на Бейсике будет иметь больше строк, чем та же программа написанная на Лиспе. На прочтение Бейсик-программы будет потрачено больше усилий.

    общие усилия = усилия на прочтение одной строки * кол-во строк

    Я не настолько уверен, что читабельность пропорциональна краткости, но определенно краткость есть коэффициент в читабельности (см. формулу выше). Так что вряд ли имеет смысл говорить, что целью языка является читабельность, но не краткость.

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

    Это соотношение существовало еще до появления языков программирования. Если вы читали новеллы и газетные статьи, то ваш первый опыт чтения статьи по математике может быть пугающим: чтение одной страницы занимает полчаса. И все же я уверен, что проблема не в нотации, как может показаться на первый взгляд. Статью по математике трудно читать, потому что сложны сами идеи. Если вы выразите те же идеи в прозе (как это делали математики до того, как додумались до краткой нотации), то читать их было бы не легче, потому что эта одна страница превратилась бы в целую книгу.
    .......

    В какой степени?

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

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

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

    Код, продемонстрированный Вами, относится именно к паталогическим случаям.


    № 2331   30-03-2007 14:54 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2301« (Trurl)
    ___________________________

    >> sum $ map (\c -> read [c]) $ show $ product [1..100]

    А сколько времени она считает сумму цифр 100! и сколько будет читать то же для 1000! ?

    Celeron 1800, 512 MB RAM

    Сумма цифр числа  100! -    648, Total time: 0.02 s
    Сумма цифр числа  1000! -  10539, Total time: 0.06 s
    Сумма цифр числа 10000! - 149346, Total time: 0.88 s


    № 2330   30-03-2007 14:49 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2329« (AVC)
    ___________________________
    О! Спасибо - оно самое :))
    Советую к прочтению. На многие вопросы, в том числе и по организации ICFP, найдете ответы.


    № 2329   30-03-2007 14:41 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2327« (Jack Of Shadows)
    ___________________________

    Не так давно читал в ЖЖ коментарии русского программера, учавстовавшего в ICFP
    Очень интересно. Вся кухня описана. Задача, как они ее решали итд.
    К сожалению ссылку не могу сейчас найти.


    Может быть, это?
    http://users.livejournal.com/_adept_/24049.html#cutid1
     AVC


    № 2328   30-03-2007 14:41 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2321« (Jack Of Shadows)
    ___________________________

    Ответ на »сообщение 2319« (Юра)
    Отсюда и тепличные условия "забега на инвалидных колясках" в чемпионатах ACM. Где спонсоры ревностно следят, чтобы в чемпионат не пробрались те кто слишком резво бегает.

    Джек, могу Вам сказать по олимпиадному опыту, что "резво бегать" там мало зависит от того, на чем кодировать... В целом основная часть решения вообще остается за пределами кода, на уровне поиска модели/идеи задачи. Однако, чтобы олимпиада по программированию не превратилась в олимпиаду по дискретной математике/логике, там ставятся жесткие требования на эффективность программной реализации.
    Именно поэтому, несмотря на то, что как бы от инструмента решение мало зависит, инструмент аля Паскаль очень хорошо подходит. С одной стороны, ставит "высокоуровневое" и дисциплинированное программистское мышление - это по сравнению с Цями, Джавами и прочим "интеллектуальным развратом", с другой стороны - оставляет простор для оптимизации реализации для жестких временных условий, по сравнению с ФП как "интеллектуальным чистоплюйством" :-)


    № 2327   30-03-2007 14:29 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2325« (AVC)
    ___________________________
    Не так давно читал в ЖЖ коментарии русского программера, учавстовавшего в ICFP
    Очень интересно. Вся кухня описана. Задача, как они ее решали итд.
    К сожалению ссылку не могу сейчас найти.


    № 2326   30-03-2007 14:25 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2323« (Юра)
    ___________________________
    Как я уже говорил, чемпионат беден как церковная мышь. Денег нет, и проведение соревнований на физическом сайте невозможно.
    Остаетс только один вариант - online.

    В таких условиях что может оцениваться судьями ?
    - Неиспользованное время, кто раньше сдал (+)
    - Полное решение задачи.

    В отличии от ACM задачи в ICFP являются сложносоставными. То есть имеющимим набор пунктов, каждый из которых требует решения. Более того решение некоторых пунктов независимо. В то время как другие пункты (подзадачи) открываются по мере решения предыдущих подзадач.
    Таким образом сдать задачу, это еще не значит решить все пункты.

    Да вобщем посмотрите сами на таблицу результатов команд. Там сразу поймете.


    № 2325   30-03-2007 14:23 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2322« (Jack Of Shadows)
    ___________________________

    >>>Посмотрите на список участников. Очень много команд использующих си, java и даже паскаль.

    Как раз это мне и не удалось. :(
    Почему-то соответствующие страницы сейчас недоступны.

    За информацию спасибо!
    Интересно знать, что действительно есть соревнования, связанные с ФП.
     AVC


    № 2324   30-03-2007 14:12 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2318« (Jack Of Shadows)
    ___________________________

    Конкуренция между командами  И как благодаря
    ей будет развиваться общедоступный, опенсорсный инструментарий?
    Даже если и так, то она быстро выйдет на узкоспециальный уровень
    и при ежегодных контестах будет развиваться очень медленно.
    Самое место - академическая среда (все-таки два семестра в год).

    Начинающие программисты в чемпионатах ?! :))
    Да нет, не в чемпионатах, а ищущие чего-нибудь в опенсорсе. Соответственно будет мало пользы от найденных инструментов ввиду их узкоспециальности. Потому и думаю, что больше вреда, поскольку использоваться эти инструменты чаще будут методом тыка.

    Сейчас жупела нарисую - представьте девелопера, который лепит GUI для системы оповещения АЭС.., на лиспе.., причем копипастит из опенсорса.
    Нет, против лиспа ничего не имею, пусть будет С#, раз уж ИЯ гегемонит пока.





    № 2323   30-03-2007 14:10 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2321« (Jack Of Shadows)
    ___________________________

    Ни хрена не понял. Может сами втолкуете правила раз ссылаетесь? Один не работает. Другой дает правила сдачи но не судейства. Я так понял что где два где три дня даеться на задачу. Это навроде как в шахматы по переписке? Так в шахматах и то отменили доигрывание штоб не своими мозгами шевелили. Если 5 команд сдали задачу с первого захода в тамошний лимит то кто считается лучшей? И чего там судят, компактность кода что ли?


    <<<... | 2342—2333 | 2332—2323 | 2322—2313 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 318


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

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

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

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

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

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