Область применения Golang
От: A13x США  
Дата: 07.11.17 01:08
Оценка:
Изучаю "для себя" Go и немного недоумеваю по поводу отсутствия некоторых вещей кажущихся очевидными в языке.

Неясно отсутствие стандартных коллекций (по аналогии как они представлены в Java collections, C#, C++ STL).
Переиспользование даже простых коллекций довольно непросто — посмотрите к примеру на то, как объявлять свой тип heap.
Исходя из предложенного примера есть ощущение, что дизайнерам языка не знакома концепция абстрактного типа данных.

В пакете "стандартных" контейнеров есть только heap, list, ring.
map (он же хеш-таблица) вообще embedded тип! Неясно почему для консистентности не сделать container/map?
Бинарного дерева нет. Предполагается, что sorted set будет не нужен?

Отсутствие Generics, вероятно, было вызвано муками выбора — либо сделать "сложно" наподобие C++ templates или CL macros либо просто наподобие type erasure-based generics в Java.
Но все равно не ясно их полное отсутствие. Неужели невозможно придумать простую в синтаксисе и в реализации конструкцию шаблонов, которую можно будет потом расширять?

Rob Pike пишет:

Go’s purpose is therefore not to do research into programming language design; it is to improve the working environment for its designers and their coworkers. Go is more about software engineering than programming language research. Or to rephrase, it is about language design in the service of software engineering.


То есть считается, что generics не нужны в практической разработке?
И "language in the service of software engineering" предполагает колбасить свои контейнеры каждый раз когда возникает необходимость работать с кастомным типом?

Еще не понимаю идеи c implicit interfaces. Казалось бы, если Go за "ясность" в связи с чем дизайнеры языка отказываются от тернарного оператора '?:' в пользу классического if-else, то почему бы не потребовать явного указания типов?

В общем, вероятно, я что-то недопонимаю, объясните. Пока я не вижу смысла в такой философии языка.

Тем не менее некоторые части языка мне нравятся.
Кто нибудь писал большие программы на Go? Интересно, насколько вам мешало сказанное выше?
Отредактировано 07.11.2017 1:16 A13x . Предыдущая версия . Еще …
Отредактировано 07.11.2017 1:15 A13x . Предыдущая версия .
Отредактировано 07.11.2017 1:14 A13x . Предыдущая версия .
Отредактировано 07.11.2017 1:12 A13x . Предыдущая версия .
Отредактировано 07.11.2017 1:09 A13x . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.