Pull to refresh

Comments 28

Наглядная демонстрация AI slop.

Спасибо за статью, как раз сейчас изучаю golang, пробую разные подходы, будет интересно почитать ваши труды.

В мире, где всё чаще во главу угла ставятся деньги, а не реальная польза, легко потерять ориентиры

Щито плать? 😭

«Понимаю вашу иронию, на Хабре заходы про "мир и деньги" часто выглядят как инфоцыганство. Но мы решили рискнуть и добавить немного философии, потому что проект действительно бесплатный и сделан на чистом энтузиазме.

Если отбросить лирику и заглянуть в internal/store/repository.go или посмотреть, как мы реализовали Repository Pattern для инкрементального обучения — нам очень важен ваш взгляд как архитектора. Будем рады критике по делу в репозитории!»

Ответ нейросетки?

Судя потому, что весь текст закавычен, причём елочками

Зачем учит Go

И на этом модно бло бы остановится. язык непонятно для какой ниши. просто у гугла мулька такая придумывать новые языки. как Dart который не нужен нигде кроме Flatter

и умрет вместе с флаттер как руби умер с рельсами

Что тогда учим?

Кресты? Решетку? Питона ? Джаву ? 1С? 1С исполнитель?)

php, да простит меня хабр

А что тогда будет с бигкеком, которые поголовно всё переписывают на го и не рейтят плюсовиков?

Судя по сайту go.dev, сам Гугол не особо понимает для какой ниши Го. Более того, там четыре нишечки, из которых две - то ли корпоративная бредятина, то ли маркетинговая чушь. А по кнопке Больше применений - не больше, а ровно столько же и то же самое. С Вами трудно не согласиться, вокруг Го становится печально и что-то затевается. На том же сайте документацию недавно, если это не мой эффект Манделлы, изменили так, что как учить Го стало не особо и понятно.

С другой стороны, на замедленном канале Флаттер четыре дня назад начался курс промо видео под лозунгом Дарт - это больше чем Флаттер. Моё личное мнение - перерыв в четыре дня для такой темы - малая катастрофа, жду большую. Так что да, Гугол в любых его проявлениях - красный флаг.

В принципе, Го хорош для всего кроме 3Д игр, и то может и пока, а в моих наивных тестах Го как проигрывает С вдвое, так и выигрывает втрое. Так что учить Го понятно зачем - ради надежды.

Моя теория - Гугол помешан на контроле, а Го выходит в свободное плавание. Гугол либо сможет утопить, либо нет. Поэтому и сдувается пыль с Дарта, который лично мне кажется тоже весьма удачным языком, уступившем, в своё время, Тайпскрипту по неведомым мне причинам, гипотеза - обратно то ли глупость, то ли подлость Гугла. Позитив гипотезы - Котлин хуже Дарта для Гугла - контроля меньше, что даёт Дарту шанс на выживание.

Теперь посчитаем. Флаттер держит 40+ процентов кроссплатформы. На лет пять, а то и семь, хватит точно. За это время инициатива Гугла с выходом Андроида на ноутбуки успеет провалиться - кому Линукс, тому в виртуалке будет тесновато, а по железу дороговато, кому не Линукс, тому Андроид на ноуте вообще без надобности, уж не заранее ли "дешёвый" МакБук придумывают...

После провала, да на падающих рынках, Гуглу придётся что-то делать, а куда бросится из угла загнанная крыса - не предскажешь. Повезёт - кто сейчас учит Го, тот и порадуется. А не повезёт...

На мой взгляд Go хорош для микросервисов, бэкендов, разных серверных утилит. Управление памятью и многопоточность из коробки, стандартная библиотека с поддержкой HTTP. На выходе бинарник без зависимостей, упаковывается в компактный контейнер. Потребление ресурсов в рабочем режиме минимально (по сравнению с Python и NodeJS). Порог входа ниже, чем в С и Java, Rust еще молод (и как по мне так сложнее в освоении).

Да, есть минусы. Отсутствие полноценной поддержки ООП часто приводит к усложнению и удлинению кода. Зависимость от Гугла.

Излишняя консервативность (то, что язык очень медленно развивается) может быть как плюсом, так и минусом - смотря с какой колокольни глядеть. Но даже, если он замрет в текущем состоянии, то еще очень долго будет востребован.

Ещё одна обёртка вокруг Джавы которая была модной в 2013-2017-х годах. А в 2016 вышел открытый .Net Core.

И на этом все. Он был быстрее джавы, поэтому все эти костыли вроде Го или Котлина просто тянут время пока в отрасли не поймут, что это все уже устарело. Он был кросплатформенным и это убрало преимущества остальных.

Прошло 10 лет и .Net/c# снова стал самым популярной платформой/языком для автоматизации коммерческих прпредприятий.

Ну, просто раньше .Net был только для Майкрософта и очень дорогим. Это расчистило путь всяким Го, Rust и прочим откусить кусок рынка. Но, сейчас они потихоньку будут уходить.

Но, я уверен, в Яндексе продолжат обрабатывать запросы из браузера через c++, а некоторые API даже будут писаться на питоне, ибо у нас Особый Путь

Очень долго это сколько? Лет 5?

Гугл просто не хочет использовать технологии своего конкурента Майкрософт. Отсюда шарахание по всяким Котлинам и Питонам.

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

Фреймворки для интерфейсов у Майкрософт плохие, потому Razor/Blazor всегда будут проигрывать гугловскому Angular. Но в обработки данных и автоматизации Майкрсофт даст всем сто очков вперёд.

Интересно наблюдать за ренессансом .NET, и вы правы - платформа стала на порядок лучше с выходом Core.

Однако позвольте не согласиться с парой моментов:

  1. Техническая база: Называть Go «оберткой над Java» некорректно. Go - это нативный язык с фокусом на минимализм и эффективную работу с тысячами горутин "из коробки" без тяжелого рантайма. Это не костыль, а попытка избавиться от сложности, которую привнесли Java и .NET.

  2. Ниши: .NET действительно силен в автоматизации бизнеса и десктопе. Но Go - это король Cloud Native. Вся современная инфраструктура (Kubernetes, Docker, Prometheus) построена на нем. Это не "шараханье", а выбор самого эффективного инструмента для распределенных систем.

  3. Цель проекта: Наш The Gopher Shop учит не просто языку, а инженерному мышлению. Go идеален для обучения именно потому, что он прост и заставляет понимать, как данные текут по системе, а не прячет их за сложными абстракциями фреймворков.

Конкуренция гигантов вроде Google и Microsoft только на руку нам, разработчикам - инструментов становится больше. Но в обучении мы ставим на прозрачность и простоту Go!

По стандарту языка, не нужно писать GetAll (в репозитории), а правильнее называть метод All:

https://go.dev/doc/effective_go#Getters

Интерфейсы тоже описываются по месту использования, а у вас в том же пакете, как в джаве

Буду рад видеть ваши предложения в Issues или Pull Requests, если захотите помочь сделать учебный материал еще более идиоматичным!

Я бы поспорил

Геттер это скорее про DTO и сам класс/структуру. Скажем есть type User struct {Birthday time.Time}, мы может сделать геттер Age(), который вернёт возраст юзера исходя из даты рождения

А GetAll - это метод похода в БДшку, он не реализует какого-либо доступа до класса, от которого вызывается

по стандарту языка не надо писать All, а просто Users/Orders/Books

Действительно, вызов repo.Books(ctx) выглядит чище, чем любой другой вариант. В этом и прелесть Go - когда само имя метода уже является существительным, описывающим результат, а не действие.

Для нашего учебного проекта это отличный повод показать студентам эволюцию мышления:

  1. Сначала мы пишем как в других языках (GetAll).

  2. Потом понимаем правила Go и сокращаем до All.

  3. И наконец, приходим к самому лаконичному варианту - Books.

Мы обязательно добавим этот пример в главу про нейминг, чтобы показать, как сделать код по-настоящему "гоферским". Ждем вас в Issues, такие архитектурные тонкости - бесценный материал для обучения!»

Стандарт языка описывает геттер, а не все методы и функции. GetAll, ListUsers, ListBooks это не гетеры

Вы правы: Effective Go действительно выделяет геттеры в отдельную категорию.

В случае с репозиториями GetAll или List - это скорее операция запроса, а не просто доступ к полю. Однако в экосистеме Go (и особенно в стандартной библиотеке) всё же прослеживается тренд на лаконичность. Например, вместо GetEntries чаще пишут просто Entries.

Если единственной задачей программиста по вашим словам останется улучшение ИИ, и во главе угла новичком должны ставиться алгоритмы и система "под капотом", то почему go? Он же совершенно не подходит для ознакомления с основами. С такой логикой, стоит выбрать C, C++, Rust(?). Даже Python будет неплохой идеей, ибо он позволяет легче всего реализовывать алгоритмы.

Это фундаментальный спор: с чего начинать?

Почему именно Go для нашего проекта:

  1. Явность против магии: В отличие от Python, Go заставляет вас думать о типах данных, указателях и ошибках здесь и сейчас. Это и есть то самое "под капотом", но без ручного управления памятью как в С, которое часто отпугивает новичков на старте.

  2. Простота спецификации: Go можно выучить за выходные, а потом всю жизнь учиться строить на нем правильные системы. Это позволяет новичку быстро перейти от "Hello World" к архитектуре реального магазина.

  3. Concurrency как база: В современном мире параллелизм - это база. Go вводит концепцию горутин и каналов на уровне синтаксиса, что гораздо полезнее для будущего инженера ИИ-систем, чем ручная работа с потоками в C++.

Наш проект не претендует на роль "единственного верного пути", но мы верим, что Go - это кратчайший путь от нуля до понимания того, как работает современный бэкенд и распределенные системы. Заходите в репозиторий, посмотрите наши визуальные сигналы - возможно, они изменят ваше мнение о Go как об учебном языке!

Скорее - зачем на Go, когда .net быстрее и лучше?

Спор о том, какой стек "лучше", - это вечная тема. .NET - прекрасная и очень производительная платформа.

Однако для нашего учебного проекта The Gopher Shop мы выбрали Go по нескольким причинам, которые важны именно для новичков:

  1. Минимализм: В Go практически нет "магии". Новичок видит каждую деталь: как обрабатывается ошибка, как работает указатель, как создается структура. В .NET/C# за фасадом мощных абстракций и LINQ начинающему инженеру гораздо сложнее разглядеть те самые алгоритмы и систему "под капотом".

  2. Предсказуемость: Go приучает к дисциплине через явную обработку ошибок и отсутствие исключений (exceptions). Это формирует у будущего разработчика правильный "менталитет безопасности".

  3. Ресурсоемкость: Обучающий проект на Go запускается мгновенно и потребляет минимум RAM, что делает его доступным для студентов даже на слабых ноутбуках.

Наша цель - не доказать, что Go "быстрее всех", а дать студенту надежный инструмент для изучения инженерного подхода к разработке систем. А когда база будет освоена, переход на .NET или Rust станет для него лишь вопросом изучения нового синтаксиса!

Господи, да даже ответы на комментарии написаны нейронкой. Мёртвый интернет всё ближе.

Sign up to leave a comment.

Articles