170 похожих чатов

Всем привет, прочитал тут недавний холивар перетекший из di в

ООП в го. Назрел вопрос. Я вот пришел в Го с питона, а в питон с шарпов. Мало мальски разбираться в подкапотке начал как раз с ГО(иначе я так понял только вешаться).

Кто нибудь может сказать, почему например самую часто юзаемую фичу - слайсы, они сделали не интуитивно работающими? Настолько, что каждый собес по Го в какой то момент превращается в жонглирование слайсами и аппендами и гаданием на гуще - что выведется. Была ли какая то причина у умных людей из гугла делать именно так?

51 ответов

46 просмотров

слайсы и в шарп завезли в общем-то

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

Рустам-Нафиков Автор вопроса
Dmitry
слайсы и в шарп завезли в общем-то

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

Слайсы в Go - самая удобная штука для меня. Постоянно пользуюсь всеми возможностями слайсов и не могу нарадоваться, как все классно продумано. Что конкретно вам не нравится в слайсах?

Aliaksandr Valialkin
Зачем?

Чтобы передал и не думаешь насрет кто в него или нет

Dmitry
Чтобы передал и не думаешь насрет кто в него или н...

Согласен, это была бы удобная фича. Но любая фича приносит не только удобство, но и добавляет проблем вроде усложнения кода. Похоже, что в данном случае проблемы перевешивают удобства, поэтому в го нет read-only slices - https://github.com/golang/go/issues/20443

Aliaksandr Valialkin
Согласен, это была бы удобная фича. Но любая фича ...

Срач пока там идёт. А потом они узнают что в це шарп завезли ещё и спаны и мемеори (одна на стеке , вторая на куче ).... Ух

Aliaksandr Valialkin
Зачем?

для того же, для чего и в С можно передавать const T[] - дать дополнительную подсказку компилятору и читающему код программисту

Павλо 🇺🇦
а, тут немного о другом речь идет

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

Павλо 🇺🇦
для того же, для чего и в С можно передавать const...

Ок, а что делать, если переданный в функцию иммутабельный слайс изменяется параллельно работающей горутиной? Компилятор тут не может дать гарантий сверх того, что он даёт сейчас, когда он не поддерживает иммутабельный слайсы. Тогда возникает вопрос - зачем нам иммутабельные слайсы, ели они не дают никаких дополнительных гарантий, а только усложняют написание кода? Например, если функция принимает на вход иммутабельный слайс, то она уже не может передать его в функцию, которая принимает обычный слайс. Это вынуждает расставлять модификатор readonly по всем функциям, принимающим слайс и не меняющим его. А как это сделать при обновлении Go с версии без поддержки иммутабельный слайсов на версию с такой поддержкой?

Рустам-Нафиков Автор вопроса
Aliaksandr Valialkin
Слайсы в Go - самая удобная штука для меня. Постоя...

Как минимум чудаковатый аппенд. Как максимум, передавая его куда то по значению, хочется действительно отправлять копию, а не «копию» у которой все тот же массив. Я в курсе про copy() но как то мудрено это по сравнению с другими языками.

Рустам Нафиков
А что там?

А там все передается по ссылке

Aliaksandr Valialkin
Ок, а что делать, если переданный в функцию иммута...

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

Гамлет Avetikyan
Не знаю про жонглирование, тоже свитчнулся с питон...

Я вот тоже хочу свичнуться с ПэХэПэ. Никак не могу определиться в Питухон или в Го податься. Питухон вроде также как ПХП весь сахаром обмазанный и не особо быстрый получается шило на мыло. А в го как понимаю сахара нет и все нужно с нуля велосипедить или я ошибаюсь?

Олег
Я вот тоже хочу свичнуться с ПэХэПэ. Никак не могу...

в чем вопрос? оба языка популярны, пайтон более популярный

Олег
Я вот тоже хочу свичнуться с ПэХэПэ. Никак не могу...

Не особо быстрый для чего Что вы быстрое такое собираетесь писать

Олег
Я вот тоже хочу свичнуться с ПэХэПэ. Никак не могу...

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

Олег
Я вот тоже хочу свичнуться с ПэХэПэ. Никак не могу...

Насчёт сахара - смотря с чем сравнивать. Насчёт выбора - выбирайте то, что больше по душе и в чём есть желание развиваться)

0x3d
Не особо быстрый для чего Что вы быстрое такое соб...

Допустим сервис для форекс брокера ~1000 RPS

Олег
Я вот тоже хочу свичнуться с ПэХэПэ. Никак не могу...

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

Mark Maxwell
Такое пишется на плюсах

Можешь обосновать почему так?

Denis
Можешь обосновать почему так?

Почему брокеры и биржи работают на плюсах?

Mark Maxwell
Почему брокеры и биржи работают на плюсах?

Так это ты видимо знаешь. Зачем вопрос на вопрос? Я кстати про это пока не слышал, что оно на плюсах. Не видел исходников

Mark Maxwell
Такое пишется на плюсах

Да так есть, но плюсы это же ещё дольше чем на го по времени разработки)

Denis
Так это ты видимо знаешь. Зачем вопрос на вопрос? ...

Работа с железом. + Язык супербыстрый. + нагрузки. Все это не вывезут другие языки. Источник: Я, работаю в Хэдж фонде. Стек: С/С++

Mark Maxwell
Такое пишется на плюсах

Да хоть на js. 1000 rps ни о чем

Mark Maxwell
Прямая

Тебе точно не 12?

Олег
Допустим сервис для форекс брокера ~1000 RPS

охренеть вот это мощь, питон конечно 1к рпс не магет -_-

Batyr TokenEcho.com
Да хоть на js. 1000 rps ни о чем

Ну, я про РПС ничего не писал.

Mark Maxwell
Нет, 13

Оно и видно. Обосновывать так - тоже уметь надо

Batyr TokenEcho.com
Да хоть на js. 1000 rps ни о чем

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

Олег
Допустим сервис для форекс брокера ~1000 RPS

так 1000rps я тебе на жс могу устроить

Denis
Оно и видно. Обосновывать так - тоже уметь надо

Ну а что за странные вопросы у тебя?

Mark Maxwell
Ну а что за странные вопросы у тебя?

Ты утверждаешь, а я уточняю. Если не можешь объяснить, чего ляпаешь?

не ошибаешься. Но скорости и на питоне хватает

Павλо 🇺🇦
не ошибаешься. Но скорости и на питоне хватает

Тогда точно Питухон, для меня больше подходит, спасибо)

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

Aliaksandr Valialkin
append() - это самое гениальное, что было придуман...

векторы/динамические массивы в других языках: "ну да, ну да, пошли мы нахер"

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
1
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта