Проще говоря, Golang лучше всего подходит для серверной части веб-приложения или веб-сайта. Есть много причин, по которым это так, поэтому давайте углубимся, но прежде чем мы это сделаем, давайте рассмотрим несколько быстрых определений.
Golang, также называемый Go, был разработан Google в 2009 году. Этим разработчикам нужен привлекательный, гибкий и эффективный язык, который было бы проще читать и с которым работать, чем с C и C++, на которые они полагались в то время (для своих целей). тревога).
Так родился Голанг. Go — это статически типизированный язык с синтаксисом, унаследованным от C, но с дополнительными полезными функциями, такими как сборка мусора, безопасность типов и параллелизм.
Хорошо, теперь давайте посмотрим, что такое бэкэнд и внешний интерфейс. К счастью, я уже написал статью на тему бэкенд против фронтенда, так что просто процитирую себя:
Что такое «внешний интерфейс»?
Внешний интерфейс программы — это то, что видит пользователь. Если вы посмотрите на веб-сайт, даже такой простой, как страница входа в систему, все, что вы видите на странице, считается интерфейсом. Код интерфейса определяет стиль и макет страницы.
Что такое «внутренняя часть»?
Серверная часть программного обеспечения существует за кулисами. После того, как вы ввели свое имя пользователя и пароль, приложение должно проверить правильность информации. Ваш профиль и пароль сохраняются на сервере, а серверная часть отвечает за проверку вашего входа в систему и сообщает клиентской части об успешном входе.
Почему Go лучше всего подходит для внутреннего программирования? 🔗
Если вы что-то знаете о программировании, возможно, вы уже начинаете понимать, почему Go лучше всего подходит для серверной части. Если нет, напишу здесь:
- В Go есть встроенная функция параллелизма, называемая горутинами. Это означает, что он может работать в многозадачном режиме, что важно для реализации высокопроизводительных серверов и сетевых приложений.
- Сеть. В Go есть надежная стандартная библиотека, которая предлагает поддержку множества общих сетевых задач, таких как обработка HTTP и шифрование TLS (Transport Layer Security).
- Go работает быстро. Go известен своим быстрым временем компиляции и эффективной производительностью во время выполнения, что отлично подходит для серверных приложений, которым необходимо обрабатывать большой объем запросов.
Google активно использует Go для поддержки своей серверной инфраструктуры. Он хорош для серверной разработки, потому что для этого он разработан.
Можно ли использовать Go во внешнем интерфейсе? 🔗
Я имею в виду, что если вы действительно хотите, вы можете использовать Go в качестве языка интерфейса, точно так же, как вы можете использовать молоток, чтобы закрутить винт.
Один из способов использования Go во внешнем интерфейсе — скомпилировать его в WebAssembly (Wasm). WebAssembly — это двоичный формат, который поддерживается современными веб-браузерами и позволяет разработчикам запускать в браузере код, написанный на языках, отличных от JavaScript. Когда дело доходит до написания внешнего кода, по крайней мере, в Интернете, есть только два варианта:
- JavaScript
- Веб-сборка (WASM)
Web Assembly все еще новая, но она работает. Итак, если вы действительно хотите писать интерфейсные приложения на Go, вы можете это сделать, но я бы сказал, что вам лучше подождать, пока инструменты немного созреют.
Короче говоря, отпустите (каламбур) эти мечты и используйте Go в том контексте, где он сияет: как инструмент интерфейса командной строки и как язык бэкэнда.
[Использование Go для внешнего интерфейса] заставит вас плыть против неумолимого течения, если вы действительно хотите чего-то добиться. Конечно, если вы выполняете работу только ради обучения и исследований, вам больше по силам!
Для чего использовался Go? 🔗
Go — это прежде всего внутренний язык, который использовался для создания компонентов в:
- Докер. Демон Docker, система управления контейнерами, построен с помощью Go.
- Кубернетес. Плоскость управления Kubernetes, являющаяся внутренним компонентом, управляющим кластером серверов, построена с помощью Go.
- Терраформ. Бэкэнд Terraform, который является компонентом, который управляет изменениями инфраструктуры и применяет их, написан на Go.
- ИнфлюксБД. Сервер InfluxDB, являющийся внутренним компонентом, который хранит и извлекает данные, построен на Go.
И, конечно же, собственный прародитель Go Google использовал Go для создания или поддержки:
- Google App Engine: Google App Engine — это платформа облачных вычислений, которая позволяет разработчикам создавать и развертывать веб-приложения и мобильные серверные части. Среда выполнения App Engine, которая отвечает за выполнение приложений и обработку запросов, построена на Go.
- dl.google.com: dl.google.com — это веб-служба, предоставляющая доступ к загрузкам программного обеспечения Google, включая Chrome, Android Studio и различные другие инструменты. Серверная часть dl.google.com, которая отвечает за обслуживание загружаемых файлов и отслеживание статистики загрузки, обслуживается Go.
- gVisor: gVisor — это изолированная программная среда безопасности с открытым исходным кодом, которая позволяет разработчикам запускать ненадежный код в безопасной среде. gVisor создан с помощью Go.
- Google Cloud Functions: Google Cloud Functions — это платформа для бессерверных вычислений, которая позволяет разработчикам запускать код в ответ на события. Среда выполнения облачных функций, отвечающая за выполнение функций и обработку запросов, построена на Go.
Какие фреймворки Go следует использовать? 🔗
Здесь я мог бы рассказать о любом количестве популярных фреймворков Go:
- Echo — это высокопроизводительный минималистичный веб-фреймворк.
- Gin претендует на звание самого быстрого полнофункционального веб-фреймворка
- Buffalo даже предлагает фронтенд пайплайн
А если честно? Лучшим ответом может быть просто нет. В большинстве случаев вам, вероятно, вообще не следует использовать фреймворк.
Go позиционирует себя как простой, быстрый и мощный язык. Go frameworks часто просто золотят лилию. Они обещают блестящие инструменты, которые предлагают готовые функции, работающие от батареек. Интересно, что Go не нуждается в большинстве этих функций.
Фреймворки супер полезны во многих случаях. Однако, если вы просто создаете простые CRUD-приложения на Go, вам, вероятно, это не нужно. Стандартная библиотека Go настолько переполнена веб-инструментами, что уже похожа на веб-фреймворк. Кроме того, использование Go Web Framework означает, что вы можете быть менее эффективными и посвятить себя проектным решениям, которые вам, возможно, еще не нужно принимать.
Но я думал, что мы всегда используем фреймворки!?! 🔗
Давайте посмотрим на Python как на иллюстративный контрпример. Разработчики Python часто по праву выбирают такие фреймворки, как Django и Flask, потому что язык сам по себе не предоставляет богатых сетевых возможностей. Python оставляет эти детали реализации для реализации каждого фреймворка.
Большинство веб-фреймворков Go активно скрывают объекты http.Response и http.Request в обмен на простоту использования. Фактически это означает, что когда вы используете фреймворк с Go, вы надеваете большую блестящую коробку поверх внутренностей того, над чем работаете. Это выглядит великолепно, но когда оно перестанет работать, вам будет сложнее понять, почему и как это исправить.
Короче говоря, новые разработчики Golang часто интересуются фреймворками по той же причине, по которой им нравится Go: фреймворки обещают быть без излишеств, простыми и традиционными. Но в Go уже есть все эти вещи.
Закончу отличной цитатой опытного Go-программиста Пэнси:
Я программирую на Go больше года, и мне не удалось внедрить более интуитивный фреймворк, чем собирать пакеты самостоятельно.
Стоит ли использовать Go только для серверной части? 🔗
Go — отличный язык по многим причинам: он быстрый, простой и, как я уже говорил выше, это универсальный вариант. Его очень легко освоить, и он приносит удовлетворение, создавая вещи.
Вот почему я рекомендую изучить Go независимо от того, на каком этапе вашего пути программирования вы находитесь. По тем же причинам, которые делают Go отличным базовым языком, Go — просто хороший язык для изучения, и точка. Даже если вы планируете полностью перейти на фронтенд в своей карьере программиста, никогда не помешает иметь гибкость, чтобы иметь возможность кодировать на Go.
Если вы хотите начать изучать Go, я рекомендую вам пройти наш курс Изучение Go.
Изучите бэкенд, не тратя 10 000 долларов
- Пишите современный код на JavaScript, Python и Go
- Создавайте и развертывайте реальные серверные проекты в своем личном портфолио
- Конкурировать на рынке труда, освоив основы компьютерных наук
Нашли проблему в этой статье?
Первоначально опубликовано на https://blog.boot.dev 19 декабря 2022 г.