Или почему будущее моего кода статически типизировано и скомпилировано. Примечание: крайнее занудство. Не применимо к «Bros», «okes» или «chinas».

Последние несколько месяцев я наконец с головой погрузился в го. Хотя я установил его и просмотрел пару руководств за последние несколько лет, до недавнего времени я не брал на себя никаких обязательств.

Зачем идти (Голанг)

Я проделал большую часть своей работы на стороне сервера за последние несколько лет с помощью nodeJS, будь то автономное приложение или набор бессерверных функций, это был надежный помощник в течение длительного времени.

Тем не менее, поиск странных, трудных для решения и тестирования ошибок во время выполнения устаревает вместе с зависимостями и накладными расходами среды выполнения, а также очень утомительной быстрой эволюцией языка, который на самом деле только начинает становиться на ноги с отправьте нам эру javascript es2015.

Сделав шаг назад, можно было бы справедливо аргументировать, что JS, узел и его экосистема не готовы к производству.

Создавая проекты с сотнями зависимостей даже для простого приложения, я обнаружил, что трачу слишком много времени на настройку каждого нового проекта из опасения, что зависимости, на которые мы полагаемся в плане некоторого здравомыслия, снова изменились. Несмотря на огромное сообщество, в том числе и меня, которое годами управляло всем этим в дикой природе, сделав шаг назад, можно было бы справедливо аргументировать, что JS, Nodejs и его экосистема на самом деле не готовы к производству. (🔥 🔥 🚒)

Хотя статическая типизация и компиляция могут показаться обузой, когда вы переходите с земли JS, преимущества, которые она дает вашему коду, неоспоримы. Мало того, что компилятор - ваш друг, гарантирующий, что все работает должным образом, но и типы вносят ясность в ваш код, что почти похоже на дзен. Кроме того, возможность компилировать двоичные файлы для нескольких архитектур, которые запускаются без использования среды выполнения или виртуальной машины, освобождает.

Помимо упомянутых мною более мягких экспериментальных аспектов, Go лаконичен и доступен, радикально превосходит node и многие другие языки в отношении производительности, предоставляя вам мощные инструменты, такие как простые в размышлениях о параллелизме и параллелизме. Не говоря уже о невероятной стандартной библиотеке и встроенных инструментах, которые серьезно увеличат вашу производительность и сожгут старый велосипедный навес раз и навсегда.

Пакеты, Пакеты, Пакеты

Node имеет множество удобств и, безусловно, имеет свое место. Хотя, хотя экосистема вокруг него - невероятная сила узла, это также проклятие. Go также имеет сильную экосистему и растущее сообщество, но общее качество модулей, инструментов и микро-фреймворков с открытым исходным кодом намного выше, я считаю, отчасти из-за инструментов исключительного качества кода, встроенных в язык. , и типы разработчиков, которых это привлекает.

Поскольку язык делает линтинг, тестирование, документирование и тестирование вашего кода невероятно легкими, сообщество уделяет большое внимание качеству кода и, кажется, несколько осуждает их отсутствие в проекте для публичного использования. Я считаю, что это отличная культурная черта сообщества, которая помогает как младшим, так и старшим разработчикам.

Помимо отличной экосистемы с открытым исходным кодом и растущего сообщества, go фокусируется на «парадигме пакетов», что делает написание и организацию хорошо протестированных (действительно) микропакетов и программ очевидным архитектурным подходом. Это дает нам почти бесплатно этот слишком неуловимый, высокомодульный и многократно используемый код, управляемый соглашениями языка.

Откуда это?

Go был разработан в Google примерно в 2007 году, как ни странно, сразу после выпуска первых многоядерных процессоров. Он был разработан для решения многих масштабных инженерных задач, с которыми столкнулся Google, а также для использования преимуществ новой волны в технологии микросхем. Go был открыт в 2009 году и достиг версии 1 в 2012 году.

По словам Тодда МакЛеода, команда, стоящая за языком программирования Go, - это светила информатики, в том числе Роберт Гриземер, Роб Пайк и Кен Томпсон, которые коллективно ответственны за некоторые важные инновации. и такие технологии, как ОС Unix, различные языки программирования и UTF-8.

узнайте больше об истоках языка программирования Go на странице https://golang.org/doc/faq#Origins

Идет, идет, уходит?

В отличие от многих, кто писал похожие мнения о своем первом знакомстве с Go, я не оставляю node или es6 позади. Вместо этого я добавляю мощный инструмент в свой набор хитростей.

Я написал это, потому что эта встреча произвела на меня сильнейшее впечатление, и Го оправдывает эту шумиху. Если вы ищете новый универсальный язык программирования, я надеюсь, что это вдохновит вас на то, чтобы подумать о Go.

Меня зовут Пол ван Зил. Я главный консультант Sigma Digital, небольшой специализированной децентрализованной группы по дизайну и разработке продуктов. Если вы ищете партнера, который действительно сможет реализовать ваш следующий инновационный проект, поможет вам и вашей команде разработать игру или просто хочет поздороваться, свяжитесь с нами здесь: paul [at] sigmadigital.io