Аватар для imcavs™
-2 / 24 / 8
Регистрация: 19.02.2012
Сообщений: 447

Насколько сложен GO?

05.08.2025, 12:39. Показов 3857. Ответов 27
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет мужики!
Ну что, GO слишком сложный в освоении после питухона и шарпа?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.08.2025, 12:39
Ответы с готовыми решениями:

Насколько Go подходит для сайтостроения?
Здравствуйте, насколько Go подходит для создания мелких и средних сайтов? Визиток, бложиков,...

Подсчитайте, какое максимальное количество раз лист может быть сложен
Оригами Ограничение времени 1 секунда Ограничение памяти 64Mb Ввод стандартный ввод или...

ExpressionField сложен в понимании
Всем привет,продолжаю изучать битрикс,столкнулся с проблемой понимания ExpressionField. Я понимаю...

27
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
07.08.2025, 08:38
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Usaga Посмотреть сообщение
DI нет. Либо руками контейнер формируй, либо катай сторонние решения и генерируй код.
https://github.com/gozix/di

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

Добавлено через 2 минуты
Цитата Сообщение от imcavs™ Посмотреть сообщение
я туда иду за ооп и убить свое свободное время)
За ООП и убить время идите в SmallTalk. Вот там ООП по самое немогу.
0
Эксперт .NET
 Аватар для Usaga
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,865
07.08.2025, 08:40
Цитата Сообщение от korvin_ Посмотреть сообщение
https://github.com/gozix/di
Я знаю, что есть сторонние решения. Но эти штуки для этого языка не родные. Я бы не стал их использовать.

Цитата Сообщение от korvin_ Посмотреть сообщение
Но я не фагат DI, за годы работы с ними так и не понял, чем они принципиально лучше простого вызова конструктора, который (вызов), гораздо проще дебажить, чем "магию" DI.
"Выворотом" зависимостей - Inversion of Control. Тебе не надо знать, что сервису нужно в конструктор передать ибо этот сервис тебе уже готовым передаётся в твой конструктор. Код получается чище более устойчивый к изменениям. Конечно же не забесплатно, а за счёт того, что появляется контейнер, который отвечает за композицию графа зависимостей твоего приложения.

В простейших приложениях это, конечно же, может быть избыточным.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
07.08.2025, 11:59
Цитата Сообщение от Usaga Посмотреть сообщение
Но эти штуки для этого языка не родные.
Эти штуки ни для какого языка не родные, нигде DI не встроена в язык, везде идёт отдельной библиотекой, зачастую реализованной через чёрную магию рефлексии.

Цитата Сообщение от Usaga Посмотреть сообщение
Я бы не стал их использовать.
Почему?

Цитата Сообщение от Usaga Посмотреть сообщение
"Выворотом" зависимостей - Inversion of Control.
IoC к DI отношения не имеет, это паттерн проектирования.

Цитата Сообщение от Usaga Посмотреть сообщение
Тебе не надо знать, что сервису нужно в конструктор передать ибо этот сервис тебе уже готовым передаётся в твой конструктор.
Мне в любом случае не нужно этого знать, потому что параметр конструктора -- интерфейс. При чём тут DI?

Цитата Сообщение от Usaga Посмотреть сообщение
Код получается чище более устойчивый к изменениям.
Спорно.

Цитата Сообщение от Usaga Посмотреть сообщение
Конечно же не забесплатно, а за счёт того, что появляется контейнер, который отвечает за композицию графа зависимостей твоего приложения.
И как только в нём происходит что-то не так, получаешь невменяемый стэктрейс, с кучей ненужной информации о внутреннем устройстве DI-фреймворка и дай бог хоть с каким-то информативным сообщением. Причём где-то в рантайме. В то время как вызовы конструктора явно написан в коде, видно где произошла ошибка, да и параметры проверяются статически.

Цитата Сообщение от Usaga Посмотреть сообщение
который отвечает за композицию графа зависимостей твоего приложения.
Можно не строить сложные графы зависимостей, и всё сразу станет проще и даже DI не понадобится.
0
1216 / 784 / 130
Регистрация: 10.03.2012
Сообщений: 5,094
07.08.2025, 12:30
Подскажите, есть хорошие курсы по GO?
0
 Аватар для alhaos
1934 / 549 / 155
Регистрация: 20.02.2019
Сообщений: 2,675
Записей в блоге: 77
07.08.2025, 20:14
Whitecolor, A tour of Go

Добавлено через 1 минуту
Whitecolor, https://go.dev/doc/
0
Эксперт .NET
 Аватар для Usaga
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,865
08.08.2025, 04:49
Цитата Сообщение от korvin_ Посмотреть сообщение
Почему?
В малом и среднем по размеру проекте, контейнер DI вполне можно собрать руками. А это меньше зависимостей от сторонних решений и меньше магии. Лично мне нравится, когда в коде всё явно сделано.

Цитата Сообщение от korvin_ Посмотреть сообщение
IoC к DI отношения не имеет, это паттерн проектирования.
Эти две вещи идут рука об руку.

Цитата Сообщение от korvin_ Посмотреть сообщение
Мне в любом случае не нужно этого знать, потому что параметр конструктора -- интерфейс. При чём тут DI?
Я не про интерфейсы. Ты хочешь создать сервис простым вызовом его конструктора. Этот конструктор может требовать другие сервисы. Значит сервис, в котором ты вызываешь конструктор другого сервиса, должен инициализировать и все его зависимости. Или получать их в свой конструктор. Так ведь? Inversion of Control это решает. А сам IoC удобно делать на базе DI.

Цитата Сообщение от korvin_ Посмотреть сообщение
Спорно.
Ну, кому как, видимо.

Цитата Сообщение от korvin_ Посмотреть сообщение
И как только в нём происходит что-то не так, получаешь невменяемый стэктрейс, с кучей ненужной информации о внутреннем устройстве DI-фреймворка и дай бог хоть с каким-то информативным сообщением. Причём где-то в рантайме. В то время как вызовы конструктора явно написан в коде, видно где произошла ошибка, да и параметры проверяются статически.
Ни разу не получал невменяемого стэктрэйса. Обычно простое "Не могу удовлетворить такую-то зависимость такого-то конструктора". Но да, такое ловишь в рантайме. Это одно из "не бесплатно". Но вполне лечится тестами.

Цитата Сообщение от korvin_ Посмотреть сообщение
Можно не строить сложные графы зависимостей, и всё сразу станет проще и даже DI не понадобится.
Можно и без багов писать и максимально оптимально. Что уж мелочиться. Если пишем большое и сложное приложение, то и инфраструктура у него будет большая и сложная. И не всегда это от нас зависит. Сказали, что надо огромный монолит со всеми вытекающими - мы его и пишем.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
08.08.2025, 11:06
Цитата Сообщение от Usaga Посмотреть сообщение
Эти две вещи идут рука об руку.
Гм, нет, не идут. IoC можно делать без DI, а DI можно делать без IoC.

Ты путаешь принцип проектирования
In software engineering, inversion of control (IoC) is a design principle in which custom-written portions of a computer program receive the flow of control from an external source (e.g. a framework). The term "inversion" is historical: a software architecture with this design "inverts" control as compared to procedural programming. In procedural programming, a program's custom code calls reusable libraries to take care of generic tasks, but with inversion of control, it is the external code or framework that is in control and calls the custom code.
с джавизмом
Alternative meaning

The phrase "inversion of control" has separately also come to be used in the community of Java programmers to refer specifically to the patterns of dependency injection (passing services to objects that need them) that occur with "IoC containers" in Java frameworks such as the Spring Framework.
Цитата Сообщение от Usaga Посмотреть сообщение
Inversion of Control это решает.
IoC тут вообще не при чём.

Цитата Сообщение от Usaga Посмотреть сообщение
Но вполне лечится тестами.
Какими тестами? В тестах моки и стабы, там другое наполение DI-контейнера.

Цитата Сообщение от Usaga Посмотреть сообщение
Если пишем большое и сложное приложение, то и инфраструктура у него будет большая и сложная.
В большом и сложном приложении подключение инфраструктуры будет составлять считанные проценты сложности, и решается практически один раз. DI тут также решает несуществующую проблему, если это вообще можно назвать решением. Зато привносит дополнительный уровень абстракции, магии и неявности, требует дополнительных знаний, и (желательно) дополнительной поддержки со стороны IDE.
0
Эксперт .NET
 Аватар для Usaga
14733 / 9507 / 1363
Регистрация: 21.01.2016
Сообщений: 35,865
30.08.2025, 08:46
Цитата Сообщение от korvin_ Посмотреть сообщение
Зато привносит дополнительный уровень абстракции, магии и неявности, требует дополнительных знаний
Ну да, есть такое. Уже сталкивались с этим на большом проекте.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.08.2025, 08:46

Насколько опасны вирусы, насколько они могут навредить?
насколько опасны вирусы.насколько они могут навредить. в настоящиймомент сижу в иннете на компе без...

Насколько плоха и насколько хороша такая сборка? Ваше мнение
Материнская плата: A SRock H55M-LE Процессор: Intel Core i3 540 3.07 Ghz Оперативная...

Насколько плоха и насколько хороша такая сборка? Ваше мнение
Материнская плата: ASRock H55M-LE Процессор: Intel Core i3 540 3.07 Ghz Оперативная...

Насколько действительно необходимо заземление компьютера?
Насколько действительно необходимо заземление? как правило, в большом количестве офисов, эл....

Насколько схожи языки Delphi и Visual Basic
Легко ли изучить Basic после Delphi:stop:


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
28
Ответ Создать тему
Опции темы

Новые блоги и статьи
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
Мысли в слух
kumehtar 17.08.2026
Забавно, насколько сейчас стала доступна информация. Например о магии, духовном развитии, медитациях, и других подобных направлениях, ранее зачастую тайных, передаваемых от учителя к ученику. Хотя. . .
Перемещение строк из ТЧ в другой документ с учетом текущего пробега
Maks 17.08.2026
Реализация из решения ниже выполнена на примере нетипового документа "Автозапчасти", с ТЧ "Шины". За основу взят алгоритм отсюда: https:/ / www. cyberforum. ru/ blogs/ 359708/ 10838. html Задача: . . .
Саморегулирующийся социальный контракт для сервера cross-section.
Hrethgir 14.08.2026
С кодом конечно таких глубоких размышлений пока не было, впрочем я уже привык к алгоритмизации. Суть предмета записи: снова в диалоге с нейросетью (я взял пока себе ник для учётки админа - Rector). . . .
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет: 1. Использовать системное время и дату, 2. Есть возможность вводить время и дату вручную. 3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru