GoLang (обычно сокращенно до Go
) — это новейший язык, который каждый хочет изучать и использовать
. В этой статье я познакомлю вас с языком, его возможностями, возможностями и тем, стоит ли вам заботиться о Go или нет.
Почему Go был создан
Go не так нов, как вы думаете. Его происхождение связано с внутренними проектами Google в 2007 году, до его публичного выпуска в 2009 году. Поворотным моментом для проекта стал выпуск версии 1 в марте 2012 года, с целями проекта, кратко сообщенного одним из создателей проекта в печально известной сообщение в блоге
Go был создан из-за разочарования существующими языками, подходящими для крупномасштабного и инфраструктурного программирования. Никакая опция не сочетает в себе эффективную компиляцию, выполнение и простоту программирования Выбор языка всегда был компромиссом по одному или нескольким из них.
Основные возможности Go (описанные ниже) способствуют его стабильности и эффективности, а язык был разработан так, чтобы быть максимально простым и без помех — начиная с современного взгляда, а не опираясь на десятилетия развития.
Кто использует Go?
Может показаться, что все говорят о Go, но его популярность спорна. Подобно Docker, растущая потребность в масштабируемых приложениях означает, что все говорят о нескольких новых модных технологиях. Это не значит, что они широко используются в производстве (пока). Отказ от ответственности в сторону, Go является восходящей звездой, и привлекает множество участников и известных сторонников. Определенно язык для изучения и оценки, но, возможно, не для того, чтобы преобразовать все ваши проекты в завтрашний день.
В крупномасштабных приложениях ни один язык не доминирует над всем стеком, но вот несколько хорошо известных проектов и компаний, которые используют Go в значительном количестве:
Особенности Go
Многие из причин, по которым Go выбирается для крупномасштабных, распределенных и сетевых приложений, обусловлены его набором функций.
Минималистичный дизайн
Go разработан с прагматичным, минимальным набором функций. Множество сложностей и посторонних понятий было удалено из C и повторно реализовано в Go. Например, язык имеет объектно-ориентированные концепции, но они лишены базовых основ.
Несмотря на это, Go был хорошо спланирован и способен выполнять сложные задачи — просто без больших накладных расходов на кодирование, к которым вы можете привыкнуть.
Статически Типизированный
Языки, разработанные для простоты, такие как JavaScript, позволяют динамически создавать переменные и не беспокоиться о назначении правильного типа значения этим переменным. Компилятор языка определит типы переменных, необходимые на основе логики вашей программы во время выполнения. Это приводит к гораздо более простому восприятию кода, но может привести к неэффективности выполнения и ошибкам — не только из-за этих накладных расходов обработки, но также из-за случайного неправильного назначения переменных.
Языки со статической типизацией, такие как Go, вынуждают программиста явно объявлять типы переменных, и код проверяется во время компиляции, чтобы увидеть, правильно ли используются переменные. Это может привести к более длительному (но более эффективному) процессу кодирования, но позволит раньше выявлять и устранять потенциальные ошибки и повышать эффективность за счет устранения этих динамических накладных расходов на проверку.
Вывоз мусора
Сборка мусора — это форма автоматического управления памятью для приложений. Его функция заключается в том, чтобы определить, какие объекты в памяти больше не требуются приложению, и освободить место для новых объектов. Другие ресурсы, такие как сетевые сокеты и дескрипторы базы данных, по-прежнему обрабатываются вручную.
скомпилированный
Такие языки, как PHP и JavaScript, интерпретируются , а инструкции выполняются напрямую через интерпретатор во время выполнения. Go — это скомпилированный язык, код которого сначала компилируется в машинный язык перед выполнением.
Скомпилированный язык обычно работает быстрее и эффективнее, но просмотр изменений кода — более длительный процесс, и для всех платформ, поддерживаемых вашей программой, потребуются отдельные и специально скомпилированные цели.
Go известен своим быстрым временем компиляции, что делает его почти сравнимым с интерпретированным языком для скорости разработки.
Большая Стандартная Библиотека
Стандартная библиотека — это набор библиотечных функций, доступных на разных языках программирования. Эти функции отдельно в библиотеке для импорта, когда ваш код требует их. Go имеет большую библиотеку пакетов , охватывающую такие функции, как сжатие, ввод-вывод, доступ к базе данных и многое другое.
Импорт пакета — это простое утверждение. Чтобы импортировать gif
image
import "image/gif"
Чтобы импортировать пакет image
import "image"
совпадение
Предназначенные для поддержки нескольких процессоров, сложных конвейеров ввода-вывода и распределенной инфраструктуры, функции параллельной обработки Go являются одной из его функций баннера и превосходят ее среди других языков. Используя концепцию channels
В самом простом случае запустите параллельные процессы, используя ключевое слово go
package main
import "fmt"
func PrintGreeting(greeting string) {
fmt.Println("Hello " + greeting)
}
func main() {
go PrintGreeting("World")
}
Он состоит из двух функций, которые запускаются одновременно, main
PrintGreeting
Это базовый пример, и для одновременных функций и связи между ними доступно множество других функций.
Обучение Go
Кривая обучения Go будет зависеть от вашего опыта программирования. Разработчики с фоном C найдут синтаксис похожим, но с добавлением упомянутых функций. Если вы работаете на веб-языке, это может быть сложнее.
Разработчики Go стремились создать язык, сочетающий простоту современных интерпретируемых языков, таких как Ruby и JavaScript, с надежностью традиционных
языков, таких как C. Если вы новичок в статической типизации и параллельных, основанных на потоках концепциях, возможно, быть начальной кривой обучения. Тем не менее, эти изменения парадигмы позволят вам улучшить общую практику программирования.
Учебные ресурсы
Вот несколько хороших ресурсов для начала:
- Начало работы с Go (Учебное пособие)
- Повышайте уровень своих веб-приложений с помощью Go (книга)
- Тур по Го (Учебное пособие)
И если вам не хватает ресурсов, проект Go поддерживает полный список учебных ресурсов .
Идем дальше
Конечно, в этом языке есть гораздо больше, чем можно описать во вводной статье, но вот некоторые более важные особенности Go.
Шаблонирование
Ни один современный язык не будет полным без возможности создания веб-страниц. Пакет html/template
Как смесь HTML и Handlebars, файлы шаблонов будут знакомы всем, кто использовал другие системы шаблонов. Например:
<h1>{{.Title}}</h1>
<p>{{printf "%s" .Body}}</p>
Каркасы
Когда новый язык становится популярным, люди создают для него фреймворки, чтобы уменьшить количество повторений и шаблонный код. Большинство платформ Go предназначены для веб-приложений и включают такие функции, как генераторы приложений, маршрутизация, поддержка MVC и ORM. Варианты включают в себя:
мобильный
Я намерен продолжить обсуждение этой темы в отдельной статье, но Go был перенесен на Android и iOS. Поддержка Android потенциально заложит основу для перехода от Java в будущем, но это чисто предположение. Если вы не можете дождаться, когда я закончу свою статью, вы можете найти более подробную информацию о мобильной поддержке здесь .
Вывод
По сравнению с другими языками программирования, Go — новый и молодой соперник. Как правило, это может привести к незаслуженному ажиотажу за незрелый продукт. Благодаря тщательному и разумному выбору, сделанному создателями языка, Go оправдывает обман и неизменно выполняет свои обещания.
Go не подходит для каждого приложения, которое вы выбрасываете, и будет излишним для многих проектов. Но если то, что я рассмотрел в этой статье, понравится вам, тогда… начните!
Извините, не смог устоять перед этим каламбуром! Если вы использовали Go, каков был ваш опыт?