This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2017-03-10
Channels
- # aleph (1)
- # aws-lambda (1)
- # beginners (80)
- # boot (20)
- # cider (75)
- # cljs-dev (45)
- # cljsjs (1)
- # cljsrn (11)
- # clojure (428)
- # clojure-dusseldorf (13)
- # clojure-italy (4)
- # clojure-russia (153)
- # clojure-spec (47)
- # clojure-taiwan (1)
- # clojure-uk (62)
- # clojurescript (84)
- # cursive (19)
- # datascript (96)
- # datomic (75)
- # dirac (9)
- # docs (3)
- # emacs (19)
- # jobs (5)
- # jobs-discuss (20)
- # jobs-rus (17)
- # lein-figwheel (5)
- # leiningen (1)
- # liberator (4)
- # luminus (12)
- # off-topic (4)
- # om (31)
- # onyx (102)
- # pamela (1)
- # parinfer (3)
- # pedestal (3)
- # proton (1)
- # protorepl (14)
- # re-frame (54)
- # reagent (22)
- # rum (40)
- # spacemacs (2)
- # specter (8)
- # test-check (5)
- # unrepl (110)
- # untangled (80)
- # vim (3)
- # yada (46)
Друзья, не холивара ради, а в целях познания объективной истины. Начитался я обзоров разных, в голове всё только ещё больше перепуталось. Если бы перед вами стояла задача выбрать между Go и Clojure, что бы вы выбрали, если предположить, что у вас личных предпочтений нет? Для каких задач Clojure лучше, чем Go и наоборот? И как вы думаете этот ответ изменится в течении, скажем, 5-10 лет?
Потому что я слышу такие идеи: 1) Go лучше потому что ... 2) Clojure лучше потому что ... 3) Что лучше зависит от задачи.
Go, скорее всего, если бы не был знаком ни с тем ни с другим. На нем вакансий больше. Если после его выбора кодить, и это будет приносить удовольствие то все ок. К сожалению, мне после Clojure, на Go писать уже не очень нравится.
Меня больше интересует техническая сторона вопроса: если отбосить выразительность языка и количество вакансий, чем они будут отличаться, как инструменты?
Перефразирую: приходит к вам друг, который не понимает в программировании, и спрашивает, у меня вот такой и такой проект, каких программистов мне искать? На Go или на Clojure? И положим я несу ответственность за свой совет.
Go для сервисов, демонов (docker, etcd, consul, ....) Clojure для бизнес логики С Go не работал.
Хотя на Go тоже много чего уже есть, а через 10 лет с его темпами развития, этот фактор выравняется
// Warning: Rant ahead На работе счас гошечка, все домашние и свои проекты на кложуре. Я не понимаю как люди на го пишут, средний пулл реквест на ревью на 200-400 строк, на кложе некоторые целые проекты в 1к укладывают. Обработка ошибок ужасна, map/filter/reduce нету и не возможно заимплеменитить в принципе ибо система типов из 80х. Если вы поняли что такое ФП и полюбили это то от ГО вас будет тошнить
Но иногда-иногда, хочется пописать типы, чтобы нажать компиляцию, чтобы потом убедиться что код скомпилился без ошибок, и получить от этого удовольствие.
Го хорош как тут сказали для всяких low level things, это ж по сути си с типами. Докеры, всякие бд писать, еще веб сервисы тупые где перформанс превыше всего. Но писать бизнес логику на нем это по мне ад
у кого “него”?
да неа, там GC заточен под latency, оно там суб миллесекондс
не могу найти реальные графики, но там реально шустро
дада, я грю они оптимизируют именно под этот кейс
блин не могу найти классную статью которая как раз описывала что JVM GC оптимизирован под долгоиграющие приложения. Т.е. просто для разных целей оптимизированы
Нашел кому интересно https://blog.plan99.net/modern-garbage-collection-911ef4f8bd8e#.ti9gt4sbm
But if you do wish to minimize pause times at the expense of everything else, then by all means, check out the Go GC.
@akond Go и Clojure инструменты для разных задач. Go - для замены С, в качестве разработки системного софта. Clojure - для веб-разработки, для backend' задач на JVM-платформе. Clojure еще подходит для data processing: ETL задачи, преобразование коллекций.
@akond с мобильной разработкой не сталкивался. Однако если clojure туда зайдет, то думаю она порвет всехв плане удобства разработки. Разве что системные сервисы, типа vpn-тунелей делать на ней будет сложнее.
@akond на мой личный взгляд у Clojure самый высокий индекс удовлетворенности программистов. Ни у одного другого языка не встречал подобного. А это очень много значит, по крайней мере для самих программистов.
эта удовлетворенность компенсируется страданием от того как трудно продать кложу во вне
@andfadeev этот момент не совсем к языку относится, а скорее к самому программисту. После знакомства с CLojure в 13 году я пишу только не ней. Работодателя я уведомляю, что разработка будет на Clojure и все. Нравится не нравится - будет так.Я просто больше не хочу тратить свою жизнь не на решение проблем, а на "борьбу с демонами"
нужно учиться обставлять все так, чтобы инструмент для работы выбирал сам мастер, а не тот кто заказывает работу у мастера
респект. Я дак не могу на работу ее протащить, если есть выбор то беру мейнстрим типа ЖС или то что в конторе уже есть ибо понимаю что потом может быть проблемы с hiring
у нас много проходит разных мероприятий. всяких там гуру приглашают лекции прочитать. с силиконовой долины люди приезжают. и вот приехал один крутой чел и со сцены заявил нашим боссам: вы думаете это вы работодатели? Раньше может было и так. Нет теперь это мы (программисты) работодатели...
@mike1452 ну да, респектище. удовлетворенность объективно подтверждали где-то опросами. насчет последнего -- кмк наооборот
off: google cloud дает пробный триал на год на 300 баксов. кто хочет -- щупайте. сижу вот за консолью, ничегонепонятно))
@andmed сейчас очень большую роль играют технологии. не знания, а именно технологии. И тот кто способен быстро вывести решение на рынок, и поддержать решение в дальнейшем - будет в дамках. С этой точки зрения группа программистов выведя стартап может убить целую отрасль. Поэтому банкиры очень в неудобном положении перед такмими стартапами. Пока в области финтеха много хайпов и buzzword'ов но сильно ощущается, что скоро все может измениться.
CLojure это не просто язык. это еще и хорошая философия построения систем, под которую заточен язык. На ней можно быстро и качественно писать софт. Поэтому она первый кандидат, ИМХО, в качестве рабочего инструмента для быстрых мобильных команд.
я сейчас уже в самом банке
проект на ней уже сделан. все еще идут подготовительные работы по вводу серверов.
у меня суть работы не писать софт, а делать архитектуры.
так вот на clojure я очень быстро делаю прототипы, а потом пишу документы и презентации. по должности я должен давать документы и презы.
но бонусом всегда идет протипчик. бизнес в восторге.
короче говоря, есть архитекторы, которые рисуют квардратики и стрелочки. я стараюсь чтобы за моими документами был еще и тех бэкграунд проработан.
дело в том что сбер довольно сильно оторван от реальности, там могут вбухать огромный бюджет в проект, потом не получить никакой выгоды с него, прототипы можно писать на чем угодно, это не тоже самое что выбрать основные технологии в компании, где есть продукт который приносит деньги
у бизнеса все больше вопросов к руководителям, почему готовый прототип на clojure по разработанной архитектуре программисты сбт не могут повторить за то же время.
@andfadeev я особо не смотрю, что делают коллеги по цеху. банк большой. я стараюсь на своем месте делать правильные вещи.
я просто изначално писал про то что выбрать для себя инструмент и писать прототипы, это не тоже самое что убедить команду что надо сменить основную технологию или хотя бы попробовать новое
@andfadeev про убедить команду, это уже личные качества мне кажется. Своих я убедил и на мои семинары по Clojure ходили люди из всех отделов нашего ЦК.
по опыту скажу, если программисты опытные они сразу врубаются в чем соль и искренне радуются удобству языка. Остальные сугубо по "религиозным" соображениям не учат
Получается, что Clojure - самый лучший язык программирования в мире. Но тут https://habrahabr.ru/post/259831/ писали что это не так
про Nim как то сомнительно
кстати он цикл так и не дописал
@ilevd я бы сказал что это язык для которого лучше всего был сделан trade-off в угоду практичности
понятия лучший вообще, нет. всегда есть контекст. и всегда надо делать trade-off в рамках данного контекста.
я смотрю на нашу контору, где пишут на php, где уровень вхождения тоже не высокий, и могу сказать, что это скорее минус, чем плюс. пишут-то они пишут, но что они пишут?
Ну тут еще как посмотреть. Если взять для примера игровой реал-тайм сервер, то среди этих языков как-бы Clojure последнее место не занял.
Кроссплатформенная мобильная разработка - чек, есть нюансы, но на кложаскрипте можно супер быстро нахлобучить реакт-нейтив апп
Ок кложа дев может в разы больше имплементировать за то же время, что и жава/го/етс. дев
Хороший пример - в #datascript канале чувак сейчас борется с жс и толком задачу даже объяснить не может, потому что тонет в каких-то обертках и проблемах ненаглядности и лишнего гемора языка
И в результате твёрдо убеждён, что дс не подходит ему, что бы там деструктурированный url хранить, лол
кстати про датаскрипт, был где-то доклад соловьева, где он рассказывал, что они выпиливали датаскрипт с модной касты
Почитай, если поймешь чего там ему не хватает - расскажи, я так и не понял чего ему мешает
Но не суть, суть, что чувак из-за языка банальные ванлайнеры за недельные рисерч проекты принимает
Ну по манере общения - он далеко не школьник и совсем не джуниор, почитай, говорю, пока слак не забыл, быстрее будет, чем мой пересказ
че то прочитал я и вопрос возник, а у кого были реально проблемы на большом проекте из-за того что язык динамически типизирован?
может просто я не был на реально больших проектах чтобы заметить какие то проблемы)
@savelichalex пхпешники же жили как кто, битрикс например 😄
и будут еще жить, потому что перейти на использование типов в лапше просто не реально(((
от себя могу сказать, что я тоже боролся с даталогом. нужен опыт, чтобы в него въехать. он же совершенно не похож на всем привычный сиквел. я думаю его проблема в этом. а логи ведутся на отдельном сервере https://clojurians-log.clojureverse.org/datascript/2017-03-10.html
@akond не знаю как забугорные, но российские работодатели не любят это слово "проблема" - от себя рекомендую смотреть как на задачу, легче преодолевать барьеры в эмоциональном плане
может все уже в курсе, но был приятно удивлен функции tree-seq
. Раньше я с зипперами игрался, это функция почти тож самое (даже параметры почти теже). Пример использования - приходят данные (JSON, EDN, etc.), мапы и векторы. Нужно было достать все вхождения :image-url
в любом месте на любой глубине
(->> data
(tree-seq coll? identity)
(keep :image-url))
Функция замечательно тем что возвращает ленивую коллекцию и принимает два параметра branch?
определяющую можно ли идти в глубь и children
которая возвращает соответсвенно всех чайлдов. Т.е. написать например обход всего жеского диска или сайта по линкам тривиально. Прекрасно же ❤️@a.espolov "завязать" в смысле "перестать писать на нём"?
да я не прибалтал своего последнего работадателя на использование cljs( стало жалко его
(горячо любимый мной Fantom, Kotlin, Ceylon)
So close 😃
@akond да, из жс не мог положить мап в базу потому что жс, как бы так помягче, – не особо наглядный
это иллюстрация к продуктивности на разных языках (при чем тут одна и та же либа, одни и те же 2 вызова метода. изолированнее пример я не встречал)
господа, а подскажите, как один и тот же цвет "при одной температуре" сконвертировать в эквивалентный "при другой" типа хочу цвет, который выглядит так же при 6500К, как "#123" при 3900К
@akond на тему датаскрипта - мы его выпилили не из-за того что с ним сильно плохо (хотя, надо сказать, что для фронтэндщиков это сложнее, чем просто из мапы все доставать), а из-за производительности - на фронте банально инишиал данные у нас запихивались 100-200 мс в базу, а сейчас основной тупняк там на парсинге JSON'а. 🙂 То ли таки много данных, то ли хз. 🙂
@asolovyov А зачем столько начальных данных сразу в базу?
@asolovyov а вы в пустую базу писали данные? или восстанавливали из транзит-стринги? у меня сейчас в игрушечном проекте ((count @conn) => 34958) восстанавливается из транзит стринги 450-700ms на квадкорном i7 макбуке в хроме ((count dump/transit-string) => 2803624)