Форум программистов, компьютерный форум, киберфорум
Go (Golang)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
 Аватар для imcavs™
-2 / 24 / 8
Регистрация: 19.02.2012
Сообщений: 447

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

05.08.2025, 12:39. Показов 3338. Ответов 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,781
07.08.2025, 08:38
Цитата Сообщение от Usaga Посмотреть сообщение
DI нет. Либо руками контейнер формируй, либо катай сторонние решения и генерируй код.
https://github.com/gozix/di

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

Добавлено через 2 минуты
Цитата Сообщение от imcavs™ Посмотреть сообщение
я туда иду за ооп и убить свое свободное время)
За ООП и убить время идите в SmallTalk. Вот там ООП по самое немогу.
0
Эксперт .NET
 Аватар для Usaga
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,632
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,781
07.08.2025, 11:59
Цитата Сообщение от Usaga Посмотреть сообщение
Но эти штуки для этого языка не родные.
Эти штуки ни для какого языка не родные, нигде DI не встроена в язык, везде идёт отдельной библиотекой, зачастую реализованной через чёрную магию рефлексии.

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

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

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

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

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

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

Добавлено через 1 минуту
Whitecolor, https://go.dev/doc/
0
Эксперт .NET
 Аватар для Usaga
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,632
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,781
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
14347 / 9450 / 1360
Регистрация: 21.01.2016
Сообщений: 35,632
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
Ответ Создать тему
Новые блоги и статьи
Программа для com-порта
Uhbif79 05.06.2026
Всем привет, давно хотел изучить Qt, начинал, бросал, потом снова начинал. И сейчас вот смог написать свою первую программу. До этого имел опыт программирования микроконтроллеров, писал прошивки на. . .
Транскрипция 55-минутного видео через Whisper: WhisperDesktop облажался, спас Google Colab[
anaschu 01.06.2026
Понадобилось получить текст из свежезагруженного видео на YouTube. Казалось бы, задача на пять минут. Заняла полтора часа. Делюсь опытом — может кому пригодится последовательность решений. . . .
21 мат мед. Планы на развитие модели здравоСохранения
anaschu 01.06.2026
AnyLogic: план развития симуляционной модели рабочего коллектива — динамический абсентеизм, реальные данные, три сценария сравнения Продолжаю серию постов о дискретно-событийной модели рабочего. . .
20. Мат мед. Абсентеизм как отдельный тип простоя
anaschu 29.05.2026
Апдейт модели: исправленные баги, абсентеизм и новые механизмы Продолжаю развивать ранее описанную модель рабочего коллектива на AnyLogic. За последние несколько дней был проведён серьёзный. . .
19. здоровье, усталость и психотип работника влияют на производительность предприятия, и наоборот, производительность на здоровье, усталось и психотип
anaschu 28.05.2026
Дискретно-событийная модель рабочего коллектива на AnyLogic: здоровье, выгорание, психотипы и микростимуляция Привет, коллеги. Хочу поделиться итогами нескольких недель работы над симуляционной. . .
"Прокси" для последовательного порта
Eddy_Em 28.05.2026
Эту штуку написал я достаточно давно. Но сейчас вот понадобилось настроить датчик грозы, но при этом не отключать его от "метеодемона". Соответственно, надо запустить этот "прокси": метеодемон будет. . .
Рефакторинг программы уравнивания.
Massaraksh7 26.05.2026
Пример по предыдущей записи в блоге. Но, надо заметить, что, во-первых, там оптимизация не только математики, но и работы с базой данных, и с графами, а во-вторых, это ещё не всё.
Использование TThread в Lazarus для математических вычислений.
Massaraksh7 25.05.2026
Производя рефакторинг своих программ на предмет ускорения их работы, обратил внимание на такой аспект, как сокращение времени матвычислений. Дело в том, что приходится работать с большими матрицами. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru