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

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

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


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

Архив

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


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

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

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

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

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

 
   
С Л С

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

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

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

Квинтана

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

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

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

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

 
  
АРХИВЫ

 
 

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

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

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

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

 Jack Of Shadows

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

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

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


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

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

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


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

  • <<<... | 2572—2563 | 2562—2553 | 2552—2543 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 295


    № 2562   03-04-2007 11:59 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2560« (Jack Of Shadows)
    ___________________________

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


    А где именно Вирт объясняет исключение перечислимого типа "отсутствием времени"?
     AVC


    № 2561   03-04-2007 11:48 Ответить на это сообщение Ответить на это сообщение с цитированием
    Насчёт преподавания ФП в школах. Сегодняшний пост в ru_scheme на ЖЖ:


    Пишет rc_combat (rc_combat) в ru_scheme
    @ 2007-04-03 00:27:00

    игры
    привет всем!!! я изучаю scheme в школе, и всем дали задание написать какую нибудь игру типа домино или чтото другое..
    может у кого есть  или ко подскажет где можно найти исходники на какиенибудь игры на scheme???
    заранее спасибо.


    Ну вот, оказывается, всё-таки преподают... :о))


    № 2560   03-04-2007 11:36 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2558« (AVC)
    ___________________________
    Когда вы стоите перед дырой в которую вам надо пролезть, вам конечно приходится делать выбор. Продолжать стоять и так и не выполнить задачи, или стать на колени и локти, протиснуться в эту дыру, и таки задачу выполнить. При этом ОСОЗНАННО принятое решение вовсе не означает что ходить в коленно-локтевой позе удобнее чем во весь рост.

    Вирт ставил перед собой вполне определенные цели, в конкретных ограничивающих условиях. И цели эти, также как и ограничивающие условия, требовали ОТКАЗА от многих вещей. Вы же на основании отказа Вирта делаете вывод, что все от чего он отказался - не нужно, лишне и вообще вредно по определению.

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


    № 2559   03-04-2007 11:22 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2553« (Руслан Богатырев)
    ___________________________
    Неужели так тяжело просто взять и объяснить честнОму народу, где проигрыш/выигрыш в КП, а где нет. А в ответ -- подсчет строк. Господа, извините, но это несерьезно...
    Совсем нетяжело обьяснить. Правда видимо тяжело на это обращать внимание: »сообщение 2512« »сообщение 2514« Это только последние. До этого тоже самое говорил GeniePro и я.

    По поводу трансляторов лиспа. Имеется в виду конечно компиляция лисповых программ в исполняемые файлы.
    Тут лисп дает вам выбор.
    Поскольку лисп язык динамический то скорость лисповых программ в среднем в 2-3 раза медленнее сишных.
    Поскольку лисп - это прото-язык, который может позволить себе все что угодно, в том числе и декларацию типов (то есть превращается из динамического языка в статический) то скорость лисповых программ практически такая же как у си.
    То есть для того чтобы сделать программы на лиспе быстрыми достаточно просто включить в них декларации типов.

    Как видите вы ошиблись в том кто ползает а кто летает. Лисп может все.


    № 2558   03-04-2007 11:15 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2555« (Geniepro)
    ___________________________


    И как же Вы различаете, что есть "движок", а что - "сахарок"? 8-О
    Вот поясните на примере Оберона и КП, где там суть, а где "сахар".
    Вот только не надо снова заявлять, что в Оберонах якобы "сахара" нет, он-де "диетический"... :о)


    IMHO, определенная "диетичность" Оберона очевидна; достаточно сравнить его с др. современными процедурными языками.
    Конечно, некоторое количество "синтаксического сахара" в Обероне тоже есть.
    Это уже упоминавшееся Вами (а еще -- раньше Русланом Богатыревым во "внутреннем" споре оберонщиков) разнообразие структур управления, прежде всего -- циклов; кроме того -- ряд встроенных процедур вроде INC и DEC; и т.д.
    Важно то, что при проектировании языка Вирт различал существенные и второстепенные моменты.
    Это различие постоянно подчеркивается Виртом в разных его статьях. Вот что, например, он пишет в статье "От разработки языка программирования к созданию компьютера":
    Я всегда пытался выделить существенные моменты, которые дадут несомненные преимущества, и сосредоточиться на них. Например, включение программирования четкой и согласованной схемы объявления типа данных я считаю существенным, в то время как все мелочи, относящиеся к разнообразию циклов, или вопрос о том, должен ли компилятор различать прописные и строчные буквы, являлись для меня второстепенными.

    IMHO, достаточно ясно, что не все особенности языка программирования имеют одинаковый "вес".
    Вот скажем, выбор процедурной (а не функциональной) модели для Оберона был сделан Виртом совершенно сознательно. Согласитесь, что это в данном случае принципиально важное решение, в отличие от исключения/включения в язык оператора FOR.
    Принципиальное значение имеют также модульность, "герметичность" системы типов и сборка мусора.
    Связанные с этим свойства языка, такие как "размен" вариантных записей на расширения типов, имеют значительно большее значение, чем многие другие свойства, взятые вместе.
    Отвечая более конкретно на Ваш вопрос, привожу такие примеры:
    1) существенные свойства ("движок"): модульность, сборка мусора, расширение типа, исключение вариантных записей;
    2) второстепенные свойства ("сахарок"): наличие/отсутствие оператора FOR и ряда встроенных "фич" вроде INC, DEC и т.д.
     AVC


    № 2557   03-04-2007 10:39 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2553« (Руслан Богатырев)
    ___________________________

    Да и сейчас есть трансляторы Лиспа, генерирующие код, сравнимый по быстродействию с кодом у трансляторов Си.

    Давайте уточним о чем мы говорим: о написанных на Лиспе трансляторах для сторонних языков, либо о трансляторах самого языка Лисп?

    Прошу прощения за свою косноязычность. Мне почему-то и в голову не могло прийти, что словосочетание "трансляторы Лиспа" можно понять как "написанные на Лиспе трансляторе для сторонних языков". Я думал, что понять его можно только как "трансляторы самого языка Лисп". :о(

    Кстати, я немного ашыпся с PDP-11. Дословный текст, который я имел в виду:

    Э.Хювёнен, Й.Сеппянен, "Мир Лиспа", т.2, стр.274:

    Маклисп был также первой Лисп-системой, для которой создан хороший транслятор. Транслятор генерирует машинную программу, получившую имя LAP (List Assembly Program), в форме списков. Машинный код в виде списков легко обрабатывать и результирующий код для числовых задач получался эффективней, чем у лучших фортрановских трансляторов PDP-10 (Fateman 1973, Steele 1977). Это объясняется "разумностью" маклиспа при обработке выражений и оптимизации кода.


    Если о втором, то на выходе мы получаем что: код Лисп-машины или машинный код (native). Если первое -- думаю, можно не обсуждать. Мне очевиден проигрыш на не-Лисп-железе. Если второе, то как насчет ран-тайма? Или Лисп без него вообще обходится? Так вот об этой чужеродной для "прослойке" я и толковал.

    Но тогда и .NET является "чужеродной прослойкой" для C#, и JVM для Java, и slimbinary для Оберона.

    Что такое ран-тайм, как не набор библиотечных функций + сборщик мусора? Или у Оберонов совсем-совсем нет ран-тайма?


    Код для каких исходников мы сравниваем?

    Я имел в виду - исходники (хотя причём тут исходники?) программ для математических расчётов. Каких именно расчётов - извините, не в курсе.

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


    Так мы истину ищем или свой товар нахваливаем?

    Какой товар, помилуйте! Я ведь никаких денег ни с кого не беру!
    Ем кашу и нахваливаю, не более... :о))
    Ну или если Вам так больше нравится, хвалю своё "болото"...


    № 2556   03-04-2007 10:38 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2539« (Trurl)
    ___________________________

    А вот еще пример, что при наличии достаточного количества сахара программа на ИЯ ничуть не длиннее.

    Уважаемый Trurl, Вы уж нас хоть немного пожалейте, уточняйте на каких языках Ваши программы!
    Вот эта вот на каком? На существующем или только что Вами придуманном? :о))


    № 2555   03-04-2007 09:50 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2552« (AVC)
    ___________________________

    Просто оберонщики различают "движок" и "сахарок". :)

    И как же Вы различаете, что есть "движок", а что - "сахарок"? 8-О
    Вот поясните на примере Оберона и КП, где там суть, а где "сахар".
    Вот только не надо снова заявлять, что в Оберонах якобы "сахара" нет, он-де "диетический"... :о)


    Оставшимя нескольким процентам изучать Хаскелл будет ничуть не труднее, чем Оберон, а даже легче, потому что поинтереснее. Правда, ещё интереснее С++, но уже, увы, не легче... :о)

    Хм... а почему C++ еще интереснее?
    Как-то не вижу логики...

    info21 недавно озвучил свой вариант понимания этой причины, правда, применительно к ФП. Его словами будет примерно так: "Это лишь дешёвое средство показать свою "крутость" и "особый нехилый ум", которых типа реально и нет вовсе..."

    Я бы, правда, смягчил бы эти слова, но суть примерно та же. Только не в отношении к ФП, где никакой "особой крутости ума" вобщем-то не нужно на самом деле, а нужен только реальный интерес, желание и действие.
    Я бы эти слова применил к С++.

    С другой стороны, их (школьников) понять можно ещё и потому, что С++ пока всё ещё мэйнстрим - это ещё дополнительно повышает практический интерес...


    № 2554   03-04-2007 08:18 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2548« (Geniepro)
    ___________________________

    ЗЫ. Неужели Вам эзотерический код на Форте кажется более понятным и читабельным, чем на строго математически выверенном рафинированном Хаскелле?
    По-моему, я на этот вопрос ответил еще до того, как он был задан. См. %2540 : Большой недостаток Форта -- не просто непривычность синтаксиса, а вообще readability. Она у него хромает.

    Насчет рафинированной выверенности (особенно математической), думаю, это очень уж сильное преувеличение. Так мы истину ищем или свой товар нахваливаем?


    № 2553   03-04-2007 08:00 Ответить на это сообщение Ответить на это сообщение с цитированием
    Ответ на »сообщение 2548« (Geniepro)
    ___________________________

    Да и сейчас есть трансляторы Лиспа, генерирующие код, сравнимый по быстродействию с кодом у трансляторов Си.

    Давайте уточним о чем мы говорим: о написанных на Лиспе трансляторах для сторонних языков, либо о трансляторах самого языка Лисп? Первое, думаю, очевидно надо выносить за скобки -- на эффективность результата (генерируемый код) это влиять не может (разве что на скорость/ресурсы на этапе трансляции). Если о втором, то на выходе мы получаем что: код Лисп-машины или машинный код (native). Если первое -- думаю, можно не обсуждать. Мне очевиден проигрыш на не-Лисп-железе. Если второе, то как насчет ран-тайма? Или Лисп без него вообще обходится? Так вот об этой чужеродной для "прослойке" я и толковал. А теперь еще раз подумаем над утверждением: Да и сейчас есть трансляторы Лиспа, генерирующие код, сравнимый по быстродействию с кодом у трансляторов Си. Код для каких исходников мы сравниваем? Я вполне могу допустить, что на уровне программирования в малом (где ФП может заметно обыгрывать ИП) есть такие тесты. Но, пардон, мы же должны понимать, что любой инструмент (а Лисп не всемогущ) имеет свои пределы, свои изъяны, свои неудобные задачи.

    С большим интересом познакомлюсь с мнение специалистов в области ФП и Лисп-экспертов о таких местах, а также о том, как они влияют на качество/эффективность кода и сопоставление с другими языками. Где же начнется "просадка"? Уж не на работе ли с динамической памятью? Так может, разговоры о преимуществе на каких-то тестах -- это просто попытка самоуспокоения, а не поиск истины? Или я ошибаюсь?


    P.S. Как вы думаете, когда я предлагал рассмотреть задачу из чемпионата мира ACM, то прекрасно понимал, что по компактности записи она почти наверняка выиграет у Оберона? Так зачем же я это предложил? Хотелось увидеть анализ со стороны ФП-программистов (которые большей частью имеют преимущество перед Оберон-программистами в опыте и объеме практике на ФП, т.ею владеют обеими сторонами). Они не знают классический Паскаль? Да неужели? А КП для такой микроскопической задачи чем-то принципиально отличается от классического Паскаля? Неужели так тяжело просто взять и объяснить честнОму народу, где проигрыш/выигрыш в КП, а где нет. А в ответ -- подсчет строк. Господа, извините, но это несерьезно...








    <<<... | 2572—2563 | 2562—2553 | 2552—2543 | ...>>>
    Всего сообщений в теме: 5502; страниц: 551; текущая страница: 295


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

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

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

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

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

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