История изменений
Исправление kaldeon, (текущая версия) :
компьютеры стали мощнее. Теперь если хочется производительность прям до последней капли выжать, то есть Rust
Компьютеры могли бы быть ещё мощнее, если бы в них добавили побольше ядер. Этого не делают, и половина объяснения в том, что программы просто не могут обуздать больший параллелизм. Rust здесь не помощник. На нём возможны мощные параллельные вычисления, но за большую цену. Поэтому Go всё ещё сохраняет здесь свою релевантность, предлагая простую модель совмещённых вычислений (CSP). Будем писать на Go — возможно, нам дадут больше ядер.
При этом самую удачную идею с goroutines из него позаимствовали все кому надо (async/await в JS и Rust, Virtual Threads в Java, Coroutines в Kotlin и C++).
JS лишний в списке: в нём нет M:N бэкенда.
Я думаю, что самая удачная идея Go — это CSP. Без неё мы бы получили стандартный скучный язык. Ни один из перечисленных языков не имеет легкодоступный CSP. А горутины сами по себе — это всего-лишь способ реализации M:N.
Go получается и ни туда, и ни сюда
Кроме производительности и порога входа есть и другие проблемы. У Go очень хороший набор «батареек в комплекте» (быстрая компиляция, стандартная библиотека) и культура разработки (прагматизм, единообразие).
Исправление kaldeon, :
компьютеры стали мощнее. Теперь если хочется производительность прям до последней капли выжать, то есть Rust
Компьютеры могли бы быть ещё мощнее, если бы в них добавили побольше ядер. Этого не делают, и половина объяснения в том, что программы просто не могут обуздать больший параллелизм. Rust здесь не помощник. На нём возможны мощные параллельные вычисления, но за большую цену. Поэтому Go всё ещё сохраняет здесь свою релевантность, предлагая простую модель совмещённых вычислений (CSP). Будем писать на Go — возможно, нам дадут больше ядер.
При этом самую удачную идею с goroutines из него позаимствовали все кому надо (async/await в JS и Rust, Virtual Threads в Java, Coroutines в Kotlin и C++).
JS лишний в списке: в нём нет M:N бэкенда.
Я думаю, что самая удачная идея Go — это CSP. Без неё мы бы получили стандартный скучный язык. Ни один из перечисленных языков не имеет легкодоступный CSP. А горутины сами по себе позволяют делать M:N, то есть они являются деталью реализации, которая важна исключительно с точки зрения реализации и производительности.
Go получается и ни туда, и ни сюда
Кроме производительности и порога входа есть и другие проблемы. У Go очень хороший набор «батареек в комплекте» (быстрая компиляция, стандартная библиотека) и культура разработки (прагматизм, единообразие).
Исходная версия kaldeon, :
компьютеры стали мощнее. Теперь если хочется производительность прям до последней капли выжать, то есть Rust
Компьютеры могли бы быть ещё мощнее, если бы в них добавили побольше ядер. Этого не делают, и половина объяснения в том, что программы просто не могут обуздать больший параллелизм. Rust здесь не помощник. На нём возможны мощные параллельные вычисления, но за большую цену. Поэтому Go всё ещё сохраняет здесь свою релевантность, предлагая простую модель совмещённых вычислений (CSP). Будем писать на Go — возможно, нам дадут больше ядер.
При этом самую удачную идею с goroutines из него позаимствовали все кому надо (async/await в JS и Rust, Virtual Threads в Java, Coroutines в Kotlin и C++).
JS лишний в списке: в нём нет M:N бэкенда.
Я думаю, что самая удачная идея Go — это CSP. Без неё мы бы получили стандартный скучный язык. А горутины сами по себе позволяют делать M:N, то есть они являются деталью реализации, которая важна исключительно с точки зрения реализации и производительности.
Go получается и ни туда, и ни сюда
Кроме производительности и порога входа есть и другие проблемы. У Go очень хороший набор «батареек в комплекте» (быстрая компиляция, стандартная библиотека) и культура разработки (прагматизм, единообразие).