Этого треда уже нет.
Это копия, сохраненная 4 марта 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Clojurelogo.svg.png88 Кб, 1200x1200
Clojure(Script) тред /clojure/ 1139597 В конец треда | Веб
TL;DR
Читать: https://www.braveclojure.com
Решать: http://www.4clojure.com
Онлайн: https://repl.it/site/languages/clojure
Офлайн: https://leiningen.org
Зомби: http://www.parens-of-the-dead.com/
https://clojure.org/guides/getting_started
https://clojure.org/reference/documentation
https://github.com/bbatsov/clojure-style-guide

Clojurescript
https://clojurescript.org
https://github.com/bhauman/lein-figwheel
https://github.com/emezeske/lein-cljsbuild

Документация
https://clojuredocs.org/
https://clojure.org/api/cheatsheet && https://cljs.info/cheatsheet/
https://clojure.org/reference/documentation

Задачи
http://www.4clojure.com
http://clojurekoans.com
http://clojurescriptkoans.com
http://exercism.io/languages/clojure/about

Видео
https://github.com/tallesl/Rich-Hickey-fanclub#talks
https://www.youtube.com/user/ClojureTV

Комьюнити
#cvA.lojureANUSir5F2c.freenodePUNCTUMn*=uet
http://clojurians.slack.com/
https://groups.google.com/forum/#!forum/clojure
https://clojureverse.org/
https://stackoverflow.com/questions/tagged/clojure

Блоги
Еженедельник: https://therepl.net
Все блоги: http://planet.clojure.in
Производительность: http://clojure-goes-fast.com

IDE
https://cursive-ide.com
http://lighttable.com
http://nightcoders.net
https://sekao.net/nightcode && https://sekao.net/lightmod
https://cider.readthedocs.io/en/latest

Библиотеки
https://clojars.org && https://www.clojure-toolbox.com
Web: http://www.luminusweb.net || https://github.com/weavejester/compojure
App Server: http://immutant.org || http://aleph.io
DI: https://github.com/stuartsierra/component
SQL: https://github.com/layerware/hugsql
UI (cljs): https://github.com/Day8/re-frame || https://github.com/omcljs/om
HTML: https://github.com/weavejester/hiccup
Macros: https://github.com/cgrand/macrovich
Spec: https://github.com/bhb/expound && https://github.com/jeaye/orchestra
Test: https://github.com/clojure/test.generative && https://github.com/bensu/doo (cljs)

FAQ

— СКОБКИ!!11
http://clochure.org/

— Кейворды?..
https://clojure.org/guides/faq#why_keywords

— Common Lisp же есть, нинужна!!1
Просто съеби.

— Что нужно для вкатывания?
Знать английский, не быть тупым, иметь опыт программирования.

— Хочу начать изучать программирование, clojure мне подойдет?
Лучше сперва возьми PLT Racket и читай SICP + http://htdp.org

— Обязательно знать джаву и жс?
На уровне чтения документации.

— Как без классов представлять бизнес-сущности?
Используй хэшмапы, namespaced keywords и spec. Не поддавайся искушению создавать рекорды на каждый чих. Все есть данные.

— Что по скорости?
Зависит от задачи. В среднем - медленнее скалы, быстрее рубипитонов.

— Печатаю элементы последовательности, а они не печатаются, ЧЯДНТ?
Ленивость + сайд-эффекты => используй doall или dorun.

— Итерируюсь по большой последовательности и получаю OutOfMemoryException, ЧЯДНТ?
https://clojure.org/reference/lazy#_don_t_hang_onto_your_head

— DSL - круто! Можно теперь все API делать на макросах?
The first rule of macro club is: "Don't write macros".

— Кто использует clojure в продакшне?
Walmart, Netflix, Soundcloud, Spotify, Facebook, Groupon, CircleCI, Heroku, Puppet, Red Hat, Oracle.

— Какие приложения написаны на clojure?
Walmart eReceipts - бэкенд обработки данных о покупках во всех отделениях Walmart для их мобильного приложения.
https://www.datomic.com - распределенная транзакционная база данных с языком запросов на основе datalog.
http://lighttable.com - расширяемая интерактивная IDE для clojure, python и javascript.
https://precursorapp.com - инструмент для коллективного прототипирования онлайн (рекомендую попробовать, зависимость есть).
http://circleci.com - Continuous Integration and Delivery. Бэкенд и фронтенд на clojure+clojurescript.
nahooy.jpg101 Кб, 500x375
2 1139600
Шапка: https://gist.github.com/anonymous/66b1a4ebc869f33ece76022a79acc1c4
Архивач: https://arhivach.org/thread/339594/
Старый общий лиспотред: https://2ch.hk/pr/res/1057101.html (М)

Дополняйте шапку.
3 1139624
угорел по метапрограммированию и коммонлисп тут кажется первопроходец. А так как иных тредов с лиспом кажись нет, спрошу тут.

насколько оно в обще сейчас перспективно?
как снизить ресурсопотребляемость при компиляции?
какой диалект лучше всего подходит?
есть интересные проекты?

д
4 1139651
>>139624
Что именно такого ты подразумеваешь под метапрограммированием, что тебя беспокоит ресурсопотребляемость при компиляции?
5 1139819
Как-то ты охуел всех остальных пробросить. Ну да ладно, говнякались на кложу - ловите ответочку.
6 1139905
>>139819
М? Еще в утонувшем реквестировали отдельный кложетред же - вот я и запилил. Я не оп утонувшего. Алсо: >>1139611
7 1140150
>>139819
двачую
>>139905
взял пидор и лиспотред угробил
IMG20171207111805312.jpg150 Кб, 1080x1045
8 1140160
Вкатился. Прочитал первые пять глав в brave clojure, хочу теперь запилить простенький круд. Посоветуйте либы плз для фронта и бека.
9 1140428
>>140150
В мозг ебешься? >>1139611

>>140160
Ну а шапку-то для кого запилили, ну же?

>Библиотеки

10 1140810
>>139624

>как снизить ресурсопотребляемость при компиляции?


Крестовик чтоле сука? За пределами крестов таких проблем больше нигде вроде бы и нет.

>есть интересные проекты?


Хз, что тебе будет интересным.
Ну, например, можешь поглядеть это:
http://redlinernotes.com/docs/cl-6502.pdf и код полностью: https://github.com/kingcons/cl-6502
Тут тебе и пример использования макросов неплохой (например, как опкоды задаются), и код легковоспринимаемый, и в описании всё разжевано.
11 1141771
https://status.im/ - всем БЛОКЧЕЙНА НА КЛОЖЕ, пацаны.
12 1141907
>>141771

>4 кложи


>1 го


Что и требовалось доказать, 4 обертки над рабочим кодом.
13 1142329
>>141907

>обертки


"Как из goвна сделать конфетку".
14 1145502
Вышло третье издание Programming Clojure:

https://pragprog.com/book/shcloj3/programming-clojure-third-edition

Все обновлено до версии 1.9, добавили информацию про spec, трансдьюсеры и cli-интерфейс.
15 1145697
Анон, объясни плз как дела обстоят с работой на кложе? Сюдя по хх вакансий практически нет. На functional works основные вакансии только в Лондоне и Америке. Стоит ли вообще вкатываться ради работы?
16 1145727
>>145697
Ну и на какой ответ ты рассчитываешь?
Ожидаешь, что тебе покажут суперсекретный сайт clojure-rabota-mukhosransk.io, где каждый день выставляется по сотне вакансий на кложе в твоей мухосрани, и все работодатели готовы выждать неделю-месяц-год-сколько нужно, пока ты, жемчужина рынка труда, раздуплишься, освоишь язык да наконец вылезешь из своей раковины?
17 1145759
>>145697
В прошлом треде задавали похожий вопрос: >>1128571

Ну и двачую оратора выше.
18 1145809
>>145697
по версии stackoverflow за clojure платят больше всего в мире. Но вакансий почти нет, это да
19 1145812
>>145809

>по версии stackoverflow за clojure платят больше всего в мире


Слабо верится, что за кложу платят больше, чем, скажем, за сап.
20 1145829
>>145812

>верится


можно не верить, но факты таковы
https://insights.stackoverflow.com/survey/2017#technology-top-paying-technologies-by-region

>Globally, developers who use Clojure in their jobs have the highest average salary at $72,000.

21 1145875
>>145829
Надо в оп-пик треда добавить, кхе-кхе.

Впрочем, оно и понятно: кложа за деньги == сеньор (и притом топовый) в 86% случаев.
topusa.png22 Кб, 530x428
22 1145944
>>145829
Охлол. На самом деле, лучше этого никому не показывать. По остальным табличкам несложно догадаться, что большинство из этих очень немногочисленных кложе-везунчиков работает в США и получает средненькие деньги по их меркам.

>tfw даже пхпшники получают больше

23 1145945
>>145829
А с работой, судя по тем данным, все очень грустно. Даже с хаскелем устроиться легче.
24 1145950
>>145945
На самом деле, с оккупацией там какие-то очень сомнительные данные. По ним получается, что среди дата сцайентистов ассемблер и вижуал бейсик более популярны, чем кложа. И при этом на каждой кложе-конфе по 5 презенташек от всяких дата-стартапов - что-то тут не сходится, Ватсон.

>>145944
Из тех же данных можно сделать вывод о том, что кложедевелоперы равномерно размазаны по всему миру и получают зарплату на международном уровне сеньоров. Вопрос интерпретации.

И да, я видел в интернетах кложе-стартапы из Азербайджана и автора кложекнижек из Индии, так что тут не все так однозначно.
25 1145975
>>145950

>равномерно размазаны


Очень сомневаюсь о применимости этих слов к группе людей количеством <300

>и получают зарплату на международном уровне сеньоров


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

>в интернетах кложе-стартапы из Азербайджана и автора кложекнижек из Индии


У этих-то точно не сеньорского уровня оплата.
26 1145979
>>145975

>количеством <300


Откуда ты это взял?

>Хотя можно преположить


Я под словом "размазаны" как раз это подразумевал. Тонкой пленкой.

>У этих-то точно не сеньорского уровня оплата.


Почему?
27 1145991
>>145979

>Откуда ты это взял?


По процентам прикинул от общего числа опрошенных прикинул.

>Тонкой пленкой.


Ты сейчас об энтузиастах или о трудоустройстве? Если второе, то по вакансиям хорошо видно, что пленкой там и не пахнет: один сгусток в США и немного какой-то активности в Британии.

>Почему?


>азербайджанский стартап на хипстерском языке


А ты сам как думаешь? У таких стартапов только один путь к успеху - засветиться на конференции и попасть в контору к белым людям.

>И при этом на каждой кложе-конфе по 5 презенташек от всяких дата-стартапов - что-то тут не сходится, Ватсон.


И вот тут-то как раз всё сходится.
28 1145999
>>145991

>По процентам прикинул от общего числа опрошенных прикинул.


Ну так это ~300 опрошенных, а не 300 разработчиков, ведь так?
29 1146003
Упс, случайно отправил.

>>145991

>Ты сейчас об энтузиастах или о трудоустройстве?


Я о работе. Они же, насколько я понимаю, опрос про деньги делали среди тех, кто уже работает, а не по открытым вакансиям - так? А это разные вещи.

>У таких стартапов только один путь к успеху


Так, и как из этого следует, что у них там не сеньорская зарплата?

>И вот тут-то как раз всё сходится.


Каким образом?
30 1146032
>>146003

> А это разные вещи.


Коррелирующие.

>Так, и как из этого следует, что у них там не сеньорская зарплата?


Кто ж им платить-то будет? В лучшем случае к себе завербуют.

>Каким образом?


Таким, что все эти стартапы-презентации за единичными исключениями идут в мусорку.
31 1146051
>>146032

>Коррелирующие.


Да, пожалуй. Насчет степени этой корреляции мы можем только спекулировать, так что в итоге это все же вопрос интерпретации.

>Кто ж им платить-то будет?


Клиенты, инвесторы. Ну блин, ты всерьез считаешь, что в том же Азербайджане люди живут в аулах, или что? В том же Минске, например, разработчикам же кто-то платит - разница-то не так уж и велика. Про Индию (отдельные ее регионы, энивей) я и вовсе молчу.

>идут в мусорку.


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

Вообще, я тебя услышал и согласен с тем, что твоя точка зрения валидна (но не единственна), надо наверное закругляться с оффтопом.
32 1146628
http://blog.ezyang.com/2018/02/semantic-import-versioning-in-the-wild/ - забавное дело: идеи, очень схожие с теми, о которых говорил хикка, потихоньку впихиваются в го.
33 1147645
>>141771

и еще блокченокложи тут https://github.com/district0x/
34 1147646
>>145975
группе людей количеством <300

в кложурианском слаке сидят около 12к человек. в чисто русскоязычном канале over 500
35 1147650
>>146628

чтобы сделать что-то годное надо быть вынужденным страдать, видимо... в 13-14 годах я троллил es5, с тех пор ежики обкололись, но упоролись до бабеля и молодцы имо. вывод - надо сжечь мавен на компах когнитекта :)
36 1147700
>>147645
Что-то знакомое. Бля, надо покупать эфир, чому я такой слоупок((

>>147646
Ну он тебе щас ответит, что это типа ЭНТУЗИАСТЫ, а за деньги там 300 человек из 12к работает.

>>147650
Да нет, мавен няшка (если не писать пом вручную). У джавы в этом плане вообще наиболее единственная вменяемая инфраструктура. Просто до того, о чем говорил 2 года назад хикка и что теперь внедряют гуглогоферы, никто как-то раньше не додумался.

Хотя вот вроде бы на поверхности же все лежит, и в смежных областях (веб-апи) этим давно пользуются, и технически все средства уже есть (вопрос соглашений), но - нет, никто не додумался. Как так-то? Вот уж действительно - чтобы сделать что-то годное, надо страдать, тут не поспоришь. Ноу пейн ноу гейн, ех.
37 1148477
двощ, смотри, какую вакансию я тебе принёс: https://moikrug.ru/vacancies/1000040445
с "Поездки на автомобиле бизнес класса" в бонусах обсерунькался в голос
38 1148518
>>148477

>Никакого legacy кода, приложение разрабатывается с нуля


>Функциональное программирование


>250 000 руб


>Можно удаленно



Боже, благослови Хикку!
39 1152237
https://moikrug.ru/vacancies/1000040679

>Вакансия Backend java с переходом на Clojure



Вкатывальщики, это ваш шанс, не упустите!
40 1152853
>>152237
А ты-то сам чего упускаешь?
41 1152997
>>152853
Секрет. :3
42 1153123
>>139597 (OP)
Зачем нужны замыкания, чо эта ваще такое?
43 1153129
>>153123
Ты промазал тредом, анон.

Тебе в ньюфаг-тред: >>1008826 (OP)
Пока идешь туда, можешь читнуть википедии: https://en.wikipedia.org/wiki/Closure_(computer_programming)
44 1153140
>>152237
Погуглил этот Codefather.
Лохотрон какой-то.
45 1153587
>>153140
В смысле? Почему? Тоже погуглил - ничего подозрительного не нашел, судя по всему пилят много всяких маркетинговых онлайн-игрушек в браузере.
46 1153842
>>153587
В смысле негров они набирают на галеры.
В лучшем случае.
47 1154353
Что сейчас считается более стильным (модным, молодёжным), leiningen или boot?

Так же, где найти третье издание Programming Clojure?
48 1154404
>>139597 (OP)
Как её продать для бекенда команде, как основнойя язык для JVM?
1) Жава-обезьяны вообще не поймут.
2) Cкалисты дрочат на типы, считают их понацеей и жить не могут без всякой хуиты типа HKT.
3) Котлинфаги недалеко ушли от жабаприматов, или это и есть бывшие жабовики, которые пытаются пихать свои старые уебанские подходы.
49 1154409
Кто-нибудь уже пробовал зигу?
https://github.com/glycerine/zygomys
50 1154431
>>154353

> Что сейчас считается более стильным (модным, молодёжным), leiningen или boot?


clj а так - lein конечно

>Так же, где найти третье издание Programming Clojure?


В магазине, анон, в магазине.
51 1155225
>>154409
Ненужно на ненужно и ненужно погоняет!!!11 Лол, на самом деле прикольно, надо глянуть - почему бы и нет.

>>154404
Интересный вопрос. Мне кажется, что как раз джависты из всех перечисленных подходят больше всего. Можно начать с написания тестов (генеративных) для джава-сервисов. На кложе это получается гораздо легче, быстрее и приятнее.
52 1156788
Travel journal/task manager на сабже, опенсорсный. Жвм-бэкенд, десктоп на электроне, мобильный апп на реакт нейтив. Есть на что поглядеть:
https://github.com/matthiasn/meo
http://matthiasnehlsen.com/blog/2018/03/15/introducing-meo/

Этот же чувак запилил либу для визуализации information flow внутри приложений на его message-oriented распределенном фреймворке. Сам фреймворк я пока не курил, но идея мне нравится: полная интроспекция, распределенность, все в лучших традициях смолтока и лишпов. Интересно, что может получится, если на такое интроспектированное приложение натравить (на живой инстанс!) какой-нибудь машин лернинг. Типа JIT, только для бизнес-логики. Короче, интересно.
https://github.com/matthiasn/systems-toolbox/blob/master/doc/rationale.md
https://github.com/matthiasn/inspect

И напоследок:
https://github.com/cgrand/xforms/ - больше трансдьюсеров, хороших и разных.
https://github.com/HCADatalab/powderkeg - Spark as a transducer. Нет, правда.
53 1156985
>>156788

> meo


moar plz, нужно больше примеров живых продуктов (полупродуктов)
54 1157015
>>156788

> десктоп на электроне


Рак ПО нашего времени.
Кстати, хромэлектрон да ещё и с жвм в обвязке - не жирновато ли для простого журнальчика?
55 1157034
>>156985
Да на самом деле дохера всего такого на гитхабе, просто его отыскать трудно. Вот помню, что видел чувака, заопенсорсившего с работы какую-то ядреную опердень, и у них там тоже была очень классная мессадж-ориентированная архитектура (документооборот там, хуе-мое). Сразу толком посмотреть как-то не до того было, ну думаю не забуду же. Вот сейчас только вспомнил, лол. Надо взять за привычку все интересное лайкать, короче, а то как-то я к этому не привык.
56 1157039
>>157015
Ну, я так понимаю электрон он взял, чтобы мобильное приложение на десктопе запускать. Да и там интерфейс хитровыебанный судя по скриншотам. Жвм в обвязке - это сервер. Ну и судя по его блогпосту, это скорее не "простой журнальчик", а что-то типа электронной медкнижки, как у частных терапевтов, напополам с трелло. Он там все пишет: где находится, сколько спит, сколько шагов прошел, какое настроение у него было, скриншоты, закладки, задачи, вообще все. Я даже начинаю подозревать, что это какой-то ебаный киборг.
1oy6sm.jpg49 Кб, 1024x768
57 1157041
Алсо, немного подгорел вот на этом моменте:

>I have heard the counterargument a few times that what someone did in their life was so mundane and boring that it would not be worth recording. Well, in that case, they have a much bigger problem…

58 1157215
>>157015

>> десктоп на электроне


>Рак ПО нашего времени.


два чаю этому, хипсторы со своим жс совсем стыд потеряли
59 1157262
>>157215
Написал бы на swt или не дай боже swing - точно так же бы ныли, так что все норм. Да и не запилишь ты ни на одном нативном тулките такой гуй, как у него. В итоге один хер поставишь вебвью, ЗАТО НИ ЭЛЕКТРОН!!1
60 1157346
>>157262
> не запилишь ты ни на одном нативном тулките такой гуй
QT
61 1157406
>>157262
На tk - запросто
62 1157431
>>157262

>Написал бы на swt или не дай боже swing - точно так же бы ныли


Разумеется. Джаве нехуй делать на десктопе и в гуй она не умеет совершенно.
63 1157448
>>157431
Чувак, выше вон уже писали. Jambi спасёт отца русского computer science.
64 1157452
>>157448

>Jambi


Какое-то максимальное ненужно, даже сайт официальный проебали.
687474703a2f2f6d617474686961736e65686c73656e2e636f6d2f696d6[...].png551 Кб, 1197x801
65 1157454
>>157406
Лiл, улыбнулся, спасибо.

>>157346
>>157431
Вы сами-то на кутях писали что-нибудь? Потому что если да, то вы должны представлять, сколько анальной боли причинят попытки (не шибко успешные, мимованга) запилить на них пикрелейтед гуй. Еще раз повторюсь, что все бы закончилось втюхиванием туда вебвьюхи.
66 1157465
>>157454
Зря лыбишься, на tk большая часть представленного реализуется проще, чем на qml и вебпараше.
67 1157570
>>157454
Я разработкой на Qt в общей сложности зарабатывал на хлеб 6 лет, и никакой боли там нет. Интерфейс со скрина сделаю легко за отзiв. Боль начинается, когда электроноговно с интерфейсом уровня /b/ жрёт 6 гигабайт RSS.
68 1157580
>>157465
В связи с этим давайте выпьем за его светлую память. Серьезно.

>>157570

>Интерфейс со скрина сделаю легко


Расскажи, как? Кинь аналогичных референсов? Правда интересно.
69 1157586
>>157580
За то, что я скину сюда референсы с бывшей работы, меня посадят.
Правда, ничего сложного нет - для табов QTabWidget + щепоть QSS, для ввода rich-текста есть QTextEdit с сопутствующими примочками, ебалу с левого края я бы сделал через QTableView с кастомной (разумеется) моделью, список - тривиально через QListView, даже для календаря есть готовый виджет. Работы не больше, чем при реализации на жабаскрипте, зато не будет требовать для своего запуска 64Гб рамы.
70 1157622
>>157586
Зачем с работы? Скинь любые референсы реализации похожего интерфейса на кутяпках, я подобного вроде не видел.

>для календаря есть готовый виджет


Так я же как бы о том и говорю, что как только выходишь за пределы готовых виджетов, начинается еботня. Есть в кутэ готовый виджет для перетаскиваемых карточек, как в трелло? Какой лайоут у всей этой хуйни в целом будет?
71 1157681
Анон, подскажи плз, какой нужен бекграунд, чтобы вкатиться на работу на кложе?
72 1157730
>>157681
Это зависит. Можно вкатываться во фронтенд, можно в бэкенд, можно в БИГДАТУ с МАШИН ЛЕРНИНГОМ на БЛОКЧЕЙНЕ. Лучше определи свои сильные стороны и цели и пляши от этого, а не от языка. Язык - это инструмент. Он под тебя должен подстраиваться, а не ты под него.
73 1158644
>>157681

та самая картинка с деньгами и опытом so говорит, что нужно лет over9000 опыта, с другой стороны на апворке свело со шаряшим июнем, для которого кложа была первым языком, но ymmv

ну и в принципе - динамическая типизация, если ты из этого лагеря, то берешь и фигачишь
74 1158932
>>158644

>та самая картинка с деньгами и опытом so говорит, что нужно лет over9000 опыта


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

>июнем, для которого кложа была первым языком


Такое вообще законно, лол? Пили кулстори.
75 1159132
>>158932
Анон, я тебя поправлю немного. Та картинка ничего не показывает. Кложуристов было меньше одного процента от опрошенных (что меньше 300 человек), которые в среднем по больнице работают обычноработу в сша и получают обычноработные 70к. И будь это не так, мы бы имели совершенно другие таблицы.

>при сравнительно небольшом опыте получаешь больше


Никаких ЗНАЙ КЛОЖУ @ УМЕЙ МЕНЬШЕ @ ПОЛУЧАЙ БОЛЬШЕ там нет, не выдумывай.
>>158644

> говорит, что нужно лет over9000 опыта


Это голоса твои говорят, потому что там такого и близко нет.

С кем, блядь, посадили? И это кложуристы? Говно-говно! За весь тред ни слова о программировании.
76 1159308
>>159132

>Та картинка ничего не показывает.


Лол, ты уже сколько по всей борде носишься и пытаешься это доказать? Get a life, bro.

Я смотрю на график и читаю то, что там написано 10000 respondents, а не фантазирую про 300 человек из США и прочую лабуду. Алсо, специально сейчас открыл: https://insights.stackoverflow.com/survey/2018/#work-salary-and-experience-by-language -

>>158644
Да, анон, вообще-то ты прав, беру свои слова назад. Там 8 лет посередине, а мне почему-то запомнилось, что было что-то в районе 5-6. Так что ты все правильно написал.
77 1159311
Алсо, в продолжение темы:

http://techblog.telia.no/blog/experience-report-hiring-for-clojure-script-is-easy/

>Our experience shows that hiring people for a Clojure(Script) project is relatively easy (in Oslo, Norway) despite a market where demand exceeds supply. But it is important to use the right channels to reach the right people.

78 1159327
>>159308

>ты уже сколько по всей борде носишься и пытаешься это доказать?


Второй раз пишу. Первый - чуть выше. ИТТ же больше обсудить нечего.
А ты по целой борде с этой ссылкой носишься?

> а не фантазирую про 300 человек


Найди табличку с количеством использующих и пофантазируй сам.

>из США


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

И вообще, блядь, у нас тут /pr или /hr?
Screenshot-2018-3-20 Stack Overflow Developer Survey 2018.png41 Кб, 893x443
79 1159334
>>159327

>Второй раз пишу.


Хватит, перестань.

>ИТТ же больше обсудить нечего.


Не заходи сюда. Нажми на кнопочку "-" рядом с номером оп-поста.

>А ты по целой борде с этой ссылкой носишься?


Нет, я ее вообще у другого анона в другом треде увидел.

>Найди табличку с количеством использующих и пофантазируй сам.


Нашел: https://insights.stackoverflow.com/survey/2018/#work-salary-and-experience-by-language

>В таблицы оплачиваемости языков по регионам.


Пикрелейтед.

>почему кложуристы не попали ни в одну из таблиц, кроме общемировой.


Наверное потому что ты таблетки забыл выпить?

>И вообще, блядь, у нас тут /pr или /hr?


Вот именно. Угомонись уже.
80 1159346
>>159334
Ну ок, за 17й год были совсем другие данные.

>Не заходи сюда.


Нет, я останусь. А вот тебя попрошу съебать в мывамперезвоним-тред.
81 1159581
>>159346

>Нет, я останусь.


Хорошо, оставайся, но в следующий раз постарайся, пожалуйста, думать и гуглить перед тем, как пытаться развести глупый срач, ок? Тут вам не там все-таки.
82 1159687
>>157448
А он там живой ещё?
83 1159735
>>157586

> зато не будет требовать для своего запуска 64Гб рамы


как показывает опыт последних десятков лет - удобство (и в том числе его влияние на качество и скорость) разработки приоритетнее потребляемых ресурсов как на фронтенде так и на бекенде (в разумных границах, все-таки 64 это преувеличение)
15122786684220.jpg88 Кб, 1280x720
84 1159757
Пишу на реакте, хочу вкатиться в клжс. Посоветуй гайдов или блогов для вката, плз.
85 1159789
>>159735
В том-то и дело, что смузихлёбы за все разумные границы вылезают. Клиент слака, чят блять, жрёт на моём ноутбуке с 4 гигами рамы 2 гига с хуем, в 5 раз больше, чем моя IDE emacs, по-моему, это пиздец.
86 1159810
>>159757
Недавно увидел охуенную штуку: http://maria.cloud/
Там прямо с самых-самых азов - не знаю, насколько тебе это подойдет, но попробовать в любом случае стоит, охуенная штука. Ну и шапку читай, ставь лейн, добавляй конфиг фигвила и хуячь туду-лист. Алсо, из фреймворков можешь еще на https://github.com/tonsky/rum посмотреть
87 1159814
>>159789
Меня тоже слегка выбешивают все эти новомодные чятики, но ты точно не пиздишь, бро? Вот сейчас открыл вкладочку со слаком, не вижу особого потребления памяти, джвач больше жрет.
88 1159835
>>159810
Спасибо няш.
89 1159841
>>159814
Я думаю он про десктопное приложение.
90 1159851
>>159814
В браузере оно ещё терпимо, да только речь шла о десктопном клиенте с электроном внутре.
91 1159861
>>159841
>>159851
Ну, может я чего-то не понимаю, но оно же просто открывает тот же браузер с тем же сайтиком - чему там 2 гига жрать? У меня лиса с 10 вкладками столько не жрет.
92 1159891
>>159814
Десктопный слак вроде на электроне. Худший представитель, я бы сказал. Криворукие дебилы просто наговнили там по самые помидоры. Почему виноват не электрон? Потому что vs code тоже на электроне сделана и работает несравнимо лучше, чем слака.
93 1160110
>>159891
Я и говорю, что фигня какая-то получается: электрон не жрет ну, как..., сайтик слаковский не жрет, а сайтик в электроне - 2 гига. Пиздец безблагодатность какая-то.
94 1160304
>>159810

>http://maria.cloud/


Прошёл эту хуйню, придётся теперь устанавливать кложу, чтобы погрузиться в неё с головой. Нахуй ты это сделал, я ведь только смирился с тем, что я тупой ебанат и больше юзерскриптов на жс ничего не смогу в своей жизни.
95 1160429
>>160304
Лол. GO INTO MY WEBS! Качай какой-нибудь лайт тейбл для начала, чтобы с имаксом не ебаться.
97 1160500
>>160499
Кудряшек ещё добавь
98 1160673
добавьте еще в шапку рецепты на разные случаи жизни https://github.com/clojure-cookbook/clojure-cookbook
26wmwr.jpg97 Кб, 890x500
99 1160762
>>160499
Лол, схоронил. Без кудряшек не православно!!
100 1161000
>>160673
Спасибо, анончик. Годнота.
101 1161048
>>159132

>За весь тред ни слова о программировании.


а давайте, сегодня копаясь в стейте из лог записей со временем захотел получить аналог "grep -n" для списка, чтобы фильтровал нужное, но отдавал мне еще и "контекст" из Х элементов до и после (ну и ессно показывал пересечения контекстов одним куском)

решил, но мне мое решение не нравится если честно, предлагаю анону дать свою версию. не возбраняется и даже любопытно решение на любом языке, единственный важный момент - надо делать в 1 проход, т.е. должно работать на стриме (lazy-seq)

алсо, анон, я свое покажу послезавтра, а пока давай попробуем это сделать красиво, если не лень :)

чтобы не промахнуться я написал на примере натуральных чисел тесты https://ideone.com/Uchszi (благодаря вам еще и генерационные, пинайте)
102 1161051
>>161048

и да, аноны, баланс выразительности и скорости лучше чем вот это вот http://git.savannah.gnu.org/cgit/grep.git/tree/src/grep.c#n1293
103 1161343
>>161048
Ну так как n маленькое, можно просто идти окошечком по n×2+1 элементов и проверять средний элемент на соответствие предикату, вроде очевидно.
104 1161344
А, еще же пересечения нужны!
105 1161742
>>161048
О, специальная олимпиадка! Что-то давно на программаче не было. Принимайте участника из соседней палаты: http://lpaste.net/532665142584803328
Как раз отличный повод опробовать series. Раньше думал, что это какой-то кусок говна из 90х, очередная библиотека ленивых последовательностей, но сейчас я не просто под впечатлением, я в ахуе. Там внутри полноценный компилятор выражений над потоками данных. Короче, к каждой функции, что обрабатывает серии, в довесок к основному коду, пердолящему танки в рантайме, добавляются метаданные (создается функция-оптимизатор), с помощью которых компилятор потом, когда будут получены все этапы конвейера от источника до назначения, генерирует охуенно эффективный код без промежуточных абстракций, который обрабатывает данные одним проходом. Пример по ссылке.
106 1161748
>>161742

> Принимайте участника из соседней палаты: http://lpaste.net/532665142584803328


Хуя у вас там сахара. Как вы не путаетесь во всех этих <>#$^% ?

мимокрок-знаю-только-scheme
107 1161782
>>161748
А чего в них путаться? $^ я сам же в начале определил, % - просто имя переменной, <> - метка подстановки макроса -<>>.
Начиная с 28й строки идет обессахаренный код - результат раскрытия выражения с 23й строки, все # там - uninterned символы.
108 1161855
Уже много раз задумывался попробовать кложу, но все никак не могу ответить себе на вопрос: зачем?

Сейчас моим основным инструментом является TypeScript + React. Я мог бы перейти на clojure+re-frame, но у меня все и так хорошо работает.
Тесты на JS писать удобно, псевдоиммутабельная функиональщина пишется легко, статическая типизация(+ "as any" где сильно надо) делает рефакторинг легким и безболезненным.

Ради чего мне стоило бы обмазываться скобками?
109 1161861
>>161742

подход и сгенеренная стейт машина огонь, можешь коротко объяснить, что получилось? и еще момент про (SETF #:OUT-696 (+ 2 2)) - во первых wtf, во вторых почему не заинлайнилось?

по сабжу - выполнил тестовую функцию из примера - получил (0 1 2 3 1109 1110 1111 1112 1113 1111109), насколько я понял, оно что-то недочитывает :) еще например, если нужное в самом конце

p.s. пардон, что в тестовых примерах всегда сортированный уникальный ряд, тут я прокололся, сильно упростив тестовый набор, в жизни конечно на список нет ограничений, в результате надо было (filter f coll) c контекстом
110 1161865
>>161855

>моим основным инструментом является TypeScript + React


в загон, животное
111 1161904
>>161861

>можешь коротко объяснить, что получилось?


Все элементы пишутся в кольцевой список длиной N + 1 (ключевые строки 39, 70), за счет чего #:SHIFTED (72) отстает от генерируемых чисел #:NUMBERS (54) и флагов #:ITEMS (58-69, 14-17) на N элементов. Нашли подходящий элемент - отсчитываем ещё N + N, а в результирующий список добавляем #:SHIFTED (84-85), если он не nil (75, 19) и если их ещё не больше 10 (80, 25).

>про (SETF #:OUT-696 (+ 2 2)) - во первых wtf


Соответствует setf'у с 16й строки, но с подставленной переменной N.

>во вторых почему не заинлайнилось?


Заинлайнит компилятор.

>выполнил тестовую функцию из примера


Замерил time'ом? :)

>насколько я понял, оно что-то недочитывает


Не, всё правильно. Там же subseries только первые 10 элементов берёт.

>p.s. пардон, что в тестовых примерах всегда сортированный уникальный ряд


Код работает на любых данных. Разве что nil в последовательностях неправильно обрабатывает, но это легко исправимо заменой nil'а на uninterned символ.
112 1161914
>>161855
Ради Ъ-интеректив девелопмент, ради sound семантики языка, ради нормальной архитектуры, ради иммутабельности, ради внятного асинхронного кода, ради генеративных тестов, ради других платформ, just for fun наконец. А вообще - дело твое, если у тебя возникает вопрос "зачем пробовать не перекатываться, а именно пробовать что-то новое", то может и не нужно оно тебе, зря только время перед монитором потратишь. Каждому свое.
113 1161988
>>161861

>надо было (filter f coll) c контекстом


Как ты контексты лениво мерджишь одними мапами-фильтрами? Мне в голову только рекурсивное (lazy-seq) решение приходит.
114 1162027
>>161904

чет да, не убрал subseries, пардон, но все равно, я имел в виду если последовательность кончается раньше (т.е. lookahead получает nil) то оно не учитывается http://lpaste.net/364017

> Замерил time'ом? :)


время офигенно хорошо, даже если я снимаю лимит, зачем он был?
115 1162114
>>161048
в общем, всех похуй, у меня выходит вот так https://ideone.com/nggjrk

>>161904

>Замерил time'ом? :)


с лимитом и у меня все хорошо ;) а вот если его убрать, оно будет смотреть все до конца и это довольно медленно
116 1162116
>>161904
кстати, я совсем не в курсе, просто уточнить про ленивость - если эмулировать задержку, как у меня iterate/sleep, то оно отдает элементы лениво, как только очередное окно закрылось, или получилось в 1 проход, но энергично и будет ждать?
117 1162120
>>161914

>ради генеративных тестов


Могут ли генеративные тесты создавать гарантированно разные значения?
Например, мне нужно написать тест для списка структур вида "[{:id generated-id ...} {:id other-generated-id ...}]" — легко ли сделать так, чтобы generated-id и other-generated-id были случайными, но никогда не совпадали?
119 1162144
>>162114

>у меня выходит вот так


https://ideone.com/WWe0HI
120 1162186
>>162144
(grep-n 1 #{0} (range 1)) должно быть (0)
нашел генерационным тестом, кстати.

ну и как писал выше по треду, на список по идее нет ограничений, так что distinct для удаления дубликации пересечений окон не годится
121 1162190
>>162186

>(grep-n 1 #{0} (range 1)) должно быть (0)


Схуяли? По одному элементу в каждую сторону. Должен выдавать (0 1), то есть весь список. Чтобы было (0), n должен быть 0.

>distinct для удаления дубликации пересечений окон не годится


Годится, я же строки не просто так нумерую, посмотри внимательнее.
122 1162204
>>162114

>и это довольно медленно


Да там тормозить-то нечему. Не на sbcl'е запускал что ли?
>>162027

>то оно не учитывается http://lpaste.net/364017


А, точно. Забыл компенсировать сдвиг.
http://lpaste.net/512615483627798528
Ещё заменил nil на #:none.
>>162116
Ленивость есть, subseries как раз для её демонстрации и был добавлялен.
http://lpaste.net/532665142584803328#line80 - в такую проверку он раскрывается.
123 1162205
>>162190

> строки не просто так нумерую


пардон, да, клевая идея, спасибо!

>(0 1)


(range 1) это же (0). в общем, если контекста не хватает partition скипает https://ideone.com/djTYwk
я добавил хак, чтобы заработало как мне надо

в общем, это идеоматично и мне очень нравится, за исключением того, что это еще медленнее чем у меня (по моим замерам примерно в 1,5 раза, но по сравнению с CL это несущественно). я в шоке от этой вашей series

итого: теперь есть и быстрое решение и идеоматичное. анон, ты торт.
124 1162209
>>162144

>partition


Не-а, нельзя так просто.
https://ideone.com/yqoVOM
125 1162216
>>162205
Ах ты, опередил слоупока.
Капча через мобильные интернеты - БОЛЬ.
>>162209-хуй
126 1162217
>>162204

>>и это довольно медленно


>Да там тормозить-то нечему. Не на sbcl'е запускал что ли?


к сожалению для треда, я про кложу, это у нас с другим аноном без лимитов (и если ждать прогон всего range через doall) - все плохо (на порядки)

даже больше, анон, почему вот это https://ideone.com/ijdfeX так медленно?
127 1162225
>>162217
У хаскеля дела обстоят не лучше: https://ideone.com/5aUHRT
128 1162250
>>162225
хз про пределы хаскеля, но jvm то может https://ideone.com/elz9jB
129 1162483
>>162204

> там тормозить-то нечему


слушай, а оно прям на любых последовательностях так работает или только series (типа range чисел) и т.д?

анон, я упоролся и улучшил скорость. стало ужасно, императивно, для определенных случаев с контекстом меньше chunk size (32 by default) теперь в 12 раз быстрее https://ideone.com/kLp0pH и вплотную приблизилось к тупому filter на кложе. дальше копаться надо в языке, может попробовать заменить range на LongStream

но блядь эти series все равно в разы быстрее (спасибо, уже не на порядок). это пиздец :)
130 1162487
>>162250

>IntStream


Может потому что боксинг vs примитивы?

Ну и разница в 5-6 раз для динамики - имхо некритично ¯\_(ツ)_/¯
131 1162488
>>162483
Если хочется скорости, можешь попробовать чекнуть библиотеку specter (кстати, от того же чувака, что запилил apache storm). Но она скорее как хаскелевские линзы, больше про вложенные структуру, так что не уверен, можно ее сюда впихуть или нет.

Кстати, на трансдьюсерах было уже решение?
132 1162502
>>162488

> specter


она хорошая, но тут вообще не при чем, у нас тупой filter тормозит

> на трансдьюсерах


применение трансдьюсера не ленивое, оно реализует коллекцию

>>162487

>боксинг


кстати спасибо, теперь наконец-то удалось уложиться с референсным значением итераций и sbcl (100000000) в их лимит, но все же это семечки :)
133 1162513
>>162487

кстати, ты не то процитировал. jvm норм.
расклад для 100000000 у меня локально (ноут оказывается где-то в 2 раза слабее ideone, такие дела)

- jvm тупой filter 881ms
- clojure тупой filter 8288ms

теперь grep-n
- sbcl - 800ms (WAT)
- clojure (chunked) 8836ms
134 1162519
>>162513

пардон,
- jvm тупой filter 184ms
135 1162536
>>162205

>(range 1) это же (0).


Что-то я тупанул, да, сори. Короче, предполагается, что n >= длины коллекции, в противном случае нужна твоя пофикшенная реализация, да.

>>162502

>она хорошая, но тут вообще не при чем


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

>применение трансдьюсера не ленивое, оно реализует коллекцию


В смысле? Трансдьюсеры же о коллекциях ничего не знают, их можно хоть на core.async chan повесить и скармливать данные с любой нужной скоростью.

>>162513

>кстати, ты не то процитировал. jvm норм.


В смысле? Я и имел в виду, что джава, возможно, быстрее в том числе из-за того, что ты юзаешь специализированный для примитива класс (IntStream), в то время как в кложе боксинг\анбоксинг.

>- sbcl - 800ms (WAT)


Сбцл очень часто с сишкой тягаться вполне себе может, это да.
136 1162541
Вот сейчас попробовал с трансдьюсерами + sequence - все норм, кроме filter, он начинает все считать. Бля, надо все-таки разобраться с трансдьюсерами.
137 1162555
>>162541

я про вот такой эффект https://ideone.com/atYbCE емнип снаружи остановить consume процесс трансдьюсера нельзя, он вычитает все, единственный способ это поменять трансдьюсер и откладывать его применение. наглядно https://ideone.com/atYbCE
138 1162563
>>162513

>- sbcl - 800ms (WAT)


Это без объявлений типов и (optimize speed (safety 0)) или с?
мимо любопытная варвара
139 1162598
>>162555
Блин, анон, ты юзаешь transduce, он не ленивый, это как reduce. То есть ты берешь ленивый сиквенс, перегоняешь его через conj в вектор, а потом делаешь take 3 и еще раз перегоняешь результат в вектор. А надо юзать sequence, она ленивая: https://ideone.com/GyM9dU - вычисляется ровно один чанк.

Полностью аналогичная реализация будет такая: https://ideone.com/YDLVT5 (я не знаю, как там зависимости подключать; xforms - это https://github.com/cgrand/xforms/). Но тут filter вычисляет всю последовательность - я не до конца разобрался, почему. Если предикат всегда возвращает true, то вычисляется только один чанк.

Кстати, если уж говорить о ленивости, то (apply concat) в изначальной реализации тоже не ленивый и начнет считать всю последовательность.
140 1162603
Вообще, если уж рилток, то ведь скорее всего у тебя будет такая схема: есть файлы log.0, log.1, ..., тебе нужно их фильтровать и переливать например по сокету на воркеров, которые там будут считать-колдовать. То есть все-таки трансдьюсеры + core.async в этом смысле выгоднее, ведь у тебя будет чтение из нескольких лог-файлов и пул фильтровальщиков, так?
141 1162731
>>162563

первое
>>161742

будет интересно, если сможешь еще затюнить, я CL только с трудом читаю
142 1162839
>>162731
Затюнил. На моей микроволновке время исполнения сократилось на ~75%
http://lpaste.net/7412602692305944576

Для тех, кому любопытно, как тюнится общелисп:
Время выполнения без оптимизаций - 7.100
1) Добавил (declaim (inline ?)) - сократилось до 5.080
2) Добавил optimize speed - 4.530
И получаю 5 предупреждений такого вида:

>note: forced to do GENERIC-- (cost 10)


>unable to do inline fixnum arithmetic (cost 1) because: <...>


3) Добавляю (declare (fixnum need)) - 4.350
3 предупреждения из 5 закрыты.
4) Дизассемблирую выражение, бросается в глаза, что одна лямбда не заинлайнилась (http://lpaste.net/532665142584803328 вызывается на 60й строке, #:OUT-704). Хз почему, косяк sbcl'а. С мыслью, что если передать лямбду по имени, то кодогенертрансформатор series'а не будет заталкивать её в переменную, а подставит прямо в место вызова, добавляю flet, sbcl заинлайнил (funcall #'member? X) до нескольких CMP инструкций - 2.420
5) Удаляем проверки типов в рантайме - (safety 0) - 1.800
143 1162845
>>162839

>2) Добавил optimize speed - 4.530


>3) Добавляю (declare (fixnum need)) - 4.350


Подозрительно маленькая разница. Перезамерил, получилось ~4.9 и ~4.3
Хуй знает, откуда эти 4.530 взялись. Наверное, опечатался при наборе 4.350, а потом записал ещё раз, но уже правильно.
144 1163061
>>139597 (OP)
В lein есть какое-то место, куда можно засунуть глобальные алиасы? Хочу repl :headless по lein dev запускать.
145 1163117
>>163061
~/.lein/profiles.clj {:user {:aliases {"dev" ["repl" ":headless"]}}}
146 1163172
(send-off (anon >>163117) conj (repeat 2 tea))
147 1163192
сап 2ч, я рич, пруфов не будет
148 1163283
>>163192
kudryashki or gtfo
149 1163685
A little comparison of clojurescript and some of its competitors (extracted from slack): https://notehub.org/8hngn
Свежий минималистичный геттинг стартед для кложескрипта: https://clojurescript.org/guides/quick-start
Заебатый обзор репл-разработки: https://clojure.org/guides/repl/introduction
Дебаг через перенос локального контекста в вары: https://github.com/vvvvalvalval/scope-capture
Браузерный воркспейс с визуализацией данных, прикольная штука: http://gorilla-repl.org/index.html
РИЛТОК про репл-дривен девелопмент от бати: https://vimeo.com/223309989
150 1163816
>>163685
Спасибо няш.
151 1163948
Как в емаксе полностью очистить cider? ctrl + l не помогает.
152 1164043
>>163948
Что значит "очистить cider"? Сидер - это пакет, который добавляет в имакс ide для кложи. Тебе репл нужно очистить, или что? C-c C-o удаляет последний вывод, в меню есть Clear buffer для очистки всего буфера.
153 1164061
Посоны, накидал варианты -> и ->> для трансдьюсеров: https://repl.it/repls/GrotesqueAuthenticWebmaster

Как лучше назвать? Может xf-> ?
154 1164357
Ну чо, пацаны, D&D? Вот эта шняга написана на кложурце:
http://www.orcpub.com/
https://www.orcpub2.com/
Автор обещает скоро заопенсорсить и looking for contributors.
155 1165064
Вкатываюсь в кложу и функциональное программирование. Все выглядит очень кайфово. Понял что такое чистые функции, функции первого порядка, каррирование, композиция, трансдьюсеры. Хотел бы по-глубже разобраться в функиональщине. Посоветуй ресурсов для этого плз, анон.
только не теорию категорий
156 1165197
>>165064
бамп вопросу
157 1165215
>>165064

>функции первого порядка,


Есть first-class functions, есть higher-order functions. Ты точно все понял? :3

Вопрос не очень понятен - тебе теория нужна? Или что-то про фп в кложе, раз ты тут вопрос задаешь? Если первое - читни "введение в функциональное программирование" харрисона, например. Ну и всякую классику - tapl, dcpl, pfpl, hott...
1521672737671.jpg55 Кб, 600x900
158 1165269
>>165215

>tapl


>the core topics include untyped lambda-calculus, simple type system, type reconstruction, polymorphism ...etc


Не то.

>dcpl


>this book explore a set of programming language design dimensions like dynamic semantics(naming, state, data), static semantics(types, type reconstruction, polymorphism), pragmatics (compilation, gc)


Не то.

>pfpl


>this text develops a comprehensive theory of programming languages based on type systems and structural operation semantics.


Не то.

>hott


>только не теорию категорий


>homotype type theory


лол.

>harrison


>lambda calculus


>types


>ml


>details of ml


>effective ml


Эту книжку гляну, но оглавление не впечатлило.

>не понятен вопрос


Мне нужны advanced материалы по фп. Не по теории категорий, не по cs, а именно по функциональной парадигме. Ещё что нибудь есть, няш?
159 1165358
>>165269
Анон, судя по этому посту, ты сам не очень понимаешь, что такое "фп" и что именно тебе нужно. Ты фактически пишешь: "хочу материалов по функциональному программированию, только чтоб без функционального программирования". Ну окасаки почитай, например. Пока не сформулируешь вопрос конкретно, я тебе помочь не смогу.
160 1165370
>>165215
А книжку про ооп можешь посоветовать?
15216823741740.png122 Кб, 1200x600
161 1165403
>>165370
Конечно, читай blue book. aka "smalltalk-80: the language and its implementation
162 1165475
>>165358
Ну я просто не считаю что теория категорий как то к фп относится.
163 1165547
>>165403
не понимаю я вааших мемов(
164 1165803
>>165475
Ну так я тебе и не давал ничего по теории категорий - ну, разве что hott ее задевает. Еще раз прошу сформулировать твои цели и твой запрос, ну и что ты понимаешь под "фп" заодно.

Кстати, если окасаки прочитал, вспомнилась еще книжка "Pearls of Functional Algorithm Design" - мозгоебля, на любителя. Ну и я предполагаю, что стандартные sicp+htdp ты уже прочитал?

>>165547
Ну ты просишь книжку про ооп - тебе советуют мануал по смолтоку. Логично!
165 1165884
>>165803

>Логично!


Можно было ещё эрланг порекомендовать.
166 1166812
167 1166818
>>166812
В пакете карп, в пакете. Меня вот сразу смущает как он может без мануального управления памятью (инб4: кожанные ублюдки тоже косячат), когда даже в расте иногда нужно делать грязные хаки, типа forget или drop.
168 1166829
>>166818
Сразу скажу, что я шибко не разбирался (гайд и введение прочитал, змейку еще не смотрел), но мне кажется, что там дофига ограничений должно получаться. По сути, там же такие правила (поправь, если где-то не прав):
1. В конце лет-блока дропаем все, что плохо лежит.
2. Возвращать реф из лет-блока нельзя.
3. Овнершип передается с аргументами.
4. Структуры дропают свой контент при дропе.
5. ???
6. ПРОФИТ!

Насколько я понимаю, нет сумтайпов, нет рид-онли рефов, нет лайфтаймов, нет полиморфизма (хотя definterface вроде есть, но в пример с ним я не врубился), любые опасные операции подразумевают копирование. Плюс я так понимаю списки\массивы у него в рантайме заделаны, а не на самом языке. Короче, надо посмотреть внимательнее.
169 1167966
170 1168062
Пропиарю https://github.com/halgari/fn-fx обертка а-ля реакт над JavaFX

Лучшее что изобрели для десктоп-приложений на Clojure и вообще, никакие электроны рядом не валялись. JavaFX быстрая, портабельная, с аппаратной растеризацией и вменяемым подмножеством CSS для управления внешним видом UI
171 1168067
>>168062

>JavaFX быстрая


>Java


>быстрая



Srsly tho, не шутишь? Жавафх же вроде какая-то невзлетевшая хуита. К тому же она мне никак не поможет, если я хочу нативный лук-енд-фил, так?

мимо-когда-то-писал-да-недописал-враппер-для-свт
172 1168082
>>168062
За что ж ты так пользователей не любишь? Им и так с браузерами досталось.
173 1168094
>>168067

>Srsly tho


Не знаю как там в 2005 но на нынешнем железе работает быстро. А натив лук уже почти никому и не всрался, поскольку все привыкли к веб/материал дезинг/электрон и прочей андокументед алиен хуете

>свт


в JavaFX наконец отказались от идеи использовать натив-виджеты что и позволило сделать всё более или менее прямо и быстро ко второй версии

>>168062

>За что ж ты так пользователей не любишь? Им и так с браузерами досталось.


В том то и дело что нынче JavaFX работает лучше любого броузер-UI
174 1168103
>>168094

>но на нынешнем железе работает быстро.


>А натив лук уже почти никому и не всрался


Сука, как же я ненавижу таких мудаков! Все бы им скобочки дрочить себе на потеху, а на пользователей класть. НАХУЙ ИЗ ПРОФЕССИИ.

>поскольку все привыкли к веб/материал дезинг/электрон и прочей андокументед алиен хуете


Кто привыкли? Кто, блядь? 1% пользователей хромобука?

>В том то и дело что нынче JavaFX работает лучше любого броузер-UI


Нашел с чем сравнивать.
175 1168107
>>168103

>а на пользователей класть


пользователи которым прямо жизненно необходим натив-лук (который кстати из примерно 10 натив-луков windows или linux?) скоро уже вымрут вместе с тобой старикашка

>Кто, блядь?


Например все у кого есть в кармане андроид или хотябы одно приложение на базе электрона
176 1168120
>>168107

>который кстати из примерно 10 натив-луков windows или linux?


Каких 10ти? В щиндовсе нет выбора, а на линуксе живы только гтк/куте, которые, к счастью, научились выглядеть одинаково.

>скоро уже вымрут вместе с тобой старикашка


Не дождешься.

>Например все у кого есть в кармане андроид или хотябы одно приложение на базе электрона


Ни одного. ЧЯДНТ?
177 1168123
>>168120

>Каких 10ти? В щиндовсе


Ну допустим не из 10 а из двух, всё равно ты уже вряд ли сможешь иметь THE native look если их два

Троллинг асайд идея была в том что упомянутый выше fn-fx это возможность делать нормальные быстрые UI в функциональном react-стиле не вылезая из кложурки и не сношаясь с win32 или электроном. Если вам прям обязательно необходима боль и кнопочки '99 стайл, пожалуйста но не надо блять за всех отвечать впрочем нас видимо тут только двое и есть
178 1168157
>>168094
Так, смотри. Все приложения делятся на два типа: нативные и ненативные. Для нативных используется гтк, кутэ или винформс. Для ненативных - в основном веб.

Я не понимаю, какую нишу заполняет жавафх. Если мне нужно кроссплатформенное ненативное приложение, то я чтмлцссхуйпиздаговно, чтобы его можно было выставить в интернеты. Если мне нужно нативное приложение, то мне нужен и нативный лук - иначе см. пункт первый. Жавафх же - это такой типа веб, но только без веба. В итоге имеем все недостатки и первого, и второго подходов, без преимуществ и первого, и второго. Не понимат. ЧЯДНТ?
AiBooster.jpg63 Кб, 500x454
179 1168161
>>168123

>ты уже вряд ли сможешь иметь THE native look если их два


Настраиваемых. К тому же, ты упускаешь, что родным приложение определяется не только по виду, но и поведению, интегрируемости в среду.

>Троллинг асайд


Вось шо гэта за грязний рунглиш? Тутай тябе не у своем ковхозе, пяши як нармальны адукованы чалавек.

>делать нормальные быстрые UI


Один лишь старт жвм занимает от 10 секунд, а ведь ей ещё прогреться нужно. О какой быстроте ты говоришь?

>функциональном react-стиле не вылезая из кложурки


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

>и не сношаясь с win32 или электроном


С винапи не нужно было сношаться ещё до твоего рождения.

>Если вам прям обязательно необходима боль и кнопочки '99 стайл


Ты прав, единобразие в интерфейсах - слишком скучно и вообще застой и ретроградство. Долой эту серость! Интерфейс должен быть неповторимым, современным! Покажи им всем своё творческое Я! Думай иначе!
180 1168165
>>168103
Ну вообще-то конкретно в этом он прав, ты какой-то слоупок или жирный. Все уже давно привыкли к мобилкам с вебом, как раз нативлук-приложения нужны 1% пользователей (мне в том числе).

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

>>168120

>которые, к счастью, научились выглядеть одинаково.


Это пиздеж, кстати.

>>168107

>который кстати из примерно 10 натив-луков windows или linux?


Тоже пиздеж, 3 штуки. На самом деле 2 (винформс и гтк).
181 1168166
>>168161

>Один лишь старт жвм занимает от 10 секунд


В голос проиграл. Ты реально какой-то поехавший, хоть и конкретно в этой дискуссии моя точка зрения практически совпадает с твоей.
182 1168184
>>168157

>это такой типа веб, но только без веба


а также без например сраного джаваскрипта
183 1168186
>>168165

>Ну вообще-то конкретно в этом он прав, ты какой-то слоупок или жирный.


>Все уже давно привыкли к мобилкам


В экосистемах которых как раз таки наоборот при проектирования интерфейсов принято следовать четким руководствам платформы.

>эндюзеры


Та вы хлопцы чи с одного ковхозу будете?

>Это пиздеж, кстати.


https://wiki.archlinux.org/index.php/Uniform_look_for_Qt_and_GTK_applications
>>168166
Ну уж не обессудьте, не успел обновиться до последнего СЕРДЦЕВИНА Я7, дабы не мешать ребятам играться скобочкамидвигать прогресс.
184 1168187
>>168184

>без например сраного джаваскрипта


Просто без скрипта. Сраный и жава остаются.
185 1168188
>>168161
ты вот например в чём на кложуре пишешь, в intellij или в емаксе? который из них имеет нативный лук?
186 1168189
>>168187
джава туповатая конечно но хотя бы работает
187 1168191
>>168189
А джаваскрипт - не?
>>168188
В gvim'е. Вполне себе нативненько выглядит.
188 1168209
>>168184
Не уловил. Что в8 какой-нибудь, что жвм - не вижу особой разницы. Жс вмы даже лучше для пользователя, например. Да и с точки зрения кложеразработчика жс по семантике чуть ближе по идее. Или что ты имел в виду?

>>168186
Чувак, ну ты правда несешь что-то эдакое, лучше я не буду тебе отвечать, не обессудь.

>>168188
Ну вот это хороший поинт, да - туше. С другой стороны, можно аргументировать, что имакс - сам себе среда, и все программы для имакса имеют нативный имаксовый лук.

Ну и вообще, иде (фотошоп, 3дсмакс, автокад, етк) - это такая штука, с ненативностью которой все-таки можно мириться.

Хотя я сейчас так прикинул и понял, что каждое из основных моих частоиспользуемых приложений имеет свой лукэндфил. Сука.
javascript.png164 Кб, 737x758
189 1168213
>>168209

>Не уловил. Что в8 какой-нибудь, что жвм


Кложаскрипт не пытается изолировать меня от джавыскрипта полностью спасибо Рич, соответственно с ними так или иначе приходится иметь дело. А Java/JVM/экосистема всё же ощутимо более вменяемо устроены чем аналоги из мира JS
190 1168486
Чем плох электрон? По мне так довольно няшный.
191 1168651
>>168213
Ну в этом плане я согласен, хотя и при работе с жс через клжс все-таки особо сильных экзистенциальных мучений не испытываю. Но все равно не вижу реальных весомых причин предпочитать жавуфх вебне или свиту, ну кроме удобства разработки.

>>168486
Нужно больше одновременно запущенных браузеров!
192 1168823
Вы тут совсем уже хуйню какую-то писать начали - v8-хуёсем, электрон-хуетрон.

Поясните лучше за эти ваши трансдьюсеры-хуюсеры.
Зачем это так назвается?
Почему об этой хуете ни слова нет в моей The Joy Of Clojure SE?
Нахуя плодить лишние сущности?
В чём принципиальная разница с обычной каррированной функцией?
rich-hickey.jpg57 Кб, 586x586
193 1168908
>>168823

>В чём принципиальная разница с обычной каррированной функцией?


Бляяя, ебать ты СПУТАННЫЙ...
194 1168913
>>168908
Нахуй иди, сынок.
Я уже сам всё выяснил.
Как я и думал - это хуета.

The reason transducers were added to Clojure is that with the addition or core.async channels, Rich Hickey and friends found themselves reimplimenting all of the stanard collection functions to work with channels (map, filter, take, etc.). RH wondered if there wasn't a better way here, and went to work thinking about how to decomplect the logic of these various collection processing functions from the mechanics of the collection types at hand.

Лисп такой лисп, лол.
Главное, щи посложнее сделать.
Тансдьюсеры-хуюсеры, всё как у взрослых.
195 1168915
>>168913

>Я уже сам всё выяснил.


Молодчинка :3

Только из твоего поста ясно, что ты ничего не выяснил, лол. Если таки захочешь выяснить - наверни классику, "A tutorial on the universality and expressiveness of fold" (Hutton) и https://clojure.org/reference/transducers или https://www.youtube.com/watch?v=6mTbuzafcII
tl;dr: трансдьюсеры - это комбинаторы редьюсеров.

Щи сложные делать не надо - все давно придумано, но до риалворлда доходит в лучшем случае тысячная часть этот всего.
196 1168924
>>168915
Вот именно, что фолд.
А тут изобретают велосипеды и хуйню всякую колхозят налету, выдавая за охуенные открытия с мудрёными названиями.

>how to decomplect the logic of these various collection processing functions from the mechanics of the collection types



Ну охуеть просто.
Так они, глядишь, скоро и монады какие-нибудь изобретут.
И придётся срочно 4-е издание Programming Clojure делать.
Динамично развивающийся язык же.

Особенно забавно было наблюдать, как несколько лет везде писали, что ооп нету в кложуре потому, что это некультурно - иметь ооп в охуенно функциональном языке без фолда.
А потом - опа - и ооп наш новый лучший друг.
Хипстеры, одно слово.
197 1169164
>>168924
Анон, извини, но ты несешь какую-то херню, совершенно не разобравшись в вопросе. Еще раз предлагаю прочитать тебе указанные выше пейпер и статью, потому что ты не понимаешь, о чем говоришь. Если после этого останутся вопросы - приходи, обсудим. Для подобных срачей можешь создать отдельный тред, если хочешь.
lispcycles.png36 Кб, 640x211
198 1169254
>>168924

>А тут изобретают велосипеды и хуйню всякую колхозят налету


Эта хуйня была изобретена уже в 1989 при разработке упоминавшегося ИТТ общелисповского series.
199 1169263
>>169254
Series не имеет практически ничего общего с трансдьюсерами.
200 1169271
>>169263
Естественно, в сериес не те же самые трансдьюсеры, но назначение то же - избавиться от создания промежуточных последовательностей.
201 1169285
>>169271
Хотя очень возможно, что и почти те же. Нужно бы посмотреть, как оно жонглирует лямдбами, когда не удалось преобразовать в единый цикл.
202 1169291
>>169271
Ну тогда уж давайте теперь вообще все, что хотя бы отдаленно связано с map fusion, называть трансдьюсерами)) и говорить, что эта хуйня была уже изобретена в 19xx году))0) Хотя подожди, это слабовато, можно же сказать, что любой реролл рекурсии в цикл - эт то же самое, цель же в избавлении от промежуточного мусора. Короче, давайте условимся, что трансдьюсеры были введены в промышленную разработку в 1958 году, самим батюшкой Маккарти. Ну, чтоб уж наверняка - чего мелочиться-то? /rant

Ну а если серьезно, давайте не будем хуйней страдать, а? У одного трансдьюсеры - это каррированный фолд с ооп (шта), у другого - все методы оптимизации итерации по последовательности эт примерно одно и то же. Ну блин, давайте демагогией в каком-нибудь мывамперезвоним-треде все-таки заниматься, а не здесь.
203 1169292
>>169285
Сириес - это дсл на макросах, который переписывает функциональные трансформации в мутабельный луп. Какое тут "почти те же" может быть? У хикки же есть все ссылки на пейперы, по мотивам которых он либу пилил, - не понимаю, зачем тут что-то выдумывать, а?
204 1169320
>>169291
Похоже ты не понял. Сам термин "трансдьюсер" можно найти в литературе за 1989.
Если бы знал, что это ТАК заденет твои религиозные чувства, то, пожалуй, не писал бы.
>>169292

>Сириес - это дсл на макросах


Не совсем так. В сериес все трансдьюсеры - обычные функции (но с пометкой и функцией-оптимизатором в метаданных). Так вот, если все ступени конвейера определить в момент компиляции не удаётся, то никаких преобразований кода не производится: трандьюсеры честно вызываются, ебутся лямбды в рантайме, вот это вот всё. Как именно - не изучал.
205 1169396
>>169320

>Сам термин "трансдьюсер" можно найти в литературе за 1989.


Гхм. Ну сам термин "трансдьюсер" можно вообще наверное в литературе чуть ли 19-го века найти: https://en.wikipedia.org/wiki/Transducer

>если все ступени конвейера определить в момент компиляции не удаётся, то никаких преобразований кода не производится


Хм, да? А накидай примеров, если не лень. Я только блогпост про них читал, так что тоже особо не изучал, как оно все работает.
206 1169555
Трансдьюсеры - подводим итог.

Никто так и не смог дать _внятных_ объяснений, чем это _принципиально_ отличается фолда.

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

Предложения "почитать" - не катят.
Я почитал, и итогом этих чтений стал пост >>168924

И вообще, эта ваша кложура в целом очень напоминает известную историю про новое платье короля.
207 1169659
>>169555

>Предложения "почитать" - не катят.


Лол, вся суть мамкиных вкатывальщиков и прочих формошлепов. Раз ты не можешь прочитать и понять одну страницу документации дай угадаю: английский еще не выучил, да?)), то тебе попросту не место в этой профессии. До свидания.

Для остальных, просто чтобы показать всю степень идиотизма этого анона, который не можешь отличить трансдьюсер от fold: фолд имеет тип (a b -> a), a, -> a; трансдьюсеры имеют тип вида (a b -> a) -> (a c -> a), в котором списки (или foldable в общем случае) вообще никак не упоминаются.

Алсо, монады в кложе были чуть ли не с самого начала (https://github.com/clojure/algo.monads), но в динамическом языке от монад самих по себе, как нетрудно догадаться, особой пользы нет - вангую, что это чучело просто крутое слово)) услышало, но разобраться в них, как и в трансдьюсерах, не осилило.
208 1169660
А, макаба же съедает квадратные скобки. Быстрофикс:

>фолд имеет тип (a b -> a), a, List<a> -> a

209 1169662
>>169660
Лол, еще один быстрофикс - List<b>, нувыпонели.
210 1169694
>>169659
Чувак, ты ещё раз продемонстрировал, что ты не особо далёкий паренёк.
И у тебя очевидные проблемы с пониманием обобщений, аллегорий и т.п.
Возможно, это просто в силу юного возраста.
Это также объясняет твой максимализм и то, что ты сразу начинаешь гнать в ответ на любое мнение, отличное от твоего.

Вот годная инфа (откуда и была взята цитата выше):
https://stackoverflow.com/questions/27816946/what-are-the-similarities-and-differences-between-scala-transducers-and-clojure

Примерно таких объяснений я и хотел.
211 1169700
>>169694
Бла-бла-бла, опять обидки, вода и ничего по теме треда. Если у тебя есть менее идиотские вопросы - задавай, в противном случае - иди читай документацию, до свидания.
212 1169806
>>169396

>Ну сам термин "трансдьюсер" можно вообще наверное в литературе чуть ли 19-го века найти


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

>А накидай примеров, если не лень.


Ну, самому писать мне лениво. Можешь в cltl2 посмотреть, там есть небольшие: http://www.cs.cmu.edu/Groups/AI/html/cltl/clm/node347.html
213 1169832
>>169806
Ну, если бы он ими вдохновлялся, то в референсах бы поставил на них ссылку, а он явно проговаривал, что вдохновлялся другим. А как раз из-за его темного общелиспового прошлого видится маловероятным, что он про сириес не в курсе. Ну, впрочем хуй знает, но все равно это не важно - трансдьюсеры вообще не про обработку последовательностей без создания промежуточных результатов, блин.

>Можешь в cltl2 посмотреть, там есть небольшие


Я имел в виду конкретно примеров, когда "никаких преобразований кода не производится".
214 1169835
А, хотя вижу, там инвариант во введении выписан, ок.
215 1169838
>>169832

>Я имел в виду конкретно примеров, когда "никаких преобразований кода не производится".


А, ты про это. Да просто запусти любой из примеров без коллекта и оно тебе foundation-series объект вернет.
216 1169848
>>169838
Не. Я про разворачивание в луп. В книжке пишут, что оно не разворачивает в луп, если детектит сайд-эффекты внутри.
217 1169853
>>169848
А, это... я думал, ты хочешь посмотреть как неоптимизированная версия работает.
218 1169904
Наконец-то, нашёл исчерпывающее объяснение того, _зачем_ нужна эта хуета. И в чём таки _принципиальная_ разница с "просто фолдом" ни в чём, как я и думал.

Transducers improve efficiency, and allow you to write efficient code in a more modular way.

Compared to composing calls to the old map, filter, reduce etc. you get better performance because you don't need to build intermediate collections between each step, and repeatedly walk those collections.

Compared to reducers, or manually composing all your operations into a single expression, you get easier to use abstractions, better modularity and reuse of processing functions.


https://stackoverflow.com/questions/26317325/can-someone-explain-clojure-transducers-to-me-in-simple-terms

При этом, копая эту тему, я узнал массу интересных вещей, к кложуре отношения вообще не имеющих.

И да, речь шла не о том, как пользоваться трансдьюсерами и т.п., а о самой сути этой идеи - т.е. _зачем_, и что не так с другими вариантами. В официальной документации это не отражено вообще.
219 1169910
>>169904

>ни в чём, как я и думал


Лол, шли третьи сутки, боец все еще считал трансдьюсеры фолдом а стулья - цементом.

>При этом, копая эту тему, я узнал массу интересных вещей


Это вообще характерная черта сабжа. А если ты вместо нытья и щитпостинга будешь задавать вопросы и читать ответы, которые тебе дают, то ты вообще охуеешь от того, сколько оказывается узнать можно (не только в этом треде, а хоть где).

>В официальной документации это не отражено вообще.


А, да, и если еще английский подучишь, блядь:

https://clojure.org/reference/transducers
Transducers are composable algorithmic transformations. They are independent from the context of their input and output sources and specify only the essence of the transformation in terms of an individual element. Because transducers are decoupled from input or output sources, they can be used in many different processes - collections, streams, channels, observables, etc. Transducers compose directly, without awareness of input or creation of intermediate aggregates.

Also see the introductory blog post and this video.
220 1171744
Утащил ссылку из соседнего треда: https://leonid.shevtsov.me/post/companies-that-are-using-clojure/
221 1171907
>>139597 (OP)
Можешь привести годный пример решения некоей реальной задачи на Clojure, которое было бы однозначно лучше решения той же задачи на Scala, например?
С пояснениями - почему. как и т.д.?
222 1171935
>>171907
Не обижайся, анончик, но по-моему это какая-то хуевая постановка вопроса, не имеющая никакого смысла. Мало того, что получается один и тот же проект должен быть два раза написан, причем именно на скале и кложе, так еще и непонятно, как ты собираешься мерять, какой из них "лучше" - по количеству строчек кода, лол? Ну тогда кложа будет однозначно "лучше", лол, но это же нихуя не показатель.

А так, ну, хуй знает, вот например core.async - реальная задача, добавление асинхронности в язык, но при этом сделано чисто библиотекой, без модификации самого языка. На скалке такого тупо не сделаешь, так что получается "однозначно лучше".

Или любая фулстак вебня или просто спа - можно использовать кложу и на сервере, и на клиенте, а скалки на клиенте по факту нет скала.жс - это игрушки, так что тоже однозначно лучше.

А для всех задач, которые в принципе реализуемы на обоих языках, значение "лучше" зависит в первую очередь от того, какая команда будет заниматься их реализацией, имхо. Ну ладно, еще тесты и всякий дата-процессинг на кложе однозначно удобнее.
223 1172607
>>171907
нет но в целом разница между clojure и scala состоит в том что первая специально максимально возможно простая чтобы не занимать собой все 20 ватт TDP твоего мозга и оставить что-то на решаемую задачу кто и зачем придумал scala я не знаю, но они явно из другого биологического вида
224 1172696
>>172607
Я полностью согласен с твоей характеристикой скалы.

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

И, чтобы нормально во всём этом ориентироваться, тоже приходится грузить тоже хуеву тучу мозговых ресурсов. Просто грузятся они немного иначе.

И очень тяжело читать даже свой собственный, не особо сложный код, спустя несколько месяцев.
225 1172808
>>172696

>Сложные вещи быстро становятся нечитаемыми, ибо лисп же.


Щито? Поясни за базар.

>И эта тугая струя мелких функций и макросов на каждый пук


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

>И очень тяжело читать даже свой собственный, не особо сложный код, спустя несколько месяцев.


Ты точно уверен, что проблема тут в языке, на котором ты пишешь?
226 1172861
>>172808

>косит под дурачка


Понятно.
srsly bro troll harder.jpg13 Кб, 289x303
227 1172915
>>172861
Зарепортил щитпостинг.
228 1173111
>>172696
От сложности никуда не спрятаться, однако в кложуре спасибо Рич максимум усилий приложен для того чтобы уменьшить количество связей между компонентами (поскольку именно в них как правило и содержится максимальное её количество).

Например: pure функции/immutable данные (чтобы понять функцию тебе достаточно её самой плюс корректность многопоточных вычислений становится хотя бы теоретически возможной), предпочитание библиотек фреймворкам и т.п. Макросы как необходимое зло используются точно по необходимости

Всё это, насколько я могу видеть, сделано в первую очередь именно для уменьшения нагрузки на мозг (ну т.е. взяли common lisp, снизили упомянутыми выше путями нагрузку на мозг, прикрутили jvm чтобы не ебаться с библиотеками и c ffi и получили кложуру)
229 1173129
>>171935

>кложу и на сервере, и на клиенте


не понял, на клиенте кложу? на фронте только жс же, поясни-ка
230 1173157
>>173129
С разморозкой: https://clojurescript.org/
Заодно можешь и шапку почитать.
231 1173333
>>173157
так и думал, что это типа тайпскрипта. На выходе всё равно жс, так что называть это кложей не совсем уместно.

Хоть кресты компилируй в жс, всё равно браузеры только жс читают на клиенте
232 1174808
>>173333
Ага, а на сервере у тебя только процессор, поэтому всё равно в итоге только машинный код. Хуйни не неси.
233 1174872
>>173333

>На выходе всё равно жс, так что называть это кложей не совсем уместно.


Наркоман? По такой логике обычную кложу следует называть "байткодом jvm" ну или машинным кодом, как анон выше справедливо заметил.
234 1178234
>>172808

>>>1172696


>>Сложные вещи быстро становятся нечитаемыми, ибо лисп же.


>Щито? Поясни за базар.



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

например, начинается уже когда начинаешь писать вместе map+update-in без specter (или схемы)

и хз то ли лучше прям внутри функции, с названием из бизнес логики херачить лапшу в длинных let блоках с кучей биндингов, то ли сделать фукцию с уебищным названием типа cast-field-to-x-in-relation-of, которая ну вообще ни разу не будет переиспользована.
235 1178351
>>178234
А лисп-то тут при чем? Как бы в любом языке для обработки сложной deeply-nested структуры придется писать код для, ээ, для обработки этой сложной deeply-nested структуры. Тут хотя бы спектер есть, да.

>которая ну вообще ни разу не будет переиспользована.


Какое отношение переиспользование имеет к разбиению кода на логические блоки? Не надо нам тут вот этого, а то щас понабежит эффективный менеджер из мывамперезвоним треда и начнет залечивать про то, что НИЗЗЯ код в отдельную функцию выносить, пока она тебе ТРИ РАЗА не понадобится (и перекреститься еще, ага), а до этого надо все в одной функции на полтора экрана писать
236 1178400
>>178351

>обработки сложной deeply-nested структуры



мне кажется отличительный сигнал это вообще сигнатура T -> T т.е. тот же тип с другими кишками.

например хеши: вот если забыть о спектре. у нас на каждый уровень из hashmap при сборке "обратно" после итерации будет into или пр. как с куста, но это же лишнее для понимания цели функции, машинерия. а если бы были пуристами, то и mapv бы не было, и могли бы с векторами тоже хапнуть. существование спектра по-моему уже камень в огород core

> Какое отношение переиспользование имеет к разбиению кода на логические блоки


дело в единицах смыслов, которыми оперируешь в голове, когда читаешь. в кложе у меня пока получается либо акронимы действиям, либо в голову лезут мелкогранулярные, низкоплотные update-map-into. право, не макросить же их для семантики.

согласен, не очень про язык, просто наболело). пока есть план писать ns которые аля классы, где функции первым параметром принимают инстанс (привет питон). т.е. поведение все равно липнет к структурам, выходит ооп, но если не группировать так, а делать proxy или раскидывать update-map-into то в коде как будто слов много, а смысла мало.
237 1178564
>>178400

>сигнатура T -> T т.е. тот же тип с другими кишками.


Ну как бы строго говоря в динамически-типизированном языке все функции имеют такой тип. Тут все зависит от гранулярности, с которой ты хочешь на это смотреть. Ты же не думаешь о логическом типе своих функций как о "хэшмап в хэшмап", у тебя это какая-то конкретная структура, зависящая от того, что ты внутри акцессишь (ликвид рекорд).

>у нас на каждый уровень из hashmap при сборке "обратно" после итерации будет into


Не совсем понял, при итерации чего? Хэшмапа? Это же редко бывает, и обычно хватает map-vals\map-keys. Можешь привести пример с инто, который ты имел в виду?

>это же лишнее для понимания цели функции, машинерия


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

>существование спектра по-моему уже камень в огород core


Ну хуй знает. По-моему любой практично мыслящий человек понимает, что если бы, допустим, вместо коре был бы спектер с самого начала, то точно так же сейчас бы кто-нибудь писал про другую либу Х, что существование X уже камень в огород (гипотетического спектер-)коре. Лучшее - враг хорошего. Алсо, я вот не могу сказать, что спектер однозначно предпочтительнее - для некоторых случаев он удобнее, да, но не более того.

>право, не макросить же их для семантики


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

>т.е. поведение все равно липнет к структурам, выходит ооп, но если не группировать так, а делать proxy или раскидывать update-map-into то в коде как будто слов много, а смысла мало


Честно говоря, вообще не понял, при чем тут proxy, как связана группировка кода по неймспейсам и update-map-into, и почему смысла в коде мало. По поводу группировки кода - component\integrant де-факто стандартный путь. По поводу разбиения на функции - у того же weavejester'а глянь код, например. По поводу ооп - смысл ооп в привязке состояния к функциям, а у тебя никакого состояния у функций нет (надеюсь). Алсо, никто не запрещает тебе принимать инстанс не только первым, но и вторым параметром, например (ну, если только ты не компонентный фанатик, лол).

А вообще, серьезно, если у тебя есть код, который ты можешь расшарить - вкинь, будет интересно посмотреть, какие именно места тебе не нравятся, и попробовать что-нибудь сделать.
237 1178564
>>178400

>сигнатура T -> T т.е. тот же тип с другими кишками.


Ну как бы строго говоря в динамически-типизированном языке все функции имеют такой тип. Тут все зависит от гранулярности, с которой ты хочешь на это смотреть. Ты же не думаешь о логическом типе своих функций как о "хэшмап в хэшмап", у тебя это какая-то конкретная структура, зависящая от того, что ты внутри акцессишь (ликвид рекорд).

>у нас на каждый уровень из hashmap при сборке "обратно" после итерации будет into


Не совсем понял, при итерации чего? Хэшмапа? Это же редко бывает, и обычно хватает map-vals\map-keys. Можешь привести пример с инто, который ты имел в виду?

>это же лишнее для понимания цели функции, машинерия


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

>существование спектра по-моему уже камень в огород core


Ну хуй знает. По-моему любой практично мыслящий человек понимает, что если бы, допустим, вместо коре был бы спектер с самого начала, то точно так же сейчас бы кто-нибудь писал про другую либу Х, что существование X уже камень в огород (гипотетического спектер-)коре. Лучшее - враг хорошего. Алсо, я вот не могу сказать, что спектер однозначно предпочтительнее - для некоторых случаев он удобнее, да, но не более того.

>право, не макросить же их для семантики


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

>т.е. поведение все равно липнет к структурам, выходит ооп, но если не группировать так, а делать proxy или раскидывать update-map-into то в коде как будто слов много, а смысла мало


Честно говоря, вообще не понял, при чем тут proxy, как связана группировка кода по неймспейсам и update-map-into, и почему смысла в коде мало. По поводу группировки кода - component\integrant де-факто стандартный путь. По поводу разбиения на функции - у того же weavejester'а глянь код, например. По поводу ооп - смысл ооп в привязке состояния к функциям, а у тебя никакого состояния у функций нет (надеюсь). Алсо, никто не запрещает тебе принимать инстанс не только первым, но и вторым параметром, например (ну, если только ты не компонентный фанатик, лол).

А вообще, серьезно, если у тебя есть код, который ты можешь расшарить - вкинь, будет интересно посмотреть, какие именно места тебе не нравятся, и попробовать что-нибудь сделать.
238 1179012
239 1179202
>>179012
А ты команду ищешь?
240 1183556
Анон, расскажи что там сейчас у Clojure/Lein с поддержкой Java 10? В интернетах на этот счёт в основном взаимоисключающие параграфы
241 1183710
>>183556
Следующий же релиз будет LTS, нафига вообще о десятке беспокоиться? Считай это бета-версия.
242 1183898
>>183710
Я пытался какое-то время назад перевести один проект с 8 на 9, так ничего не вышло, хотел узнать как обстановка изменилась с тех пор я конечно остался таким же криворуким а так-то можно и 11 подождать
243 1183925
>>183898
В лейн емнип какое-то время был баг, связанный с девяткой, но вроде все уже давно починено.
244 1185164
Если и изучать Clojure, то только в спарке с Java?

Просто я начал изучать CL и он мне понравился, но он не актуален. Клоджур - это просто альтернатива JS? Или он может все тоже, что и CL. Как он чувствует себя в ML и макросах?
245 1185311
>>185164
tl;dr:
246 1185317
>>185164
Бля. tl;dr:

>— Обязательно знать джаву и жс?


>На уровне чтения документации.



Вообще говоря, если ты изучаешь сабж, то предполагается, что ты уже умеешь программировать (то есть можешь читать\писать код на любом из мейнстримных языков). Изучать джаву не нужно, если под "изучением джавы" ты подразумеваешь спринг-хуинг и прочие хибернейты. Изучать нужно платформу. Если ты пишешь под андроид, то тебе, очевидно, придется изучить андроид сдк. Если ты пишешь под веб, то тебе, очевидно, придется изучить чтмл+цсс и веб апи. Если ты пишешь под жвм... ну, ты уловил закономерность, да?

> Как он чувствует себя в ML и макросах?


Не понял вопроса.

Макросы в кложе негигиенические, такие же как в кл, но удобнее благодаря синтаксису для автоквалификации существующих и автогенерации новых имен.

По машин лернингу смотри здесь:
https://github.com/josephmisiti/awesome-machine-learning#clojure
и здесь:
https://github.com/originrose/cortex
и здесь:
google.com/?q=clojure+machine+learning

Алсо, есть книжки по сабжу. Алсо, начать можешь с видосика: https://www.youtube.com/watch?v=eLl6_k_fZn4
247 1186138
Анон. Я пхп макака. Не хочу быть фомошлепом. Хочется каких-то перспектив.
Сейчас пробую разные области. Пока только вижу перспективу в работе с ОС, linux kernel, c programming и т.д.
Как обстоят дела в ФП, в частности с clojure? Если после пхп перекатываться в него, и пилить бэкэнд? Такое же формошлепство, только в ФП?
Я не очень хорошо представляю области применения clojure, например.
248 1186155
>>186138

>пилить бэкэнд


>формошлепство


Гхм...

>области применения clojure


Обычно это бэкенд-сервисы, которые перемалывают данные и отдают их на фронтенд-сервер или в SPA\мобильное приложение. Если речь о clojurescript, то обычно это толстые SPA или react native приложения (http://cljsrn.org/).
249 1187023
GraphQL на кложе?
251 1193690
Один известный кложурист (автор lein) победил в lisp game jam: https://technomancy.us/187

Неплохой список типовых зависимостей для веб-проектов: https://dev.to/elarouss/a-beginners-journey-inside-the-clojureclojurescript-web-dev-ecosystem-1-2nm0

LambdaWerk и CircleCI (оче известные в опенсорсном кложекомьюнити конторы) хайрят:
https://functionaljobs.com/jobs/9086-software-developer-flowerpilot-m-f-at-lambdawerk-gmbh
https://functionaljobs.com/jobs/9085-senior-full-stack-software-engineer-at-circleci

Эйчар здорового человека (презенташка про то, как захантить себе уберкоманду): https://clojuresync.com/rebecca-kinsella/
252 1202436
Котаны, вкатываюсь в сабж и после всех этих хэллоуворлдов меня настигла пиздецома. Как правильноtm и канонічно® проектировать и оранизовать код, начиная от сущностей и заканчивая файлопомойкой, тестами и прочим говном?
Может есть какие маны или гайды?
мимо переболевший ООП
253 1202536
Молодые люди, вот душа прямо горит, прямо просит кложу, но он не типизированное гавно, чё делать?
254 1202581
>>202536
бочку
255 1202622
>>202536
Попробуй Typed Racket.
256 1202679
>>202536
1. Используй spec.
2. Разделяй приложение на микросервисы.
3. Прекращай быть фанбоем и решай реальные задачи вместо дрочева на типы\объекты\макросы\теорию категорий\<вставить модную фичанейм здесь>.
257 1202682
>>202436
Почитай:
https://github.com/stuartsierra/component
https://github.com/weavejester/integrant

Файлы и тесты - в стандартном lein-темплейте же все уже разложено по полочкам. Подробнее смотри, например, здесь (создавать отдельные clj\cljs\cljc каталоги необязательно, особенно если у тебя код и так естественно делится на неймспейсы в зависимости от платформы, типа app.server, app.client, app.common):
http://www.luminusweb.net/docs#anatomy_of_a_luminus_application

Если есть конкретные вопросы - задавай, подумаем.
258 1202695
>>202679

><вставить модную фичанейм здесь>


clojure
259 1202763
>>202695
Clojure - это язык, а не фича. Скрой тред, ты здесь лишний.
260 1202837
>>202679

> решай реальные задачи


В следствии решения реальных задач я и понимаю что языкам нужна типизация, особенно функциональным. Типы входных и выходных данных обычно предопределены и ограничены, потому мне и хочется писать на чем-то типизированном
261 1202936
>>202837

>языкам нужна типизация


Не нужна.

>Типы входных и выходных данных обычно предопределены и ограничены


Для этого есть spec.

>мне и хочется писать на чем-то типизированном


Для этого есть ocaml, например.
262 1203000
>>202936

> Не нужна


Не мог бы ты пояснить? Я в серьёз не понимаю чего-то очевидного, видимо.

Есть у нас функция по сложению двух чисел, принимать она всегда, очевидно, будет два числа, возвращать тоже число. В чем смысл делать язык не типизированным, или хотя бы не делать какое-нибудь ебанутый ран тайм аннотейшн чек, раз уж тип данных обычно всегда предопределен?
263 1203036
>>203000

>ран тайм аннотейшн чек


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

Если по теме - я же говорю, для этого есть spec. Ты можешь задавать спеки любой сложности, можешь делать на них статический анализ в компайл-тайме (https://github.com/arohner/spectrum), можешь экспортировать спеки в сваггер или жсон схемы, можешь генерировать из спеков юнит-тесты или мок-данные, можешь даже автоматически выводить спеки из кода вместо того, чтобы писать их руками.

Типы - это хорошо и замечательно, и о них нужно думать, когда пишешь код, но на сегодня механизмы статической проверки типов находятся в зачаточном состоянии с точки зрения экспрессивности (если что, я говорю об ML и компании - джава\си-стайл говно вообще системами типов язык назвать не поворачивается). Кроме того, за пределами твоей программы никаких типов нет, так что это вообще что-то вроде экономии на спичках. Действительно важны интерфейсы на границах компонентов, а что внутри этих компонентов - это становится совершенно не важно, стоит хоть чуть-чуть оторвать нос от кода и подняться на уровень выше.

tl;dr: запилите в мейнстрим робастный gradual typing с завтипами, эффектами, поддержкой метапрограммирования, подключаемыми верификаторами и полной рефлексией с возможностью экспорта информации о типах в plain data - тогда и приходите.
264 1203133
>>202682
Спасибо, анон
265 1203629
>>202837
Всерьез не понимаю типодрочеров. Ты сам говоришь, что типы входных и выходных данных предопределены. То есть не генерируются, а известны заранее. К чему тогда эти идиотские ограничители? Если так случается что ты не знаешь тип чего-то, спокойной проверяешь типы в репле, это же clojure.
266 1203653
>>203629
Если у тебя стопроцентное покрытие тестами, то и без типов норм (не так удобно как с типами, но норм). Реальность же, зачастую, намного хуже.
Реальный пример: писал недавно расширение для Хрома. Понадобился parent-selector. Его в css спеке нет. Накостылил. Теперь вместо строки-селектора передается объект {selector: String, parent: Integer}. Вроде поменял везде и задеплоил (читай в продакшен). Через два дня оказалось что не везде. Был бы тогда тест - такого бы не случилось. Использовал бы typescript|flow (читай типизацию) - тоже избежал бы проблем. И это одна маленькая функция в проекте из 3-х файлов на 1к строк в сумме.
267 1203667
>>203653
Так в том то и дело, что тесты то писать нужно. И все те преимущества, которые дает типизация решается парочкой дополнительных тестов. А забирает она намного больше.
Может я и криворукая собака, но мне намного проще и приятнее писать на кложе, чем на java.util.stream, с тремя дженериками на один метод запаянными в 2 экстендс и 4 супер. Хотя я полностью понимаю PECS принцип. Извините за джава-офтоп
268 1203686
>>203653
Наличие типов никак не отменяет необходимости писать тесты. Более того, оно никак не сокращает количество тестов, которое нужно написать для хорошего coverage. Тесты с типами вообще никак не связаны, блядь, это совершенно ортогональные понятия. Серьезно, уже порядком подзаебала эта идиотская мантра, извините.

>Вроде поменял везде и задеплоил


Ну вообще, для такого существует https://github.com/clojure-emacs/clj-refactor.el - или на худой конец тупой греп по проекту. Изменять сигнатуру функции и потом руками искать все ее call site'ы - это просто плохая инженерная практика и твой фейл как разработчика (отсутствие тестов - туда же). Да, в этом случае статически типизированный язык стукнул бы тебя по рукам, но в виду вышеозначенных причин это не является хорошим аргументом в сраче статика-динамика (который, кстати, вообще не про отлов тривиальных фейлов, а про логические ограничения и диапазон доступных для написания программ в первую очередь).

>>203667
В то же время, твой пост тоже не является хорошим аргументов против статики, так как система типов в джаве - это несмешная пародия, а не система типов.

А вообще, срачи статика vs динамика, как известно, очень редко бывают содержательными, так что не хотелось бы скатывать в это тред.
269 1203715
>>203686
Я где-то написал что с типами не нужны тесты? Когда выдумываешь тезисы за собеседника, а потом их оспариваешь - это уже проблемы с головой, братиш.

Clojure, emacs. Я тебе про js пишу.

>не является хорошим аргументом


Ты сказал? Типизация бы проблему решила? Решила. Ты с этим согласен. Делают вывод что типизация полезна.
270 1203722
>>203715

>Я где-то написал что с типами не нужны тесты?


>Если у тебя стопроцентное покрытие тестами, то и без типов норм


> => а если покрытие тестами не стопроцентное, то без типов не норм


> => покрытие тестами связано с тем, есть типы или нет


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

>Clojure, emacs. Я тебе про js пишу.


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

>Ты сказал?


Прочитай абзац целиком, я же внятно изложил факты и выразил свою позицию.

>Делают вывод что типизация полезна.


А что, кто-то с этим спорит? Когда выдумываешь тезисы за собеседника... - и далее по тексту. Формальное доказательство корректности, например, тоже полезно, но - увы! - непрактично.
271 1203869
>>203722
=> а если покрытие тестами не стопроцентное, то типы помогает не совершить некоторые ошибки и повышают надежность кода. Сечешь? Не всегда есть возможность написать автоматический тест.

>Грепать


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

>Формальное доказательство корректности, например, тоже полезно, но - увы! - непрактично.


К чему здесь это? Типизация практична или нет?
272 1204008
>>203869

>то типы помогает не совершить некоторые ошибки


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

>Не всегда есть возможность написать автоматический тест.


Если код можно запустить, то его можно и протестировать. И тебе это придется делать в любом случае, независимо от характеристик языка, на котором ты пишешь.

>Я когда что-то меняю в коде, я не хочу запускать ручками какие-то инструменты


Как будто тайпчекер ts не является инструментом и его не нужно запускать. Это пустая демагогия.

>Типизация позволяет мне быть уверенным что я ничего не забыл, если программа скомпилировалась.


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

>где это помогает простым жалким людишкам


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

>Типизация практична или нет?


Нет какой-то одной "типизации". Системы типов а-ля Си откровенно вредны; а-ля Джава - непрактичны в большем\значительном числе случаев. Вообще, следует выбирать тот инструмент, который позволит решить данной команде поставленную перед ней задачу максимально эффективно, а не следовать всяческим религиозным догмам. Алсо, на этот вопрос я уже ответил несколькими постами выше: >>203036
273 1204027
>>204008

>как и


Я вижу что ты согласен с тем что типизация полезна.

>Если код можно запустить, то его можно и протестировать.


Если очень захотеть можно в космос полететь. Вопрос: какой ценой? Пример всё с тем же расширением: тестирую через puppeteer. У меня расширение добавляет пункт в контекстное меню браузера. У puppeteer, как и у многих прочих инструментов, доступа к этому меню нет. Вообще. Т.е. я просто не могу протестировать эту функциональность. Ручками могу. Но мы же про автотесты.

>Как будто тайпчекер ts не является инструментом и его не нужно запускать.


Ключевое слово было ручками. Запускается тайпчекер автоматически. Не разводи демагогию.

>Ты путаешь детонационную семантику с операционной.


Я не путаю. Это ты отказываешься понимать проблему. С тайпчеком мне будет известно, что в других местах поломалось. Без него - нет. Не во всех случаях. Это же не серебряная пуля. А в конкретном моём примере.

Если о чем-то можно забыть - об этом забудут. Тайпчек помогает мне не забыть и это прекрасно.

>Системы типов а-ля Си откровенно вредны; а-ля Джава - непрактичны в большем\значительном числе случаев.


Но это использование устоявшихся практик разработки, но ты это почему-то игнорируешь.
274 1204050
>>204027

>Т.е. я просто не могу протестировать эту функциональность.


Замокать не?

> Запускается тайпчекер автоматически.


Братюнь, у меня git hook с pytest прописан, который мне автоматически при коммите тесты прогоняет. По-моему, демагог тут ты.

мимо_питоняша
275 1204068
>>204027

>Я не путаю. Это ты отказываешься понимать проблему. С тайпчеком мне будет известно, что в других местах поломалось. Без него - нет. Не во всех случаях. Это же не серебряная пуля. А в конкретном моём примере.


>


>Если о чем-то можно забыть - об этом забудут. Тайпчек помогает мне не забыть и это прекрасно.



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

Профиты в итоге слабо понятны.
Мы отказались от статической проверки типов чтобы делать ее в рунтайме замедляя все в 3 раза.
Ради чего? Лаконичности кода?

Так себе в целом профит. Особенно в свете того, что большую часть типов можно выводить.
А код нужно обмазывать тоннами СПЕЦИФИКАЦИЙ и КОНТРАКТОВ.
276 1204083
>>204068
Но, должен сказать, в лиспе есть своя магия.
Программы в большинстве случаев работают сразу.
Что странно.
277 1204170
>>204027

>Я вижу что ты согласен с тем что типизация полезна.


Ну молодец, я об этом еще полтреда назад сказал. Пожалуйста, читай посты, на которые отвечаешь.

>Пример всё с тем же расширением: тестирую через puppeteer.


>тестирую


Ну значит цена вполне приемлема, раз тестируешь. Опять же, я не вижу смысла разводить здесь демагогию на эту тему.

>Запускается тайпчекер автоматически.


А тесты у тебя что, не автоматически запускаются, лол? А компилятор ты силой мысли запускаешь, или все-таки ручками? Бред какой-то, настрой себе билд пайплайн.

>С тайпчеком мне будет известно, что в других местах поломалось.


Я тебе только что объяснил, почему это в общем случае неверно. Завязывай уже.

>Но это использование устоявшихся практик разработки, но ты это почему-то игнорируешь.


Что "это"? Что я игнорирую? Я утверждаю, что слабая типизация - говно; это очевидно любому, кто хоть немного шарит в системах типов, нет? Кроме того, я утверждаю, что checked exceptions - это фейл (что тоже common knowledge), что система типов джавы - unsound, в чем тоже нетрудно убедиться самому. Сдается мне, что ты сам плохо разбираешься в системах типов, отсюда и идут все религиозные стереотипы. Ты писал что-нибудь (пусть уровня петпроджектов) на расте, х-ле, окамле или любом другом языке с нормальной системой типов?

Впрочем, можешь не отвечать, поскольку - повторюсь еще раз - срачи статика vs динамика очень редко бывают содержательными и каждый раз повторяются буквально слово в слово. На >>203036-пост ты ничего не ответил, во всем остальном мы идем на третий круг обсуждения, да к тому же эта дискуссия итт вообще оффтоп, так что предлагаю прекратить.

https://youtu.be/B5H6AdKUthg?t=1m55s
278 1204175
>>204068
Common Lisp по производительности находится на уровне С++ (sbcl в некоторых синтетических тестах даже обгоняет си). Тот же js, внезапно, тоже бегает примерно на уровне нативного кода. Джава работает может работать быстро отнюдь не благодаря своей кривой системе типов. А статически типизированный х-ль зачастую всасывает по производительности питону. Иными словами - это опять какие-то религиозные стереотипы, имеющие мало общего с реальностью. Статическое указание типов позволяет проводить некоторые оптимизации, которые в противном случае невозможны; из этого никак не следует, что "динамические языки медленные" или "статические языки быстрые".

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

Наконец,

>А код нужно обмазывать тоннами СПЕЦИФИКАЦИЙ и КОНТРАКТОВ.


Наличие спецификаций и контрактов совершенно ортогонально вопросу статической\динамической типизации.
279 1204208
>>204170

>Ну значит цена вполне приемлема


Ты о чём вообще? Братан, завязывай с тем что употребляешь. Я не смог протестировать часть приложения. Не смог. Я тебе привел пример где тестирование невозможно за приемлемую для меня цену.

>А тесты у тебя что, не автоматически запускаются, лол? А компилятор ты силой мысли запускаешь, или все-таки ручками? Бред какой-то, настрой себе билд пайплайн.


Компилятор запускает IDE после каждого изменения. Тесты запускаются для билда или ручками, конечно. Ты их запускаешь после каждого изменения в редакторе что ли?

>в общем случае неверно


Я тебе про конкретный случай уже 3 поста. Специально обозначил, что для всех случаев не сработает, а ты мне это пишешь. Братиш, это ты завязывай с веществами.

>религиозные стереотипы


Какие? Система типов в любом ЯП помогает миллионам программистов. С тем, что типизация полезна, ты согласился. Я отвечал изначально на >>203629 и, получается, ответил.
280 1204210
>>204050
Няша-питоняша, тайпчекер запускается при каждом изменении в исходниках. Почувствуйте разницу.
281 1204258
>>204208

>Я не смог протестировать


>тестирую через puppeteer


>я просто не могу


>Ручками могу


Определись уже.

>Ты их запускаешь после каждого изменения в редакторе что ли?


Эм? Юнит-тесты у всех прогоняются после изменения файла на диске, с разморозкой.

>Я тебе про конкретный случай уже 3 поста.


Твою ошибку в том конкретном случае как раз 3 поста назад и разобрали, что тут еще обсуждать?

>Какие?


Гхм, см. >>204008

>Система типов в любом ЯП помогает миллионам


Нет, в прошлом посте подробно изложил этот момент. Лол, тебе бы пропагандоном работать, с такими-то речевыми оборотами.

Вопрос про твой личный опыт ты проигнорировал, >>203036-пост ты проигнорировал; из этого я делаю вывод, что кое-кому не мешало бы подучить матчасть, прежде чем ввязываться в такие дискуссии. Можешь читнуть митовскую "Types and Programming Languages", например.
282 1204264
>>203000
я анон с этого вопроса, до сейчас был рид онли.

Так в итоге мы пришли к тому что рантайп чек типов нормальная тема, но нет нормальной реализации?

Ну ещё что есть куча других практик добавляющие уверенности что код работает как надо, но сейчас не об этом
283 1204282
>>204175

>Common Lisp по производительности находится на уровне С++ (sbcl в некоторых синтетических тестах даже обгоняет си). Тот же js, внезапно, тоже бегает примерно на уровне нативного кода.


Это такой троллинг?

Это даже не смешно.

Неужели gzip реализованный на js будет на уровне сишнго эталона?

>Наличие спецификаций и контрактов совершенно ортогонально вопросу статической\динамической типизации.


Ну это вообще пушка.
Развитая система типов == спецификация+контракты.
284 1204347
>>204258

>Определись уже.


Ты тупой? Извини за оскорбление, но я не понимаю что с тобой. Я не могу всё протестировать. Часть функционала осталась не протестирована. Об этом я и написал.

>Юнит-тесты


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

>что тут еще обсуждать?


Твою тупизну? Серьезно. Я тебе сказал конкретный случай, а ты мне про "ну в общем там...". А там не в общем. Там тайпчек помог бы.

К чему ты приплетаешь своё оценочное мнение о различиях в системах типов к вопросу о полезности системы типов (любой). Про типы не типы можешь не писать - мне всё равно что тебе там нравится или нет. Не уводи дискуссию в сторону.
285 1204368
>>204068

>Особенно в свете того, что большую часть типов можно выводить.


С чем, кстати, sbcl неплохо справляется.
мимо-пробегал
1528364629023.png381 Кб, 1440x2560
286 1204576
>>204264
>>202622
>>202679
Алсо, что скажете про typed clojure?
287 1204665
>>204576
Кидать скриншот вместо ссылки - это какой-то новый уровень идиотизма?
288 1204705
>>204665
ну чо ты а, скриншотик сделал, забыл, потом вспомнил вкинул

https://github.com/clojure/core.typed/wiki
289 1204710
>>204705
тем более на скриншотике есть ссылочка, можешь и сам ручками напечатать ох вейт, мы же не в го треде
photo-179592.jpg100 Кб, 1024x885
290 1204746
>>204710
>>204705
>>204576
Звоните шизбастерам.
Мелкобуквенный сумасшедший в треде.
291 1204987
>>204282

>Это такой троллинг?


Лол, ну разве что самую малость. Смотри, например: www.iaeng.org/IJCS/issues_v32/issue_4/IJCS_32_4_19.pdf

>Неужели gzip реализованный на js будет на уровне сишнго эталона?


js - это garbage-collected язык с ограниченными возможностями по байтоебству, так что вопрос мне видится несколько наивным.

>Развитая система типов == спецификация+контракты.


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

>>204347
Продемонстрировав незнание матчасти, пациент перешел к оскорблениям. Ожидаемо, но тут тебе не /b; разговор окончен.
292 1204988
>>204576
Как эксперимент и как личный проект ее авторов - успешная штука. Как воспомогательный инструмент - имеет ограниченное применение. Как дефолтный способ писать код - имхо, непрактично.
293 1205007
>>204987

>js - это garbage-collected язык с ограниченными возможностями по байтоебству, так что вопрос мне видится несколько наивным.


Товарищ Фабрис Беллард с тобой не согласится.
294 1205028
>>203036

>Я что-то не припомню сходу высокоуровневых языков, в которых функция сложения двух чисел не делает никаких чеков и молча портит память при передаче каких-то странных аргументов.



пардон за оффтоп, но есть такой ;)

https://www.programmingsimplified.com/c-program-add-two-numbers-using-pointers

ввел буквы - молча получил хуевое число
295 1205029
>>205028
или против этого и было про "высокоуровневый"?
296 1205034
>>203036

>джава\си-стайл говно вообще системами типов язык назвать не поворачивается



чувак, я на твоей стороне, за динамику, из статики только боролся с scalac, разверни мысль для аргументации в спорах
297 1205043
>>203686

>потом руками искать все ее call site'ы - это просто плохая инженерная практика и твой фейл как разработчика



кстати наболело, да.
1) grep/ack/ag считается руками?
2) поделись опытом, может какие магии (кроме тестов ессно) найдут случаи когда fn передана параметром/из нее сделан partial/используется внутри lazy-seq?
298 1205047
>>204008

>детонационную семантику


денотационную же?
анон не уходи, тред начинает образовывать)
299 1205138
>>205007
Лол, touché. Впрочем, как известно и из буханки можно сделать троллейбус - вот только зачем?
300 1205178
>>204987

>js - это garbage-collected язык с ограниченными возможностями по байтоебству, так что вопрос мне видится несколько наивным.


C# это то-же ГАРАЖ КОЛЛЕКТЕД с ОГРАНИЧЕНИЯМИ, но на нем гзип будет по скорость почти равен сишной версии.

>Продемонстрировав незнание матчасти


У тебя самого познания фрагментированные и весьма теоретического плана.
А тот анон вроде как побольше шарит.
301 1205249
>>205178
Кажется, настало время перейти от слов к реальным цифрам.
302 1205253
https://reagent-project.github.io

Кто-нибудь пробовал реагент? Насколько он живой и поддерживаемый? А так же во что можно упереться пользуясь им.
Хочу попрактиковаться в разработке простеньких рест приложений с самостоятельным беком, фронтом, с контейнерами.
303 1205408
в сбер требуется clojure https://hh.ru/vacancy/25375000
304 1205601
>>205408
Бля, ну все, интерпрайс и сюда добрался, куда теперь-то перекатываться?

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

Алсо,

>Front-end – Clojurescript, Rum


Уж не Tonsky ли в сбере вротенд тимлидит?

Алсо,

>RDF/EAVT моделирование данных


Они походу datomic используют? Прикольно.
305 1205735
>>205601
какой джун начнет с бухты барахкты писать сразу на кложуре?
306 1205847
>>205735
Сообразительный?
307 1206048
>>205029

>portable assembler


>высокоуровневый


Ага.

>>205034
А что разворачивать-то? Си - слаботипизированный; джава - unsound, без вывода типов, не может в expression problem и просто неудобная; в го параметрического полиморфизма нет, и так далее. Я не знаю, если человек живет в танке, ты хуй ему что объяснишь, а если нет - так он и сам в курсе, как мне кажется.

>>205043
1) Ну, я склоняюсь к тому, что нет, не считается. Юникс-тулзы - это просто, дубово и всегда работает. Но тут мне вполне могут возразить. Вот например, если у тебя в файле есть namespaced ::keywords, и ты его разбиваешь на несколько неймспейсов, то ::keywords, очевидно, теперь будут указывать на разные неймспейсы - это может быть то, что тебе надо, а может и не быть. Не, греп в этом случае конечно тоже поможет, но только если ты не забудешь прогрепать новосозданные неймспейсы по "::". Когнитекты, кстати, вроде вообще не используют :: и всегда пишут полные неймспейсы в спеках. Алсо, имхо довольно разумным будет держать иерархию бизнес-сущностей со спеками в собственной ветви, отдельно от обрабатывающего ее кода. То есть app.data.user, например, для спеков user; затем в условном app.controller.user делаешь require [app.data.user :as user] и пишешь ::user/name для всех аттрибутов юзера. Так можно будет рефакторить app.controller.user как душа пожелает не затрагивая иерархию бизнес сущностей и не ломая интерфейс (контракты данных - это интерфейс). Алсо, прежде чем ооп-петухи начнут орать "МОДЕЛИ ПЕРЕИЗОБРЕЛИ АХАХА" - нет, это не модели, это декларация данных. Модели - толстые, декларации - пустые, в них нет логики вообще.

>>205043
2) Ну тебе по сути нужно искать все call site'ы и фильтровать их в зависимости от лексического контекста, так ведь? В clj-refactor только обычный поиск всех вызовов есть, но можно попробовать приспособить для этой цели https://github.com/jonase/kibit - он как раз ищет паттерны в коде через core.logic. Или ты что-то другое имел в виду?

>>205047

>денотационную же?


Да, конечно. Извиняюсь за опечатку. Детонационная, лол. Какую-нибудь шутку про НЕБОМБИТ добавить по вкусу.
307 1206048
>>205029

>portable assembler


>высокоуровневый


Ага.

>>205034
А что разворачивать-то? Си - слаботипизированный; джава - unsound, без вывода типов, не может в expression problem и просто неудобная; в го параметрического полиморфизма нет, и так далее. Я не знаю, если человек живет в танке, ты хуй ему что объяснишь, а если нет - так он и сам в курсе, как мне кажется.

>>205043
1) Ну, я склоняюсь к тому, что нет, не считается. Юникс-тулзы - это просто, дубово и всегда работает. Но тут мне вполне могут возразить. Вот например, если у тебя в файле есть namespaced ::keywords, и ты его разбиваешь на несколько неймспейсов, то ::keywords, очевидно, теперь будут указывать на разные неймспейсы - это может быть то, что тебе надо, а может и не быть. Не, греп в этом случае конечно тоже поможет, но только если ты не забудешь прогрепать новосозданные неймспейсы по "::". Когнитекты, кстати, вроде вообще не используют :: и всегда пишут полные неймспейсы в спеках. Алсо, имхо довольно разумным будет держать иерархию бизнес-сущностей со спеками в собственной ветви, отдельно от обрабатывающего ее кода. То есть app.data.user, например, для спеков user; затем в условном app.controller.user делаешь require [app.data.user :as user] и пишешь ::user/name для всех аттрибутов юзера. Так можно будет рефакторить app.controller.user как душа пожелает не затрагивая иерархию бизнес сущностей и не ломая интерфейс (контракты данных - это интерфейс). Алсо, прежде чем ооп-петухи начнут орать "МОДЕЛИ ПЕРЕИЗОБРЕЛИ АХАХА" - нет, это не модели, это декларация данных. Модели - толстые, декларации - пустые, в них нет логики вообще.

>>205043
2) Ну тебе по сути нужно искать все call site'ы и фильтровать их в зависимости от лексического контекста, так ведь? В clj-refactor только обычный поиск всех вызовов есть, но можно попробовать приспособить для этой цели https://github.com/jonase/kibit - он как раз ищет паттерны в коде через core.logic. Или ты что-то другое имел в виду?

>>205047

>денотационную же?


Да, конечно. Извиняюсь за опечатку. Детонационная, лол. Какую-нибудь шутку про НЕБОМБИТ добавить по вкусу.
308 1206051
>>205253
Используй сразу re-frame - это более полный фреймворк поверх реагента. Очень живой, очень поддерживаемый.
309 1206401
>>206048

>без вывода типов


Java 10

>не может в expression problem


http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.5676&rep=rep1&type=pdf
310 1206550
>>206401

>Java 10


Под "выводом типов" понимают decidability системы типов, а не синтаксические хаки, от которых никому ни тепло, ни холодно.

>>206401

>http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.88.5676&rep=rep1&type=pdf


На всякий случай напомню, что сегодня под expression problem понимается возможность расширения чужих классов на новый интерфейс. В джаве нет аналога тайпклассов, поэтому она не может в expression problem. По ссылке показаны несколько хаков, через которые можно эмулировать нужную функциональность для своих классов. Без лишних пояснений должно быть очевидно, что на отсутствие в языке аналога тайпклассов эти хаки никак не влияют.
311 1206578
>>206550

>тайпклассов


То есть Comparable<T> не тайпклас?
312 1206602
>>206550

>поэтому она не может в expression problem


Мамкин кложурист срывает покровы, лол.
Simon-Peyton-Jones.jpg74 Кб, 800x1187
313 1206608
>>206550

>кложурист уличает жабу в отсутствии тайпклассов



Мультиметодам уже завезли диспатч по типу возвращаемого значения?
spjJun06.8rot.jpg1,7 Мб, 2136x3216
314 1206639
>>206578
Вот здесь есть объяснения как раз с твоим примером:
https://stackoverflow.com/q/6948166
https://stackoverflow.com/a/8123973

>>206602
А еще 2+2=4. Достаточно сорвал или продолжать?

>>206608
Во-первых, я никого ни в чем не уличаю, а озвучиваю довольно очевидные, как мне казалось, вещи. Во-вторых, я не вижу, как отсутствие тайпклассов в джаве связано с кложей.

Диспатч мультиметодов основан на произвольном предикате от аргументов, так что да, гипотетически им завезли диспатч по типу возвращаемого значения с момента их появления. Ты, наверное, хотел спросить то же про протоколы - тогда бы твой сарказм был более удачен. Впрочем, всерьез говорить о "диспатче по типу" в динамически типизированном языке мне в любом случае кажется немного глупым. Сохранил пик, лей еще.
315 1206669
>>206550
Ну естественно, можно взять формулировку Вадлера и смело заявлять, что решения нет ни у кого кроме полутора инвалидов
Ты из какой слоновой башни такой? Людям нужны работающие инструменты, удобные и решающие проблему здесь и сейчас.

> Без лишних пояснений должно быть очевидно, что на отсутствие в языке аналога тайпклассов эти хаки никак не влияют.


Тавтология какая-то.
316 1206699
>>206669

>что решения нет ни у кого


Кложа, х-ль, раст, свифт, скала (с оговорками)... продолжать?

>Людям нужны работающие инструменты, удобные и решающие проблему здесь и сейчас.


Согласен. В предыдущем параграфе я некоторые из них перечислил.

>Тавтология какая-то.


Ну я же написал, что это "должно быть очевидно". Раз ты со мной согласен, то предлагаю эту тему закрыть.
317 1206721
>>206699
И тут ты демонстрируешь решение extension problem в твоей формулировке (ссылки достаточно) на раст/свифте по выбору.

До тех пор считаем тебя демагогом.
319 1206770
>>206730
На всякий случай напомню, что сегодня под expression problem понимается возможность расширения чужих классов на новый интерфейс.
320 1206783
>>206770
Анон, если ты не умеешь читать документацию, то тебе нечего делать в этом треде. Переводить и разжевывать мануалы тут тебе никто не будет если только это не мануалы по сабжу, так что еще раз предлагаю закончить этот разговор.
321 1206785
>>206783
Даже при внимательнейшем треде он не сможет найти в ржавой документации примера создания orphan instance. А значит,

>возможность расширения чужих классов на новый интерфейс


для него останется недоступной.
И нет, newtype и аналоги — не то, что он хочет.
322 1206786
>>206785

>Даже при внимательнейшем прочтении

323 1206823
>>206785
А ты точно не семен? Расширение чужих классов на новый интерфейс не предполагает создание orphan instance, Капитан Очевидность на связи.

Более того, в свифте и такой трюк, если я не ошибаюсь, прокатит, так что строго говоря твое замечание в любом случае невалидно.
324 1206884
>>205249

>Кажется, настало время перейти от слов к реальным цифрам.


Я могу предоставить наивную реализацию на шарпе.
Но сомневаюсь что мой оппонент соизволит повторить ее на JS и той-же кложе.
325 1208016
Датомик в облаке выкатили (aws lambda, только на датомике и кложе):
http://blog.datomic.com/2018/06/datomic-ions.html
https://docs.datomic.com/cloud/ions/ions-tutorial.html

Свежий bidirectional router с прицелом на то, чтобы стать полноценным веб-стаком, от горячих финских ребят:
https://metosin.github.io/reitit/
https://github.com/metosin/reitit
https://github.com/metosin/muuntaja

Описание тут:
https://www.metosin.fi/blog/reitit/
https://www.metosin.fi/blog/reitit-ring/
326 1209953
>>208016
Follow-up про датомик:
Подкаст Хикки про ions: http://blog.cognitect.com/cognicast/142
Бесплатная опенсорсная реализация части датомика: https://github.com/replikativ/datahike

Плюс несколько сайтов с документацией:
https://cljdoc.xyz/ -- вот этот новый, зацените - годнота
https://www.conj.io/
https://crossclj.info/

Линтер для clojure (jvm): https://github.com/jonase/eastwood
Статический анализатор чистоты функций: https://github.com/whilo/beichte
327 1210075
>>209953

>https://cljdoc.xyz/


спасибо тебе за то, что шевелишь тред)
328 1216264
Анон, наткнулся сейчас на такую заметку: "Clojure is for type B personalities" https://gist.github.com/oakes/c82cd08821ce444be6bf

Зацепило, если честно. Конечно, мир не делится на черное и белое, но меня почему-то всегда больше тянуло к Clojure и подобным ей языкам, где можно делать "quick, spontaneous changes with little pre-planning".

А ты что думаешь на сей счет, анон?
329 1216424
>>216264

>type /b personalities


Лол, ну на самом деле кое-какой смысл в этом есть. Кложа действительно отлично подходит для bottom-up и быстрого выката mvp. И многих джавистов, например, кложура привлекает именно тем, что основная ее философия - это делать рабочий, полезный код наиболее простым способом (libraries instead of frameworks и вот это все). Да и среди кложуристов с тоннами звезд на гитхабе много сторонников "хуяк-хуяк и в продакшн" (тот же tonsky приходит на ум) - в том смысле, что они не дрочат на абстрактные фабрики синглтонов и монадные трансформеры, а 1) видят задачу 2) решают задачу наиболее эффективным доступным способом.

С другой стороны, я бы себя отнес скорее к type a, например. Параграф culture shock - жиза. И да, мне тоже бомбит от кодстайла Хикки. Тем не менее, сабж - тащем-то один из моих любимых языков, например.

Короче, все эти "X is for Y" - это всегда овергенерализация, и соотношение исключений к подтверждающим ее примерам - скорее что-то в районе 40\60, чем нихуя\дохуя.
330 1216509
>>216424

>гитхабе много сторонников "хуяк-хуяк и в продакшн"


Так тот же руби еще больше подходит для хуяк-хуяк и в продакшн
331 1216573
Пиздуйте в /s/.
332 1216576
>>216573
Тредом ошибся
333 1216690
>>216424
Короче, все эти "X is for Y" - это всегда овергенерализация, и соотношение исключений к подтверждающим ее примерам - скорее что-то в районе 40\60, чем нихуя\дохуя.
Анон, ты выражаешь мои мысли.

>>216576
А после этой хуйни я точно type /b personality.
sQxELt9.jpg515 Кб, 1920x816
334 1217058
>>216424
Кто-то сказал "Евангелион"? Потому что я думаю, я слышал, как кто-то сказал "Евангелион".
335 1217843
Тэк, что тут у нас?

Кложеская либа для умножения матриц в 40 с чем-то раз быстрее аналогичной джавной:
https://dragan.rocks/articles/18/Neanderthal-vs-ND4J-vol1
https://www.dubs.tech/blog/benchmarking-nd4j-and-neanderthal/ чувак ее пофиксил, теперь она медленнее всего в джва раза

Запилили поддержку webpack в кложескрипт:
https://clojurescript.org/guides/webpack

Алсо, там заебатый гайд для жсников есть:
https://clojurescript.org/guides/faq-js

А еще есть жс в кложурскрипт транслятор, можно тыкать в браузере:
https://roman01la.github.io/javascript-to-clojurescript/

Из странного: декларативный фреймворк для клиент-сайда на основе даталога и логического программирования, 10 йоб из 10:
https://github.com/CoNarrative/precept

Из крутого: скринкасты в плейн-тексте. Просто набираешь код, а оно делает из него псевдо-видяху (которая на самом деле не видяха, а текст):
https://asciinema.org/a/160597

Напоследок: rust for clojurists
https://gist.github.com/oakes/4af1023b6c5162c6f8f0

>>217058
У вас онеме головного мозга, гражданин. Не усугубляйте свое положение.
336 1217862
>>217843

>Кложеская либа для умножения матриц в 40 с чем-то раз быстрее аналогичной джавной


А для Ъ? Что там? Кложуристы открыли jni?

>чувак ее пофиксил, теперь она медленнее всего в джва раза


Лол
337 1217955
>>217862

>Neanderthal, a Clojure library backed by custom bindings to MKL, is much faster than pure Java libraries even for rather small matrices.


>Most folks who use DL4J and ND4J take for granted that ND4J is as fast as possible, and I don't blame them, for ND4J is much faster than any previous Java matrix library. Except Neanderthal, of course :)


>Here I am measuring the approaches: given that both libraries use MKL, I assume that the raw computation speed is the same, and ascribe any differences to the overhead that the library uses in keeping data around and calling appropriate operations.


> As expected, Neanderthal is 24 times faster.


> on 1024x1024 matrices, which is already quite large, so the overhead should not be noticeable, Neanderthal is still almost twice as fast as ND4J!


> Cool. But what about huge, not-powers of 2 matrices? There is still more than 15% lead by Neanderthal! This is much better than I expected



Из ответного поста джавного чувака:

>And while the difference even in the first benchmark wasn’t as dramatic once the result array ordering is properly set, it has still shown that Neanderthal indeed has a very low overhead and that to get the full performance out of ND4J you should know what you are doing.


>There are still some points where ND4J could lose some more overhead, and we are investigating them, so I’m looking forward to repeating these benchmarks as soon as we have them figured out as well.



Мирдружбажвачка
15143212702820.png259 Кб, 485x486
338 1219181
The saga continues, лол:
https://dragan.rocks/articles/18/Neanderthal-vs-ND4J-vol2

Теперь кложелиба в 1000 раз быстрее джавной на более сложных бенчмарках. На порядок, лол, пиздец просто. И при этом по части синтаксиса она гораздо удобнее и ближе к numpy. Короче, запасаюсь попкорном.

Алсо, у чувака оказывается есть неплохие mini-series по линейной алгебре вообще и по реализации числодробилок в частности:
https://dragan.rocks/articles/17/Clojure-Linear-Algebra-Refresher-Vector-Spaces
https://dragan.rocks/articles/17/Clojure-Numerics-1-Use-Matrices-Efficiently
339 1219204
>>219181

> На порядок, лол, пиздец просто.


Тыща - это три порядка так-то
340 1219305
>>139597 (OP)
Добавили бы в шапку блок Никиты Прокопова, м?
341 1219560
>>219204
Верно, чего это я. Сегодня уже продолжение от nd4j:
https://www.dubs.tech/blog/benchmarking-nd4j-and-neanderthal-2/
- tl;dr: "нормально делай - будет всего в джва раза медленнее, а не в тыщу". Ну то есть основная фишка в том, что неандертал опять же из коробки делает the right thing со всеми оптимизациями, а в нд4ж надо следить за этим ручками.

>>219305
Ну перекат будет - можно добавить. Хотя у него же вроде не про кложу в основном? Кстати, я у него еще где-то видел серию обучающих видосиков про сабж (но смотреть не осилил, там для нубов).

Алсо,
https://grumpy.website/post/0QCVRiSyP

>Nobody wants to look at white text on black background.


ПИЗДЕЦ У МЕНЯ ЗА ТАКОЕ НА РАЙОНЕ УБИВАЮТ НАХУЙ и забавно, что в гноме это давным-давно работает именно так, как он предлагает - кококо макось кококо дизайн кококо юикс
вообще, по грампи надо бы отдельный тред создать с ретранслятором постов, жаль эти пидорасы там (анонимные) комменты не включили, такой-то вентилятор с говном получился бы
342 1219979
>>219560
Он просто думает, что понимает в дизайне. На самом деле человек почти всю свою карьеру работал в бодишопах. Если ты понимаешь о чем я.
343 1220043
>>219560

>Nobody wants to look at white text on black background.



Он же нормальных людей имеет в виду.
Которые понимают, как работает их зрение, и не хотят ослепнуть к 30 годам.
344 1220046
>>216264

>https://gist.github.com/oakes/c82cd08821ce444be6bf



Код на кложуре - нечитаемая мешанина.
Write only language.

Какое там может быть "quick, spontaneous changes with little pre-planning"? Ты о чём вообще?
Да ещё и без статической типизации?
345 1220080
>>220043
Есть какие-то вменяемые исследования насчет цвета текста и фона, ну и наверное размер шрифта и яркость тоже надо учитывать?
346 1220089
>>220080
Они были ещё миллион лет назад.
Гугол в помощь.

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

Вся эта пидорская тема с чёрным фоном пошла от старых макбуков, как мне кажется.
Дело в том, что обычный хипстерский 13" макбук (во времена до-ретины) - был пиздецки мыльным говном. Т.е. рендеринг шрифтов так сделан (в отличие от windows, где всё притянуто к пикселям, и текст чёткий). Я, кстати, сейчас с такого макбука пишу, лол.

Так вот, текст мыльный, и если ещё понизить яркость (ночью), то получается вообще пиздос. А на чёрном фоне (с низкой яркостью) - получше немного. Сам я так не делаю (ибо хуйня всё равнр), но сравнивал.

Плюс, вообще дешёвые ноутбуки с говноматрицами чётче показывают текст в режиме белым по чёрному. Как и дешёвые массовые говномониторы.

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

Плюс - желание кодить в полной темноте.
Так ни в коем случае нельзя делать - это 100% пиздец глазам.

Что влияет на утомляемость глаза?
Контуры шрифта должны быть чёткими. Иначе глаз безуспешно пытается сфокусироваться, и устаёт. Не должно быть
мерцания. В тёмное время суток должны быть тёплые цвета (ставь Flux или настраивай монитор). Контрастность не должна быть слишком большой. Но и не слишком малой тоже.

И белый фон, конечно. При соответствующем фоновом освещении, обязательно.
347 1220103
>>219979
Ну он же последние эн лет фронтендером работает, не? Тащем-то широкой публике он более известен как шрифтовик, а не как лишпер.

>>220043
Попробуй потоньше.

>>220089

>Они были ещё миллион лет назад.


>Гугол в помощь.


Слив засчитан.

>тема с чёрным фоном пошла от старых макбуков


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

>В тёмное время суток должны быть тёплые цвета


К утомляемости глаз и зрению этот факт вообще никакого отношения не имеет. Учи матчасть. Слышал звон - да не знаю где он.

>И белый фон, конечно.


>белый


Кстати, за белый (не светлый, а именно белый) фон вообще хочется убивать.
348 1220105
>>220046

>Код на <любой-язык-которого-я-не-знаю/> - нечитаемая мешанина.


>Мой код на <языкнейм/> - нечитаемая мешанина.


Починил тебя, братан. Алсо, попробуй потоньше.
349 1220116
>>220103
Например:

https://ux.stackexchange.com/questions/53264/dark-or-white-color-theme-is-better-for-the-eyes

https://tatham.blog/2008/10/13/why-light-text-on-dark-background-is-a-bad-idea/

> Алсо, попробуй потоньше.


И это говорит человек, пропагандирующий лисп.
350 1220129
>>220116
Ну так ты сам ссылки-то свои читал? Там написано, что людям с астигматизмом труднее читать светлый текст на темном фоне при условии отсутствия внешнего освещения.

https://ux.stackexchange.com/questions/53264/dark-or-white-color-theme-is-better-for-the-eyes

>Now there seem to be varying factors into contrast and legibility. Room ambient lighting. Brightness of the monitor. Also you can mitigate the straining effects of white (#FFF) on black (#000) by simply lessening the contrast like using a light gray (#EEE, #DDD, #CCC) on a dark background (#111, #222).



https://tatham.blog/2008/10/13/why-light-text-on-dark-background-is-a-bad-idea/

>This post was written in 2008, based on me scrounging together some complementary links at the time. It’s now 2014, and accessibility is a well thought-out problem, which is generally well solved. Use the colour scheme that makes you happy. I use a black background on my Windows Phone, a dark navy in Sublime Text, a mid-grey chrome around my Office documents, and a bright white background through Outlook and my email.



Слышал звон - да не знаю где он.

Во-первых, я ничего не пропагандирую (ты зомбоящика пересмотрел?), а во-вторых - попробуй потоньше.
351 1224434
Какое будущее у языка?
352 1224460
>>224434
Ещё 4 треда на дваче. Потом смерть.
353 1224808
>>224434
Будущее языка можно посмотреть тут: https://clojure.org/community/devchangelog
354 1227491
Чуваки делают движок, редактор которого написан на сабже:
https://www.youtube.com/watch?v=Hbexh-Jutvs&list=PLXsXu5srjNlxI7b2smnHxDeMMwR4mVZ2m&index=2

Чувак запилил визуальную новеллу олдскульный квест на сабже, вывалил стим, позитив ревьюс, сакцесс стори, все дела (не слышал раньше про нее):
http://www.tickstales.com/dev-blog/2015/11/16/making-a-tale-tick-the-making-of-ticks-tales-part-1

Еще один чувак пилит квест визуальную новеллу на хайпе про овервотч, тоже на сабже (охуеть вообще, игры на кложе, пиздец!):
https://twitter.com/mysterysal/status/1016102877201387525

gamedev-edition
355 1228336
>>139597 (OP)
Кто-нибудь юзает Typed Clojure с реактом?
Как-то гуглил - должно быть возможно, интересно посмотреть на какой-нибудь проект.
356 1228387
>>228336
Тащем-то никаких препятствий нет, просто берешь и делаешь. Но ни авторы om, ни авторы re-frame не поддерживают core.typed, например - так что тебе самому придется пердолить типы к их апи, если хочешь, чтоб оно чекалось. Если же ты хочешь типы только для своей бизнес-логики - ок, никаких проблем.

Алсо, погляди на https://github.com/arohner/spectrum - я бы на твоем месте лучше спеки писал.
1*7W31wteVSSria2fq7mZ7bA.jpeg264 Кб, 1895x1103
357 1228935
Еще одна сакцес стори (тлдр: выкинули goвно, переписали на сабже): https://blog.gojekengineering.com/how-go-jek-manages-1-million-drivers-with-12-engineers-part-2-35f6a27a0faf
358 1229108
>>228336
найдешь такой проект - вкинь, тоже посмотрел бы
359 1229157
>>228935
Слайд, конечно, вызывает вопросы. Был код на говне. Его отрефакторили на другом языке и из этого делают выводы о чем-то. Не надо так.
360 1229163
>>228935
Хипстота какая-то, а есть что-нибудь, чтоб было ВАУ?
361 1229199
>>229157
>>228935
Найс сравнение. Слева код в кучу, справа весь функционал вынесли в отдельные функции, которые даже в скрин не закинули. СМОТИТЕ КАК КОЖУНЬКА МОЖЕТ

Я тоже так же умею:
from ... <наговнокоженное_приложение_на_любом_языке>
... to
(ノಥ益ಥ)ノ main()
362 1229248
>>228935

>After the 2-month long big rewrite, a stable product was live. Pause. Breathe. After 3 days of releasing, no one noticed there was a new codebase/algorithm in place. That’s what success tastes like


Господи, ну что за хипсторы? Хлебом не корми, дай на новый модный язычок переписать.
363 1229258
>>229248
Толсто, попробуй тоньше.
365 1229338
>>229157
Тут соглашусь, по сравнению с говном почти любой язык будет выглядеть выигрышно.

>>229199
Наркоман? На левом скрине вся логика точно также вынесена в отдельные функции, которых на скрине нет.
366 1229354
>>229326

>одностраничник с пафосными кричалками вместо сайта


>"революционно, новое поколение"


>вебпарашники запилили очередной чатик на кложескрипте


Из-за таких проектов создается впечатление, что кложей кроме фрониедщиков-дизайнеров никто не пользуется.
367 1229376
>>229354

>одностраничник


Э, у тебя гиперссылки не работают?

>чатик


А, так у тебя просто не очень хорошо с восприятием информации.
368 1229378
>>229248

>Господи, ну что за хипсторы?


Вроде как самый дорогой ит-стартуп в юговосточной азии: https://en.wikipedia.org/wiki/Go-Jek
369 1229392
>>229376

>Э, у тебя гиперссылки не работают?


Работают. А какие нужно было нажимать? Фейсбук, твиттер или сразу переходить к изучению исходников на гитхубе?

>А, так у тебя просто не очень хорошо с восприятием информации.


Да вроде не так уж и плохо, с отсечением маркетингового говна справляюсь.
370 1229422
>>229338
не бросилось в глаза с первого раза

левую часть все ещё можно привести к правой, поменяв сигнатуры функций и вызывая их точно так же
371 1229523
>>229392

>А какие нужно было нажимать?


Ты реально такой кретин или просто троллишь тупостью?
https://embark.status.im/
https://hardwallet.status.im/
https://openbounty.status.im/
https://status.im/incubate/
https://status.im/projects/

>Да вроде не так уж и плохо


Ага, то-то ты cryptowallet со своей платформой для п2п-приложений не смог от чятика отличить. Ну бывает, чо.

>>229422
Ну вот они и привели, бггг. Если ты знаком с голангом, то знал бы, что там невозможно писать такой датафлоу как на картинке справа.
372 1229533
>>229523
в смысле нельзя? Достаточно сделать функции полиморфными и вызывать друг за другом. Или в го что-то не так с полиморфизмом?
373 1229539
>>229533
и я таки пригляделся к коду го - все я правильно изначально говорил, на скрине в гошке один цикл с ифами, каждый из которых - тип фильтрации, которые и должны быть вынесены из цикла в отдельные функции и применяться к текущему состоянию последовательности поочередно, а справа просто четыре полиморфные функции принимающие и возвещающие список - уже приведенные к этому формату. Что тут что там можно написать одинаково нормально, если я не упускаю что в го что-то не так с полиморфизмом
374 1229542
>>229539
Причём тут вообще полиморфизм я нихуя не могу понять?
375 1229568
>>229533

>в го что-то не так с полиморфизмом


this
376 1229680
>>229542
Не понимаю что тебе не ясно, полиморфизм - понятие об одинаковых интерфейсах и взаимозаменяемости, я употребил этот термин чтобы описать, что предполагаю, что справа просто описано пять функций с одинаковыми типами входных и выходных данных, и что я не представляю почему так нельзя сделать в го. На что мне ответили >>229568 что, видимо, все не так просто.
377 1229976
>>229680
Ну в го в принципе нельзя писать обобщенный код из-за уебищной системы типов (Пайк тупо ниасилил) например, так что там нет практически никакой стандартной библиотеки для работы с коллекциями (ты тупо не напишешь те же map\filter, для каждого типа нужно отдельную версию функции писать), все приходится каждый раз велосипедить заново, так что на том пике как раз типа идиоматичный го код
378 1229989
>>229523
Ох, как тебя задело-то, будто святое опорочили.

>Ага, то-то ты cryptowallet со своей платформой для п2п-приложений не смог от чятика отличить.


Ты с больной на здоровую не перекладывай, они сами на главной что пишут? Мы вам тут ОС делаем, которая чатик, и еще сможете грошами кидаться.

>со своей платформой для п2п-приложений


Где она у них своя? Там же просто клиент для эфириума, не? Да еще и с чатиком.
Ну или расскажи нормально, что именно они делают.

>With the future of the decentralized Web so wide open, Status Projects was created to evolve the larger decentralized ecosystem. Our initiatives aim to inspire action, support collaboration, and lay the groundwork needed to help drive Web3 forward.


По ссылкам опять какая-то рекламщина. С тем же успехом могли бы просто lorem ipsum'ом заполнить.
379 1230139
>>229989

>Ох, как тебя задело-то


К троллингу тупостью тут я давно привык, чини детектор.

>ОС делаем, которая чатик


))

>Ну или расскажи нормально, что именно они делают.


Мне делать больше нехуй? Тебе интересно - возьми да прочитай. Ты в английский не можешь, или что?
screen.png8 Кб, 261x97
380 1230310
>>230139

>>ОС делаем, которая чатик


>))


>Ultimately what we're building is a hybrid browser and messenger, this allows us to have the best chance at casting the widest net which permits us to focus on user acquisition, staying agnostic and as close as possible to the principles that Ethereum embodies.


>Status is more than a messenger. Send payments and smart contracts to friends from within chats, and enjoy encrypted messaging by default, using a peer-to-peer protocol that doesn’t rely on centralized servers.


Им-то поди виднее.
Ладно, признаю, ты меня затроллил, такой отборной хипстоты от вебмакак ещё поискать нужно.

>Тебе интересно - возьми да прочитай.


Не, спасибо, мне хватило. Уже начитался про то, что их чатик НОВОГО ПОКОЛЕНИЯ БЫСТРЕЕ ВЫШЕ СИЛЬНЕЕ БЕЗОПАСНЕЕ ДЕЦЕНТРАЛИЗОВАННЕЕ и вообще ЗА НИМИ БУДУЩЕЕ и ВЕБ3. Теперь еще неделю монитор от смуззи оттирать буду.
381 1230456
>>230310

>Им-то поди виднее.


Ну? Блин, анон, ты походу реально тупишь, а не траллишь. Вот у тебя мобильный банк в телефоне есть? Вот они делают то же самое, только 1) п2п, без центральной авторити; 2) как открытую платформу, под которую каждый может писать свои приложения. То есть представь, что у тебя в тинькофф-банке есть кнопочка "плагины", ты заходишь туда и выбираешь, например, плагин для покупки домена. Устанавливаешь, прямо в мобильном банке покупаешь домен, и тинькоф берет на себя все риски по поводу того, чтобы все правильно купилось и работало как надо, никаким 3rd-party регистраторам номер карты не нужно палить.

Вот у них то же самое, только опенсорс\п2п\блокчейн. То, что ты называешь "чятиком", лол, - это основное приложение (криптокошелек). В нем ты можешь пересылать платежи и зашифрованные сообщения другим участникам. Плюс у них еще куча других проектов вокруг этого: хардваллет (хардварный кошелек, считай как банковская карта, только п2п), разные биржи и обменники, распределенный аналог openid\dns, п2п-микроблоги (считай как tor+diaspora, только сразу искаропки в одном мобильном приложении), аналог патреона для кодеров (коммитишь код - получаешь биткоины\эфир себе на счет) и так далее, тысячи их (вроде даже игры есть, лол). Поэтому они и называют это "mobile ethereum os" - по сути это платформа\сдк для распределенных приложений.

>Теперь еще неделю монитор от смуззи оттирать буду.


Ну как бы добро пожаловать в 2018. А еще тут ракеты на платформы в океане сажают, прикинь?
382 1233740
Смотрите на какую ебалу наткнулся:
http://www.hyperfiddle-consulting.com/
https://github.com/hyperfiddle/hyperfiddle
http://www.hyperfiddle.net/

Пацаны походу генерируют динамические опердени из edn-данных. Программисты окончательно НЕНУЖНЫ, наконец-то он настал!
S.png44 Кб, 600x430
383 1233883
>>233740
У них там майнер на странице шоле?
384 1234050
>>233883
Нет, у них REACTповбывав бы ебучих жабаскрипт-хипсторов
385 1234383
>>233883
Нет, просто у них сайт не рассчитан на всяких сноуниггеров из стран третьего мира, которые не в состоянии купить себе нормальный телефон (у тебя же на телефоне, надеюсь, это вылетает?)
15324379766110.jpg84 Кб, 519x604
386 1234687
>>139597 (OP)
Анон, симпатизирую кожуре, но напрягает один момент. На ней практически нет работы (даже в дс) - вакансий единицы и то часть из них это фронтовая параша на cljs (ненавижу фронт, такие дела, сорян, если обидел).
Ощущение, что большинство адептов, угорает по коже для души, а зарабатывает на хлеб другим языком. Так ли это?
И второй вопрос, продавал ли ты на своей работе кложу, как основной язык для нового проекта? Если да, то как (какая аргументация, как принанил других макак к вкатыванию в сабж, итд).
387 1234701
>>234687
Никита Прокопов же нашел работу на кложе.
388 1234724
>>234701
А где Никита Прокопов нашёл работу на кложе?
389 1234728
>>234701
Воу, у нас есть человек, который нашёл работу на кложе! Теперь кложа более востребованный язык, чем idris
390 1234799
>>234687
Каждую неделю же постятся удаленные вакансии из европки. Мониторь мейлинг лист\слак, алсо https://functionaljobs.com/ - тот же circleci вообще постоянно хайрит.

>>234724
Сперва в Echo, сейчас вроде какой-то адовый бизнес-консалтинг-тырпрайс-генератор-оперденей пендосам пилит. У него на сайте есть кулстори по всему этому, емнип в эхо ему просто дали бабло и сказали "пили", ну пацан сделал - пацан сказал, короче он там и фулстак сеньор-помидор, и тимлид, и пиэм, ну короче и кложурец, и на дуде игрец.

>>234728
Пидораха, плес
fjobjs.png48 Кб, 893x286
391 1235258
>>234799
Ты шутник или обосрался просто?
Во-первых, фнукшнлжобс - го девелопер, девопс, очень функшнлю зе комментариев.
Во-вторых ты перечисляешь конкретные конторы, что свидельствует о маргинальности языка. У востребованных решений тысячи открытых позиций на всяких хед.хантерах и линкединах. Это выглядит в духе "ну вообще-то у нас есть 2.5 конторы, которые таки рискнули пописать на кложе". Просто признай, что кложа никому не нужна.
Ты сам то вообще кложей зарабатываешь или очередной мамкин лисп-энтузиаст?
aGREmQw700b.jpg46 Кб, 700x528
бомбануло 392 1237630
Как-то услышал речь с конфы, что вот clojure это программирование на "мапах", ну и вообще идею в том что данные превыше всего. И в какой-то мере даже офигел, ведь всегда и сам такое думал, игнорируя ООП-боль и фокусируясь на программирование на словарях (или ассоц массивах), имея при этом куда меньше кода и мнимой абстракции (ну и куда больше полезных действий, без аутирования в классы, интерфейсы и прочий бойлерплейт шлак)

Но вот одна беда, этот синтаксис у clojure. И дело не в том, что трудно сломать мозги на новый подход, а в том что, скорее всего, такой синтаксис непригоден к большому проекту (слишком прост для современных программ). Можно спорить часами и проводить пример как большие умы написали где-то что-то и много (и на ассемблере писали большие программы многие энтузиасты), но это совсем не показатель. Синтаксис реально проблемный, неужели не очевидно? Почему нет простого скриптового языка завязанного на мап/лист-программирование? Да, можно сказать, вон жс, пхп, питон, бери и кодь, но проблема в том что там ты так будешь писать один. Люди реально готовы страдать с монструозными ORM даже в скриптовых языках, натягивая очередные данные на "классы", а потом тут же их натягивая на подобие мапы для рендеринга в html/json и при этом думать что это вообще нормально.

Люди, что с вами не так? Почему скриптовые языки упарываются в ООП и прочие радости например в пародию статической типизация, копируя друг у друга бойлерплейт. А другие языки наоборот уходят в другую крайность липспо-подобных языков и аутируют там в другом своем мирке???
393 1237662
>>237630

>Почему нет простого скриптового языка завязанного на мап/лист-программирование?


Perl6
Screenshot-2018-7-30 Functional Jobs Dream Jobs for Functio[...].png12 Кб, 664x110
394 1237825
>>235258

>Во-первых, фнукшнлжобс - го девелопер


Ты долбоеб или как? По-твоему НИЗЗЯ АЛЛАХ ЗОПРИТИЛ постить гофер-вакансии на сайте со словом "functional" в названии? Что за аутизм.

>Во-вторых ты перечисляешь конкретные конторы


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

>У востребованных решений тысячи открытых позиций на всяких хед.хантерах


))
По такой логике вообще кроме пхп ЖС ЧТМЛ ЦСС больше в мире ничего не существует, а, например, няшная, р, скала, да тот же го, даже 1с - "маргинальные" языки, лол.

Вон только вчера в мейллисте запостили, например:
https://groups.google.com/forum/#!topic/clojure/Vw5Hu7Ioh9o

Вон эти чуваки https://en.wikipedia.org/wiki/Sparrho ищут разраба:
https://groups.google.com/forum/#!topic/clojure/TiJS2A_FPlY

Ну и так далее:
http://clojuredocs.org/jobs
https://jobs.braveclojure.com/
https://functional.works-hub.com/jobs/clojure-developer-london-2aa24

>Ты сам то вообще кложей зарабатываешь


В данный момент уже нет.
395 1237834
>>237630
Что за говно у тебя на пике? Пиздец. Это твой код? Пиздец, убей себя об стену.

>Но вот одна беда, этот синтаксис у clojure.


Точно такой же как у жс, только примерно в полтора раза меньше скобок и нет обязательных запятых и точек с запятой.

>И дело не в том, что трудно сломать мозги на новый подход


Если ты не даун-аутист, то на привыкание к (f x) вместо f(x) у тебя уйдет примерно 2 вечера.

>синтаксис непригоден к большому проекту (слишком прост для современных программ)


Чего блядь? Еще раз, синтаксис точно такой же, как у жс, только гибче и богаче (есть отдельный литерал для множеств, есть отдельный дататайп кейвордов для уникальных ключей, есть ридер теги для дат и ууид, плюс их можно расширять своими типами; нет точек с запятой). Плюс синтаксис к размеру проекта вообще отношения не имеет, блядь, что за хуйню ты несешь? Пригодность к большому проекту определяют процессы в твоей команде, платформа твоего языка и архитектура твоей системы. Бизнесу (и всему миру) вообще похуй, ставишь ты там точку с запятой в конце строки или не ставишь.

>Синтаксис реально проблемный, неужели не очевидно?


Ну если код на пике твой, то проблемы не в синтаксисе, а в голове кое у кого. Алсо, "неужели не очевидно" - это заебись технический аргумент, ага. Не страдай хуйней, короче.

>Почему нет простого скриптового языка завязанного на мап/лист-программирование?


Есть (clojurescript+lumo). Guile сюда же можно, ну и lua в принципе тоже, хотя в этих двух все печальнее конечно. Блядь, да тот же жс с андерскором.

>там ты так будешь писать один


Пиздишь, дохуя народу колются, страдают, но пишут functional js. По сути весь современный жс с вебпаками и редаксами - это примерно 3/4 того, чем кложурскрипт уже был лет 5 назад. И без жвм, кек.

>и при этом думать что это вообще нормально.


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

>аутируют там в другом своем мирке


Это ты аутируешь, нет никакого "другого" мирка. Везде {} - мапы, [] - вектора, вот это все. Писать (f x) или f(x) или f x вообще нет никакой разницы (если ты не даун-аутист), за исключением того, что первое позволяет иметь удобную макро-систему.
395 1237834
>>237630
Что за говно у тебя на пике? Пиздец. Это твой код? Пиздец, убей себя об стену.

>Но вот одна беда, этот синтаксис у clojure.


Точно такой же как у жс, только примерно в полтора раза меньше скобок и нет обязательных запятых и точек с запятой.

>И дело не в том, что трудно сломать мозги на новый подход


Если ты не даун-аутист, то на привыкание к (f x) вместо f(x) у тебя уйдет примерно 2 вечера.

>синтаксис непригоден к большому проекту (слишком прост для современных программ)


Чего блядь? Еще раз, синтаксис точно такой же, как у жс, только гибче и богаче (есть отдельный литерал для множеств, есть отдельный дататайп кейвордов для уникальных ключей, есть ридер теги для дат и ууид, плюс их можно расширять своими типами; нет точек с запятой). Плюс синтаксис к размеру проекта вообще отношения не имеет, блядь, что за хуйню ты несешь? Пригодность к большому проекту определяют процессы в твоей команде, платформа твоего языка и архитектура твоей системы. Бизнесу (и всему миру) вообще похуй, ставишь ты там точку с запятой в конце строки или не ставишь.

>Синтаксис реально проблемный, неужели не очевидно?


Ну если код на пике твой, то проблемы не в синтаксисе, а в голове кое у кого. Алсо, "неужели не очевидно" - это заебись технический аргумент, ага. Не страдай хуйней, короче.

>Почему нет простого скриптового языка завязанного на мап/лист-программирование?


Есть (clojurescript+lumo). Guile сюда же можно, ну и lua в принципе тоже, хотя в этих двух все печальнее конечно. Блядь, да тот же жс с андерскором.

>там ты так будешь писать один


Пиздишь, дохуя народу колются, страдают, но пишут functional js. По сути весь современный жс с вебпаками и редаксами - это примерно 3/4 того, чем кложурскрипт уже был лет 5 назад. И без жвм, кек.

>и при этом думать что это вообще нормально.


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

>аутируют там в другом своем мирке


Это ты аутируешь, нет никакого "другого" мирка. Везде {} - мапы, [] - вектора, вот это все. Писать (f x) или f(x) или f x вообще нет никакой разницы (если ты не даун-аутист), за исключением того, что первое позволяет иметь удобную макро-систему.
396 1237954
>>237834

>Это твой код?


>Ну если код на пике твой


ватермарк глянь "рука-лицо.жыпег"

>Еще раз, синтаксис точно такой же, как у жс


Тут можно даже сразу прекратить беседу. Хоть и жс тот еще процедурный кал, но ничего общего с простынями clojure там нет. Можно конечно быть способным, чтобы найти что-то общее, но у нас же не специальная олимпиада?!

Самое забавное, если бы кложа была бы клоном js (урезанной по максимум), то код был бы куда читабельнее, просто потому что императивный стиль удобнее сопровождать, чем код написанный ввиде "дерева выражений" или как-это называется, та самая прерогатива компилятора/интерпритатора, а не программиста
397 1237987
>>237954

>ватермарк глянь


Лол, не обратил внимания. В чем тогда твоя претензия к синтаксису, если ты понимаешь, что на твоем пике мЕмАСиК))0)?

>Хоть и жс тот еще процедурный кал, но ничего общего с простынями clojure там нет.


С какими простынями? Объем кода на клжс по сравнению с жс в среднем будет немного меньше на тех же задачах. Можешь нормально описать, о чем ты говоришь?

>Можно конечно быть способным, чтобы найти что-то общее


Ну жс как бы изначально создавался как лисп для верстальщиков в си-подобном синтаксисе, лол. Но это так, к слову.

>код был бы куда читабельнее, просто потому что императивный стиль удобнее сопровождать, чем код написанный ввиде "дерева выражений"


У тебя какая-то каша в голове. Императивный код в общем случае сложнее сопровождать, потому что там много глобального состояния (глобальное состояние - это плохонько). Императивность\декларативность не имеет вообще никакого отношения к синтаксису и "деревьям выражений", это абсолютно ортогональные вещи. У меня такое чувство, что ты где-то начитался каких-то мЕмАсиКОв))0) или чего-то такого, но сам в теме еще не разбирался, поэтому у тебя все в куче. Давай ты приведешь конкретный пример того, что тебе не нравится, чтобы можно было что-то предметно обсуждать. Я вот не понимаю, чем
obj.foo().bar().frobnicate();
лучше
(-> obj foo bar frobnicate)
- если тебе не платят за количество символов в твоем коде, that is.
398 1238282
>>237987

>obj.foo().bar().frobnicate();


>лучше


>(-> obj foo bar frobnicate)


Да ну конечно лучше, но коротенькие примеры не делают этот код императивнее, если начинаешь склеивать это в дерево выражений, получается лапша заканчивающаяся улыбками "))))))".

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

Основной поинт который я раскрыл в том посте это то, что писать императивно удобнее и читабельнее, чем писать код в виде "дерева выражений" какие еще глобальные состояния, о чем ты??? Можно сделать имутабельно все и императивном программирование
Идея взять мапу и лист и построить вокруг этого язык - не плоха, я всеми руками за, но только в нормальном императивном стиле, а не дереве выражений, чтобы это было популярно только у полтора программиста во всем мире я утрирую, не надо только мне сразу приводит пример численность программистов.

То есть, не надо доказывать что кложа этот тот же жс мол "че ты не видишь чтоли, дурачек совсем?", надо просто признать самому себе, что подход действительно не популярен.

PS В идеале, не вижу проблем даже для одного программиста - взять идеи кложи и склепать какой-нибудь новый "жс" на коленке, на той же jvm/жс машине, но сделать программирование мапами/листами - популярнее для всех, а не натягивать сову на глобус через дерево выражений и доказывать всем что ты прав.
399 1238354
>>238282

>Основной поинт который я раскрыл в том посте это то, что писать императивно удобнее и читабельнее, чем писать код в виде "дерева выражений"


У тебя в голове полная каша и недостаток знаний. Язык на абсолютно любом языке подвергается парсингу и представляется в виде дерева выражений перед тем, как быть оттранслированным в машкод или байткод ВМ или выполненным интерпретатором; в лиспах просто разница между этим внутренним представлением и текстом программы околонулевая. Почитай dragon book, может, после этого больше не будешь позориться на форумах, пускай даже и анонимных.
400 1238379
>>238354

>языке подвергается парсингу и представляется в виде дерева


Я разве говорил обратное? Я говорил что это не задача программиста писать в виде дерева-выражений.
Ну не популярное это решение, не нужно даже читать книги с драконами, чтобы это заметить.
Услышь меня - идея то не плохая, реализация говно.
И если эту реализацию человек понимает только после книги с драконами или там с пони, то какой в этом смысл? Где твое критическое мышление?

>У тебя в голове полная каша


>позориться на форумах


Ты же понимаешь что переход на личности, это самый низкий показатель ума в диалоге ну или не способность человека уже вести проигранный диалог.
Зачем тебе это? Мы же не в /b/
401 1238463
>>238282

>коротенькие примеры не делают этот код императивнее,


Анон, еще раз: ты не понимаешь, что значит слово "императивный". Погугли, пожалуйста.

>если начинаешь склеивать это в дерево выражений, получается лапша


Нет, не получается. Если получается, значит ты делаешь что-то не так (пишешь говнокод, например).

>Основной поинт который я раскрыл в том посте это то, что писать императивно удобнее


Учитывая, что под словом "императивно" ты понимаешь не то, что весь остальной мир, яснее от этого нихуя не становится.

>Можно сделать имутабельно все и императивном программирование


Цитирую википедию: "In computer science, imperative programming is a programming paradigm that uses statements that change a program's state."

>подход действительно не популярен.


Какой подход? У тебя каша в голове.

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


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

>не натягивать сову на глобус через дерево выражений и доказывать всем что ты прав


Анон, разберись с терминами и сформулируй свою мысль нормально. Пока я слышу только "f(x) лучше чем (f x)". Я еще в прошлом посте просил тебя привести конкретный пример кода, с которым у тебя проблемы. Прошу еще раз.
402 1238464
>>238354

>в лиспах просто разница между этим внутренним представлением и текстом программы околонулевая


На самом деле это не так - разница огромная. Можешь посмотреть выхлоп аст здесь, например: https://github.com/clojure/tools.analyzer

Но посыл поста правильный: ты в любом случае строишь дерево выражений. Более того, это дерево в основном отбивается индентацией, так что разница вообще минимальна (разве что sexpr'ы удобнее структурно редактировать и\или автоматически расставлять скобки parinfer'ом на основе индентации).

>>238379
Тебе другой анон отвечал, если что.

>И если эту реализацию человек понимает только после книги с драконами


Какую реализацию? Я уже писал и повторюсь еще раз: любой нормальный инженер, если он не даун-аутист, привыкает к новому синтаксису максимум за 2 вечера. Книги с драконами к этому отношения не имеют - их нужно читать просто чтобы представлять, как работают инструменты, которыми ты пользуешься (ну и чтобы иметь возможность их разумно обсуждать с другими людьми).
403 1238498
>>238463

>Цитирую википедию


Не надо, я серьезно, не надо такого делать.

Если без простыни текста (крайне упрощено):
Императивный подход - это последовательное исполнение инструкций.
Функциональный подход - это процесс вычисление функций (какого-то их множества).

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

Читать (не писать) последовательный код - куда удобнее, чем математическое дерево.
Поэтому не нужно демагогию с драконами и пони разводить, пройдемся кратко:
Последовательное императивное исполнение - хорошо.
Чистые функции - хорошо
Иммутабельность - в отдельных случаях, хорошо (просто потому что не панацея)
Писать математическое дерево выражений - не прагматично, именно поэтому все ФП не популярно (а не потому что ты не такой как все, недооцененный гений андеграунда)

PS
Меня больше пугает что ты сравниваешь f(x) и (f x), то есть у тебя в голове вообще нет различия и понимания ФП и ИП подхода, ты вероятно видишь ФП как последовательность и даже не понимаешь почему тебе предлагают танцевать от математического дерева? риторический вопрос
404 1238503
>>238498
забыл:
программировать от словарей и листов - великолепно (только не плохо было бы ввести какие-то описательные словари, потому что многие привыкли к классам и структурам, так как они изначально где-то прописаны).
Правда я обычно просто клонирую описанную ранее мапу, но это больше костыль.

Мечты
Если мы добавим последовательность в ФП мы, конечно же, получим процедурное программирование. Но что еще интерпретируемым языкам надо?? Пускай в нем есть многие фишки с ФП, иммутабельность, пускай функции это выражения... И если в таком языке можно было бы запретить таскать всякий кал типа классов и прочей ереси - язык бы стал идеальным. Причем так же везде дергались функции (но уже последовательно) и ничем особо не отличалось от той же кложи.
405 1238510
Люблю дауно срачи.

В кложе есть классы - есть годные примеры ооп кложи?
406 1238514
>>238498

>но это не определение этой парадигмы


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

>последовательный код - куда удобнее, чем математическое дерево


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

>Последовательное императивное исполнение


(-> foo bar baz frobnicate). 90% кложекода пишется по такой модели. Последовательное, синхронное исполнение.

>Писать математическое дерево выражений


Я не знаю, что такое "математическое дерево выражений" и при чем тут вообще математика. Тебе арифметика в стиле (+ 1 2 3) не нравится, или что?

>именно поэтому все ФП не популярно


Самый популярный язык на сегодня (жабаскрип) - функциональный как бе. В более узком смысле ФП означает иммутабельность данных по умолчанию. В еще более узком смысле ФП означает иммутабельность и развитую статическую систему типов. Что такое "математическое дерево выражений" и какое отношение лисп-синтаксис имеет к ФП я все еще не знаю.

>почему тебе предлагают танцевать от математического дерева?


Мне никто не предлагает танцевать. Сформулируй уже наконец нормально свою мысль и приведи примеры кода, с которым у тебя проблемы (прошу в третий раз).

>>238503

>ввести какие-то описательные словари, потому что многие привыкли к классам и структурам


В кложе есть 1) records 2) спеки для произвольных словарей (в теории - статически проверяемые), смотри s/keys

>я обычно просто клонирую описанную ранее мапу


Суть в том, что надо плясать не от мапов, а от rows (пар ключ-значение, ну или в общем случае тегированных типов).
407 1238519
>>238510
В кложе классов нет (они есть в хост-платформе). Кложа - explicitly non-oop язык, это такой opinion у Хикки. Но там есть мультиметоды для ad-hoc полиморфизма, есть протоколы (считай тайпклассы\трейты) для абстракций, есть наследование реализации (реализациями можно как угодно перекидываться) и есть иерархии наследования (это когда у тебя есть некий уникальный идентификатор, например, :zoo.animals/lion, и ты говоришь, что он - потомок :zoo.animals/cat и :africa.fuckups/predator).

Все перечисленные фичи реализованы и работают полностью независимо друг от друга (иерархии никак не связаны с мультиметодами, мультиметоды никак не связаны с протоколами), но при этом play well with each other, разумеется.

Для более традиционного определения ооп (мутабельные инкапсулированные компоненты + DI), смотри:
https://github.com/stuartsierra/component
https://github.com/danielsz/system
или
https://github.com/weavejester/integrant
https://github.com/duct-framework/duct
409 1241018
410 1243717
Анон, я немного разобрался с самим языком. Теперь хочу разобраться с тулингом. Особенно с емаксом. Какие плагины посоветуешь для него? После вскода очень неудобно пользоваться. Юзал только сайдер для репла. Что еще стоит поставить в него? Может есть какие нибудь годные гайды по емаксу?
411 1243730
>>243717
Поставь спейсмакс и не еби мозги. Базарю, ещё захочешь.
412 1243747
>>243730
Окей, сейчас попробую. В спейсмаксе можно оставить горячие клавиши из емакса?
413 1243828
>>243717
https://www.masteringemacs.org -- у этого дяди качать книжку
http://ergoemacs.org/emacs/emacs.html -- а тут неплохие туториалы по всему, плюс есть кусок про написание собственных пакетов
414 1243883
>>243717

>После вскода очень неудобно пользоваться.


Нахуя тебе имакс? В вскоде нормальная поддержка кложи. Если хочется чего-то самого лучшего, то ставь идею+курсив.

Имакс - это целая отдельная вещь, к сабжу треда не имеющая особого отношения. Если у тебя есть ОЧЕНЬ много свободного времени, то конечно стоит в него вкатиться (хотя бы потому, что это один из самых успешных и живучих софтваре-проектов в истории человечества), но это отдельное большое приключение.

А так - да, спейсмакс сейчас самый популярный вариант. Накатываешь cider с nrepl'ом и допиливаешь напильником (в допиливании напильником суть(тм) имакса).

Но лучше просто поставь плагин в свой вскод и не еби мозги. Если уж так хочется экзотики, накати лучше light table, заодно можешь попрактиковаться в кложе через написание плагинов.
415 1244021
>>243747
Да, он при первом запуске спросит но горячие клавиши из vim лучше
417 1245950
>>245038
СЛАВА ХИККИ
418 1246021
Анон, какую либу посоветуешь для серверсайда для ньюфань? С серверной частью никогда не работал, так как фронтэндер. Но теперь решил познакомиться.
419 1246038
>>246021

ехпресс+нода.
420 1246243
>>246021
Очевидный сompojure очевиден. Как разберешься, что к чему, можешь глянуть на luminus (это то же самое, но с батарейками). Ну и типа в целом там по хттп/рест что-нибудь почитай.
421 1246297
>>246243
Спасибо анончик.
422 1246879
Тихо и незаметно в кложурскрипт впилилась поддержка graal.js и интероп с R/ruby/python:
https://dev.clojure.org/jira/browse/CLJS-2831
423 1247004
>>246879
Так, я так понимаю graal.js это жса на жабе? Только я не могу понять в какой виртуальной машине потом весь этот зоопарк будет бегать, в жсовской?
424 1247263
>>247004
Не, грааль - это короче хуйня, которая позволяет компилировать байткод jvm в нативный код и исполнять все это с минимальным нативным рантаймом, без жвм. Ну то есть компилируешь в байткод -> компилируешь в нативный код -> подключаешь одну шаред лайбрари, условный glibgraal - и все работает.

Один чувак, например, так компилял простой веб-сервер на compojure. То есть пишешь обычный веб-апп на кложе, компиляешь, получаешь на выходе бинарник на 10 мегабайт без зависимостей и с мгновенным стартом, профит. Можно пилить микросервисы, не имея 64гб рамы для жвм.

Соответственно грааль.жс - это рантайм для жса на основе граальвм. Плюс у них там есть еще фреймворк для реализации языков на основе граальвм, и все реализации на этом фреймворке могут между собой общаться. Ну то есть как жвм, только без жвм. Раньше в жвм был жс-рантайм (rhino например), теперь можно код под него взять и засунуть в грааль.жс, и будет то же самое, только без зависимости от жвм. Плюс они вроде как хотят как-то интегрироваться с нодой, нпм и всем этим прочим.

То есть ты компилишь кложурскрипт в жс, жс исполняется внутри бинарника грааль.жс, все. Судя по гитхабу, это именно отдельная реализация рантайма, точно так же, как и нода - у них там на крестах все - но с использованием общего языкового фреймворка для граальвм (трюфеля)). Так-то было бы прикольно, если бы они просто перекомпилили тот же райно под грааль. Тогда бы получилось, что ты компилишь кложурскрипт в жс, потом жс исполняется в райно, который написан на джаве, которая скомпилена в жвм байткод, который скомпилен в нативный код, лол. А на самом деле там наверное еще не чисто нативный код, а все-таки легковесная вм-рантайм (я не разбирался, как оно внутри устроено, компилит в бинарники - вот и ладушки), короче WE NEED TO GO DEEPER, лол.
425 1247266
Короче, тлдр: профит в том, что можно делать из кложекода легковесные бинарники без зависимостей + можно в одном таком бинарнике миксовать код на жс, р, руби, питоне.
426 1247268
А, ну и на с\с++ тоже, да. Короче, one vm to bring them all.
ruuf9ebd70b55.97.400x300.jpg49 Кб, 302x258
427 1247332
Долгое время я искал, как сделать свой код ультранадежным. Я угорел по формальной верификации, почти поехал на почве теории типов.
Но только сегодня я осознал: единственное, что меня волнует, это рантайм-поведение. Блядь, все так просто. Не нужны никакие завтипы, монады и прочее. Нужна лишь спецификация, проверяющая каким угодно образом это самое поведение. И что же лучше всего подходит в качестве такой спецификации? Мозговыносящие пруфы и леммы? Нет, spec'и и юнит-тесты позволяют описать ту же спецификацию, затрачивая 1% усилий.

Принимайте в секту, джентльмены.
428 1247333
>>247263
Я просто не понял какой толк гонять кложуржс в граальжс. Если можно было бы гонять кложур в жвм с граалем, разве не быстрей бы было? А трюфл он для них общий же.
429 1247338
>>247332
Правда, есть один вопрос, слегка смущающий меня в кложе: что будет, если Хикки/Когнитект завтра ВСЁ?

Если Брендан Айк исчезнет, с JS ничего не случится, bus factor давно перевалил за 100к.
Если Гослинг испарится, никуда не денется.
Если Страуструп слетит с катушек, то c++ не станет хуже.

А насколько кложа как язык завязана на своих создателей?
430 1247359
>>247332
Добро пожаловать, снова :3

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

>>247338
А что будет с руби, если Матц все? Интересно.

Конкретно Хикка язык вообще никак не поддерживает, на него ничего не завязано. Ну то есть блядь, как бы на него все завязано (он лично должен в качестве финального шага зааппрувить каждый патч, прежде чем его примут в релиз), но по факту он не поддерживает код, он только занимается будущим (дизайном и кодингом новых крутых штук). Поддерживают и разрабатывают язык в основном работники когнитекта, это да, но что значит "все"? Это консалтинг/аутсорс контора, которая продает датомик и динамические опердени, плюс саппорт волмарту, каким-то банкам, circleci итп. Ну то есть чтобы когнитект ВСЕ, нужно, чтобы сперва кложа ВСЕ (причинно-следственную связь в твоем вопросе инвертируем-с), да и даже при этом они могут продолжить клауд джавахуйню всякую продавать.

Плюс это чисто сам язык, а комьюнити проекты поддерживает баблом некоммерческий фонд, в который когнитект донатит какие-то символические 100 баксов или что-то в таком духе. Ну то есть чисто финансово даже если завтра весь когнитект будет abducted by aliens особой трагедии не будет. Плюс они там завязаны на Software Freedom Conservancy, веб-стак immutant разрабатывается редхатом\жбосс, ну короче тырпрайс все дела.

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

>какой толк гонять кложуржс в граальжс.


Ну это просто еще один рантайм. Можно его встраивать куда-нибудь (в оракл), можно на нем тесты гонять, етк.

>Если можно было бы гонять кложур в жвм с граалем, разве не быстрей бы было?


Так и можно же (и притом без жвм). Насчет медленнее\быстрее - не знаю, наверное быстрее. Но если у тебя УЖЕ ЕСТЬ проект на клжс, и тебе нужно вызвать из него либу на р, например, то теперь ты и это можешь сделать. То есть и клжс, и обычная кложа там поддерживаются.

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

Хотя может тима грааля быстрее добавит поддержку динамических класслоадеров в джавный грааль, лол.
432 1251573
https://docs.google.com/forms/d/e/1FAIpQLSeouME58YDBNrs3IP5_l5xA1Z51bYLBnMcAgLTqhtxLi7Gvbw/viewform

>Describe a work situation where you had to decide between two equally appealing options. Creative work is about trade-offs. We'd like to learn about how you assessed the options and decided between them.



Сука, блядь, вот ненавижу такие вопросы, что на них отвечать? Все равно ведь и я, и читающий это оба знаем, что это будет какая-то приукрашенная сказочка, блядь, ненавижу эти трик квешчнс. Да и любой каждый день по сотне таких десижнов делает, то есть блядь надо именно привести такой кейс, где блядь ты такой охуенный супермен сделал правильный выбор и потом это вылилось в сэкономленные килобаксы для бизнеса, или какая-то подобная хуйня. Блядь, или это вопрос не на опыт, а на стиль мышления? То есть суть именно в том, как и основываясь на чем ты выбираешь? СУКА, ебаные эйчары и психолухи, ненавижу блядь
инб4: выбирал между тем, чтобы поскроллить двач или съебаться с офиса пораньше, было лень вставать из кресла, поэтому выбрал скроллить двач и залогировать это время в таску, в конце месяца дали повышение за переработку
1447653275813.jpg18 Кб, 517x413
433 1251581
>>251573

> выбирал между тем, чтобы поскроллить двач или съебаться с офиса пораньше, было лень вставать из кресла, поэтому выбрал скроллить двач и залогировать это время в таску, в конце месяца дали повышение за переработку

434 1251665
У кого-нибудь юзают организацию работы микро тасками? Как оно?
435 1251704
>>251665
Егор, ето ти?
436 1252790
Самый годный тред всея раздела.
437 1253166
>>139597 (OP)
Неплохой читшит\туториал ребята для воркшопа сделали: https://github.com/friemen/cugb/blob/master/kickstart.md
Только в конце какое-то странное соглашение по именованию атомов, по-моему говно. Рядом с атомами все равно всегда либо функция с ! на конце, так что и так видно, что тут меняется состояние, либо дереференс: @atom - так что опять же видно, что мы из контейнера достаем значение. Нахуй надо еще один ! в имя самого атома добавлять? Хуй их знает.

>>252790
Да, ето так!
438 1254016
>>247004
Нее, на жабовской. В двух словах это еще один заход на тему соснуть у ноды и V8. Предыдущие два rhino и nashorn были просто порваны по производительности. Имхо граль граль.жс ждёт та же судьба и то же амплуа странного нинужно.
439 1254146
>>254016

>Нее, на жабовской.


Так вся суть в том, что написано оно на жаве, но с помощью грааля компилится в нативный код. Так что они с одной стороны закрывают райно\нашорн нишу (пускать жс внутри жвм), а с другой делают и стенд-элоун жс-движок, который может в интероп со всеми остальными языками на граале (руби, кложа, r...).
440 1254451
>>254016

>та же судьба


Ну бенчмарки довольно обнадеживающие.
441 1254948
>>139597 (OP)
Прикольная игрушка на кложескрипте: https://cdn.rawgit.com/yogthos/graviton/game-jam/release/graviton.html
442 1258346
>>139597 (OP)
https://trainline.github.io/optimus/
https://engineering.thetrainline.com/presenting-optimus-an-open-source-data-store-838115d7d98c

>We, at Trainline, are delighted to announce Optimus, an open-source data store which provides transaction isolation semantics and version control mechanism on top of a traditional key-value store. Optimus is designed to be used by Data Scientists to store and retrieve reference data and model co-efficients calculated across millions of keys.Optimus is a key component of our data platform which is designed to enable Data Scientists to build and deploy data products with highly predictive features, driven by data, that save our customers time, hassle and money. Optimus is the data store that powers Trainline features like BusyBot and Price Prediction.

443 1259700
Хорошее простое объяснение про middleware vs interceptors, схоронил на будующее: https://quanttype.net/posts/2018-08-03-why-interceptors.html
444 1261446
>>247338
Релейтед: Дэвид Нолен перешел из Когнитекта в какую-то другую продуктовую кложекомпанию:
https://www.suiteness.com/blog/clojurescript-suiteness-welcomes-david-nolen
445 1266381
Тут это, выложили видосики с новой кложеконфы в Финляндии в Финляндии, блядь! Скоро во Львiве будут евроконфы проводить, блеать, в этом году проводилась в первый раз:
https://www.youtube.com/channel/UC1lFJanm5Wp6IpNk-2C1Sxw
446 1271890
>>266381
https://www.youtube.com/watch?v=WtdegIqQbrg этот чувак огненный
447 1273997
Так ребят, на связи вротендер погромист. Знание жабаскрипт и основы Джавы. Хочу совершенствования ради начать Clojure изучать.
Ответьте пожалуйста на несколько вопросов.
1. Насколько перспективно это для веб разработки? Для бэкенда? Для фронта?
2. Востребован ли Clojure среди работодателей или как Haskell больше для личного развития?
3. За пределами ДС реально найти галеры где его использует? СРавнивая весь СНГ.
448 1274179
>>271890
Бля, уже который раз вижу ссылку на этот видос, видимо все-таки придется посмотреть, лол.

>>273997
1. define "перспективно". В плане потенциального роста скилла и зарплаты - да, однозначно перспективно.
2. Держи короче пасту из соседнего треда: https://pastebin.com/raw/TLpP80y9
3. Подписан в твиттере на пару кложуристов из зажопинсков, так что реально, но это все по знакомствам, разумеется.
449 1275648
>>273997
В проде на работе сокет сервер чудесно пашет, 0 проблемо.
Дома торговый бот на кложке, иммутабельность помогает быстро по потокам каждую секунду раскидать не беспокоясь о сайд-эффектах.
Работа регулярно встречается в профильных темах, и удалёнка и CTO, Англия, Германия, США.
Приятный язык, на фронте всё ж предпочту vue ибо быстрее. А вот ноду на бёк - ну иво нахуй. Однопоточная, хоть и асинхронная - в моём деле не помощник.
450 1275703
>>275648

>Дома торговый бот на кложке


Расскажешь?
451 1275778
>>275703
нет
452 1275783
>>275703
В смысле не потому, что нет, а что рассказал уже.
Многопоточность нужна для посекундного обсчёта ситуации.
Подробнее - это уже о финансах, то есть от задачи, а это не очень по теме. По теме - ну, то, что раньше оно было на питоне и не устраивало скоростью обсчёта и вот этим всем гемором с многопоточностью и было медленнее оттого в 15 раз.
453 1275858
>>275703
А так, раскидал валюты, индикаторы, по тредам, причём очень просто, в (futures обернуть). Мало того, ход выполнения можно наблюдать постоянно делая deref у атомов - этого чудесного средства общения потокобезопасного. И потом собрать всё в кучку через подобие await, я макросы юзаю для такого, в этом случае удобно.

<pre>
(ns tr.lib.futures)

(defmacro futures
[n & exprs]
(vec (for [_ (range n)
expr exprs]
`(future ~expr))))

(defmacro wait-futures
[& args]
`(doseq [f# (futures ~@args)]
@f#))

;; HOWTO USE

;(defn sleeper []
; (Thread/sleep 1000))

;; Threaded code, will run 1 second

;(defn test-futures []
; (wait-futures 1
; (sleeper)
; (sleeper)
; (sleeper)
; (sleeper)))
;(time (test-futures))

;; Original single thread code, 3 seconds

;(defn test-simple []
; (sleeper)
; (sleeper)
; (sleeper))
;
;(time (test-simple))

</pre>

Ещё удобно, конечно, залипания сокета у биржи убирать (ни exceptions, ничего не выкидывается( просто рестартуя части программы через mount из scheduler внутреннего, тоже классно. Живая просто штука)
453 1275858
>>275703
А так, раскидал валюты, индикаторы, по тредам, причём очень просто, в (futures обернуть). Мало того, ход выполнения можно наблюдать постоянно делая deref у атомов - этого чудесного средства общения потокобезопасного. И потом собрать всё в кучку через подобие await, я макросы юзаю для такого, в этом случае удобно.

<pre>
(ns tr.lib.futures)

(defmacro futures
[n & exprs]
(vec (for [_ (range n)
expr exprs]
`(future ~expr))))

(defmacro wait-futures
[& args]
`(doseq [f# (futures ~@args)]
@f#))

;; HOWTO USE

;(defn sleeper []
; (Thread/sleep 1000))

;; Threaded code, will run 1 second

;(defn test-futures []
; (wait-futures 1
; (sleeper)
; (sleeper)
; (sleeper)
; (sleeper)))
;(time (test-futures))

;; Original single thread code, 3 seconds

;(defn test-simple []
; (sleeper)
; (sleeper)
; (sleeper))
;
;(time (test-simple))

</pre>

Ещё удобно, конечно, залипания сокета у биржи убирать (ни exceptions, ничего не выкидывается( просто рестартуя части программы через mount из scheduler внутреннего, тоже классно. Живая просто штука)
454 1276503
>>275783
>>275858
Прикольно. В общем-то да, насчет "не очень по теме" ты прав, я нихуя в финансах не шарю (всегда думал, что там все дрочат на наносекундные задержки и машинлернинг). А так - круто, про рестарт вживую это годное замечание.
455 1276559
>>276503

Да, тема интересная, финансы, обучался с потерями где-то полгода, делал ML на tensorflow, но в итоге для себя сделал вывод, что оно там не работает. Гонял по истории - будь здоров. То есть оно будет постоянно учиться, это супер, а я буду терять) В целом рынки манипулятивны и не созданы, чтобы зарабатывать, а чтобы терять и человек в этом смысле завсегда похитрее машины будет. Старая добрая торговля с плечом, но только не в промежутках 5-10-15 минут, а секунды сейчас решают, даже до 30 секунд норм. Есть интересный проект на эту тему в ML https://cryptomon.io/chart/bitstamp/btcusd/day#knneighhbors (я наблюдаю и тоже не алё, правда сейчас не доступен что ли уже, издохли...) Самое интересное было алгоритмы портировать на кложу, достаточно быстро. Но большая вариативность реализаций ещё оставляет задел на скорость, то есть я не использовал пока lazy, всё достаточно тупенько, тк я не гуру в кложе.
456 1276566
>>276503
Сейчас дочитываю Joy of Clojure (на половине), второе издание, мозгодробительная книжка, очень вставляет и подача и уже что не для новичков. Наконец-то всосал теорию что такое трансдьюсеры, раньше как-то не ложилось в голову обычного императивного программиста. А всего-то делов - этож именованый набор трансформирующих функций без коллекций (map, reduce итп) Самое сложное было сознание изменить от ООП к data flow, на первых этапах даже apply вызывал непонимание, не говоря уже о juxt. Но как-то рассосалось.
457 1276568
>>276503
В joy of clojure этот метод обучения назывался "Пить из пожарного гидранта", когда читаешь всё подряд по теме жадно. А оно там само потом всплывает или осознаётся позже.
458 1276625
Что вот накипело сказать про кложуру из бека с basic->pascal->(php|python)->js->clojure

Напишите ваш опыт... а то я одинок в целом, свои задачи решаю и ок.

Язык обалденно вставляет в первые дни, много времени потратил на emacs, хотя может и зря, он мне был нужен реально только в мегасложных отладках (cider) но это было нужно три раза. Обычно не заморачиваясь, cursive + repl было бы вполне достаточно (+ dbg макросы могу поделиться, наверное они распостранены). Сейчас emacs бы пропустил, хотя многие не согласятся, но полгода, ебать, мне уже сорокет лет, мне не до того.

Язык внешне обманчив, он глубок. Во-первых, я не зная java и jvm полез. Это вообще не обломало, interop хорош, тот же знакомый ООП, мне какая разница - есть интерфейсы и есть. гугли либы которые нужны, а там видно будет. Мне нужно решение задач, а не дрочка. Но сама кложка ой как глубокое озеро. 5 часов пишешь 20 строчек, но какие 20 строчек! Да, иногда сложнее для рефактора, но надо больше читать чужого кода, он всегда читается понятно. Любой чужой код на кложе читается легко, благодаря ns правильному. Такого я ранее не видал.
459 1276626
Потом code as data = это же просто подрыв мозга. Код - это просто list, где на первом месте функция всегда. Всё мега консистентно. Соответственно, раз код как данные, то это просто открывает настолько огромные возможности, что я чуть не поседел.
460 1276628
в обычных языках function () = x это да, может быть first class citizen, но это не code as data
461 1276630
Главный прорыв - это сам подход к редактированию кода, я осознал, что такое slurp, barf, когда тебе скобки не мешают, а помогают.
462 1276631
короч я могу продолжить, но поскольку я тут приплыл недавно, то не хочу спамить вне дискуссии. Может оно и не надо никому.
463 1276711
>>276631
Нет-нет, твоё мнение очень интересно для нас правда

>>276626
Скажи, а что это, собственно, даёт, кроме макросов (которые, как я слышал, в кложе по сравнению с CL кастрированные)?
464 1276846
>>276711
ох, как радостно и приятно слышать заинтересованность в русском комьюнити, у нас там слака активная, но мне некогда общаться, я из тех людей, что любят тишину и документацию. Прошу принять, что я нахожусь на определенном этапе понимания кложки, который может не совпадать с вашим и прошу простить заблуждения и готов учиться.

ну про тип list я готов много рассказывать. это басис лиспов
и то не факт, что я всё понял еще. Это просто данные, можно сказать, что это "code forms"

(code form) -> волшебное дрочево, самая мякотка, писечка лиспов
Многие люди понимают неверно лисп подобные языки как последовательность операций, как везде,
но нет! Это просто данные (* x y) = это просто список с функцией в самом начале и аргументами далее

А почему? что вообще есть лист? Я тут сделал для себя небольшую шпаргалку, ну как сделал, она в разработке по всем типам данных, но вот по листу - это https://i.gyazo.com/7bdb2497fdc80787ef95ae411ecc43d3.png
то есть у листа нет индекса, в отличие от вектора.
Примитив нам дан простой - это по сути стек

list - это все, что "между скобочек", мне нравится как называется функция (calling position)

и что есть по сути list? Это список, который отдаётся ну пусть эвалуатору (омг), и он его процессит.
Да, в кложке просто принято брать первое x в листе как функцию и применять ее к последующим аргументам, но это не обязательно.
Мы можем и просто отдать как есть с помощью апострофа - это значит евалуатить не надо '(x)

Как с точки зрения языка - это просто огонь - передавать языковые конструкции имхо как данные, и делать с ними что хошь. Нигде нет таких вольностей. Это же просто списки! просто тип данных. Это для меня было просто бомбезно - просто взять и передать кодоформы как данные куда-то в другой модуль. Похоже, на eval в других языках, но это не так. ведь данные можно трансформировать, да еще и иммутабельно, серъезно? Прям передать класс кодом? хаха
Вот это вот вещь! Метапрограммировыание.
465 1276885
>>276846
Макросы в кложке тоже подлая тема, по сути, чем реже они используются, тем читабельнее код. Ну заюзал я из для многопоточности, всё, харе.

Конечно, и в core много макросов, например, let очень интересно почитать, но по сути в работе оно не особо и надо.
466 1276908
>>276846

>у нас там слака активная


Ты про clojurians? Я там гдет полгода назад был, и в русском канале там было довольно тихо.

> мне некогда общаться, я из тех людей, что любят тишину и документацию.


Понимаю, сам такой.

> Вот это вот вещь! Метапрограммировыание.


Ну, твоё писание кипятком от форм лиспа я могу понять, у меня такое же было при обучении по SICP, но теперь я хочу понять, где эту мякотку можно реально применить, помимо "мам, смотри, как я могу!". Как я понимаю, одно из применений - макросы, но про макросы в SICP'е ничего нет.
467 1276974
>>276559
Блядь, сперва прочитал как "cryptomoron", кек. Отличное название для стартапа.

>>276566
Джой оф кложи - это не для начинающих, угу. Как вторая книжка зато отлично заходит.

>именованый набор трансформирующих функций без коллекций


В выделенном как раз вся фишка. Многие вот это вообще ни в какую не понимают, даже в итт треде вроде были такие, лол.

>>276568

>читаешь всё подряд по теме жадно. А оно там само потом всплывает


STOP... HAMMOCK TIME
468 1276982
>>276625
Про имакс согласен, в принципе он нахер не нужен, когда кложу изучаешь. У многих такое впечатление создается, что типа без имакса на кложе писать - это не то, ну так это хуйня полная. Емнип, сами чуваки из когнитекта пишут как раз в курсиве. Но я на имакс подсел еще до кложи, и это разумеется единственная среда разработки белого человека :3

>Но сама кложка ой как глубокое озеро.


Мне нравится, что там все фичи отделены друг от друга. Например, ты можешь спокойно писать код, вообще не зная, что такое макросы. Или стм\агенты\волатайл. Или полиморфизм - ты можешь даже не знать про протоколы и юзать мультиметоды, или наоборот, и у тебя ничего не сломается, все это отдельно. То есть нет такого, как в джаве (или хаскеле), где все фичи языка завязаны на одну конструкцию, и тебе надо сразу все в себя впихать, и только после этого ты можешь писать хоть какой-то код. А тут можно делать по принципу "херачишь код, понадобилась фича - разобрался". По сути самые основы языка (тот же синтаксис) можно рассказать за пару часов, ну и плюс конечно еще надо задрочить стандартную библиотеку и преобразования данных в функциональном стиле. А после этого просто берешь и делаешь, минимум ненужной хуиты, ебли с типами, абстрактбинфакторифасадсинглтонов и т.п. Берешь и делаешь.
469 1276987
>>276630
Вот это кстати самое главное, что потом бросается в глаза в других языках, лол. Особенно когда какой-нибудь чтмл не в хиккап-синтаксисе править - это же просто пиздец, сидишь и думаешь: какой мудак это все придумал? Есть же очевидное, простое, удобное решение - нет, не хочу скобочки, хочу говно жрать. Хипсторы ебаные...
470 1276998
>>276711
В кложе точно такие же макросы, как в кл (негигиенические), плюс немного сахарка для удобства (типа автодженсимов). Ты наверное со схемой перепутал, там "кастрированные" на самом деле нет по сравнению с кл\кложей макросы.

>>276885
По-моему макросы нужны в первую очередь для либописателей. Ну и просто без них либо бы все тормозило, как в руби, либо была бы куча бойлерплейта. С ними довольно легко выстрелить себе в ногу и сделать протекающую абстракцию, но в том и фишка, что на кложе они по сути не нужны просто для написания программ - ты их будешь только использовать в основном, а писать их будут всякие ребята, которые запилили тебе core.async, core.match, core.logic, тот же om, ну и т.п. Плюс мне нравится, что допустим вот есть либа, которая что-то делает, и там в ридми автор говорит мол вот у нас есть основная абстракция qux, мы все через нее делаем, и потом в коде ты берешь и пишешь: (defqux ...) - то есть индирекции меньше, читать проще, все straight to the point. Есть такое мнение, что типа чем более низкоуровневый язык, тем больше в коде на нем упоминаний не относящихся к домейну вещей, ну и наоборот соответственно. Вот тут как раз про это.

>>276908
tl;dr: макросы - это штука, которая позволяет добавить в язык поддержку асинхронности библиотекой, а не изменением компилятора. То есть повышается модульность программ.
471 1277699
>>276711
К теме гомоиконности, из соседнего треда:

>И что за хуйня у вас там с макросами творится https://www.scala-lang.org/blog/2017/10/09/scalamacros.html ? Типа scala.reflect нахуй потому что Dotty в них не может, Idea тоже не может, поэтому Scalameta. Но теперь и Scalameta нахуй, переписываем всё по новой под scala.macros? Может уже подсмотрите, как правильно делать, чтобы не перехуячивать всю кодобазу по два раза за год?



кек
472 1277844
Я тот, который всё ещё обучается по жизни)

>>276998

В куче видео смотрел и в целом понятно, что макросы - это протекающая штука, что она оторвана от остальной кодебазы (точно про либы, первый макрос который я прочитал и понял - это let) как бы и это уже местечковое и совершенно не нужно их использовать повсеместно.

>>276908

Я из архива её всю прочитал на одном дыхании за несколько дней https://clojurians-log.clojureverse.org/clojure-russia

Когда это было там, пару лет назад я упарывался за фронтенд и сделал биндинги к chrome-reduxdevtools
https://chrome.google.com/webstore/detail/redux-devtools/lmhkpmbekcpmknklioeibfkpmmfibljd?hl=ru

тут https://gitlab.xet.ru/publicpr/clojurescript-redux/tree/master (там весь редукс на пару строк на самом деле на мультиметодах), больше пробмел передавать всё в chrome js extension, имитация иммутабельности, блин

но после этого, я понял, что значительно охладел к фронту, всё же слишком много иботни было с переиспользованием реакт компонентов, а писать всё с нуля...
473 1277856
>>277844
Ну то есть из практического для фронтендеров: есть такая штука, как http://cljsjs.github.io/ но по факту там старьё и надо самому импортить.
474 1277908
>>277844

>В куче видео смотрел и в целом понятно, что макросы - это протекающая штука


Ну я бы не сказал что это обязательно так (when вроде нигде не протекает, лол), но ее очень легко сделать протекающей. А так да, основное правило макрописателей - don't write macros ну или don't write a macro if a function will do, если для зануд

>>277856
В последних версиях ужеж вроде впилили поддержку es6 импортов и npm (ну и плюс в shadow-cljs это давно было, но она какая-то больно жручая, я ее толком не пробовал)
475 1278934
Целых 2 кложуриста в подкасте на русском языке, местами форсят кложу https://hardcode.fm/2018/10/13/episode004.html#51c7b904
sage 476 1279008
>>278934
Хуйню какую то обсуждают.
477 1279039
>>279008
Двачую адеквата.
478 1279077
>>278934
О, видел этот подкаст, прикольные ребята там.

>>279008
Это как в первом выпуске хост там заливал всякие довольно абстрактные вещи, подробно объяснял все минут 10, а потом его собеседник в ответ: "ээ... ну, да" - вот ты мне тот момент напомнил, лол
sage 479 1279176
>>279077

>абстрактные вещи


>подробно объяснял все минут 10


> а потом его собеседник в ответ -



Апи не нужно
@
А вот у нас экшены это функции
@
Ух бля, давайте джунов пообсуждамаем, а давай
@
Кто убил джунов
@
Как джуну найти первую работу
@
Хороши ли джуны
@
И т.д.

Я хз кому это может быть интересно...
autism.jpg22 Кб, 312x360
480 1279506
>>279176
Я про первый выпуск говорил, але.
481 1280005
482 1280669
483 1280712
>>280669

> https://moikrug.ru/vacancies/1000040445


Они же, если мне память не изменяет, несколько месяцев тому кложуриста искали. Видать, тот, которого они нашли, понял, что придётся не пиздеть всем, как же хороша кложа, а реально писать на ней кот, и тихо слился.
JVM Ecosystem Report 2018 | Snyk 2018-10-18 01-32-12.png150 Кб, 834x739
484 1280743
Анон, это вин или фейл? https://snyk.io/blog/jvm-ecosystem-report-2018

Впрочем, вбросьте потоньше это к скалистам, у них по любому подгорит..
485 1280767
>>280712
Кложуристы, конечно, сверхлюди, тут спору нет, но ты правда считаешь, что ровно одного кложуриста достаточно, чтобы пермаментно тащить все проекты компании?
486 1280768
>>280743

>kotlin


So much for the hype, кек. Скалку конечно жалко (алсо, так вроде и не скажешь). Хотя в принципе меня устраивает: java8 + clojure, больше на жвм ничего и ненужно.
487 1285882
>>280743
Скорее вин, чем фейл.
488 1289855
Что-то уже второй день подряд кложа на главной HN.
Анон, зайди, бампни, (по-братски)

Сегодня Learning Clojure: comparing with Java streams
https://blog.frankel.ch/learning-clojure/5/
489 1290344
Просто оставлю это здесь https://github.com/lacuna/bifurcan/blob/master/doc/comparison.md
490 1290822
>>290344

>https://github.com/lacuna/bifurcan/blob/master/doc/comparison.md


читал в тви у Зака анонс, крутая работа.
491 1308067
добавьте в шапку, чтобы скобконенавистникам было проще набрасывать https://www.youtube.com/watch?v=jlPaby7suOc
"лучше чем сам никто тебя не затроллит"
image.png105 Кб, 1603x434
492 1308344
решил угареть и зибашить пюрешных функций на вижуал крестах, но данные полюбому нужно сохранять

вот так вот - это тру?
image.png281 Кб, 1920x1080
493 1308351
вот что б попонятней
494 1320718
>>308344
>>308351
Шта блядь?
495 1323338
(clojurescript)
понравился ряд постов относительно свежих чувака с medium
https://medium.com/@kirill.ishanov там посты посвящённые re-frame + spec, очень полезно, я переписал свой стек вдохновясь.
496 1323352
>>323338
Кирилл, залогинься.
497 1323356
>>323352
Я не Кирилл, дай бг ему здоровья) Сделал хорошо, чо ты.
498 1323395
Немношко прозу жизни:

Взял халтурку, на C#, xamarin, чот пописываю на новогодние праздники, делать нечего, пребываю в унынии оттого, как c# рпники пруцца от своего LINQ, Типа вот мы по данным ищем как по SQL, запросами. Удовольствия - 0, но бабки есть бабки, подписался, думал, поищу что-то новое.

ООО, это просто нечто, хыхы, типа https://ru.wikipedia.org/wiki/Language_Integrated_Query

WHAT??? И это на таком примитивном уровне находится до сих пор в 2019 году.

А если у тебя всё данные, и код, (спасибо кложке)то уж явно проблемы такие были решены, тащусь от
https://github.com/nathanmarz/specter
или
https://github.com/boxed/instar

объективно жаль сишарпников, надо отрыгнуть.
499 1323416
Но опять же, отрыгнуть некуда, clojure в мобилках лоха (лоха - это глагол)

Есть интересный проект, https://github.com/arcadia-unity/Arcadia
unity кложурка, откуда я собственно, и приперся с с#
но в целом, это пока не территория кложуры.
500 1337371
Есть кто живой? решил попробовать кложурскрипт, но есть проблема, делаю все по https://clojurescript.org/guides/quick-start, запускаю это приветмир, страница в браузере открывается, обновляется, repl печатает hello world, но на мои команды repl не реагирует, пишу например (+ 1 1), или HUI, ничего не происходит. Как фиксить?
501 1337952
>>323416
cljs+react-native на мобилках норм (но дев-экспириенс - уг), у статус.им именно так все крутится (и они еще пилят порт реактнейтива для десктопа, их мобильная прога уже даже запускается под линуксом)

>>337371
А что в консоли браузера? У тебя коннекта между реплом и страницей нет, а почему - тут хз, надо больше инфы.

Чо, перекат пилить?
502 1338220
>>337952
Накатил figwheel, там все работает.
503 1338231
http://www.4clojure.com/login там живой? Не могу залониться, сбросил пароль, все равно ошибка
504 1338323
>>337952
Пили перекат, ящитаю
505 1338798
>>338231
А нахер там регаться? Оно ж и так работает.

>>338323
Бля, чет лень сегодня лишние телодвижения совершать, на выходных запилю :3
506 1341882

>>1


Ну и где перекат?
507 1342033
>>338798
Перекатывай!
PS заебал абу двачи ломать, перекатывай, что бы его макаки кодить учились
3e0135fc8f18ff889e00f87646f84fdd.jpg22 Кб, 506x453
509 1348450
Общий лиспотред куда-то проебался, поэтому запощщу сюда.
Пикрелейтед - моё актуальное лицо, когда прочитал про макрос loop в Common Lisp.
Серьёзно, что за нахуй? DSL для циклов с условием в стандарте? Не могли, как в концептуально стройной няшной Scheme сделать - вот тебе TCO, вот тебе named let, и крутись как хочешь. Нет блядь, надо нахуевертить, чтобы как в C++ было, только со скобочками))))))))))
510 1348453
>>348450
Ёб твою мать, ещё и с тредом проебался. Спасибо Абу за прекрасно свёрстанный каталог тредов, блядть.
Тред утонул или удален.
Это копия, сохраненная 4 марта 2019 года.

Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее

Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
« /pr/В начало тредаВеб-версияНастройки
/a//b//mu//s//vg/Все доски