@gogolang

Страница 1473 из 1630
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
а кто-нибудь на haskell пишет большие проекты, типа KDE?
Хаскель - не ООП (вообще). И на нём мало кто пишет.

Daniel
28.09.2018
11:16:06
Зачем вы копируете int?
а напиши свой вариант? а то я не понимаю, о чем ты

eugene
28.09.2018
11:16:09
Хаскель - не ООП (вообще). И на нём мало кто пишет.
ну вроде в C++ с иммутабельностью не очень, но ведь на C++ большие проекты пишут?

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

eugene
28.09.2018
11:17:10
Алексей
28.09.2018
11:17:33
ну вроде в C++ с иммутабельностью не очень, но ведь на C++ большие проекты пишут?
На C++ вообще с безопасностью кода всё очень плохо. Но на нём всё таки пишут большие проекты, хотя это трудно, очень трудно и подвержено багам. Но до недавнего времени конкурентов у крестов особо не было.

Kirill
28.09.2018
11:18:10
в C++ нет проблем с shared mutable state?
Везде есть, где проггер — человек-рукожоп

Алексей
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
Ну сейчас раст вроде как потихонечку развивается.
C++ существует больше 30 лет, за это время на C++ много либ написано, когда rust может заменить C++?

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

Roman
28.09.2018
11:21:38
Сначала иммутабельностью балуются, а потом на всякие дженерики переходят, а затем опускаются на самое дно и начинают писать на хаскеле.
ты ещё скажи что нельзя было в Go типизацию завозить, слишком уж сложно код писать.. сделали бы как JavaScript, проверки типов аргументов мы писать в функциях не будем, будем писать для этого табличные тесты и бить по рукам за передачу неверных типов самостоятельно, да)) ибо зачем за это делать ответственным компилятор, Goэто же про быструю компиляцию!

Алексей
28.09.2018
11:22:18
C++ существует больше 30 лет, за это время на C++ много либ написано, когда rust может заменить C++?
Заменить - думаю очень нескоро. Но потихоньку вытеснять из новых проектов - вполне возможно. Но да, наследие крестов играет им на руку и языку-новичку тут сложно очень пробиться.

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

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

Алексей
28.09.2018
11:24:15
сомнительно, что rust сможет заменить хотя бы C в ближайшие лет 10
Давайте сначала определимся, что вкладывать в слово "заменить".

eugene
28.09.2018
11:24:37
Yaroslav
28.09.2018
11:24:53
в с++ в иммутабельностью все ок, благодяря ключевому слову const
const_cast всегда даст возможность выстрелить в ногу)

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

Roman
28.09.2018
11:25:20
ну вроде в C++ с иммутабельностью не очень, но ведь на C++ большие проекты пишут?
в C++ всё то что описано в пропосале - имеется и даже в том же виде (const qualifier)

в C++ нет проблем с shared mutable state?
проблемы есть, но есть и защита от них. А в го защиту пока что не завезли, хотя проблема имеется

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

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

V
28.09.2018
11:27:48
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
C++ существует больше 30 лет, за это время на C++ много либ написано, когда rust может заменить C++?
пока в новом языке можно использовать C/C++ библиотеки - всё окей (*нервно смотрю на Go*)

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
Болтами, конечно!

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
пока в новом языке можно использовать C/C++ библиотеки - всё окей (*нервно смотрю на Go*)
Ну либы для крестов пожалуй нигде не заюзать кроме крестов. Вот сишные можно. C++ с обёртками в обычные функции с extern "C" тоже можно.

Kirill
28.09.2018
11:32:42
https://play.golang.org/p/nzc_38WPQjZ
играйтес, товарищи, я это имел ввиду

с операторами я уже не бегал

но я бы поставил все бенчи в одни условия

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
Remote0 удаляет все инты меньше 50 или больше 60
разве? Remote0 удалает все инты меньше 50 или больше 60, а NewList и NewSlice оставляют все инты не меньше 50 и не больше 60 результат идентичный

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
да вот чет не особо

Александр
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
у меня получилось 3846 ns/op vs 3626 ns/op
так наверное пора подвезти оптимизацию в компилятор, если быстрее

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
так и есть

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

Алексей
28.09.2018
11:55:45
.dll, .so они основа всех систем и приложений, ты сейчас ими пользушься пока пишешь)
Это всё сишный интерфейс, то есть все функции - как старые добрые сишные с extern "C" с указателями и без всех крестовых возможностей. То есть никаких шаблонов к примеру. Хотя вроде Qt крестовые функции из dll экспортирует, но это не всегда возможно.

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

Kirill
28.09.2018
11:55:54
твоя
нет у тебя моей :D

Александр
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

Kirill
28.09.2018
11:57:43
а, логично тогда
@ruelephant https://github.com/golang/go/issues/27180

Александр
28.09.2018
11:58:20
а мне то зачем это отдал?

у меня была версия с (int)

Kirill
28.09.2018
11:58:45
у меня была версия с (int)
у меня .(int) медленнее работает :D

Александр
28.09.2018
11:59:04
Kirill
28.09.2018
11:59:58
у меня .(int) медленнее работает :D
и на кластере у нас тоже

Lesha
28.09.2018
12:00:12
Что серьезно за разрыв в 300-500 наносекунд спор идет?? :)
представь сколько такая оптимизация для всех, в рамках планеты сэкономит электричества!

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

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