
Roman
28.09.2018
11:15:07
Ну так а зачем вся вот эта чёрная магия со сложными проверками, когда есть Rust с явным указанием лайфтаймов?
раст и го разные инструменты для решения разных задач. Rust это performance, Go это time-to-market.Я-ж не предлагаю убирать garbage collector))
но code safety нужен в любом языке, особенно в таком как го который сам по себе про конкуррентность. Concurrency и mutability это взрывоопасная смесь.
Иммутабельные типы не будут особо нагружать компилятор, он от этого медленным не станет.
Код Go 1.x от введения иммут типов не поломается.
Возможность писать всё в мутабельном стиле никуда не исчезнет.

Алексей
28.09.2018
11:15:27

Daniel
28.09.2018
11:16:06

eugene
28.09.2018
11:16:09

Google

Daniel
28.09.2018
11:16:36
в с++ в иммутабельностью все ок, благодяря ключевому слову const

eugene
28.09.2018
11:17:10

Алексей
28.09.2018
11:17:33

Kirill
28.09.2018
11:18:10

eugene
28.09.2018
11:18:11

Алексей
28.09.2018
11:18:37
Ну сейчас раст вроде как потихонечку развивается.

Daniel
28.09.2018
11:19:08
раст как конкурент плюсам, ага...

Алексей
28.09.2018
11:19:24

Kirill
28.09.2018
11:19:32

eugene
28.09.2018
11:19:57

Daniel
28.09.2018
11:20:22
коллега @ruelephant, вы там бенчмарк мой посмотрели? я жду вашего заявления "я был не прав, на новом слайсе быстрее"

Roman
28.09.2018
11:21:38

Алексей
28.09.2018
11:22:18

Google

Алексей
28.09.2018
11:22:59
Но только следует всегда учитывать, что кресты сложно изучать. А писать на них более-менее безбажный код ещё сложнее.

eugene
28.09.2018
11:23:19

Александр
28.09.2018
11:23:25

Алексей
28.09.2018
11:23:27

Александр
28.09.2018
11:23:46
но мы то сравнивали СПИСКИ

Алексей
28.09.2018
11:24:15

eugene
28.09.2018
11:24:37

Yaroslav
28.09.2018
11:24:53

Daniel
28.09.2018
11:24:59
смотрите
у нас есть rust и go.
оба языка новые.
на go у нас есть несколько больших сложных проектов.
на rust у нас есть какой-то фейспалм.
мне кажется, уже можно сказать, что rust не выстрелил.

Roman
28.09.2018
11:25:20

Алексей
28.09.2018
11:26:41
использовать что-то вместо чего-то?
Использовать где именно? Если мы говорим про новые проекты, то думаю, что вполне можно брать раст (хотя это моё личное не подкреплённое ничем мнение) вместо сишки и даже крестов. Старые проекты конечно же уже не переписать, но в принципе можно линковать rust к сишному и плюсовому коду (хотя не без проблем скорее всего).

Mykyta
28.09.2018
11:27:24

Yaroslav
28.09.2018
11:27:42
с++ как бы тоже не стоит на месте и развивается, никто не мешает пользоваться современными стандартами в новых проектах и не страдать от безопасности кода

Алексей
28.09.2018
11:27:43

V
28.09.2018
11:27:48
c++?

Алексей
28.09.2018
11:28:07
c++?
У крестов же слабая типизация.

Yaroslav
28.09.2018
11:28:38
шта

Google

Kirill
28.09.2018
11:28:45
кто-то из авторов начал размывать точность бенча

Алексей
28.09.2018
11:29:04
шта
У крестов слабая статическая типизация как и у сишки.

Kirill
28.09.2018
11:29:41

Roman
28.09.2018
11:29:53

Daniel
28.09.2018
11:30:26

Kirill
28.09.2018
11:30:56

Roman
28.09.2018
11:31:12

Daniel
28.09.2018
11:31:19
Болтами, конечно!

Denys
28.09.2018
11:31:25

Kirill
28.09.2018
11:31:26
нихрена себе ты читер)))

Kirill
28.09.2018
11:31:32
смотри
Remote0 удаляет все инты меньше 50 или больше 60
а ты только с 50 до 60))
https://play.golang.org/p/nzc_38WPQjZ

Алексей
28.09.2018
11:32:36

Kirill
28.09.2018
11:32:42
с операторами я уже не бегал
но я бы поставил все бенчи в одни условия

Google

Kirill
28.09.2018
11:34:16
мы же удаляем 1000-10 значений, а не 10 значений

Александр
28.09.2018
11:36:07
а что это за efaceToInt?
лицо попроще нельзя было сделать что ли
у меня такого не было

Roman
28.09.2018
11:38:56

Daniel
28.09.2018
11:40:10

Artem
28.09.2018
11:46:36
а вот это типо быстрее работает, чем обычный каст?
func efaceToInt(eface interface{}) int {
return (*(*int)((*[2]unsafe.Pointer)(unsafe.Pointer(&eface))[1]))
}

Daniel
28.09.2018
11:47:22
да вот чет не особо

Lesha
28.09.2018
11:49:05

Александр
28.09.2018
11:50:03
а в бенче первая цифра это количество итераций которые он "успел"?

Admin
ERROR: S client not available

Александр
28.09.2018
11:50:12
что-то слишком уж круглое число

Artem
28.09.2018
11:50:44

Daniel
28.09.2018
11:51:41
как мы видим - оптимизацию надо в структуры данных подвозить, а не в компилятор

Александр
28.09.2018
11:53:12
BenchmarkRemote0-4 200000 5566 ns/op
BenchmarkNewList-4 300000 5851 ns/op
BenchmarkRemote0Opt-4 200000 5704 ns/op
BenchmarkNewListOpt-4 300000 5440 ns/op
BenchmarkNewSlice-4 300000 4752 ns/op
мои результаты
это версия от @madgopher

Lesha
28.09.2018
11:54:09

Александр
28.09.2018
11:54:26
а шо не так?

Lesha
28.09.2018
11:54:43
BenchmarkRemote0Opt-4 медленнее, чем BenchmarkRemote0-4

Google

Daniel
28.09.2018
11:55:04
так и есть

Kirill
28.09.2018
11:55:35
версия какая?)
golang

Александр
28.09.2018
11:55:42
твоя

Алексей
28.09.2018
11:55:45

Александр
28.09.2018
11:55:48
а тфу

Kirill
28.09.2018
11:55:54

Александр
28.09.2018
11:56:09
я думал ты про версию бенча
go version go1.11 darwin/amd64

Kirill
28.09.2018
11:56:35
а, логично тогда

Lesha
28.09.2018
11:56:40
так и есть
а вот и нет. 3 раза проверял. с точностью до наоборот все
go version go1.11 darwin/amd64
mac os x
BenchmarkRemote0 3807 ns/op
BenchmarkRemote0Opt 3539 ns/op

Александр
28.09.2018
11:57:14

Kirill
28.09.2018
11:57:43

Александр
28.09.2018
11:58:20
а мне то зачем это отдал?
у меня была версия с (int)

Yo
28.09.2018
11:58:30

Kirill
28.09.2018
11:58:45

Александр
28.09.2018
11:59:04

Kirill
28.09.2018
11:59:58

Lesha
28.09.2018
12:00:12

Алексей
28.09.2018
12:00:29

Александр
28.09.2018
12:00:41