Profile cover photo
Profile photo
Евгений Лазин
63 followers
63 followers
About
Евгений's posts

Post has attachment
Примерно так все вчера и происходило :)

Post has attachment

Post has attachment

Post has attachment

Post has attachment

Post has attachment

Post has attachment

Post has attachment
>> Но тогда возникает вопрос, почему за основу не был взят какой-нибудь управляемый язык со сборкой мусора? Та же Java, например. Тем более, что в Google, насколько мне известно, Java давно и активно используется.

Потому что система типов Go никак не маппится на объекты java. Когда ты пишешь в Go: x.(Iface), таблица вирт. функций для интерфейса Iface формируется динамически, она неизвестна на этапе компиляции и строится только во время выполнения.

>> то почему нельзя было обойтись библиотекой или набором библиотек для C++?

Потому что C++ это PITA. Во первых, ручное управление памятью, во вторых, одних каналов мало, пришлось бы пилить аналог горутин на с++, самое лучшее, что можно сделать в этом случае - реализовать все на файберах и написать свой планировщик. Но это будет хуже чем в Go, так как fiber использует столько же памяти, сколько и обычный поток (под виндой по умолчанию 1Мб, AFAIR). Даже несмотря на то, что вся память не размещается сразу. Т.е. если запустить 1000 таких плюсовых горутин, мы потратим 1Гб вирт. памяти и пару сотен Мб физической. В Go же есть сегментированный стек, который растет по мере необходимости. Реализовать такое без поддержки на уровне компоновщика нельзя (нужно вставить в каждую функцию специальный пролог и эпилог, для управления стеком).

Post has attachment

Post has attachment
Wait while more posts are being loaded