metaclass: (Default)
[personal profile] metaclass
http://it-talk.org/post76648.html#p76648
Лень там регистрироваться и сраться некогда, все равно ничего нового там не скажут.

А насчет использования функциональных языков: лично у меня в хаскеле основной проблемой было отсутствие либ для интеграции с внешним миром (или наличие, например, на hackage 100500 вариантов для одной и той же цели, ну вот когда с этим разбираться?).
С Clojure все оказалось на порядки проще - там даже ORM не то, чтобы нужен - clojure.java.jdbc работает со свистом с жабским провайдером Firebird.

Мне, собственно говоря, от языка для серверной опердени требовалось следующее:
0) Немногословность. Т.е. чтобы было по крайней мере сравнимо с изготовлением того же на SQL/хранимых процедурах. Сразу языки вроде C# и Java отпадают - "многословные".
1) Наличие нормальных либ доступа к Firebird - есть Jaybird. Кривоват в плане обработки ошибок и кидаемых исключений - но все работает.
2) Наличие нормального низкоуровневого веб-сервера или фреймворка. Т.е. никаких страниц, скаффолдингов, генерации целых сайтов - только хендлеры "запрос-ответ" привязанные к роутам. compojure+ring - идеально. А, и чтобы сервер запускался отдельным приложением, без интеграции в IIS/Apache/чорта лысого.
3) Наличие нормального типа для денег. Чтобы для суммирования не нужно было кастить вдоль и поперек. BigDecimal, 100500.0M
4) Наличие нормальных типов для даты и времени. org.joda.time + clj-time
5) Чтобы при баге в либе я мог ее пофиксить или как минимум найти, не сломав себе глаза.
6) Наличие единообразного, общепринятого подхода. В хаскеле с этим, простите, пиздец. Кто в лес, кто по дрова - у кого вычисления на типах, у кого template haskell, кто-то кидает исключения, кто-то ErrorT, кто пихает IO во все поля, у кого-то это вынесено в параметры.

Из вариантов рассматривались: C#/Java/F#/Haskell/Python. А сделано все в итоге было на clojure. Наименее многословный, либы устроены ПРОСТО, удобно работать с БД, метапрограммирование, можно использовать всю жабью инфраструктуру.

C# - много мусорного синтаксиса, привязан строго к виндам. В mono я не верю. Адова интеграция в винды, GAC, бесит.

Java - проще оказалось посмотреть, как ее использует [livejournal.com profile] artureg, разобраться сначала с инфраструктурой, а потом использовать из clojure. Потому как сам язык еще более отсталый чем C#. Зато инсталлируется в лоб.

F# - всем хорош, но ждать 3 версии, пока допилят type providers, некогда. И, внезапно(!), для моих задач в нем функции постоянно разрастались в количестве параметров, вплоть до нечитабельности. Вывод типов в нем не очень, много где нужно аннотировать, иначе не работают конструкции вида s.Trim() - он просто не может догадаться, что s это строка. Но тем не менее - используется сейчас в двух мелких проектах и еще в одном не сильно мелком внутреннем, для кодогенерации.

Haskell - нет либ доступа к FB, бардак ада на Hackage, кровавый матан в либах.

Python - сделал один проект на нем, но как следует не осилил.

Опять же - синтаксис "с отступами" по итогам - не совсем удобная вещь, т.к. код приходится располагать так как удобно компилятору, причем иногда бывают невнятные эффекты с этим (сталкивался в F# и хаскеле).

Clojure рассматривалась как единственный вариант с внятным метапрограммированием для совсем другого проекта, в прошлом году. Сделал несколько тестов, проверил что все работает с FB, проверил на предмет производительности и забросил. А сейчас, когда понадобилась срочная доработка опердени, причем с совсем дурной логикой, которую иначе как на декларативных языках описывать сложно - достал из загашника, случайно нашел веб-фреймворк под это дело, за 15 минут (не зная языка!) добился "веб-сервер выполняет запрос к БД и отвечает json-ом на клиент" и пошел пилить на нем со страшной скоростью.

Date: 2012-02-28 05:27 am (UTC)
From: [identity profile] theiced.livejournal.com
ша придут дурачки и объяснят тебе что ты ничего не понимаешь. надо было сначала сходить в лучший супермаркет маськвы и потом сразу написать всё на хаскеле. а если у тебя задачи сложнее чем генерация бесконечного списка простых чисел, то ты сам дурак.

Date: 2012-02-28 06:05 am (UTC)
From: [identity profile] metaclass.livejournal.com
Так если бы было время и было бы нехуй делать - я бы написал для хаскеля собственных либ, но это пиздец от входа.

Date: 2012-02-28 06:36 am (UTC)
From: [identity profile] kurilka.livejournal.com
Ну вот https://github.com/bos , к примеру, так и делает

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-02-28 06:54 am (UTC) - Expand

Date: 2012-03-01 07:15 am (UTC)
From: [identity profile] permea-kra.livejournal.com
В чем, кстати, пиздец ?

Date: 2012-02-28 06:15 am (UTC)
From: [identity profile] acerv.livejournal.com
Какую IDE юзал? как вообще с помогалками\юзабельностью?

Date: 2012-02-28 06:26 am (UTC)
From: [identity profile] metaclass.livejournal.com
Никакой.
Far для редактирования, leiningen для зависимостей-сборки-запуска-repl (и то - разобрался как запускать руками и наделал батников для этих целей)

[livejournal.com profile] artureg использует Idea, [livejournal.com profile] theiced утверждает что надо emacs+slime+swank, но мне лень их настраивать)

Date: 2012-02-28 06:41 am (UTC)
From: [identity profile] acerv.livejournal.com
Ну и в итоге, как все задеплоено? Копия на удаленный хост, жмак по экзешнику?

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-02-28 06:58 am (UTC) - Expand

(no subject)

From: [identity profile] acerv.livejournal.com - Date: 2012-02-28 08:51 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-02-28 08:55 am (UTC) - Expand

(no subject)

From: [identity profile] acerv.livejournal.com - Date: 2012-02-28 09:20 am (UTC) - Expand

Date: 2012-02-28 07:09 am (UTC)
From: [identity profile] artureg.livejournal.com
Idea + La Clojure, который я сейчас дописываю, ибо там кое где черви, и вылазит ядовитая жаба :)

(no subject)

From: [identity profile] acerv.livejournal.com - Date: 2012-02-28 08:52 am (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-28 08:57 am (UTC) - Expand

Date: 2012-02-28 06:23 am (UTC)

Date: 2012-02-28 06:26 am (UTC)
From: [identity profile] metaclass.livejournal.com
Не пробовал, не дошли руки.

Date: 2012-02-28 06:55 am (UTC)
From: [identity profile] blackyblack.livejournal.com
Ещё эрланк по многим пунктам подходит. Но советовать не буду, потому что деплоить сложновато и с датой/временем думать надо.

Date: 2012-02-28 07:33 am (UTC)
From: [identity profile] kurilka.livejournal.com
Про деплой это фантазии.
При использовании того же ребара (хотя можно и руками то же изобразить) весь деплой сводится к upgrade.sh VNS1 (для сборки релиза), затем scp proga-VSN2 hostX:/release_path плюс ./proga admin upgrade VSN2 на hostX (ес-но при желании можно в скрипт из 3 строчек запихать, если прям сильно хочется в одно действие, лучше, конечно, релиз тестировать на "препроде")
Касательно дат пользовался https://github.com/daleharvey/dh_date (правда хитрожопых операций не требовалось, ну и таймзон вроде как нет)

Date: 2012-02-28 07:35 am (UTC)
From: [identity profile] theiced.livejournal.com
ага. scp, .sh. щаз.

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2012-02-28 08:00 am (UTC) - Expand

(no subject)

From: [identity profile] blackyblack.livejournal.com - Date: 2012-02-28 08:30 am (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2012-02-28 09:31 am (UTC) - Expand

Date: 2012-02-28 06:55 am (UTC)
From: [identity profile] c-a-s-u-s.livejournal.com
Хм, критерий - специалистов на этом языке можно в случае чаго найти на рынке труда, не рассматривался вообще?

Date: 2012-02-28 07:02 am (UTC)
From: [personal profile] alll
Казалось бы утверждение

> за 15 минут (не зная языка!) добился "веб-сервер выполняет запрос к БД и отвечает json-ом на клиент" и пошел пилить на нем со страшной скоростью.

закрывает вопрос немногим менее чем полностью. :)

Date: 2012-02-28 07:08 am (UTC)
From: [identity profile] artureg.livejournal.com
желающих писать на лиспе оказалось очень много, больше чем предложений

Date: 2012-02-28 07:10 am (UTC)
From: [identity profile] metaclass.livejournal.com
Айсед есть, его сосед по дому есть, артурег есть - этого хватит, чтобы мою опердень с нуля переписать за пару месяцев :) Там больше вопрос в знании предметки, чем в языке.

И самое основное - мое руководство вопрос "где искать специалистов" вообще не рассматривает, несмотря на мои неоднократные объяснения, чем грозит использование не-мейнстримных языков. Поэтому я использую то, что наиболее удобно/хорошо подходит под предметку, вне зависимости от мейнстримности.

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-28 07:20 am (UTC) - Expand

(no subject)

From: [identity profile] craneop.livejournal.com - Date: 2012-02-28 07:23 am (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-28 07:28 am (UTC) - Expand

(no subject)

From: [identity profile] craneop.livejournal.com - Date: 2012-02-28 07:35 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-28 07:36 am (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-28 07:44 am (UTC) - Expand

(no subject)

From: [identity profile] craneop.livejournal.com - Date: 2012-02-28 07:45 am (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-28 07:48 am (UTC) - Expand

(no subject)

From: [identity profile] theiced.livejournal.com - Date: 2012-02-28 07:33 am (UTC) - Expand

Date: 2012-02-28 07:45 am (UTC)
From: [identity profile] dair-spb.livejournal.com
О дивный, новый мир.

Date: 2012-02-28 07:56 am (UTC)
From: (Anonymous)
няяя!
няяяя!!!

а про руби в этом списке ничего нет (

Date: 2012-02-28 08:03 am (UTC)
From: [identity profile] metaclass.livejournal.com
Не осилил. Синтаксис напрягает, с деньгами непонятно что, рельсы объемные, в дебиане поломан )

(no subject)

From: (Anonymous) - Date: 2012-02-28 08:14 am (UTC) - Expand

(no subject)

From: [identity profile] bambr77.livejournal.com - Date: 2012-02-28 09:02 am (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-02-28 09:20 am (UTC) - Expand

(no subject)

From: [identity profile] bydl0coder.livejournal.com - Date: 2012-02-29 09:18 am (UTC) - Expand

Date: 2012-02-28 08:02 am (UTC)
From: (Anonymous)
а можно теорвопрос - я просто думал что когда все любят метапрограммировать, то потом херово работать в команде.
раз "поправить чужие косяки в кложур - дело недолгое", то этой проблемы нет, получается?

(так вот вопрос, а почему не взлетел в своё время лисп? я хз кого спрашивать, и кто из умных и старых людей это всё застал. или вот какой-нить смолтолк - что с ним случилось?)

Date: 2012-02-28 08:05 am (UTC)
From: [identity profile] metaclass.livejournal.com
А метапрограммировать особо надобности пока не возникало, ну за исключением мелочей типа "отладочный макрос показывать значения и подписи".
Оно и так хорошо более чем.

А лисп взлетел, просто он взлетел ну очень давно, сугубо в специфических областях, например, GUI я на нем писать наверно не буду, разве что код на дельфи генерить из него :)

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-02-28 12:28 pm (UTC) - Expand

(no subject)

From: [identity profile] metaclass.livejournal.com - Date: 2012-02-28 12:40 pm (UTC) - Expand

(no subject)

From: [identity profile] si14.livejournal.com - Date: 2012-02-28 12:48 pm (UTC) - Expand

(no subject)

From: [identity profile] kurilka.livejournal.com - Date: 2012-02-28 01:40 pm (UTC) - Expand

(no subject)

From: [identity profile] tonsky.livejournal.com - Date: 2012-02-29 11:43 am (UTC) - Expand

Date: 2012-02-28 08:04 am (UTC)
From: [identity profile] veremeenko-alex.livejournal.com
Все кроме С# - от лукавого! :)

Date: 2012-02-28 08:17 am (UTC)
From: [identity profile] artureg.livejournal.com
тоесть ты ничего кроме додиеза не осилил?

(no subject)

From: [identity profile] veremeenko-alex.livejournal.com - Date: 2012-02-28 08:21 am (UTC) - Expand

(no subject)

From: [identity profile] artureg.livejournal.com - Date: 2012-02-28 08:49 am (UTC) - Expand

(no subject)

From: [identity profile] cp-poster.livejournal.com - Date: 2012-02-28 06:31 pm (UTC) - Expand

Date: 2012-02-28 10:16 am (UTC)
From: [identity profile] guamoka.livejournal.com
Гы. По делу и со вкусом.

Profile

metaclass: (Default)
metaclass

April 2017

S M T W T F S
      1
2345678
9101112 131415
16171819202122
23242526272829
30      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Aug. 24th, 2025 03:45 am
Powered by Dreamwidth Studios