Материал подготовлен Никитой Кузнецовым, старшим разработчиком компании «МегаФон» и преподавателем курса “Go-Разработчик Pro” в Skillbox: «Упрощай! Вот девиз, который, как мне кажется, могли бы использовать разработчики языка Go».
Почему языки могут быть неудобными?
Есть языки, в которых для реализации вложенности конструкций используются пробелы/отступы (например, Python), для определения вложенности используются ключевые слова (например, begin и end в Delphi), используются фигурные скобки (например, Си-подобные языки).
Программа может работать не так, как хотелось бы из-за лишнего или отсутствующего пробела, а ключевые слова добавляют лишние строки и символы на экране.
Чем удобен Golang?
Golang основывается на лаконичности, которая делает язык читаемым и понятным: фигурные скобки уменьшают количество символов на экране, открывающая фигурная скобка находится на одной строке с командой, к которой относится вложенность.
Кроме того, отсутствуют круглые скобки в условиях и циклах, дополнительные ключевые слова для объявления переменной и присвоения ей значения, специальные символы, завершающие команду.
Задачи решаются с меньшим количеством ключевых слов, в сравнении с другими языками.
Чем интересен Go?
В Go всего один цикл, а в некоторых языках их три или четыре.
Никита Кузнецов: «У многих возникает вопрос: можно ли упаковать все циклы, с предусловием, постусловием, итератором для прохода по коллекции, – в один? Но я полагаю, что новички запоминают один подход к написанию циклов проще, чем несколько. На помощь приходит for для всех действий! И уже не нужно тратить время, чтобы думать над лишними ключевыми словами».
Для наглядности
Посмотрите, сколько раз выполнится тело этого цикла на языке C# или Java:
for (;;) {
}
Опытный разработчик ответит, что это бесконечный цикл. А новичок?
В Go ни
for {
}
ни
for ;; {
}
не скомпилируются.
Хочешь бесконечный цикл? Укажи это явно:
for true {
}
Простота Go в сравнении с большинством языков
Большинство современных языков программирования построено на объектно-ориентированных принципах (ООП). Основная загвоздка в ООП – полиморфизм, причем как в реализации самого языка, так и в понимании. Чтобы упростить понимание и снизить количество ошибок, в разработке появились новые принципы, например, SOLID.
- В Go отказались от ООП в его оригинальной трактовке, но тот же SOLID в нём реализовать можно. Получается, что все возможности по созданию сложных систем есть, а основной трудности ООП – нет!
В большинстве языков программирования проекты раскиданы по разным папкам: ваши, чужие, которые вы скачали и пакеты, от которых зависят проекты.
- Go разрабатывался в парадигме применения системы контроля версий Git, поэтому папки хранятся в одном месте – в $GOPATH/src. Когда вы пишите код или загружаете чьё-то решение с GitHub-а, всё собирается во едино.
В большинстве языков стоит вопрос: как правильно форматировать код?
- В Go такого вопроса нет. Команда go fmt используется разработчиками во всём мире. Код отформатирован одинаково и в учебном примере, и в интернете, что позволяет новичкам быстрее разбираться с задачами.
Никита Кузнецов: «Разработчики Go создали язык с компактным кодом, быстрой компиляцией, сборкой «мусора», поддержкой параллелизма, но, по моему мнению, у них ещё получился язык, который отлично подходит в качестве первого языка программирования. Или у вас другое мнение? Обсудим?»