Go что это за программа нужна ли она

Закрыт. На этот вопрос невозможно дать объективный ответ. Ответы на него в данный момент не принимаются.

Хотите улучшить этот вопрос? Переформулируйте вопрос так, чтобы на него можно было дать ответ, основанный на фактах и цитатах.

Закрыт 7 лет назад .

  • Но что на нем пишут?
  • И что можно написать?
  • Стоит ли его учить?
  • Или он скоро исчезнет?

Отслеживать
33.1k 24 24 золотых знака 125 125 серебряных знаков 214 214 бронзовых знаков
задан 12 апр 2013 в 15:49
2,254 5 5 золотых знаков 30 30 серебряных знаков 53 53 бронзовых знака
12 апр 2013 в 17:19
Довольно интересный обзор из-за которого я стал изучать erlang, а не go: habrahabr.ru/post/145796
15 июн 2013 в 13:02
Годовалой давности…
15 июн 2013 в 13:05

15 июн 2013 в 13:15
Защитил не потому что вопрос хороший (он плохой) а чтобы не собирать новые ответы.
13 ноя 2015 в 20:11

5 ответов 5

Сортировка: Сброс на вариант по умолчанию

Что на нём пишут?

И что можно написать?

Максимальная оптимизация windows 7. Как повысить FPS в играх?

Что угодно. На самом деле что угодно, но, в силу своих плюсов он очень популярен для разработки сервер-сайда (бэкенда).

Вопрос риторический. С точки зрения покупаемости, готовый спрос на него почти отсутствует, в силу молодости и нераскрученности. Так что смысл в нём есть:

  1. Для себя, своего стартапа
  2. Продавать готовый продукт
  3. Выполнить заказ, если заказчику подходят плюсы этого языка (придётся объяснять/убеждать)

Как уже писали — исчезнуть он не может, т.к. OpenSource. Т.е. никто не отберёт у Вас написанное на нём, максимум будет ухудшаться развитие/поддержка, во что слабо верится, т.к у языка очень существенные плюсы.

Плюсы или «почему я выбрал Go»

Производительность

По производительности для веб (готовые фреймворки) Go проигрывает только Java и С/С++ и наравне с node.js. При этом потребление ресурсов существенно ниже, чем у Java и производительность намного больше, чем у Python/Ruby.

Многопоточность

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

Простота

Он очень прост в освоении. Мне кажется даже элементарен, особенно если есть основа из Python/JavaScript. Есть также довольно занятная модель наследования, которая, как мне кажется более прозрачна чем классическое ООП, но немного непривычна поначалу.

Надёжность

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

Скорость компиляции

И, наконец, одна из главнейших фишек — не стоит бояться типизации и компиляции. В 145% случаев Вам не придётся объявлять тип переменой в коде — он задаётся автоматически при присвоении ей значения. Объявлять переменные заранее также не нужно.

Создание сайта на Go в одном видео! Разработка программ на Golang

Ну и компиляция — главный конёк. Время компиляции — это то, на что делается главный упор при разработке языка. Оно не отличается от времени запуска интерпретируемого языка. Т.е. система, написанная на go из нескомпилированных исходников запускается примерно с такой же скоростью как система аналогичной сложности, написанная на интерпретируемом языке.

Итого

Т.е. мы имеем плюсы из двух миров — скорость компиляции/запуска интерпретируемого и надёжность компилируемого языков. Плюc сверху производительность, мультипарадигменность (можно писать в функциональном стиле), простота и низкое ресурсопотребление.

Подходит ли это Вам — решать не мне. Мне — подходит, и я считаю его очень хорошим выбором для высоконагруженных сервисов (и не только).

Источник: ru.stackoverflow.com

Зачем и кому нужен Go?

Pin It

Так вышло, что последнии 2 года я довольно плотно работаю не только с давно привычными мне C++ и Python, но и Go. Как мне кажется, 2 года довольно приличный срок для того чтобы сформировать свое мнение о каком-либо инструменте, так что, пора им поделиться. Так же, по моим ощущениям, про Go обычно пишут люди из небольших компаний и стартапов, я же буду писать с точки зрения разработчика из матерой корпорации специализирующейся на разработке ПО.

Когда Go не нужен и не полезен

Начнем с самого важного: при каких условиях этот язык скорее вреден.

  1. У вас есть высококлассная команда C++ разработчиков и толковый архитектор. В C++ есть всё что есть в Go и на много больше. При наличии действительно высококлассной C++ команды (я в живую за 17 лет работы с C++ такой команды не видел, отдельные разработчики – да, команда – нет) Go банально не нужен так как более дорог с точки зрения производительности разработчика.
  2. Необходим быстрый и отзывчивый UI и/или Electron-подобные UI-решения не устраивают. Так как язык задумывался как серверный, то никто всерьёз биндингами к существующим UI-библиотекам не занимается. В итоге, что-то есть, но рассматривать не Web-UI для Go приложения было бы довольно большой промашкой.
  3. У вас очень серьезные требования к производительности приложения и микросекунды имеют значение. Хотя Go и компилируемый язык, у него есть не только автоматическое управление памятью, но и очень некачественный генератор кода. В этом довольно просто убедится даже на примитивных примерах сходив на godbolt.org.
  4. У вас дремучий энтерпрайз с Oracle с сопутствующими технологиями. Go имеет относительно хорошую поддержку SQLite, MySQL, Postgres и… и всё.
  5. Вы занимаетесь разработками связанными с машинным обучением. Тут почти все заточено под Python с низкоуровневыми оптимизациями на C/C++ и CUDA, Go просто бесполезен так как сильно проигрывает Python в гибкости языка с одной стороны, и C++ в качестве сгенерированного машинного кода с другой стороны.
  6. У вас имеется много кода на C++, с которым необходимо состыковаться. В Go, конечно, есть интеграция с C и она очень даже хороша, но это никак не упрощает жизнь при условии наличия большой кодовой базы на C++, с которой нужно явно линковаться.
  7. Драйвера. Тут я думаю всё довольно очевидно.

Я уверен что если основательно подумать, то можно еще пунктов будет добавить, но в качестве некого списка “тут Go точно не подойдет” вполне сойдет.

Для чего нужен и полезен Go

На Go отлично можно писать практически всё за исключением перечисленного в “Когда Go не нужен и не полезен”. На Go можно и нужно писать Web-сервисы. У Go нет тяжелого рантайма по сравнению с JVM-языками и нет необходимости отдавать исходники пользователю, как это будет в случае с Python, поэтому на нём довольно удобно писать приложения для конечного пользователя начиная от демонов, заканчивая UI, заниматься кроссплатформенной разработкой.

У нас на Go написано сейчас практически всё: кроссплатформенный демон/сервис работающий на Windows, Linux, macOS. Набор не менее кроссплатформенных утилит командной строки ну и конечно сервис в облаке. Так как мы попадаем под пункт (6) из моего списка, то у нас есть вспомогательное приложение на C++ для интеграции всего, что нельзя дешево и/или эффективно затащить в Go и отображение Web-UI.

Читайте также:
Кафка что это программа

Общаясь с коллегами из других компаний замечаю что Go бодрыми шагами покоряет не только стартапы, но и матерые корпорации и банки. Сервисы заказа такси (азиатский аналог Uber), блокчейны, обработка и фильтрация трафика, внутреннии порталы и многие другие задачи отлично ложатся на этот язык.

Для кого нужен и полезен Go

Несмотря на довольно жуткий синтаксис и отсутствие как макросов так и шаблонов, Go очень простой язык с большим количеством искусственных ограничений на варианты написания кода. На первый взгляд это плохо, например я именно так подумал когда только столкнулся с языком, но это только на первый взгляд. Дело в том, что примитивность языка дает возможность автоматизировать контроль качества кода, возможность легко писать генераторы кода, статистические анализаторы, юнит-тесты. Язык имеет довольно хорошую встроенную защиту от дурака и запрещает всё потенциально опасное: циклические зависимости, неиспользуемые импорты и переменные, имеется единственно верный стиль форматирования кода и т.д. Практически недостижимое для C++ разработчика 90% покрытие кода юнит-тестами становятся чем-то банальным при работе с Go.

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

Всё это вкупе позволяет сильно снизить планку требований к разработчикам и при этом продолжая получать качественный продукт без падения скорости разработки. А при том взрывном росте IT что наблюдается на данный момент, это очень многого стоит. Лично я бы и дальше ожидал значительного увеличения количества проектов на Go.

Похожие заметки:

  1. C++ не нужен?
  2. Зачем пишут OpenSource приложени и что же можно написать…
  3. Haskell – это прекрасно, но…

Источник: sysdev.me

Go: хороший или плохой

У GoLang много хейтеров. Но малец растёт и развивается с завидной скоростью. И если ещё несколько лет назад его можно было назвать слабым, то сейчас у него есть все шансы стать номером один в web-разработке, финансовом секторе или облачных платформах.

3714 просмотров

Конечно, Go не совершенен. Но давайте по порядку.

Преимущества Go

Сейчас Golang находится на 13 месте в рейтинге языков программирования TIOBE. Очевидно, что он не вытеснит С/С++ или Python, но у него есть несколько крутых преимуществ.

Любая статья о преимуществах Golang начинается с этого пункта. Пусть он и очевиден. Go появился благодаря тому, что ребята в Google решили упростить процесс разработки системного, сетевого и серверного софта. У Go очень простой синтаксис, и в этом его главная особенность. У него нет классов, поддержки наследования, исключения, аннотаций и т.д.

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

Правда, простота может быть и минусом. Но об этом позже.

Компиляция на С/С++ — это боль всех разработчиков. С Go всё по-другому. Здесь можно держать код “чистым”. Переменные, которые не используются, считаются ошибкой компиляции. При помощи программ здесь решается большая часть проблем форматирования.

Go спроектирован с учётом приоритетности задержки и избегания больших пауз.

Многопоточное программирование

Это ещё одна особенность языка. Благодаря примитивам, заложенным в основу (горутинам и каналам), можно легко создавать многопоточные программы.

Есть дженерики

Через дженерики можно делать разные сложные вещи. Эта фича сильно влияет на производительность.

У Go большое комьюнити

Если вам не понравится или не подойдёт инструмент, то вы почти наверняка сможете найти похожий, более доработанный. Вы можете пользоваться различными библиотеками, в том числе взаимодействовать с библиотеками языка С.

Стандартная библиотека

Она особенно хороша для разработки сетевых протоколов или API. Шифрование, HTTP-клиент и сервер, отправка писем, сжатие, форматы архивирования и многое другое.

Go позволяет оптимизировать работу с базой данных

А база данных очень страдает при больших нагрузках. Особенно, если допущены неоптимальные запросы.

Статическая типизация

Благодаря этой фиче снижается риск допустить ошибку. Да, приходится обновлять тип для каждой переменной. Но очень скоро к этому можно привыкнуть и понять, что так даже лучше.

Недостатки Go

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

Мало документации

Строго говоря, по Go очень мало литературы, а в официальной документации перечислены методы без описания.

Go не сможет полностью заменить язык С

Несмотря на то, что он создавался как аналог С, он может заменить его только в некоторых задачах. Именно поэтому разработчики С переходят на Golang реже, чем с Python или Rust. Go сейчас — это, скорее, язык для web-разработки.

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

Перспективы

А марте состоялся релиз Go 1.18. Одно из главных обновлений — появилась поддержка дженериков. Об этом разработчики просили уже несколько лет. Команда обещает, что в последующих релизах внедрят дополнительную поддержку для более серьезных сценариев использования.

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

А ещё теперь Go работает на 20% быстрее.

Прошло 15 лет с момента появления Golang на свет, и за это время он сильно изменился. Идея заменить С отошла на второй план, теперь это самостоятельный язык с упором на web-разработку.

15 комментариев
Написать комментарий.
Развернуть ветку

А вот это автор поставь вообще себе в рамку

Go позволяет оптимизировать работу с базой данных

Развернуть ветку

Как будто написали в 2015 и чуть-чуть подождали

Развернуть ветку

Вопрос с Go, конечно, интересный. Но его нельзя обсуждать в таком контексте. Во-первых, ровно то же самое говорили года 3-4 назад. Во-вторых, преимущества и недостатки у Go немного другие. Про неиспользуемые переменные вообще повеселило, зла особого от них нет, и в С++ их сам компилятор потом исключит при оптимизации.
Пихать Go в DevOps плохая идея, это компилируемый язык, а там лучше использовать транслируемые языки (скрипты). Виртуальные машины и байт-код придумали не от нечего делать, скажем честно.
Говорить об оптимизации работы с базами данных в Go, это вообще дичайший бред. То есть мы хотим, чтобы сейчас распределенная сеть накинулась на нашу БД и заставила её большую часть времени запросы распаковывать и транзакции готовить? Заваливая её бестолковыми мелкими запросами, не давая ни планы оптимизации составить, ни статистики набрать? Круто, нечего сказать.
Если я правильно помню, Go создавали для параллельного и распределенного программирования, вводя специальные конструкции языка, чтобы обычный разработчик с параллельным программированием мог справиться. Вот это хорошее достижение и родная для Go ниша. И большие объёмы данных, за счёт распределенной сети, на Go неплохо обрабатывать.
Но это не значит, что на Go нужно писать интернет-магазины, мобильные приложения и микросервисы отправки SMS-сообщений (в смысле дергания по API SMS-провайдера).
P.S.
И вряд ли кто вообще рассчитывал, что Go заменит язык С, который любят «железячники» и те, кому приходится работать на низких уровнях. Go вообще не для этого создавался.

Читайте также:
Правовая охрана программы данных что это

Развернуть ветку
Да, приходится обновлять тип для каждой переменной.

Объявлять может быть?

Развернуть ветку

Очередной набор бреда.

Во-первых, кол-во wtf-деталей зашкаливает (гуглить 50 Shades of Go и прочие перлы)
Во-вторых, практика показывает что это язык где изящны только хело ворлды. Портянка из байтодрочки io ридеров и эмбедед страктов через пару месяцев абсолютно нечитабельна даже среди гоферов ее написавших.

у него есть все шансы стать номером один в web-разработке

Держи губу шире. Язык со статической типизацией никогда не станет «номером один в web-разработке», где 80% задач всегда — тупорылые крады. Как-то видел как гофер три дня херачил костыль на рефлекте из-за нечетких типов внешней апишки, что на пыхопитоне бы делалось за час. А сколько сожженых человекочасов я лицезрел при сношении программистов с пойнтерами — с бесконечными референсами диреференсов — можно целую книгу писать.

Многопоточное программирование. Это ещё одна особенность языка.

Чего-чего? Многопоточка есть везде, при желании — даже в пыхе (pthreads). Но для 99% задач веба достаточно асинхронности в один поток — а тут инструментов и подходов еще больше.

Go позволяет оптимизировать работу с базой данных

Что это значит? Там какое-то другое TCP соединение с мускулом нежели в питоне, «оптимизированное»?

Источник: vc.ru

Что делает Go таким необычным?

Обложка: Что делает Go таким необычным?

Сегодня Go — один из самых востребованных языков программирования. Вот секретный ингредиент его успеха.

Введение

Очевидно, что языки программирования можно рассматривать как основной инструмент в арсенале каждого разработчика. Мы склонны считать себя в некотором роде особенными. То есть формируем сообщества, пишем статьи, делаем видео на YouTube, маскоты и, что более важно — мемы. Шучу. Но всё же трудно отрицать существование некой тесной, почти личной связи между нами и этими абстрактными инструментами.

Как вы, наверное, догадываетесь, эта статья одна говорит о распространённом, новаторском и довольно необычном языке программирования под названием Go. Чтобы соответствовать Go — быть простым, полезным и нетривиальным — я не буду пересказывать то, что уже написано другими. А скорее попытаюсь сформировать новое видение — проанализировать дизайн, историю появления и особенности языка Go, а также, наконец, рассказать, где его лучше использовать.

Краткий обзор

Вот тезисы, которые дадут прочувствовать Go:

  • Go отличается от других языков, но всё ещё похож на них;
  • Go молодой, но уже широко распространён;
  • Go лёгкий, но мощный;
  • Go простой и одновременно сложный;
  • Go работает сам по себе — за исключением некоторых случаев;
  • Go — это и язык, и идея.

Теперь давайте рассмотрим каждый из пунктов подробно.

Контекст создания

Чтобы понять природу Golang, давайте взглянем на контекст создания. Однажды компания Google столкнулась с проблемами, которые не получилось решить с помощью готовых инструментов. Так что Go родился благодаря сильной потребности в изменениях:

Цели проекта Go состояли в том, чтобы сделать разработку программного обеспечения в Google не такой неуклюжей и медлительной. И вместе с тем сделать сам процесс более продуктивным и масштабируемым. Этот язык разработали люди, которые пишут, читают, отлаживают и поддерживают большие системы, — Роб Пайк, создатель Golang.

Как уже было сказано, Go разрабатывали, с учётом набора пока нерешённых задач. А также изначально вложили в него базу лучших функций, взятых из C, Pascal, Modula и Oberon. К тому же создатели ориентировались на полезные фишки Python, C++, Java и т. д. — критику которых Go был призван устранить.

Ограничения языка

Речь никогда не шла о копировании того, что уже было. Скорее о том, чтобы придумать новый способ решения проблем. Иногда для того, чтобы решить вопрос, требуется изучить старые, неэффективные методы и отказаться от них. И потому важные особенности языка Go возникли из его основных ограничений. Например:

  • простой и чистый синтаксис сделал язык читаемым и лёгким для изучения;
  • строгая, безопасная и статически типизированная семантика подошла для обработки статических ошибок во время компиляции и ускорила процессы выполнения и сборки;
  • наличие сборщика мусора, притом очень эффективного, помогло решить проблему небезопасного доступа к памяти и одновременно обеспечило высокую скорость исполнения и эффективное использование ресурсов;
  • отсутствие общих характерных черт и сахарного синтаксиса сделало язык минималистичным, точным и простым. В Go только один способ решения конкретной проблемы и один стиль использования этого самого способа. Это ускоряет разработку, отладку, обзор и тестирование процессов и делает обслуживание гораздо проще
  • отсутствие общих принципов объектно-ориентированного программирования, таких как наследование и классы пригодилось, чтобы ответить на критику ООП, которая распространяется всё быстрее после появления функционально-ориентированных языков — впрочем, и сам Go частично является таковым, будучи мультипарадигмальным языком. К тому же, это способствует ортогональности языка.
  • наличие вендоринга (заменённого модулями с 1.11), надёжной системы управления зависимостями и ассемблера, чрезвычайно близкого к двоичному представлению, позволило добиться поразительно быстрых сборок, и сохранить компактность и лёгкость. Это отличное сочетание для проектирования архитектуры микросервисов и для облачной разработки в целом.
  • отсутствие оператора исключений try-catch. Это своеобразный, спорный и критикуемый способ работы с ошибками, но в Golang он подошёл для многого: предотвращает возврат ошибок, сохраняет скорость и эффективность потока управления, сохраняет код чистым и читабельным, делает процесс написания и отладки кода проще.

Как видим, разработчикам Go удалось придумать эффективную систему языковых ограничений и получить набор отличительных характеристик и возможностей. Эта впечатляет: используя каждое из ограничений, язык приходит не к одной, а сразу к нескольких характерным чертам.

Должен отметить, что метод определения особенностей языка Go на основе ограничений, к которому я здесь прибегаю, основан не только на цитатах его создателей, блогах и речах, а также официальной документации и статьях других авторов. По сути, это личный способ понимания и описания природы и уникальности Golang. Конечно, можно согласиться, либо не согласиться с моей точкой зрения и любить или ненавидеть этот язык абсолютно нормально. Более того, я призываю не верить наслово, а провести собственное исследование этой темы.

DevOps / SRE-инженер

DevOps / SRE-инженер Ренессанс Кредит , Москва, можно удалённо , По итогам собеседования

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

Многие новички, переходят на Go и требуют включить особенности из языков, которые они уже знают. Но эти особенности не принадлежат Go, и язык фиксирован. Добавление новых функций не сделало бы его лучше — просто больше. Он остаётся интересным, благодаря ограниченности, — Роб Пайк, создатель Golang.

Особенности языка Go

Ограничения не означают, что Go неполный или не пригоден для выполнения некоторых задач. Так можно назвать все программирования бесполезным — ведь «почему бы не пользоваться языком ассемблера?». У Go есть свои особенности. Дело в том, для простоты он сознательно отказался от функций, которые усложняют язык, но не решают конкретные проблемы. По сути, это и сделало Go своеобразным.

Читайте также:
R g catalyst что это за программа

Так что же насчёт функций, которые сумели стать частью Go? Ну, на самом деле, правило преднамеренной простоты действует и на них. Я имею в виду, создатели Golang проделали невероятную работу чтобы сделать нечто лёгкое в использовании, на первый взгляд, но сложное «под капотом».

Go сложен. Это, на самом деле, одна из самых сложных вещей, над которыми я когда-либо работал, и всё же она кажется простой… Это потребовало долгого проектирования, обдумывания, труда, связанного с реализацией, и доработок. Простота — это искусство скрывать сложность! — Роб Пайк, создатель Golang.

Давайте посмотрим на «простые» вещей в Go:

  • Сборщик мусора — это, по сути, самая простая функция Go, ведь у неё нет интерфейса управления. Тем не менее, она же и самая сложная — ведь сборщик обеспечивает полную безопасность памяти, сохраняя при этом чрезвычайно высокую скорость исполнения программ и обеспечивая удивительную эффективность использования ресурсов. Браво создателям!

Да Go не самый быстрый язык программирования — ведь у нас есть Rust, Julia, C++и C. Но у них нет сборщика и поэтому они даже близко не так просты, как Go. Также часто лёгкость достигается благодаря следующей фишке.

  • Параллелизм, или горутины — простая и прямая реализация модели параллелизма. Создание нового подпроцесса, на самом деле, настолько легко, что кажется, будто вы вообще не сделали. Всё, что нужно — это набрать go . Это просто, и проще быть не может, верно?
  • Интерфейсы, несомненно, узнаваемая особенность Golang. Их уникальное дизайнерское решение само по себе отвечает на большую часть критики ООП, обеспечивает ортогональность и истинную компонентную архитектуру, будучи лишь бесполезным набором методов, который всё ещё скрывает хитроумные дизайнерские трюки.
  • Пакеты. Проще говоря, они потрясающие. Работают плавно, без сюрпризов, и их очень приятно использовать, особенно для импорта. Используя go get , ими можно пользоваться практически из любого места: Gopkg, GitHub, GitLab, BitBucket, даже из собственного размещённого репозитория — с тех пор как появился путь vanity import. Но думаю, вы уже знаете, как это делается… Да, они, на деле, сложно устроены. Это позволяет им обеспечить компонентизацию, модульность, масштабируемость, совместное использование, скрытие данных и изоляцию и так далее.
  • Стандартная библиотека Go содержит массу удобных функций, что доказывает: Golang — это, на самом деле, многофункциональный язык. Уникальными функции делает способ реализации. Например, с помощью import «net/http» вы сразу получаете вышеперечисленные функции в, высокопроизводительном, безумно простом в использовании и стабильном веб-сервере.
  • Отражение не так легко использовать, как другие фишки в этом списке, поскольку не является простым процессом в любом языке программирования. Тем не менее Go всё ещё удаётся реализовывать его относительно удобно для пользователей.

Отражения иногда можно намеренно избегать в пользу другой парадигмы Golang — кодогенерации, которая с точки зрения идеологии Go более ясна и эффективна. Я лично думаю о ней как о «белой магии» и, конечно же, буду отстаивать её преднамеренное использование. Ведь иногда она открывает волшебные возможности, хотя и не так эффективна.

Ну вот и всё. Набор функций Golang — результат продуманного решения серьёзной проблемы языкового дизайна — выбора только правильных функций без усложнения и языка и с сохранением ясности.

Простоту очень трудно спроектировать. Но если сделаете это правильно, получите то, что легко использовать. И успех Go это доказывает! — Роб Пайк, создатель Golang.

Область Применения

Итак, теперь ясно, что у языка Go есть некоторые особенности. Также он прост в использовании, быстр и продуктивен. Но в каких областях он особенно полезен? Что можно сделать благодаря ему?

Некоторые классические языки программирования, такие как C# и Java, за время существования сумели пробраться практически во все области разработки приложений. Так что конкурировать с ними сложно. Но Go и не пытается это сделать. Его создали с конкретной целью, и он по определению не является языком общего назначения.

Однако, на самом деле, цель, «вроде как, одна».

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

Но на этом процесс обобщения Golang не закончился. Сообщество становится больше, расширяет область использования языка и продолжает создавать новые инструменты, пакеты, фреймворки, драйверы, API, генераторы кода и ещё более удивительные вещи, которые заставляют новых разработчиков верить, что Go действительно может стать их следующим основным языком. Совсем как в моем случае!

Давайте посмотрим, на что способен Go:

  • облачная разработка веб-сервисов, особенно микросервисов с помощью Go kit, Micro, Gizmo, Kite, Goa, Caddy;
  • разработка REST API с помощью Gin, Martini, Revel, Gorilla, Beego;
  • разработка RPC API с помощьюg RPC, Twirp, Spiral, Gorilla;
  • разработка API GraphQL graphql-go, gqlgen, thunder;
  • разработка бессерверных функций с помощью фреймворков для бессерверных приложений, Google Cloud Functions, Sparta, Gordon;
  • разработка веб-интерфейса (WebAssembly) с помощью Hugo, Vugu, TinyGo, Vecty;
  • робототехника, IoT и разработка встраиваемых систем с помощью Gobot, Mainflux, TinyGo, EMBD;
  • разработка приложений CLI с помощью Cobra, cli;
  • машинное обучение и разработка искусственного интеллекта с помощью GoLearn, Gorgonia.

И некоторые не особенно очевидные случаи использования:

  • разработка мобильных приложений с помощью gomobile;
  • разработка настольных приложений с помощью Lorca, Wails, Fyne;
  • разработка игр с помощью Ebiten, Pixel, G3N;
  • разработка чат-ботов для Discord, Telegram, Slack, more;
  • развитие блокчейна и смарт-контрактов.

На данный момент сфера применения Golang явно больше ориентирована на облачное, веб- и системное программирование. Но благодаря энтузиазму, инициативности и активности сообщества Go неуклонно пробивает путь почти во все сферы IT-индустрии.

Заключительные Мысли

Я пользуюсь Go уже почти год, и всё ещё очарован им. Работать на нём — потрясающе, особенно, когда вы можете наблюдать, как благодаря ему производительность растёт.

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

Думаю, разработчики Golang проделали невероятный труд по проектированию и реализации проекта — в результате мы получили один из самых удобных и экономически эффективных языков. Создатели искали способ повысить скорость и продуктивность разработки и обслуживания больших кодовых баз, и потому Go стал отличным инструментов повышения производительности.

Чтобы подытожить рассказ об уникальности Golang и помочь разобраться, подходит ли вам этот язык, я хотел бы привести главный для себя тезис из идеологии Go, ещё раз процитировав его создателя:

Базовый компромисс в Go — вопрос, к которому подошли иначе, чем в других языках — Чего вы хотите: язык, с которым веселее или проще работать? — Роб Пайк, создатель Golang.

Источник: tproger.ru

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru