ООП в го. Назрел вопрос. Я вот пришел в Го с питона, а в питон с шарпов. Мало мальски разбираться в подкапотке начал как раз с ГО(иначе я так понял только вешаться).
Кто нибудь может сказать, почему например самую часто юзаемую фичу - слайсы, они сделали не интуитивно работающими? Настолько, что каждый собес по Го в какой то момент превращается в жонглирование слайсами и аппендами и гаданием на гуще - что выведется. Была ли какая то причина у умных людей из гугла делать именно так?
слайсы и в шарп завезли в общем-то
Не знаю про жонглирование, тоже свитчнулся с питона два года назад(до питона писал на си), как изначально изучил как работает, так и отвечал на собесах. Этот вопрос вообще никак не загонял в тупик
ну я дилетант в шарпах, в школе игрался. Скорее не конкретно к чему то придирка, а к тому, что именно в Go очень часто приходится держать в уме то, чего явно в коде нет. Не получается, скажем так, доверять инструменту.
Слайсы в Go - самая удобная штука для меня. Постоянно пользуюсь всеми возможностями слайсов и не могу нарадоваться, как все классно продумано. Что конкретно вам не нравится в слайсах?
Хочу иммутабельный слайс
Чтобы передал и не думаешь насрет кто в него или нет
Согласен, это была бы удобная фича. Но любая фича приносит не только удобство, но и добавляет проблем вроде усложнения кода. Похоже, что в данном случае проблемы перевешивают удобства, поэтому в го нет read-only slices - https://github.com/golang/go/issues/20443
Срач пока там идёт. А потом они узнают что в це шарп завезли ещё и спаны и мемеори (одна на стеке , вторая на куче ).... Ух
для того же, для чего и в С можно передавать const T[] - дать дополнительную подсказку компилятору и читающему код программисту
а, тут немного о другом речь идет
хотя, я не вижу других вариантов это сделать. В любом случае функция должна явно обозначать то, что принимает она иммутабельный слайс
Ок, а что делать, если переданный в функцию иммутабельный слайс изменяется параллельно работающей горутиной? Компилятор тут не может дать гарантий сверх того, что он даёт сейчас, когда он не поддерживает иммутабельный слайсы. Тогда возникает вопрос - зачем нам иммутабельные слайсы, ели они не дают никаких дополнительных гарантий, а только усложняют написание кода? Например, если функция принимает на вход иммутабельный слайс, то она уже не может передать его в функцию, которая принимает обычный слайс. Это вынуждает расставлять модификатор readonly по всем функциям, принимающим слайс и не меняющим его. А как это сделать при обновлении Go с версии без поддержки иммутабельный слайсов на версию с такой поддержкой?
Как минимум чудаковатый аппенд. Как максимум, передавая его куда то по значению, хочется действительно отправлять копию, а не «копию» у которой все тот же массив. Я в курсе про copy() но как то мудрено это по сравнению с другими языками.
Я тут вечно защищаю пайтон, но… пайтон
А там все передается по ссылке
Ну, вот по поводу «передать конст слайс в другую функцию, принимающую мутабелтеый, уже не получится» - я не согласен, что это плохо. Поскольку будь такое разрешено, это ломало бы напрочь идею - передал вроде как конст, а вроде как обезьяну обманули
Я вот тоже хочу свичнуться с ПэХэПэ. Никак не могу определиться в Питухон или в Го податься. Питухон вроде также как ПХП весь сахаром обмазанный и не особо быстрый получается шило на мыло. А в го как понимаю сахара нет и все нужно с нуля велосипедить или я ошибаюсь?
в чем вопрос? оба языка популярны, пайтон более популярный
Не особо быстрый для чего Что вы быстрое такое собираетесь писать
>сахара нет да >все нужно с нуля велосипедить на полшишки
Насчёт сахара - смотря с чем сравнивать. Насчёт выбора - выбирайте то, что больше по душе и в чём есть желание развиваться)
Допустим сервис для форекс брокера ~1000 RPS
Ну в твоем сообщении уже предвзятое отношение к одному из языков. Видимо начитался где-то или кто подсказал. Для тебя выбор очевиден из этих двух
Такое пишется на плюсах
Можешь обосновать почему так?
Почему брокеры и биржи работают на плюсах?
Так это ты видимо знаешь. Зачем вопрос на вопрос? Я кстати про это пока не слышал, что оно на плюсах. Не видел исходников
Да так есть, но плюсы это же ещё дольше чем на го по времени разработки)
Работа с железом. + Язык супербыстрый. + нагрузки. Все это не вывезут другие языки. Источник: Я, работаю в Хэдж фонде. Стек: С/С++
А какая работа с железом?
Да хоть на js. 1000 rps ни о чем
а зачем там работа с железом?
Тебе точно не 12?
Rust не собираются внедрять?
охренеть вот это мощь, питон конечно 1к рпс не магет -_-
Ну, я про РПС ничего не писал.
Нет, 13
Оно и видно. Обосновывать так - тоже уметь надо
а язык становится лучше, если он веб-пр ложусь ния написанные на нем выдают большой рпс?
так 1000rps я тебе на жс могу устроить
Ну а что за странные вопросы у тебя?
Ты утверждаешь, а я уточняю. Если не можешь объяснить, чего ляпаешь?
не ошибаешься. Но скорости и на питоне хватает
Тогда точно Питухон, для меня больше подходит, спасибо)
append() - это самое гениальное, что было придумано в Go. Он позволяет писать простой и эффективный код, когда нужно минимизировать выделения памяти путем переиспользования уже выделенной памяти
векторы/динамические массивы в других языках: "ну да, ну да, пошли мы нахер"
Обсуждают сегодня