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

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

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


1

8

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

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

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

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

Deleted

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

Упираться в функциональную парадигму как окончательное решение для всего и вся тоже не вижу смысла. Иметь функциональные куски кода, там где это естественно, why not.

seg-fault
()

Erlang Ъ-enterprise.

Мне попадалась жёлтая статейка, якобы Erlang любят в Ъ-enterprise'е за то что он функциональный, что даёт возможность прогонять тесты для всех функций на почти все мыслимые варианты условий.

Camel ★★★★★
()
Ответ на: Erlang Ъ-enterprise. от Camel

Erlang — замечательный язык, сервера на нем писать — одно удовольствие.

unfo ★★★★★
()

Могу сказать про F#. В MS с его помощью написали движок (который занимается ранжированием вроде) для поисковика Bing.

Лично я использовал F# для асинхронного поиска WCF сервиса в локальное сети (нужно было либо найти уже поднятый сервис, либо, если не нашли сервис, то поднять его на текущем компьютере). Можно было это и на C# это сделать, но на F# это было проще и понятней написать).

P.S. код поиска использовался из приложения написанного на C#.

P.S.S. стоит учесть, что код на F# можно собрать в стандартную dll для .Net и прозрачно использовать из C#.

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

Из своей практики скажу — в функциональном стиле очень удобно описывать процессы (но не установки). Ну и чистое ФП не нужно.

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

дело за малым, показать что фраза «из своей практики» чего-то стоит =)

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

добавлю:

http://fpcompete.com/ - управление кластерами

http://vectorfabrics.com/ - компиляторы

http://welltyped.com/ - все подряд, например управление ядерным реактором

http://intel.com/ - исследовательская группа для внутренних вычислений

http://google.com/ - управление и проверка работоспособности внутренних сервисов

из того, что знаю, про vectorfabrics и интел из вакансий, про остальное из внутренних источников.

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

Вполне. Там работает минимум 3 русских. Я знаю точно Зефиров http://thesz.livejournal.com/, он даже уже на страничке с людьми есть, как главный архитектор и еще несколько людей они набирали в течении пары месяцев с начала года.

Sigrlami
()

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

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

Для себя пишу велосипед на coq для верификации hdl-описаний железа.

Было бы желание, а проекты всегда найдутся.

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

Просто не нужно.

очень странное утверждение в отношении к любому desktop софту.

всё просто: есть 3.5 задрота. Им нужно. Они пишут Over9000 разных тетрисов на sed, чисто для того, что-бы доказать, что микроскопом _можно_ забить гвоздь.

Доказали.

Что дальше?

drBatty ★★
()

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

Годные, функциональные программы.

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

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

Телеком: серверы, считалки траффика, SCADA.

Помимо этого можно применять наработки функциональных ЯП, например модель акторов.

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

всё просто: есть 3.5 задрота. Им нужно.

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

У hbro и manatee есть более адекватные и юзабельные аналоги, в таком виде, в котором они существуют они, действительно нужны только 3.5 задротам.

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

gitit, alex, happy, darcs, house, pandoc - это не десктоп софт.

во freearc хацкеля почи нет (наскольок я помню)

blobs, diagrams это вообще либы.

glome, frag, himerge - на знаю, не видел.

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

Дизъюнкция

Твое нужно и нужно Коли Герасимова это 2 разных множества, тебе нужны программки для Motion Tracking-a и все остальное не нужно, а Коле нужен софтовый миелофон и он считает твои приложения ненужными. Улавливаешь, что все относительно?

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

gitit, alex, happy, darcs, house, pandoc - это не десктоп софт

Вики-платформа, ОС и конвертер документов - не десктоп-софт?

diagrams

Да, ошибся, это библиотека.

blobs ... это вообще либы

С гуём? Это что-то новенькое.

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

учитывая, то что на linux всего 35 задротов (и 0 незадротов)

у меня для тебя плохие новости: Во всяких google, да в ibm и так всех на linux пересадили. В Этой Стране Кровавая ГБня тоже не дремлет. Венда да гейос остались лишь дома у безработных маргиналов.

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

Вики-платформа, ОС и конвертер документов - не десктоп-софт?

естественно, pandoc близок к desktop софту, но и то не подходит.

blobs

тут уж я ошибся

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

Во всяких google, да в ibm и так всех на linux пересадили.

это как-то относится к desktop софту и домашним компьютерам?

Венда да гейос остались лишь дома у безработных маргиналов.

мне бы хотелось в это верить, но я всё же прошу тебя предъясвить подтверждения этого утверждения.

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

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

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

Во всяких google, да в ibm и так всех на linux пересадили.

это как-то относится к desktop софту

блжад, я про ДЕСКТОПЫ!

и домашним компьютерам?

а десктопы только дома? У меня для тебя плохие новости, если ты разработчик ДЕСКТОПНОГО домашнего ПО.

Венда да гейос остались лишь дома у безработных маргиналов.

мне бы хотелось в это верить, но я всё же прошу тебя предъясвить подтверждения этого утверждения.

заняться мне больше нечем, чем доказывать белизну белого и мокрость воды..

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

блжад, я про ДЕСКТОПЫ!

а какого черта ты в этой теме делаешь? а ну брысь отседова!

а десктопы только дома? У меня для тебя плохие новости, если ты разработчик ДЕСКТОПНОГО домашнего ПО.

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

заняться мне больше нечем, чем доказывать белизну белого и мокрость воды..

мда..

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

а какого черта ты в этой теме делаешь? а ну брысь отседова!

тут проигровые консоли базар школьников? Тогда я слился...

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

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

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

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

gitit, alex, happy, darcs, house, pandoc - это не десктоп софт.

что из этого могу я использовать? Лень гуглить, чем ЭТО лучше «аналогов»?

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

во первых экзотика: нужно впулить в систему ghc чтобы компильнуть сервер

во вторых экзотике: нужно читнуть про хаскелл, чтобы чтото подкрутить или поправить

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

А по-твоему какие перспективы у F# сейчас? Я вижу, что на сайте fsharp.org есть много интересного материала. И сильно ли отличается F# 3.0 от 2.0?

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

А по-твоему какие перспективы у F# сейчас? Я вижу, что на сайте fsharp.org есть много интересного материала. И сильно ли отличается F# 3.0 от 2.0?

Честно говоря понятия не имею, т.к. больше 1.5 лет не пишу вообще ничего под .Net и, соответственно, не трогаю C# и F#.

Если я правильно помню, то в F# 3.0 должны были добавить Type Providers, что выглядело круто (это как получение API сервиса автоматически при указании URL сервиса в коде), но тут проблема в том, что эти API кто-то ещё должен был написать для своих сервисов :) На момент выхода вроде был готов API от stackoverflow и на его примере показывали работу фичи.

+ поддержку LINQ (что тоже отлично, т.к. оптимизация LINQ в .Net была отличной (мало того, что код становился компактней, так и быстрей иногда становился, мерил во времена .Net 4.0, что было после - хз)).

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

P.S. сейчас глянул fsharp.org. Мои мысли подтвердились - основные новости о Type Providers, что, имхо, говорит о том, что основное приложение F# - высокоуровневый клей для готовых компонентов .Net в тех местах, где писать на C# либо слишком сложно, либо нет никакого профита (небольшие скрипты для которых отдельная программа есть оверхед). Т.е. можно считать F# «скриптовым» языком под .Net с кучей плюшек.

Писать же на F# большие программы для работы с БД, сайты и т.п. я бы лично не стал. Причина проста - в VS20xx поддержка F#, по сравнению с C#, довольно слабая. Поэтому работать с WPF, WCF и др. технологиями от MS будет тяжело, т.к. там оч. всё многословно, но вот для C# есть кучи генераторов кода, что решает проблему многословности.

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

Спасибо за подробный ответ. Просто присматриваюсь снова к F#. Он теперь включен в состав mono. Так что, во многих случаях F# выглядит не хуже, чем тот же haskell. В смысле инфраструктуры. Ну, и порог вхождения значительно ниже, что иногда важно. Еще интересует, насколько удобно работать в mono develop, но это я сам как-нибудь смогу оценить в ближайшее время. Пытаюсь теперь понять, насколько F# может быть интересен мне коммерчески.

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

Он теперь включен в состав mono.

Я бы сначала проверил качество работы кода под моно (особенно скорость). Тут где-то недавно видел сравнение F#, haskell и Scala. Так вот, под mono (в Linux) F# был что-то в 1.5-2 раза медленней чем под Windows и проигрывал Scala, когда под Windows наблюдалось обратная ситуация (Scala проигрывала F#).

P.S. нашёл ссылку через гугл: http://www.slideshare.net/pt114/haskell-vs-f-vs-scala

не особо вчитывался, что именно они там мерили, но разница в скорости между Windows\Linux у F#(mono 2.11.1 vs .Net 4.0) и Scala (JVM 1.7) очень удивила.

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

Раньше у меня F# под Mono еще сильнее отставал. Разница по сравнению с .NET была на порядок. Это из-за использования хвостовой рекурсии, которую mono старался поддерживать, но делал это откровенно плохо. Сегодня прочитал, что в одном из релизов mono они это дело улучшили.

Для проверки достаточно взять какое-нибудь долго-работающее вычисление Async. Там все будет видно. Но у меня пока нет mono.

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

во вторых экзотике: нужно читнуть про хаскелл, чтобы чтото подкрутить или поправить

напиши в кафе или HUG тут же желающие подтянуться, так что придётся выбирать лучшее решение.

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