The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Релиз языка программирования Go 1.14"
Отправлено anonymous, 29-Фев-20 13:39 
> интерфейсы не позволяют делиться реализацией

Это нужно реально редко. Например, часто бывает достаточно просто продумать другие интерфейсы, чтобы дублируемая реализация тупо была отдельным package-ем (который можно будет цеплять и вообще в других пакетах потом), вместо попытки её дублировать в реализации каких-то других интерфейсов.

Есть проблема с generic-ами, когда, например, пытаешься без reflect-а (ибо он медленный) сделать какую-нибудь сериализацию/десериализацию. Там ты как не дизайн и не перепродумывай интерфейсы, всё равно куча одинакового кода. Сейчас в Go обходятся кодогенерацией (что по сути даёт временный вариант generic-ов).

> трейты (своего рода интерфейсы, но с куда более широкими возможностями) могут содержать дефолтные имплементации методов,

Да, слышал хвальбы трейтов от весьма грамотных людей. Но сам использовал Rust мало, и пока не прочувствовал.

> Так-то у Go он не такой и толстый, но просто при сравнении с Rust, который также позволяет писать безопасный по памяти код, видишь, что можно платить меньше за те же или даже большие гарантии.

Говоря "толстый", что имеется в виду? Что бинарий много весит? Если да, то тут буквально недавно экспериментировал с rust и go на примере hello world, и как-то разницы не почувствовал.

По поводу "платить меньше". К сожалению, Rust отнимает больше времени программиста. И это по множеству причин:
* Сырой и нестабильный. Зачастую инструкцию по установке какого-то rust-приложения начинается с "установите unstable такой-то версии". Какие-то пакеты хотят одну версию, какие-то другую. Вроде бы хочешь сделать какую-нибудь тривиальную вещь, а тратишь весь день.
* Rust просто требует больше мозговых ресурсов (требует более сложные и глубокие мысли). В Go же мысль больше фокусируется на том, что ты хочешь сделать, а не на том, как это сделать.
* Под Rust меньше всего уже написано, чем под Go. Просто популярность у Rust ниже.
* Субъективно (лично для меня:), Go очень открытый, прозрачный и понятный. Там очень легко разобраться в любой детале (даже если она совсем internals).

Я бы сам использовал Rust в качестве основого языка, если бы не ощутил насколько больше времени сжирает (в сравнении с Go) сделать одно и то же.

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

По поводу итераторов немного не понял, чего вы хотите. По остальному согласен. Но это мелочные проблемы (и которые, вроде как, обещаются быть исправленными в будущем).

> значительная часть фундаментальных абстракций реализлвана в виде компилятлрной магии

А можно пример? Я просто тупой, и не понял :)

> Я про сочетание оператора ? и выражение match.

Это ж просто синтаксический сахар, если я не ошибаюсь. То есть это не делает программу другой, а лишь сокращает количество строк (свёртывает код в более компактную форму). Если, например, вы работаете в GoLand, то какой-нибудь трёстрочник из "if err != nil { return fmt.Errorf("sdfsdf: %w", err) }" тоже свернётся в серенький неприметненький однострочник.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру