Как стать автором
Обновить

Комментарии 18

Возможно совершу суицид по карме, но все таки выскажу не популярное мнение, в свое время полюбил Go за его лаконичность и простоту, в нем не было ничего лишнего, код выглядел изысканно и читался очень легко, именно по этому его легко осваивали люди с другиз языков за 2-3 недели, можно сказать что простота и местами скупость была его философией, но честно говоря мне не нравятся последние изменения которые делают в языке, каждый релиз добавляют какой-то синтаксический сахар и вдобавок какие-то новые конструкции. Я так до сих пор и не понял глубинного смысла дженериков, когда все решалось кодогенерацией или написанием несколько функций, все уже и так работает, зачем нам еще какой-то лишний мусор в языке? Честно, у меня большой проект в которой я пытался затащить дженерики, но каждый раз это было больно, неудобно, медленно. Кто-то действительно может сказать что с добавлением дженериков/итераторов код стал выглядеть проще и писаться легче? Я нет.

У нас есть несколько декораторов, которые очень хорошо легли с дженериками.

Плюсую.

Мне Go из-за этого перестал нравится. Какое-то странное развитие в последние годы.

Навскидку.

Почему бы не дать более удобную, "сахарную" работу с горутинами?

Или наконец уже что-то сделать с обработкой ошибок (даже уже proposals висят на github) ?

Не погружался, но интересно, кто сейчас лидер в принятии решений и почему так все идет?

Я тут просто соглашусь. На go пишу >12 лет, заинтересовался им с самых первых публичных версий. В принципе, нововведения выглядят достаточно логичными, принять их можно. И можно даже находить полезное применение. Однако, позвольте, как же язык обходился столько лет без этих фич (дженерики тут вероятно было самой обсуждаемой) и несмотря на их отсутствие обрел популярность? Может быть как раз благодаря их отсутствию? Приняли бы Go как "простой" язык, на который легко перейти, если бы на месте 1.0 был представлен его текущий набор фич из 1.23? :) Впрочем, quod scripsi scripsi. Обратно это уже не вернуть, пишем на Go дальше :)

Я так до сих пор и не понял глубинного смысла дженериков,

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

А что, в стандартной библиотеке Go нет класса обобщённого массива/списка/вектора? Или в Go слово «дженерики» означает что-то другое?

Я так до сих пор и не понял глубинного смысла дженериков


На самом деле не так сформулировал, что такое дженерики и зачем они нужны понятно, они есть во многих языках. Тут вопрос более глубокий, зачем в язык Go с его философией лаконичности, добавлять сахар которым пользуется 2% людей, при этом усложнив сам язык и добавив в него новые конструкции которые не нужны в 99% случаев, а там где нужны решались кодогенерацией. Забавно что Go как язык обрел свою популярность без всего этого сахара, может потому и обрел? На мой взгляд это просто не ложится в концепцию языка, быть максимально лаконичным и простым, возможно я не так понял философию языка)

А как работа со списками выглядела до дженериков?

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

Интересно! Надо будет почитать. Так какие-то крутые макросы?

Нет. Макросов там нет. :)

Дженерики бывают весьма уместны. Лично мне пригодилось для написания обобщенного функционала для gRPC стримов. А так в основном дженерики нужны для библиотек.

Сейчас это можно про любые классические языки сказать... Туда стали пихать всё невпихуемое с точки зрения их идеологии...

Если не ошибаюсь там уже новый человек отвечает за разработку гошки(

Самый трешовый релиз из всех что я видел:
Добавили итераторы которые никто не просил, хрен задебажишь и хрен напишешь правильно.
Добавили глобальную map[any]any и обозвали unique.
Сломали обратную совместимость с кучей библиотек которые используют go:linkname.

Из полезного только таймеры и те для идиотов, проблемы написать t.Stop() не было примерно никогда.

В какой язык будем переходить, господа?

Добавили глобальную map[any]any и обозвали unique.

map[T comparable]any вроде же.

Сломали обратную совместимость с кучей библиотек которые используют go:linkname.

Правильно ли я понимаю, что они с помощью этой функции привязывались к приватным функциям, тем самым нарушая инкапсуляцию?

Добавили итераторы которые никто не просил

Там проде был пропосал, где просили. Это удобнее чем возиться с каналами.

Раз, два, три, GO выходи

Кто эти люди кому нужна телеметрия в компиляторе? Т.е. теперь и тут за мной попытаются последить?

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Другие новости

Истории