Думаю, здесь найдутся знающие люди, потому спрошу.
Есть у меня идея залезть в функциональное программирование поглубже. Потому встает вопрос, какой язык выбрать для изучения (благо, выбор есть).
Я в свое время довольно неплохо изучил Лисп (в его Common варианте). Но это было во время учебы, и цели были чисто академические. Сейчас интерес несколько другой: применение в реальных проектах на практике.
Поэтому интересует современный и активно развивающийся функциональный язык. Кто что может посоветовать?
Еще поделитесь своими соображениями относительно перспектив функционального программирования. Или будущего нет?
16.10.04 22:20: Перенесено модератором из 'Философия программирования' — AndrewVK
Re: Функциональные языки: перспектива
От:
Аноним
Дата:
11.02.04 22:39
Оценка:
Здравствуйте, bleed, Вы писали:
B>Но это было во время учебы, и цели были чисто академические. Сейчас интерес несколько другой: применение в реальных проектах на практике. B>Поэтому интересует современный и активно развивающийся функциональный язык. Кто что может посоветовать?
Все что связано с функциональными языками связано как раз с академическими интересами. активно развивающихся функциональных языков нет.
Современное индустриальное программирование практически никак не использует функциональные языки.
Что конечно же не означает, что этим не стоит заниматься вообще,
если к этому есть интерес.
Re: Функциональные языки: перспектива
От:
Аноним
Дата:
12.02.04 03:29
Оценка:
Здравствуйте, bleed, Вы писали:
B>Поэтому интересует современный и активно развивающийся функциональный язык. Кто что может посоветовать?
Haskell,
F# (для .NET)
B>Еще поделитесь своими соображениями относительно перспектив функционального программирования. Или будущего нет?
Здравствуйте, bleed, Вы писали:
B>Поэтому интересует современный и активно развивающийся функциональный язык. Кто что может посоветовать?
OCaml. Все хочу его оседлать, да руки пока не доходят.
B>Еще поделитесь своими соображениями относительно перспектив функционального программирования. Или будущего нет?
Если посмотреть на то, куда развивается C++, то будущее скорее всего за языком, который наиболее гармонично сочитает функциональный и общепринятые стили программирования.
Re: Функциональные языки: перспектива
От:
Аноним
Дата:
12.02.04 11:44
Оценка:
Здравствуйте, bleed, Вы писали:
Лисп знаю слабо, пролог гораздо лучше. Более всего в прологе меня напрягало — написание интерфейса программы, его на мой взгляд привычнее делать по старинке, а для логических задач приминять средства пролога. По этой причине, в свое время, сваял интерфейсную библиотеку для Турбопролога (Логику пишеш на прологе, а интерфейс на Цэ, красотища. Хотя с линковкой приходилось возица чуть подольше ).
Идеал скорее всего где-то посередине.
Re: Функциональные языки: перспектива
От:
Аноним
Дата:
12.02.04 13:29
Оценка:
Здравствуйте, bleed, Вы писали:
B>Поэтому интересует современный и активно развивающийся функциональный язык. Кто что может посоветовать?
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, bleed, Вы писали:
B>>Поэтому интересует современный и активно развивающийся функциональный язык. Кто что может посоветовать?
А>Из специализированных — SQL
SQL — это "логическое, декларативное" программирование.
Функциональные языки имеют другую природу (лямбда исчисление)
Здравствуйте, bkat, Вы писали:
B>Функциональные языки имеют другую природу (лямбда исчисление)
"Имея маркер, можем размалевать всё что угодно на свете, кроме самого маркера. Имея два маркера — можем размалевать ваще всё!"
Давным-давно я тренировался — делал лисп на паскале. В ограниченном виде это даже работало
Значит, на С++ это ещё проще.
А на лиспе можно сделать и пролог, и что хошь.
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, bkat, Вы писали:
B>>Функциональные языки имеют другую природу (лямбда исчисление)
К>"Имея маркер, можем размалевать всё что угодно на свете, кроме самого маркера. Имея два маркера — можем размалевать ваще всё!"
К>Давным-давно я тренировался — делал лисп на паскале. В ограниченном виде это даже работало К>Значит, на С++ это ещё проще. К>А на лиспе можно сделать и пролог, и что хошь.
У Адаменко Анатолия (он из издательства Питер) вышла книжку в издательстве БХВ "Логическое программирование и Visual Prolog". Система — современная, визуальная. Самое интересное, что к книжке прилагается ЛИЦЕНЗИОННЫЙ Visual Prolog от автора — фирмы PDS Prolog.
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, bkat, Вы писали:
B>>Функциональные языки имеют другую природу (лямбда исчисление)
К>"Имея маркер, можем размалевать всё что угодно на свете, кроме самого маркера. Имея два маркера — можем размалевать ваще всё!"
К>Давным-давно я тренировался — делал лисп на паскале. В ограниченном виде это даже работало К>Значит, на С++ это ещё проще. К>А на лиспе можно сделать и пролог, и что хошь.
Здравствуйте, LaptevVV, Вы писали:
LVV>У Адаменко Анатолия (он из издательства Питер) вышла книжку в издательстве БХВ "Логическое программирование и Visual Prolog". Система — современная, визуальная. Самое интересное, что к книжке прилагается ЛИЦЕНЗИОННЫЙ Visual Prolog от автора — фирмы PDS Prolog.
Visual Prolog мне сходу не очень понравился — какой-то загромождённый: чтобы простую программу написать, нужно кучу файлов родить — проект почище С++ного.
Ну это потому, что я не умею их готовить, разумеется...
Здравствуйте, bkat, Вы писали:
К>>"Имея маркер, можем размалевать всё что угодно на свете, кроме самого маркера. Имея два маркера — можем размалевать ваще всё!"
К>>Давным-давно я тренировался — делал лисп на паскале. В ограниченном виде это даже работало К>>Значит, на С++ это ещё проще. К>>А на лиспе можно сделать и пролог, и что хошь.
B>Проще всего Лисп на Лиспе
Это к вопросу о двух маркерах? Но, в общем, были же лисп-машины, у них внутрях как раз лисп на лиспе.
А самое прикольное, что я встречал — это лисп на форте, а потом пролог на этом лиспе. По-моему, в книге по фиг-форту (издательства Радио-и-Связь).
То есть, насколько я понял, большинство считает функциональное программирование забавной игрушкой и не более того. Никто не знает реальных коммерческих проектов, которые бы велись на функциональных языках?
Я почитал то, что есть у Microsoft по F#, и там, в общем-то, написано, что мы, мол, сделали этот язык чуть ли не просто в демонстрационных целях, чтобы продемонстрировать, что любой язык можно реализовать под .NET и связать с кодом на C#. И все. Грустно
Здравствуйте, bleed, Вы писали:
B>Думаю, здесь найдутся знающие люди, потому спрошу. B>Есть у меня идея залезть в функциональное программирование поглубже. Потому встает вопрос, какой язык выбрать для изучения (благо, выбор есть). B>Я в свое время довольно неплохо изучил Лисп (в его Common варианте). Но это было во время учебы, и цели были чисто академические. Сейчас интерес несколько другой: применение в реальных проектах на практике.
B>Поэтому интересует современный и активно развивающийся функциональный язык. Кто что может посоветовать? B>Еще поделитесь своими соображениями относительно перспектив функционального программирования. Или будущего нет?
In a nutshell, what is Erlang?
Erlang is a general-purpose programming language and runtime environment. Erlang has built-in support for concurrency, distribution and fault tolerance. Erlang is used in several large telecommunication systems from Ericsson. The most popular implementation of Erlang is available as open source from the open source erlang site.
Функциональный язык, разработанный (и применяемый) в Ericsson для написания собственных телекоммуникационных систем. Специалисты Ericsson утверждают, что с ним разработка обходится значительно дешевле.
А вообще, функциональное программирование обладает рядом преимуществ перед "обычным" о чем можно прочесть в соответствующей литературе. С течением времени проблемы с производительностью постепенно отходят на второй план, сложность систем растет, и становится гораздо важнее удешевить разработку качественного ПО. Так что следует ожидать роста интереса к функциональным языкам, и более широкого их использования в коммерческом софте, к чему и пример про erlang. Это были соображения.
Здравствуйте, bleed, Вы писали:
B> То есть, насколько я понял, большинство считает функциональное программирование забавной игрушкой и не более того.
Ну и что вам с того? B> Никто не знает реальных коммерческих проектов, которые бы велись на функциональных языках?
По логике, стоило-бы поставить точку вместо вопросительного знака. Меж тем...
...during the 1980s there was a project at the Ericsson Computer Science Laboratory which aimed to find out what aspects of computer languages made it easier to program telecommunications systems. Erlang emerged in the second half of the 80s was the result of taking those features which made writing such systems simpler and avoiding those which made them more complex or error prone.
Теперь закономерен вопрос:
Who uses Erlang for product development?
На что в ФАКе по erlang-у мы находим ответ:
The largest user of Erlang is (surprise!) Ericsson. Ericsson use it to write software used in telecommunications systems. Many (dozens) projects have used it, a particularly large one is the extremely scaleable AXD301 ATM switch. AXD301 has several hundred people working on it and the code volume has reached about 850 kloc of Erlang (and 1 Mloc of C/C++).
Finnish Meteorological Institute (Data acquisition and real-time monitoring)
Mobilearts (GSM and UMTS services)
Motivity Telecom (SS7/ISDN Gateways)
Schlund + Partner (Messaging and Interactive Voice Response services)
T-Mobile (previously one2one) (advanced call control services)
Telia (a telecomms operator)
Vail Systems (Interactive Voice Response systems)
B>Я почитал то, что есть у Microsoft по F#, и там, в общем-то, написано, что мы, мол, сделали этот язык чуть ли не просто в демонстрационных целях, чтобы продемонстрировать, что любой язык можно реализовать под .NET и связать с кодом на C#. И все. Грустно
А вы "не читайте перед обедом советских газет" — "так других-же нет!" — "вот никаких и не читайте"
Здравствуйте, bleed, Вы писали:
B>Еще поделитесь своими соображениями относительно перспектив функционального программирования. Или будущего нет?
На мой взгляд, у функциональных языков есть явное преимущество перед императивными при распараллеливании программ. Например, при вычислении выражения (в функциональном языке)
g(f1(), f2(), f3())
из-за отсутствия побочных эффектов, функции f1, f2, f3 могут вычисляться параллельно (в отдельных потоках и на отдельных процессорах). В аппликативных языках, в общем случае, это сделать нельзя. И поскольку, анализ зависимостей данных в императивных языках, -- задача довольно сложная, "имеративным" программистам приходится явно создавать thread'ы для обеспечения параллельной работы. И потом их еще и сихронизировать семаформами всякими.
В функциональных же языках проблем с синхронизацией thread'ов может и не быть в принципе! Так что, перспективы, думаю, есть.
PS
Кстати, те, у кого на машинах стоят процессоры с Hyper-Threading'ом, наверняка обратили внимание, что на большинстве задач, которые достаточно пригружают процессор, загруженность процессора все равно не поднимается выше 50%. Полагаю, что это связано принципиальной "однопоточностью" задачи. Даже в том, случае, когда приложение многопоточное, в нем все равно существует только один "рабочий поток", который и содержит в себе массивные вычисления.
Функциональные языки позволили бы (в данном случае) более эффективно использовать процессорное время.
Здравствуйте, bleed, Вы писали:
B>То есть, насколько я понял, большинство считает функциональное программирование забавной игрушкой и не более того. Никто не знает реальных коммерческих проектов, которые бы велись на функциональных языках?
Еще в 80-х годах, когда мы из Ташкента работали с ленинградской Авророй, для реализации системы сделали следующее:
1. В PL/I встроили лиспоскую машину, написав отдельную библиотеку.
2. Разработали специальный новый язык программирования типа Planner и реализовали интерпретатор на конгломерате PL/I+Lisp.
3. на этом языке запрограммировали договор.
А вы говорите...
Хочешь быть счастливым — будь им!
Без булдырабыз!!!
Здравствуйте, bleed, Вы писали:
B>То есть, насколько я понял, большинство считает функциональное программирование забавной игрушкой и не более того. Никто не знает реальных коммерческих проектов, которые бы велись на функциональных языках? B>Я почитал то, что есть у Microsoft по F#, и там, в общем-то, написано, что мы, мол, сделали этот язык чуть ли не просто в демонстрационных целях, чтобы продемонстрировать, что любой язык можно реализовать под .NET и связать с кодом на C#. И все. Грустно
Ну не грустно, не грустно. AutoCAD юзает в качестве скриптового языка диалект AutoLISP
Тоже небось, неспроста.
Плюсы лиспа
* очень простой рантайм
* очень простой парсер (писаный на нём же самом, кстати)
* не такой мозголом как форт
Среда математического анализа Derive (это где-то 1990 год) сделана на muLisp. (исходников не видел, но содержимое экзешника говорило само за себя: ядро мюлиспа + дамп памяти лиспмашины).
Все так, но массово функциональные языки использоваться в ближайшее время не будут.
Обычное программирование и функциональное (впрочем и логическое тоже)
уж слишком отличаются. Мыслить, когда пишешь на Лиспе, надо просто иначе.
Это примерно так же как и с Прологом.
Если знаешь основы обычного программирования,
то в Прологе постоянно не хватает обычных переменных,
циклов и прочих обычных для процедургого программирования вещей.
С функциональными языками будет примерно то же самое.
Здравствуйте, bleed, Вы писали:
B>Думаю, здесь найдутся знающие люди, потому спрошу. B>Есть у меня идея залезть в функциональное программирование поглубже. Потому встает вопрос, какой язык выбрать для изучения (благо, выбор есть). B>Я в свое время довольно неплохо изучил Лисп (в его Common варианте). Но это было во время учебы, и цели были чисто академические. Сейчас интерес несколько другой: применение в реальных проектах на практике. B>Поэтому интересует современный и активно развивающийся функциональный язык. Кто что может посоветовать? B>Еще поделитесь своими соображениями относительно перспектив функционального программирования. Или будущего нет?
Я сам большой поклонник функционального программирования, так что, если что милости прошу в приват