[uanog] Rust or Go?

Maksym Tulyuk maksym at tulyuk.com
Thu Mar 25 08:40:17 EET 2021


Спасибо за сравнение!

Максим
On 24 Mar 2021, 17:30 +0100, Valentin Nechayev <netch at netch.kiev.ua>, wrote:
> Wed, Mar 24, 2021 at 17:02:32, doka wrote about "[uanog] Rust or Go?":
>
> > странно, но чёт захотелось какой-нибудь другой язык программирования
> > выучить, компилируемый - так, чтобы с типизацией, со всей строгостью
> > по закону, без этих вольностей "тут строка, а теперь - число".
> > Конкретной задачи нет, это чисса интересно и проветрить мозг, но в
> > совсем уж академически-маргинальное лезть не хочется - может
> > всё-таки польза какая будет при случае :)
> >
> > Rust или Go? Наверное, главный вопрос - наличие экосистемы
> > библиотек/модулей, чтобы всё-таки была можливость не всякий раз
> > лезть в low-level coding, а хотя бы раз через три? :)
>
> Экосистема есть у обоих.
> Свойство (которое может стать проблемой) у обоих языков: у них
> объектная модель без наследования (у Go - с отдельными элементами
> наследования, но костылём). Сейчас даже модно говорить, что так
> правильно, но под эту модель надо заметно выгибаться.
>
> Специфика Go:
> + Неплохая система конкурентности, позволяющая дешёвую асинхронность
> на императивном коде.
> + Относительная лёгкость написания и чтения кода. От ряда фич типа
> переопределения операторов отказываются намеренно из-за возможных
> последствий типа "фиг его знает что скрывается за этим плюсом".
> Есть единственный канон на форматирование кода.
> - Самое тяжёлое: агрессивно-невменяемое сообщество, выросшее из того,
> что по дизайну Go пошёл против массы вроде бы уже проверенных
> решений. Фактически большинство это или примитивисты, которым всё
> равно, что делать, или сектанты. Авторы языка подстёгивают это
> сектанство.
> - Плохая типизация на уровне выше примитивных типов: она принципиально
> утиная в зависимости класса и интерфейса (сигнатура совпадает -
> считаем реализующим интерфейс, даже если совпадение недопустимо).
> ± Объектная система без наследования (есть косвенно через включение
> безымянного базового поля, но она не даёт, например, виртуальных
> функций).
> - Язык предельно провоцирует копипастинг. Сложно объяснить, почему
> так, но это общее мнение всех кто пишет на нём и не фанат.
> - Многословность из-за принципиального отказа от исключений (как в
> Rust, но не компенсируется макрами и прочими средствами для разбора
> ошибок).
> Картинка в тему: https://pbs.twimg.com/media/DCIF7-2W0AEAv9c.jpg
> - Свой доморощенный кодогенератор, не использующий массу возможностей
> процессора - например, там в принципе нет передачи через регистры,
> всё через стек. Если бы не кэш, он был бы раз в 100 медленнее C :)
> - Излишняя жёсткость в ряде мест (например, неиспользованный импорт не
> даёт скомпилировать, даже если это быстрая проба для отладки).
>
> Rust:
> ± Отдельная модель управления памятью: и не ручное как в C/C++, и не
> автоматическое с GC; вместо этого концепция владения и
> заимствования. (И подсчёт ссылок для разделяемого между нитками.)
> К ней надо привыкнуть.
> + Система типов плавно приближается к тому, что делают в
> функциональных языках - это позволяет свалить на компиляцию много
> проверок, которые на других делаются только в рантайме.
> ± Пока компилятор согласится с кодом, можно поседеть ;) но после этого
> почти все проблемы устранены.
> ± Некоторые вещи не укладываются в концепцию владения (знаменитый
> пример - двусвязный список - можно сделать только на unsafe. Но
> genericʼи спасают - один раз сделал и дальше используешь.)
> ± Объектная система без наследования. Но есть traits (аналоги
> интерфейсов Java/C#) с возможностью их назначения чужим классам.
>
> > Шо думаете?
>
> Если из этих двоих, начни таки с Rust. Сбежать на Go успеешь всегда ;)
>
>
> -netch-
> _______________________________________________
> uanog mailing list
> uanog at uanog.kiev.ua
> https://mailman.uanog.kiev.ua/mailman/listinfo/uanog
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.uanog.kiev.ua/pipermail/uanog/attachments/20210325/8c7ead3c/attachment-0001.html>


More information about the uanog mailing list