Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 1112 Удалено модератором | |
№ 1111 Удалено модератором | |
№ 1110 03-09-2006 16:10 | |
Ответ на »сообщение 1107« (Jack Of Shadows)
___________________________
До пенсии мне еще не так скоро -- так что и тут JOS ......
В остальном сошлюсь на старые Мысли, пост N280 корректнейшего S.A.
Что касается тестов из десяти строк -- пусть студенты такими тестами упражняются.
"Учиться, учиться и учиться" (с) Дедушка Вова
Могу только поспособствовать образовательному процессу контрольным вопросом:
Что может проверять тест, обращающийся в цикле к трем внешним модулям, из которых два -- ввод-вывод?
весьма уважаемое opensource сообщество
"Хм" (с) ASU
№ 1109 Удалено модератором | |
№ 1108 03-09-2006 12:45 | |
Ответ на »сообщение 1106« (bb)
___________________________
Если тот, кто приводит такие тесты, ничего не указывает относительно специфики сравниваемого компилятора, значит, его цель - элементарно запудрить мозги.
На сайте четко и ясно указано что такое OO2C, что он делает и его домашняя страница:
OO2C translates Oberon-2 source-code to C source-code, and compiles with GCC.
Никто никому мозги не запудривает.
Во вторых, из описания сайта вы можете прочитать, что можно предоставить тесты на любом языке, например на Компонентном паскале.
Повторяю еще раз - это открытый сайт opensource сообщества. И хозяева этого сайта САМИ тесты не пишут.
Тесты предоставлены ЭНТУЗИАСТАМИ, то есть каждый из них старается изо всех сил, чтобы представить свой язык в НАИЛУЧШЕМ а не наихудшем свете.
У вас есть возможность выступить с тестами для выбранного вами языка, и таким образом, показать всем ху из ху :))
Все тесты очень маленькие. От десятка строчек, и не более сотни.
Более того, вы можете предложить свою собственную тестовую задачу, если считаете что какие то аспекты языка не показаны в должном свете.
№ 1107 Удалено модератором | |
№ 1106 03-09-2006 08:44 | |
Ответ на »сообщение 1104« (Jack Of Shadows)
___________________________
А ведь в приведенных мною тестах Clean бьет оберон не только по скорости (что не удивительно).
Но также и по РАСХОДУ ПАМЯТИ!
А Вы знаете, что такое OO2C? Для информации. Это транслятор с Оберона-2 в C. Ежели быть аккуратным, то надо сравнивать OO2C с транслятором с Clean в C (ежели таковой имеет место быть).
Если тот, кто приводит такие тесты, ничего не указывает относительно специфики сравниваемого компилятора, значит, его цель - элементарно запудрить мозги. Ну а если Вы беретесь ретранслировать эту информацию дальше, то подставляете под удар свою репутацию. Лучше сначала немного разобраться, чтобы потом не было "мучительно стыдно"...
№ 1105 03-09-2006 06:05 | |
Ответ на »сообщение 1104« (Jack Of Shadows)
___________________________
Ерундой заниматься мне некогда -- мало ли фокусников с наперсточниками ...
Но если там Оберон в разы проигрывает паскалю, то уже из этого ясно (поскольку Оберон компилировать легче, т.к. он проще на соотв. подмножестве), что тестам этим грош цена.
За JOS остается должок -- но еще больший за Антоном Григорьевым.
№ 1104 03-09-2006 03:04 | |
А ведь в приведенных мною тестах Clean бьет оберон не только по скорости (что не удивительно).
Но также и по РАСХОДУ ПАМЯТИ!
Да и не какие то проценты а В РАЗЫ! : ))
Вот это уже действительно удивительно.
Единственный из трех языков, которому по тестам Clean проигрывает по расходу памяти - это паскаль.
И у оберона и у сишарп выигрывает вчистую.
Исходники всех тестов предоставлены.
Кстати господину info21 предоставляется великолепная возможность улучшить время тестов оберона, предоставив переписанные им самим аккуратно спроектированные (на обероне, конечно) алгоритмы.
Порядок подачи тестовых программ на сайте приведен.
№ 1103 03-09-2006 02:15 | |
Ответ на »сообщение 1097« (Jack Of Shadows)
___________________________
Ответ на »сообщение 1094« (info21)
___________________________
Господину info21 остается только посоветовать посмотреть на бенчмарки ФЯ vs ИЯ вот здеь хотя бы:
Clean (чистый ленивый ФЯ):
Против Оберона: http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=clean&lang2=ooc
Против Паскаля: http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=clean&lang2=fpascal
Против сишарп: http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&lang=clean&lang2=csharp
Там же можете посмотреть на результаты Ocaml и Хаскель.
Они не столь впечатляющи как у Clean, но тоже вполне на уровне.
Из приведенных бенчмарков видно, что скорость работы программ зависит прежде всего от реализации конкретного компилятора, а не от того функциональный ли язык или императивный.
Вот именно. Никакой мистики нет и быть не может.
Во-вторых, изолированные искусственные бенчмарки меня не интересуют. У меня свои проекты есть, реальные, сложные, открытые (т.е. задачи сильно эволюционируют, а участники меняются) и долгосрочные (О(10 лет)) -- и на них ФЯ "обламываются": никаких заметных преимуществ нет, а сложности навалом (включая трудность обучения новичков, портов на фортран, С++ [что нередко оказывается частью "техзадания"] и т.п.).
Математику я знаю, понимаю (и умею) лучше вас во много-много раз -- это я к тому, что жонглировать функциями или битами или когомологиями -- мне лично все равно, и на на вашем любимом лиспе я серьезные задачи решал раньше, чем на С или Обероне.
Насчет того, кого и как я обзывал -- полностью на вашей совести. Как и насчет ветки по Оберону (посмотрите-ка там пост ?280 и ранее).
Обращаюсь к модератору удалить пост 1097 как содержащий явную диффамацию.
Признаюсь, у меня аллергия к безграничным обобщениям JOSа: чтобы делать такие обобщения, нужно четко понимать факты, а он уже как минимум трижды дал основания подозревать у него отсутствие такого понимания.
Вот если бы он, к примеру, потрудился обсудить, что там в этих тестах происходит, и почему вдруг машинные коды, полученные через ... ФЯ, оказались в каком-то тестике быстрее таких же машшинных кодов, полученных, скажем, через Оберон (который на оные машинные коды отображается весьма прозрачно, поэтому удобен для анализа -- впрочем, там используется O2CC, что, конечно, портит всю картинку), -- вот это было бы полезно.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|