Pull to refresh

Comments 27

Единственный неявный момент в том, что случайно назвав свой файл, например, my_program_test.go, можно не сразу понять, почему ничего не работает. А причина в том, что все тесты должны иметь шаблон названия *_test.go. 

Очепятка, или момент настолько неявный?

Можно поподробнее, где ошибка?

my_program_test.go на первый взгляд подходит под шаблон *_test.go

Так почему назвав файл my_program_test.go можно не сразу понять, почему ничего не работает?

А, понял, имелось в виду, что если запустить go run my_program_test.go, будет ошибка. Спасибо, поправлю

Только сейчас дошло: в Go, в основном, пишут в стиле CamelCase, а не camel_case

 Go поддерживает параллелизм, 

*Concurrency and Parallelism - категорически не стоит обобщать эти два понятия в голове. И при изучение языка. сразу расставить все по полочкам.

Конкуренция создает параллелизм

Нет, мы пытаем кандидатов еще более изощренно - заставляем писать в Yandex.Code

А куда он делся, кстати? Пользовался им для проведения собеседований какое-то время.

Конкуренция, надо у яндекса спрашивать.)

Зачем:
err, val := somefunc()
if err != nil {
	log.Logger.Error(err)
}
, когда стандартной практикой является:
if val, err := somefunc(); err != nil {
	log.Logger.Error(err)
}
Это не «шум», а иной подход к обработке ошибок: ошибка в Go — не состояние, а значение. С которым надо работать точно так же, как с другими значениями. Да, приходится писать чуть больше кода. Но качество кода — это не то, насколько быстро он пишется, а то, насколько хорошо он читается. И подход, принятый в Go, читается очень хорошо — часто лучше, чем более распространённые try-catch.
Go — функциональный язык, он не предоставляет стандартных средств ООП как таковых.
Нет, Go — не функциональный, а императивный компонентно-ориентированный язык. Обеспечивающий возможности, эквивалентные «страуструповскому» варианту ООП, на основе композиции — без присущих наследованию недостатков.
Горутины. В Python уже давно есть асинхронный код и корутины, так что особых проблем с горутинами не возникло
Нет, go-процедуры — это не сопрограммы. В первых версиях компилятора — да, go-процедуры реализовывались через кооперативную многозадачность. Но в последних версиях компилятора добавилась и вытесняющая многозадачность, так что сейчас go-процедуры ближе к полноценной многопоточности, чем к сопрограммам.

Только в приведенной вами стандартной практике, скоуп val будет ограничен. Эта практика стандартна для функций, возвращающих только error.

Во многих случаях ограниченность области видимости переменной val не играет роли — т.к. используется эта переменная только в секции else оператора if. В тех же случаях, когда переменная val требуется вне if, лучше объявить её явно — через var. Но присваивание (вместо создания с инициализацией) оставить в инициализаторе оператора.

И нет — вызов функции в инициализаторе if является стандартной практикой даже если функция возвращает не только error. Другой же стандартной практикой является возврат error исключительно последним значением кортежа — и никак иначе.

> Стоит отметить, что цикл событий встроен в Go

Что вы имеете в виду?

Не требуется устанавливать и импортировать никаких дополнительных модулей, как например, asyncio в питоне, чтобы пользоваться горутинами

Начиная с 3.4 asyncio является частью стандартной библиотеки Python.

  • а кем надо стать за 11 лет?

  • а точно ли все 11 лет имеют одинаковый вес?

  • а смена стека не обесценивает полученный ранее опыт?

  • а чьи "лычки" мега архитектора в конмпании делающей лединги и мидла в топовой IT больше?

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

Простите пожалуйста, если излишне эмоционально. Очень не нравится, когда обесценивают чей-то труд

что два разных программиста на С++ могут просто не понять чужой код, потому что пишут на разных С++.

Ну это не правда, это всё равно что сказать, что два программиста на Java могут не понять код друг друга потому что один из них стал использовать Stream api

На С++ вообщем-то достаточно легко написать такой код, в котором и сам разобраться не сможешь.

Его на любом языке достаточно легко написать, говнокодить много ума не надо)

ООП. Go — функциональный язык

Наверно Вы хотели сказать "Процедурный", т.к. он совершенно точно не функциональный.

А вот что касается ООП в Go, это отдельная тема для обсуждения, т.к. фундаментальные принципы объектно-ориентированного подхода успешно применяются в Gо, хотя выражаются несколько менее привычным способом.

Sign up to leave a comment.