Многие на форуме хвалят Lisp. В силу обстоятельств я начал изучать Erlang. В принципе, они все очень похожи: Erlang, Lisp, Haskell. Кто что думает о функциональных языках?
List - незнакомый мне язык. К функциональным языкам отношение хорошее, но без фанатизма. Чистая функциональщина мне не нравится, предпочитаю сам решать какую парадигму использовать.
1. Думаю, что ценность функционального программирования для решения не-научных задач сильно преувеличена. 2. Думаю, что на практике функционального программирования как парадигмы в чистом виде не существует, и любой большой проект на функциональном языке будет представлять собой нечто императивное/объектно-ориентированное с некоторыми вкраплениями ФП. 3. Думаю, что идеи функционального программирования чем дальше - тем больше будут ассимилироваться в не_функциональных языках (С++0x, Python, итд.) где сейчас имеются их зачатки. 4. Думаю, что Erlang не стоит мешать в одну кучу с Хаскелем, Лиспом, Окамл-ом, итд, т.к. главная его "фишка" - это параллельные вычисления, а функциональность является лишь её побочным эффектом.
функциональное программирование хорошо тем что там есть чистые функции - их проще тестировать. также есть некоторое повышение читаемости из за алгоритмов над последовательностями (всяких map и т.п) а функциональщина в чистом виде - миф. global state можно пытаться игнорировать, но оно существует и никуда не денется
Опечатка, конечно же lisp. А есть ли для эрланга какая-нибудь удобная среда разработки? А то через putty из под линуховской консоли в vim'e уж очень непривычно и неудобно. Хотелось бы работать с проектами в нормальной виндовой среде разработки со всякими go to declaration, go to definition, с подсветкой синтаксиса. Проект лежит на линуховском серваке, но папку с проектом можно смонтировать как сетевой диск. Сейчас хочу хорошую сред разработки для себя подобрать. В эрланге меня поразила такая фича: Code (Text): fact(0) -> 1; fact(N) -> N * fact(N - 1). ... fact(10000000). И ведь вычисляет, никакого переполнения!
я считаю, вообще функциональные решения хороши для небольших проектов, а когда проект разрастается, то программисты обычно пытаются эмулировать объектно-ориентированность с помощью средств функционального языка... но это так, имхо основанное на собственном опыте... лисп ненавижу вообще, язык может и хороший, и хорошо продуманный, но такой синтаксис у него тошнотный.. зависит от реализации, есть еще куча языков, которые в состоянии работать с числами бесконечной разрядности... ключевым фактором здесь является время вычисления...
а еще быстрая сортировка: qsort([]) -> []; qsort([H|T]) -> qsort([X || X <-T, X<H]) ++ [H] ++ qsort([X || X<-T, X>=H]). на Си так быстро не написать
да-да))) и че?))) на эрланге не написать дров например))) эрланг, насколько я помню, не такой расширяемый как руби например))) каждый язык предназначен для своего, не надо разводить холивар)))
Rel да, без священной войны, меня просто поразила лаконичность этого языка. да, на нем дров не написать. да, каждый язык предназначен для своего.
Ваш quicksort работает над списком, при этом порождая временные списки в буквальном смысле направо и налево. Вот попробуйте тоже самое непосредственно над входным массивом.
Мне кажется, что функциональные языки как-раз таки в лучшей степени подходят для написание подобного софта. Уже на уровне самого языка продумана работа с процессами, событиями, синхронизация. Помню как-то NDIS фильтр писал. Вот уж действительно гемор. Вроде всё просто, понятно. Но когда начинаешь реализовывать асинхронную обработку сообщений начинается какая-то задница.
Booster, не совсем Вас понял. То есть Вы утверждаете, что эрланговский квик сорт будет работать быстрее сишного?