Функциональное программирование |
Функциональное программирование всегда привлекало меня в противопоставлении к императивному.
Я очень часто обсуждаю различные аспекты функционального программирования на различных ветках на Базарной площади.
Но хотелось бы собрать всех заинтересованный этой темой в одной ветке.
Я думаю что настало время открыть такую тему. И вот почему.
Исторически функциональное программирование появилось практически вместе с императивным.
Вторым языком после фортрана был лисп.
Но увы, функциональное программирование надолго было уделом исследовательских институтов или специализированных приложений (Искусственный Интеллект)
Конечно не надо считать весь мир дураками из за того что развитие пошло по пути языков Алгол семейства.
Для этого были вполне обьективные причины. Функциональные языки слишком близки к человеку и слишком далеки от машины.
Они сьедают в десятки раз больше рессурсов чем императивные языки.
Вспомните претензии, предявляемые к java - первому императивному языку с виртуальной машиной и сборщиком мусора, толкаемому большими корпорациями в mainstream.
Жутко тормозит, и жрет всю память какая есть. А ведь функциональные языки (далее ФЯ) все без иключения имеют сборщик мусора, виртуальную машину.
Многие из них (семейство лисп) еще и динамические, что только усугубляет положение.
Вполне естественно что появившись более полусотни лет назад они надолго опередилли свое время.
Для широкого распространения ФЯ нужны гигабайты дешевой памяти и гигагерцы дешевых процессоров.
Прошло более 50 лет, прежде чем такие требования к железу стали реальностью.
Это время наступило. СЕЙЧАС.
Добро пожаловать в новую эру программирования.
Jack Of Shadows
Всего в теме 5502 сообщения
Добавить свое сообщение
Отслеживать это обсуждение
- Средства разработки. Языки программирования.
- Delphi 4 or Delphi 5
- Что приобрести в качестве средства разработки?
- Delphi6
- Delphi vs PowerBuilder
- Сравнение компиляторов
- Вот и вышла Delphi 7... Вы рады?
№ 472 20-07-2006 14:53 | |
Черт возьми, надо писать посты в Ворде, а то в этом окошке не замечаю правильность набранных тэгов. Мысль опережает пальцы. :) Наверное, это из-за того, что я не пользуюсь Лиспом :)
№ 471 20-07-2006 14:50 | |
Ответ на »сообщение 470« (Jack Of Shadows)
___________________________
1. Так, про forward chainig и backward chaining вы ничего не знали потому что "не вникали" ok [/Qoute]
Да, кстати, forward chainig и backward chaining по-русски будет "прямой и обратный логический вывод". Я совсем забыл, что прямой вывод в Прологе реализуется при помощи предиката assert. Если у кого-то будет горячее желание, я попробую изобразить какой-нибудь пример. Но я очень рад, что вы обнаружили для себя прямой логический вывод в каких-то непрологовских системах. :)
2. Я ведь вам ссылки приводил на википедию. Могли бы оттуда выяснить. Что, опять "лень было разбираться" ?
Я тоже могу ссылки привести:
http://www.amzi.com/products/prolog_products.htm
http://www.sics.se/isl/sicstuswww/site/customers.html
Но, ни ваши, ни мои ссылки не скажут о частоте использования той или иной системы. Если не трудно, дайте ссылку на документ, в котором описывается исследование рынка логических языков.
3. Артем вы продолжаете фолить. Никто здесь не позволяет себе таких высказываний, кроме вас. Покажите мне где я указывал вам на вашу недоразвитость ?
Вы можете указать мне где я не прав. Но решать чем продиктованы мои аргументы оставьте мне. Это уже не ваше дело. Или покажите где и когда я вас оскорбил.
Ну. Что ж, приведу здесь ваши высказывания:
Вам бы я порекомендовал ветки по оберону. Там вы найдете единомышленников.
Что касается "много идиотских скобок" - то это говорит о том насколько вы далеки от понимания лиспа.
Вы этого знать не можете, потому что ваш опыт ограничен знакомством с dotnet и парой других языков типа delphi.
Таким образом лисп имеет абсолютно все те же возможности логического вывода что и пролог по той простой причине что в лиспе ЕСТЬ ПРОЛОГ. :)) Вы конечно этого тоже знать не могли, опять же по причине того что у вас нет опыта за пределами dotnet и пары языков.
К вашему сведению все эти прологи, опсы и прочая логическая лабуда разрабатывались на лиспе.
И т.д.и т.п. Все ваших посты пронизаны презрением. к ООП (и к Прологу тоже). Ну и соответсвенно к пишущим на них. Мало того, вы часто цепляетесь к форме высказывания оппонента, а не к его сути. Понимаете, не вы ведь один можете это делать. Я вот возьму и скажу, что вы все врете и Лиспом не пользовались до недавнего времени, потому, что в вашем аккаунте не было указано это "увлечение". Вы ответили, что аккаунт писался "100 лет тому назад". Но я возражу – неправда. 100 лет тому назад C# не было, а он ведь был указан в вашем старом варианте. Это, просто, пример некорректного спора. Приятно вам слышать такое?
4. Смех, лисп с ассемблером сравнивать. Язык СИМВОЛЬНЫХ вычислений (то есть НАИБОЛЕЕ ДАЛЕКИЙ от машины язык), с машинным кодом
Опять вы извращаете мои слова. Я не сравнивал эти два языка. Я лишь на аналогии показал, что будет, если следовать вашей логике о том, что на чем было написано.
5. Чес. слово, очень тяжело дискутировать с человеком, который смотрит на мир сквозь окно, прорубленное для него его учителем. Попытайтесь вылезти из него. Попытайтесь искать информацию сами. Или хотя бы воспользуйтесь ссылками которые вам здесь дают.
Иначе мне с вами просто скучно продолжать разговаривать
Вы знаете, мне уже тоже скучно. Я вас переубеждать не собирался, - пишите себе на своем Лиспе на здоровье. Единственная просьба, не считайте, что все остальные люди занимаются ерундой.
№ 470 20-07-2006 13:06 | |
Ответ на »сообщение 455« (Артем)
___________________________
Артем, вы тут столько всего навалили в кучу, что разюирать это чесслово не доставляет никакого удовольствия.
Но я это сделаю в посдежний раз, а потом просто буду двигаться дальше.
Здесь я указал, что особенно глубоко не вникал в другие системы лог. Программирования, потому что Пролог полностью удовлетворяет все мои потребности
1. Так, про forward chainig и backward chaining вы ничего не знали потому что "не вникали" ok
о таких системах как OPS5, Planner, CLIPS я краем уха слышал.
2. Так, об огромной части в области логического программирования вы краем уха слышали. Вам видите ли учитель про это ничего не сказал.
Однако ваши утверждения о частоте использовании того или иного продукта, в принципе, такие же голословные, если уж на то пошло, как и мои.
Хорошо что вы хоть сами понимаете что ваши утверждения о доминировании Пролога голословны.
Но вот о моих как вы сделали вывод ? Я ведь вам ссылки приводил на википедию. Могли бы оттуда выяснить. Что, опять "лень было разбираться" ?
ОК, дадим больше.
http://www.fairisaac.com/ - ведущий производитель экспертных систем. Посмотрите у него, может найдете пролог :))
http://www.inrule.com/Default.aspx - еще один.
http://en.wikipedia.org/wiki/Expert_system - Вот тут вам доходчиво обьяснят что такое экспертные системы и какие подходы применяются для их построения. Пролог там в списке тоже есть...один из многих :))
Доминированием и не пахнет.
Видите ли пролог хорош в школах основам логического программирования учить.
А как дело доходит до производства, то эту игрушку отодвигают в сторонку и выкатывают вперед тяжелую артилерию в виде RETE и разнообразных языков, его реализующих (OPS, CLIPS)
Они продиктованы или субъективным опытом, или, извините, непреодолимым желанием указать кому-либо на его недоразвитотсть
Артем вы продолжаете фолить. Никто здесь не позволяет себе таких высказываний, кроме вас. Покажите мне где я указывал вам на вашу недоразвитость ?
Вы можете указать мне где я не прав. Но решать чем продиктованы мои аргументы оставьте мне. Это уже не ваше дело. Или покажите где и когда я вас оскорбил.
Я сейчас тоже приведу пример библиотеки встроенного Лиспа для Дельфи и скажу,
Ловлю вас на слове. Приведите. Так чтобы лисп код прямо в дельфи можно было писать :))
Заметьте, не вызывать лисп из дельфи, не передавать ему строчку, а прямо в коде дельфи писать код на лиспе.
Лисп позволяет такую интеграцию. Примеров я приводил множество.
Дело за вами.
Когда какие-то возможности встроены в язык и когда реализуются правой ногой через левое ухо, - это, извините, "две большие разницы"
Говорю же вам, вы неверно себе представляете что такое библиотека в лиспе.
Она меняет язык, а не просто добавляет к нему какой то набор функций.
Тяжко говорить с человеком, который понятия не имеет о чем речь. Вы ведь никогда с таким механизмом не сталкивались. Даже термин "библиотека" в лиспе и в ИЯ носит совершенно разную смысловую нагрузку.
Как мы с вами можем говорить об этом если вы этой смысловой нагрузки не понимаете ?
Ну, во-первых, когда я пихаю SQL в Дельфи, то я его всегда проверяю хотя бы с помощью SQL-Explorer или при простом SQL запросе сделав TQuery активным.
Вот именно !!! Потому и используете НЕ ДЕЛЬФИ для проверки sql, потому что в дельфи просто нет sql.
В лучшем случае есть библиотека, которая может общаться с sql сервером, передавая ему сырую необработанную строчку. Но о контроде на уровне компиляции и речи нет.
Именно такую возможность кстати добавляют в сишарп 3 - DLinQ
То есть возможность писать sql запросы прямо на сишарп, прямо внутри вашего кода, с проверками типов итд.
Причем все это выдается как колоссальный прогресс (и правильно).
Так вот в лиспе эта возможность существовала десятилетиями.
И в Дельфи тоже можно добавить. Мало ли доморощенных библиотек, реализующих тот или иной язык?
Еще раз повторяю, приведите зотя бы один пример :)) Тогда и будем говорить, можно или нельзя в дельфи чего то там добавить. Может если вы хоть раз не поленитесь и попробуете сделать это сами, то поймете о чем это я здесь говорю.
Приведите мне пример любого инструмента, который позволяет в коде дельфи писать скажем код еще какого то языка.
Кстати вам подсказка - в дельфи есть возможность использовать таким образом ассемблер. :))
Но это Борланд туда его засунула, а не вы. Вы не сможете, уверяю вас. А чтобы вы убедлись в этом на деле - предлагаю вам попробовать :))
Вот здесь вы и прокололись. Это говорит как раз о примитивности Лиспа, в сравнении с указанными системами. Обычно более высокоуровневые языки пишутся на менее высокоуровневых. А если следовать вашей логике, то ассемблер – это самый крутой язык, а все прочее - лабуда.
Артем, почему то кроме вас, все остальные прекрасно поянли о чем я говорю. И Сергей Перовский, и torvic.
Я не знаю как вы читаете аргументы оппонентов, но вы пропустили то что я сказал.
Лисп используется для быстрого созданя новых языков, новых синтакстисов, именно потому что не ограничивает жестким синтаксисом программиста. Речь о низкоуровневости никакой.
Более того, если бы я упирал на то что лисп типа как ассемблер, такой прям низкоуровневой, то мне не было бы смысла сообщать вам что после реализации на лиспе, языки потом переписывают на си. :))
Это ведт прямо противоречит той мысли, которую вы каким то непостижимым для меня образом умудрились найти в моей аргументации. Ну что типа лисп низкоуровневой прям как ассемблер и потому видите ли такой крутой :))
Смех, лисп с ассемблером сравнивать. Язык СИМВОЛЬНЫХ вычислений (то есть НАИБОЛЕЕ ДАЛЕКИЙ от машины язык), с машинным кодом.
Кстати мы вам постоянно приводим ссылки на информацию. Вот и torvic привел две прекрасные статьи, как по истории пролога (весьма для вас познавательно) так и статью Пола Грехема о лиспе.
Чес. слово, очень тяжело дискутировать с человеком, который смотрит на мир сквозь окно, прорубленное для него его учителем.
Попытайтесь вылезти из него. Попытайтесь искать информацию сами. Или хотя бы воспользуйтесь ссылками которые вам здесь дают.
Иначе мне с вами просто скучно продолжать разговаривать, я уж пойду дальше.
Удачи с прологом :))
№ 469 20-07-2006 11:40 | |
Ответ на »сообщение 467« (panda)
___________________________
Снова с Quote описка вышла. Последнюю фразу следует читать так :)
Речь о том, что Вы делаете выводы на основе знаний, которыми не обладаете. Так было и с логическим программированием чуть раньше.
Не приписывайте свои личные качества другим. Если вы думаете, что обидели меня, то ошибаетесь. Судя по зацикленности на некоторых фразах и оригинальной аргументации, вас обидели раньше. :)
№ 468 20-07-2006 10:17 | |
Ответ на »сообщение 467« (panda)
___________________________
мне, как работнику Microsoft Gold Certifed Partner, такие факты как бы известны Я очень рад за вас. Превратим форум в перечисление своих "рыгалий"? Надеюсь, что вы не только работаете в предприятии-партнере майкрософта, но и сами являетесь сертифицированным специалистом. Вы бы, действительно, меня удивили, если бы сказали, что работаете в майкрософте. (А можно подумать, что вы там работаете, раз намекаете тут на знание тонкостей работы в этой корпорации). И вообще, дело не в этом. Я еще раз повторяю, что имя Гейтса употребил как символ. Не надо цепляться к словам.
А то что .NET по идеологии очень близок к Delphi - это случайность? Я выше уже писал, что dotNet взял из разных систем. И не только из Дельфи. Если говорить о сравниваемых вещах, таких как FCL и VCL, то FCL гораздо более продумана.
[Qoute] Речь о том, что Вы делаете выводы на основе знаний, которыми не обладаете. Так было и с логическим программированием чуть раньше. Не приписывайте свои личные качества другим. Если вы думаете, что обидели меня, то ошибаетесь. Судя по зацикленности на некоторых фразах и оригинальной аргументации, вас обидели раньше. :)
№ 467 20-07-2006 08:34 | |
Ответ на »сообщение 466« (Артем)
___________________________
Да будет вам известно, Билли - это глава Microsoft (пусть, уже и почетный).
Вы знаете, мне, как работнику Microsoft Gold Certifed Partner, такие факты как бы известны ;-)
И, думаю, что участие в планировании развития он принимает.
"Ну да, конечно" (с) анекдот про Вовочку.
Вы бы для начала почитали, что ли, как в Microsoft люди работают (а потом уже делали бы такие безапелляционные выводы). У Джоэля Спольски, например, про это очень хорошо написано.
Андерс Хейльсберг, явно, не сам написал весь дотНет, мало того он позиционируется именно в команде разработки C#.
А то что .NET по идеологии очень близок к Delphi - это случайность?
И, вообще, давайте не переводить тему обсуждения на тему нелюбви кого-то к Билли.
А это-то здесь причем? Я о нелюбви к Биллу Гейтсу ничего не говорил.
Речь о том, что Вы делаете выводы на основе знаний, которыми не обладаете. Так было и с логическим программированием чуть раньше.
№ 466 20-07-2006 07:19 | |
Ответ на »сообщение 464« (panda)
___________________________
Билли то здесь причем? Он вроде только Бейсик разрабатывал, да и то обычный, а не VB. Или молодец за то что Хейлсберга из Borland к себе переманил?
Да будет вам известно, Билли - это глава Microsoft (пусть, уже и почетный). И, думаю, что участие в планировании развития он принимает. Андерс Хейльсберг, явно, не сам написал весь дотНет, мало того он позиционируется именно в команде разработки C#. И, вообще, давайте не переводить тему обсуждения на тему нелюбви кого-то к Билли. Его имя я употребил лишь как персонифицированный символ Microsoft, если вам угодно.
№ 465 20-07-2006 07:15 | |
Ответ на »сообщение 455« (Артем)
___________________________
Вот здесь вы и прокололись. Это говорит как раз о примитивности Лиспа, в сравнении с указанными системами. Обычно более высокоуровневые языки пишутся на менее высокоуровневых. А если следовать вашей логике, то ассемблер – это самый крутой язык, а все прочее - лабуда. Даже не ассемблер, а машинные коды :) И, в конце концов, тот же Лисп писался, скорее всего на C (и даже не на C++).
см. Парадокс Блаба
Beating the Averages (Paul Graham)
http://www.nestor.minsk.by/sr/2003/07/30710.html
№ 464 20-07-2006 06:29 | |
Ответ на »сообщение 456« (Артем)
___________________________
Я там в прошлом посте недописал, что лучшая IMHO парадигма взаимодействия языков реализована в dotNet Да-да. Билли - молодец. :)
Билли то здесь причем? Он вроде только Бейсик разрабатывал, да и то обычный, а не VB.
Или молодец за то что Хейлсберга из Borland к себе переманил?
№ 463 20-07-2006 06:01 | |
Ответ на »сообщение 454« (Jack Of Shadows)
___________________________
>>>Но лисп это не язык пограммирования, это закон программирования.
Язык, это не только принципы, но и конкретный синтаксис. Сколько черезвычайно строгих и изящных по задумке языков не получило распостранения из за неудачного оформления.
Добавить свое сообщение
Отслеживать это обсуждение
Дополнительная навигация: |
|