@gogolang

Страница 1134 из 1630
Dmitry
06.06.2018
20:11:52
какая разница как реализована чистая функция если она действительно чистая ?

?
06.06.2018
20:12:08
не понимаю разницы между a = x*2; return a и return x*2, где x аргумент функции
разницы нет, ты просто переименовал выражение

Dmitry
06.06.2018
20:12:57
разве a - это не свободная переменная ? я чего то недопонимаю

?
06.06.2018
20:15:01
a => (b => a * b) -- первая функция не имеет свободных переменных, а вторая имеет -- a

Google
Jentry
06.06.2018
20:16:20
не понимаю разницы между a = x*2; return a и return x*2, где x аргумент функции
разница только в том, что в хаскеле первый вариант будет трудно записать, через do-notation, поскольку нет никаких "переменных" в истинном понимании этого слова как имени, за которым закреплена ячейка с изменяемым данными

Aliaksandr
06.06.2018
20:19:05
ничего не понятно. В этом весь смысл функциональщины - запутать простую задачу до такой степени, что ее не решить без трех высших по матану

Jentry
06.06.2018
20:20:34
как раз функциональщина-то понятна, максимально декларавтивна и незапутанна, поэтому часто используется для написания лексеров-парсеров и прочей подобной вычислительной вещи

Aliaksandr
06.06.2018
20:21:22
вот классический пример подсчета факториала с помощью комбинаторов: Consider the factorial function F(n) recursively defined by F(n) = 1, if n = 0; else n × F(n − 1). In the lambda expression which is to represent this function, a parameter (typically the first one) will be assumed to receive the lambda expression itself as its value, so that calling it – applying it to an argument – will amount to recursion. Thus to achieve recursion, the intended-as-self-referencing argument (called r here) must always be passed to itself within the function body, at a call point: G := λr. λn.(1, if n = 0; else n × (r r (n−1))) with  r r x = F x = G r x  to hold, so  r = G  and F := G G = (λx.x x) G The self-application achieves replication here, passing the function's lambda expression on to the next invocation as an argument value, making it available to be referenced and called there. This solves it but requires re-writing each recursive call as self-application. We would like to have a generic solution, without a need for any re-writes: G := λr. λn.(1, if n = 0; else n × (r (n−1))) with  r x = F x = G r x  to hold, so  r = G r =: FIX G  and F := FIX G  where  FIX g := (r where r = g r) = g (FIX g) so that  FIX G = G (FIX G) = (λn.(1, if n = 0; else n × ((FIX G) (n−1)))) Given a lambda term with first argument representing recursive call (e.g. G here), the fixed-point combinator FIX will return a self-replicating lambda expression representing the recursive function (here, F). The function does not need to be explicitly passed to itself at any point, for the self-replication is arranged in advance, when it is created, to be done each time it is called. Thus the original lambda expression (FIX G) is re-created inside itself, at call-point, achieving self-reference. In fact, there are many possible definitions for this FIX operator, the simplest of them being: Y := λg.(λx.g (x x)) (λx.g (x x)) In the lambda calculus, Y g  is a fixed-point of g, as it expands to: Y g (λh.(λx.h (x x)) (λx.h (x x))) g (λx.g (x x)) (λx.g (x x)) g ((λx.g (x x)) (λx.g (x x))) g (Y g) Now, to perform our recursive call to the factorial function, we would simply call (Y G) n, where n is the number we are calculating the factorial of.

Jentry
06.06.2018
20:22:13
fixed-point да, я ждал этого!)

только это запись в альфа, не в комбинаторах, в комбинаторах SKI же

Dmitry
06.06.2018
20:24:38
a => (b => a * b) -- первая функция не имеет свободных переменных, а вторая имеет -- a
я нашел определение что свободная переменная - это переменные, которые не объявлены локально и не передаются в качестве параметра

Google
Aliaksandr
06.06.2018
20:27:43
функциональное программирование - оно такое - у каждого свое представление о базовых понятиях :) Наверное, потому что они элементарны и просты в понимании

Jentry
06.06.2018
20:28:36
а че это такое ?
это когда при рекурсивном вызове и return в конце функции не происходит погружение в стек, а результат накапливается в некотором аккумуляторе

Aliaksandr
06.06.2018
20:28:51
а в го уже есть оптимизация хвостовой рекурсии?
нет и надеюсь не будет. Хотя баг есть https://github.com/golang/go/issues/22624

Aliaksandr
06.06.2018
20:29:35
т.к. если сделают оптимизацию хвостовой рекурсии, в го набегут функциональщики и загадят код переписыванием циклов на хвостовую рекурсию

Jentry
06.06.2018
20:29:43
нет и надеюсь не будет. Хотя баг есть https://github.com/golang/go/issues/22624
так это странно, как тогда работает этот парсер? медленно и пожирая ресурсы? здесь вот точно это бы пригодилось https://github.com/golang/go/blob/master/src/cmd/compile/internal/syntax/parser.go#L673

Никита
06.06.2018
20:30:22
Такой вопрос. Если бы перед вами стояла задача написать API для высокорагруженного сервиса, похожего на социальную сеть (группы, сообщения, посты, все вот это), вы бы все равно использовали Го или что то другое?

Aliaksandr
06.06.2018
20:30:28
интересно, почему?
наверное, потому что парсер проще написать на императивщине

?
06.06.2018
20:34:16
не вижу альтернативы go
а какими альтернативами владеете?

Google
Aliaksandr
06.06.2018
20:34:54
а я думал из-за того, что в го нет комбинаторов вот незадача
у разработчиков го есть свои генерики для map, slice и chan, которые они не дают обычным пользователям. Поэтому при желании они могли бы сделать для себя комбинаторы. Но почему-то не сделали.

Jentry
06.06.2018
20:35:29
Скажем, по ресурсам ограничений нет. От 15-20к запросов в секунду
это не сильно много, я бы думал не за го, а какую базу взять и как шердить, скейлить, как обеспечить стейтлесс-приложение, здесь даже не суть го это или не го, можно на питоне (но не нужно)

Dmitry
06.06.2018
20:38:49
https://www.techempower.com/benchmarks/
3 место на яве. неожидано

Jentry
06.06.2018
20:39:22
3 место на яве. неожидано
ващет первое, ты смотри табличку Multiple queries

Aliaksandr
06.06.2018
20:39:30
а какими альтернативами владеете?
- всякие python, ruby, php не подойдут по скорости - C, rust, C++, asm не подойдут по сложности написания кода - java, c# не подойдут из-за любителей многослойных абстракций и паттернов проектирования - node.js не подойдет, т.к. это верх дебилизма. - остальные нишевые языки не подойдут, т.к. потом не найдете программистов на поддержку проекта

Dmitry
06.06.2018
20:40:34
ващет первое, ты смотри табличку Multiple queries
стоп. а зачем тогда нам голанг для микросервисов ?

меня заманили обманом в эту секту !

Aliaksandr
06.06.2018
20:43:31
> так это странно, как тогда работает этот парсер? медленно и пожирая ресурсы? наверное, поэтому программы на го компилируются в 100 раз быстрее, чем расово верный компилятор на rust c комбинаторами и лямдами

то есть никакими не владете
почему же? го немного знаю

Aliaksandr
06.06.2018
20:45:36
Jentry
06.06.2018
20:46:28
стоп. а зачем тогда нам голанг для микросервисов ?
тем, что в го есть все для написания микросервисов, и низкий порог вхождения, что вместе с неплохой производительностью дают профит бизнесу

Никита
06.06.2018
20:48:28
А к Erlang как относитесь?

Aliaksandr
06.06.2018
20:49:19
https://www.techempower.com/benchmarks/
вот последние результаты https://www.techempower.com/benchmarks/#section=test&runid=2c113b42-5dbb-4eea-a0b9-b4d6863f5cad . Они перешли на серваки от микрософта и все ускорилось.

А к Erlang как относитесь?
не знаком с ним. Но после вот таких топиков https://dou.ua/forums/topic/23644/ складывается не очень хорошее впечатление

Dmitry
06.06.2018
20:51:59
тем, что в го есть все для написания микросервисов, и низкий порог вхождения, что вместе с неплохой производительностью дают профит бизнесу
а чем он низкий порог вхождения то ? чето взял яву - там простое родное ооп с наследованием, взял го - а там утиная типизация и ооп через композицию

о, у меня сейчас кейс называется "перевод с го на Х"
э хорош пугать меня, а то я счас разочаруюсь в го и уйду в яву

Google
Aliaksandr
06.06.2018
20:53:57
о, у меня сейчас кейс называется "перевод с го на Х"
го ниасилили? на что переходите? на раст?

Jentry
06.06.2018
20:54:11
а чем он низкий порог вхождения то ? чето взял яву - там простое родное ооп с наследованием, взял го - а там утиная типизация и ооп через композицию
Не знаю, когда я пытался поставить стек явы для разработки: спринг, акка, гибернейт и зависимости, у меня как-то подгорало. Ты дальше хелловорда яву пробовал?

Sergey
06.06.2018
20:54:28
го ниасилили? на что переходите? на раст?
Осилили, осилили, вы так за нас не переживайте

Aliaksandr
06.06.2018
20:55:10
Jentry
06.06.2018
20:55:14
ну тогда тебе дорога в яву, только и всего, ничего плохого в этом нет

Dmitry
06.06.2018
20:55:15
хотя нет. лучше в c# уйду, там net.core призывно рукой машет

Dmitry
06.06.2018
20:56:41
ну тогда тебе дорога в яву, только и всего, ничего плохого в этом нет
не, может это все таки ошибка? у го 2х разница с явой?

Admin
ERROR: S client not available

Aliaksandr
06.06.2018
20:57:45
растер с пятилетним опытом ? :)
он автор раста? работал в мазилле?

Jentry
06.06.2018
20:58:14
не, может это все таки ошибка? у го 2х разница с явой?
а что тебя удивляет? jvm пилят не первый десяток лет, определенно она во многих синтетических тестах выигрывает, даже порой у реализации на с++

Aliaksandr
06.06.2018
20:58:25
Dmitry
06.06.2018
20:59:16
вот последние результаты https://www.techempower.com/benchmarks/#section=test&runid=2c113b42-5dbb-4eea-a0b9-b4d6863f5cad . Они перешли на серваки от микрософта и все ускорилось.

Aliaksandr
06.06.2018
20:59:21
Dmitry
06.06.2018
20:59:48
multiple queries

Aliaksandr
06.06.2018
21:01:33
на multiple queries в java читят - они используют пайплайнинг для обращений к постгресу. Поэтому первых два результата можно не учитывать

Dmitry
06.06.2018
21:01:51
после прогрева jvm. Вы уже прогрели свою виртуальную машину? Тогда мы идем к вам :)
время прогрева для фреймворкао несуществено на мой взгляд. мы же не перезапускаем его тыщу раз на дню

Google
Dmitry
06.06.2018
21:03:24
остаюсь в секте

Aliaksandr
06.06.2018
21:04:18
вот тут подробности насчет пайплайнинга к бд из жавы - https://groups.google.com/d/msg/framework-benchmarks/A78HrYsz4AQ/_cXoqhrPAwAJ

Jentry
06.06.2018
21:06:53
остаюсь в секте
моноязычник что ли? на этом недалеко уплывешь нынче, будь во всех сразу

Dmitry
06.06.2018
21:08:05
ах, 1с яще забыл

хотя лучше бы забыл

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

что то мне это напоминает :)

Jentry
06.06.2018
21:16:10
ну, это вчерашний день, сейчас в го в течение дня можно перебрать 10 либ по количеству звездочек, прежде чем остановиться на чем-то минимально-рабочем

так бывает нужно-то было всего-лишь ssh-тулзы по типу paramico в оффтопике, а уже к вечеру находишь себя за чтением крипто-папиров и рфц

Dmitry
06.06.2018
21:24:41
а что такое rest в нескольких словах?

это стандартизация и приведение логических запросов к типам http запросов ?

или это crud ?

я запутался в этом гавне

Michael
06.06.2018
21:28:39
а что такое rest в нескольких словах?
прошлый век, ща в теме HATEOAS

Jentry
06.06.2018
21:29:04
ээ, попробуй с определения, в нем ключевым является первое слово - representation

Dmitry
06.06.2018
21:30:48
прошлый век, ща в теме HATEOAS
блять. да чеже повыдумывали всяких акронимов для всякого гавна

Jentry
06.06.2018
21:30:53
типа вот есть объект, с набором полей, rest это управление его состоянием через CRUD, это если совсем просто

но rest ща не в моде да, поцоны давно на grpc отъехали

Dmitry
06.06.2018
21:31:26
ну стало чуток ясней

rest это методика, crud это рализация - да ?

но rest ща не в моде да, поцоны давно на grpc отъехали
да что ж такое тое. только соберусь прочитать а они уже технологии меняют

Zaur
06.06.2018
21:34:04
это стандартизация и приведение логических запросов к типам http запросов ?
На самом деле основная идея рест это просто передача состояния. Ты отправляешь серверу запрос на какую-то операцию со всем необходимым. Сервер не должен ждать нескольких запросов, или иметь неопределенность по этому запросу

Страница 1134 из 1630