LINUX.ORG.RU
решено ФорумTalks

А что пишут на функциональных языках?

 , , императивщина, ,


1

8

Предисловие: не холивара ради

И так, возьмем императивщину. Я пользовался ей и только ей, всякими скриптовыми языками, Сишкой, Питоном. Питон, да, отчасти функцииональный, но лямбдами я в нем так и не пользовался. Т.е. строчил обычные такие поделки, с кучей функций, без ООП, тестирования, паттернов и прочей фигни для зарабатывания денег, которая напрочь убивает фан от кодинга. А для меня, отсутсвие этого самого фана критично, по тому, что я не вижу смысла кодить за бесплатно без него. И да, писать компилятор си-подобного языка на конструкторе игр было весело, как ни крути.

Далее, возьмем функциональщину. Вот, хоть убей, я не понимаю, что на ней можно написать. Сам я осилил только Cat, прикольный такой ЯП, очень простой. Поигрался и забыл, ибо, повторяюсь, зачем он? Хаскель... вроде как, такой чисто функциональный язык, математически верный, куча фич классных даже для меня, человека который с 14 лет кодит на императивщине.

В общем, я не осуждаю функциональные языки, просто не понимаю, зачем они. Ну, само собой, вычислять матан они наверное подходят, а что еще?

Deleted

Последнее исправление: CYB3R (всего исправлений: 1)

Ну, само собой, вычислять матан они наверное подходят, а что еще?

Этого уже более чем достаточно. Еще 5-10 лет назад по количеству написанного кода лидировал не С, а фортран. Именно за счет того, что на нем несколько десятилетий фигачили свои расчеты почти все работники всяких НИИ.

soomrack ★★★★★
()

писать компилятор си-подобного языка на конструкторе игр

попродробнее, лол.

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

Знаю, что украинский приватбанк использует эрланг (они даже периодически вакансии постят).

О лиспах в коммерческих целях ничего не знаю.

rikardoac
()
Последнее исправление: rikardoac (всего исправлений: 1)

можно посты на русский переводить, например

dmitry_malikov ★★
()
Ответ на: комментарий от soomrack

Хотя да, согласен, матан вычислять это уже хорошо. Но вот на ЛОРе, полно людей (скорее всего) не математиков, которые пишут на лиспах и хаскелях, а что вы там пишите?

Deleted
()

Ну, само собой, вычислять матан они наверное подходят, а что еще?

Кроме матана? Ну пугать ООП программистов еще, наверно

comp00 ★★★★
()
Ответ на: комментарий от soomrack

Еще 5-10 лет назад по количеству написанного кода лидировал не С, а фортран. Именно за счет того, что на нем несколько десятилетий фигачили свои расчеты почти все работники всяких НИИ.

Разве не КОБОЛ занимает первое место по объемам написанного кода за всю историю?

yoghurt ★★★★★
()

Оно подходит для расширения сознания :)

true_admin ★★★★★
()
Ответ на: комментарий от soomrack

Там, где нужно высокопроизводительное числодробление, с фортраном и си тягаться бесполезно. Само собой, дробится всё кластерах с openmp, а теперь еще и gpu.

Для легкого прототипирования (как числодробильного, так и символьного) есть всякие матлабы, вольфрамы, и еще куча крутых и мощных пакетов.

Для всяких статистических вычислений есть специализированный r.

В итоге не ясно, куда здесь можно было бы приткнуть функциональные языки «общего назначения».

Manhunt ★★★★★
()
Последнее исправление: Manhunt (всего исправлений: 1)

поскольку это языки общего назначения, то они подходят для любой области и применимость их в каждом конкретном случае определяется дополнительными факторами, такими как:

* наличие библиотек (самый важный)

* предметная область, с т.з. накладок от runtime языка

* опыт команды

qnikst ★★★★★
()
Ответ на: комментарий от Manhunt

Для всяких статистических вычислений есть специализированный r.

я знаю одну немаленькую корпорацию, которая а). переползла на haskell для вычислений б). очень пытались и r максимально выпилить/использовать не вылезая из haskell. Не буду говорить, кто это, хотя это слонёнок: http://www.hpcwire.com/hpcwire/2013-06-24/lustre_founder_spots_haskell_on_hpc...

qnikst ★★★★★
()
Ответ на: комментарий от rikardoac

попродробнее, лол.

Ну ок. Года два (а уже может и три) назад я познакомился с такой штукой как интерпретация и компиляция, прочитав вики. Потом наткнулся на сайт с «учебными» моделями ПК, там я понял, что ассемблер - это не сложно.

После всего этого, решился написать свой ассемблер, для своего процессора, вот. собственно, процессоров у меня этих выдуманных штуки три, под один я компилировал сишку, второй загнулся, а третий, имхо, самый интересный. Он сочетает в себе все плюсы (ну, пару минусов он тоже перенял) RISC и CISC. Короче, носит статус эксперементального, я на нем сам кодю. Самым большим его плюсом являеется до безобразия простой набор команд, можно даже в logisim запилить хардварную реализацию (почти все операции регистр-регистр, даже переход в процеду, лол).

Дальше, про сишку. Сишка хороша тем, что она простая. Но вот я и запилил подмножество. Реализовал все базовые конструкции, одномерные массивы, операторы и указатели, куда же без них. В пролете остались extern, static, union, struct, typedef. Препроцессор тоже не делал, ну его. Гордость - это такая же модель вызовов, как в сишке. Т.е. есть обыный printf, не ограниченное число аргументов (точнее не фиксированное).

Как то так, может еще че вспомню.

Deleted
()

Другой подход к написанию программ. В императивщине принято использовать изменяющиеся состояния, в функциональщине их использование сведено к минимуму.

PolarFox ★★★★★
()
Последнее исправление: PolarFox (всего исправлений: 1)
Ответ на: комментарий от buddhist

А в чем преимущество перед Сишкой, например? В той же вики пример простейшей нейро-сети на си++, кажется.

Deleted
()
Ответ на: комментарий от Manhunt

В итоге не ясно, куда здесь можно было бы приткнуть функциональные языки «общего назначения».

Вот, я про это же.

Deleted
()
Ответ на: комментарий от yoghurt

Коммерческого — возможно, но в целом — точно фортран.

soomrack ★★★★★
()
Ответ на: комментарий от yaspol

Борду видел, прикольно. xmonad, да, точно, вспомнил. Про йожиков не знал.

Deleted
()
Ответ на: комментарий от rikardoac

Headgewars, наверное.

П.С. Не за что.

Deleted
()
Ответ на: комментарий от Manhunt

Там, где нужно высокопроизводительное числодробление, с фортраном и си тягаться бесполезно. Само собой, дробится всё кластерах с openmp, а теперь еще и gpu.

Все правильно, но часто важна скорость разработки, а не скорость вычислений.

Для легкого прототипирования (как числодробильного, так и символьного) есть всякие матлабы, вольфрамы, и еще куча крутых и мощных пакетов.

Все правильно, но только вот синтаксис у них убогий, их достоинство это огромные библиотеки. Для нестандартных штук их использовать некомфортно (скорость разработки низкая, а выразительность языка еще ниже).

Для всяких статистических вычислений есть специализированный r.

Аналогично. Это язык заточенный под статистику.

В итоге не ясно, куда здесь можно было бы приткнуть функциональные языки «общего назначения».

Общего назначения, имхо, не нужно. А вот язык заточенный под какие-нибудь другие специфичные мат.задачи вполне может быть востребован.

soomrack ★★★★★
()

У меня поменялся взгляд на программирование в целом после знакомства с хаскелем, а потом и остальными из этой группы. До этого функциональный подход я использовал только в перле, и то неявно: map {$_=>1} grep {$_} split /$sep/, $str. А после — функция стала обычным объектом, и оказывается писать функционально можно почти на любом языке. Императивщина и функциональщина в большинстве случаев взаимозаменяемы, но зачастую что-то сильно проигрывает в понятности кода.

Мне кажется ты просто путаешь уровень функциональности языка с уровнем его академичности. На последних и не должно быть много не-матан проектов.

arturpub ★★
()

Pandoc, например. Аналогов у этой софтинки, практически, нет.

yaspol
()
Последнее исправление: yaspol (всего исправлений: 1)
Ответ на: комментарий от arturpub

Мне кажется ты просто путаешь уровень функциональности языка с уровнем его академичности. На последних и не должно быть много не-матан проектов.

Оу, вполне, может быть. Но хаскель с лиспом позиционируются как ЯП общего назначения.

Deleted
()

я не понимаю, что на ней можно написать

на ней можно написать все.

Rastafarra ★★★★
()

Klockwork - анализ и верификация кода, на Haskell. Frama-C - анализ и верификация кода, на OCaml

XVilka ★★★★★
()
Ответ на: комментарий от Deleted

Система типов у хаскеля явно не рассчитана на программиста общего назначения. Экзистенциальную квантификацию я лично не осилил. Лисп — да, но он не такой уж и «функциональный», если ты про pure functional. Лисп это лисп.

arturpub ★★
()

Чистый ФП - онанизм. А языки с императивным и функциональным стилем - способ повысить уровневость языка

vertexua ★★★★★
()

Ты не поверишь:

http://www.parsci.com/ - высокочастотный трейдинг, компиляция VHDL кода, распределенные вычиления

http://www.tsurucapital.com/en/ - высокочастотный трейдинг, компиляция Verilog/VHDL, распределенные вычисления

http://www.barclays.co.uk/ - свой язык для управления торговлей опционами.

http://scrive.com/en/ - цифровые подписи

http://www.silkapp.com/ - социалочка для постинга списков, с очень крутым wysiwyg, генерация JS, СSS

80% случаев без матана, это нормальные обертки поверх скриптовых и других неудобных языков.

Я лично занимаюсь VHDL компиляцией для fpga, SDR для телекоммуникаций, в стартапе. Если б мы писали все на С/С++, то нужна была бы или большая команда или очень много времени.

Sigrlami
()

это хорошо что не понимаешь - не все потеряно.

От функциональшины фич полезных и эффективных немало - например горячая подгрузка кода и минимум расширение кругозора на порядок.

swwwfactory ★★
()

wing3d на эрланге написан. Хотя конечно его можно было и на qt написать, там всё равно внутри opengl. А opengl и в африке opengl.

nanoolinux ★★★★
()
Ответ на: комментарий от Deleted

а что вы там пишите?

На CL пишу всякие генераторы кода, решений для лаб и прочее, что хочется писать просто и беззаботно. Ну и функции на ELisp, конечно.

А haskell язык больше академический, чем практический. На нем полезнее писать не для работоспособности, а для понимания работоспособности.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.