Ευγένιος
И походу не лечится.
Kirill
Я про железо
какой-то из xeon w, что ли
Ευγένιος
какой?
Не измеримая глупость.
Ευγένιος
а зачем вобще это было сделано ?
Чтобы фронтеры смогли писать сервера.
Ευγένιος
Деньги.
Ευγένιος
Чтобы фронтеров переучивать, и не набирать специалистов джавистов например.
Миша
Не измеримая глупость.
ну ты на вопрос так и не ответил
Daniel
так
Daniel
остановитесь, ебаные рогатые твари!
Daniel
это же сейчас js-срач начнется
Ευγένιος
Я не вижу смысла отвечать на вопрос, который по сути является таким «ты посмотрел на код, и как понял что такая фича как интовые массив там не нужна??».
Daniel
придется банить
Ευγένιος
Бань скорей.
Маjко
ну так давайте пример из своей предметной области
Взять массив значений, вычислить количество значений удовлетворяющих условию count := 0 for(i := 0; i < slice.len(); i += 1) { if(predicate(slice[i])) { count += 1; } } let count = slice.iter() .filter(predicate) .count()
Dmitry
Чтобы фронтеров переучивать, и не набирать специалистов джавистов например.
чето мне кажется что у них нихзрена не получилось сделать из макаки человека. (без обид фронтендеры)
Kirill
остановитесь, ебаные рогатые твари!
чот я давно от тебя такого не видел 🤣
Маjко
В каком варианте больше явной семантики и меньше мусора?
Aliaksandr
а зачем вобще это было сделано ?
в качестве неудачного эксперимента. Но часть народа пересела с пхп на ноду и понеслась...
Ευγένιος
чето мне кажется что у них нихзрена не получилось сделать из макаки человека. (без обид фронтендеры)
Какие из них буду обезьяны если у них там на сервере типизация слабая. И колбеки Овер 5 уровней.
Миша
Чо?
ну вот так и получается, одни обезьяны тралят гоферов за дженерики, другие ноду за колбеки
Aliaksandr
Взять массив значений, вычислить количество значений удовлетворяющих условию count := 0 for(i := 0; i < slice.len(); i += 1) { if(predicate(slice[i])) { count += 1; } } let count = slice.iter() .filter(predicate) .count()
императивная версия понятнее. Если бы еще predicate был бы прописан в явном виде, было бы вообще замечательно. А вот из функциональной версии хрен поймешь, что происходит, если не знаешь функциональщины.
Ευγένιος
Да ты в чате по ноде денёк посиди, и увидишь какое там говно их колбеков на колбеках. Чи ты думаешь везде тебе мёдом намазано и промисы со всем истекающим используют?
Aliaksandr
обычно под predicate прячется простейшее условие
Aliaksandr
и еще функциональную версию весело отлаживать. Попробуйте поставить там брекпоинт :)
Michael
это rps :)
урл репо для uttp не менялся?
Viacheslav!
Всем привет
Aliaksandr
И зачем мне ставить его где-то кроме предиката?
чтобы узнать, на какой итерации что-то пошло не так
Kirill
урл репо для uttp не менялся?
Пока поменялся на приватный
Viacheslav!
Помогите плз с установкой пакета.. сам пакет скачен но чтото с версиями ... vyacheslav@vyacheslav-VirtualBox:~/gol/src/github.com/chainHero/heroes-service$ ls /home/vyacheslav/gol/src/github.com/hyperledger/fabric/core/chaincode/lib/cid/ cid.go cid_test.go interfaces.go README.md vyacheslav@vyacheslav-VirtualBox:~/gol/src/github.com/chainHero/heroes-service$ dep ensure ensure Solve(): No versions of github.com/hyperledger/fabric met constraints: 014d6befcf67f3787bb3d67ff34e1a98dc6aec5f: Could not introduce github.com/hyperledger/fabric@014d6befcf67f3787bb3d67ff34e1a98dc6aec5f, as its subpackage github.com/hyperledger/fabric/core/chaincode/lib/cid is missing. (Package is required by (root).) v1.1.0: Could not introduce github.com/hyperledger/fabric@v1.1.0, as it is not allowed by constraint 014d6befcf67f3787bb3d67ff34e1a98dc6aec5f from project github.com/chainHero/heroes-service.
Маjко
императивная версия понятнее. Если бы еще predicate был бы прописан в явном виде, было бы вообще замечательно. А вот из функциональной версии хрен поймешь, что происходит, если не знаешь функциональщины.
Добавь еще пару шагов обработки и получишь простыню. В то время как комбинатор четко показывает семантику каждого шага обработки, кратко и понятно
Aliaksandr
list comprehensions из питона намного понятнее функциональщины и короче императивщины. Для вашего примера - count = len(x for x in a if predicate(x)) . Но и они годятся только для простейших однострочных случаев. Что-нибудь сложнее уже лучше писать в виде обычных циклов, т.к. в многострочном list comprehensions трудно разобраться
Kirill
Я в конце концов принял тот факт, что если стдлиб/рантайм не юзать там, где это вообще возможно, а руками имплементить или хачить, можно выжать отличные результаты Хотя, конечно, это не будет уметь в не-линукс на первых порах
Aliaksandr
Ну а комбинаторы подходят не только для них
комбинаторы подходят только для факториала с числами фибоначчи. В реальных задачах они запутывают код до такой степени, что не только сторонние разработчики не разберутся в нем, но и сам автор через пару месяцев не будет понимать, что там происходит.
Маjко
комбинаторы подходят только для факториала с числами фибоначчи. В реальных задачах они запутывают код до такой степени, что не только сторонние разработчики не разберутся в нем, но и сам автор через пару месяцев не будет понимать, что там происходит.
Бред. Семантика каждого комбинатора очевидна и стандартизована. Это скорее в сложном цикле придется разбираться, особенно без комментов. Так как промежуточные переменные итд, которые не привносят полезной инфы никак не скрыты
Daniel
o/
Cat
> list comprehensions из питона намного понятнее функциональщины и короче императивщины. Честно, иногда забиваю болт и пишу на императивщине, лишь бы только не катать простыню из [for x in for y in...]
Миша
\o
Cat
\o
Маjко
поднимите руки, кто понимает семантику стандартных комбинаторов и с перовго раза разберется в коде, где они применяются :)
Когда ты пишешь на языке где они в стдлиб и используются повсеместно — все понимают
Daniel
но это не значит, что это хорошо
Aliaksandr
вот референс на комбинаторы, кто не знает. Давайте засекем время, необходимое среднему человеку на их понимание и осознанное использование. https://en.wikipedia.org/wiki/Lambda_calculus
Маjко
но это не значит, что это хорошо
Если не перегибать — ххорошо
Aliaksandr
а где там комбинаторы?
Aliaksandr
да
Cat
не знаю, извините
Je
не оч, комбинаторы это особые лямбда-вычисления на SKI-базисе
Je
я отошел на полчаса, сейчас это функциональщины чат?
Миша
не оч, комбинаторы это особые лямбда-вычисления на SKI-базисе
совсем не обязательно приплетать лямбды к комбинаторам
Je
но этож символьные вычисления? нумералы черча там, нет?
Je
и не лямбды, а лямбда-исчисление, лямбдами сейчас что не попадя называют
Dmitry
я сам не местный. комбинаторы это чистые функции ?
Миша
но этож символьные вычисления? нумералы черча там, нет?
причем тут нумералы черча? это же просто один из способов записи чисел
Je
причем тут нумералы черча? это же просто один из способов записи чисел
при том, что используются вместе в комбинаторной логике, так как других чисел недовоз, наверное?
Миша
я сам не местный. комбинаторы это чистые функции ?
да, только еще без свободных переменных
Dmitry
да, только еще без свободных переменных
а че такое свободные переменные?
Миша
а че такое свободные переменные?
переменная, которая не является аргументом функции