8 причин, по которым разработчики любят Go, и 8 причин, по которым не любят

В 2007 году некоторые программисты из Google посмотрели на свои возможности по написанию программного обеспечения, и увиденное им не понравилось. Им нужно было управлять миллионами строк кода, который должен был постоянно хранить и отправлять данные для всемирной сети. Код должен был жонглировать тысячами, а может, и миллионами соединений в сетях по всему миру. Пути передачи данных были полны проблем, связанных со случаями гонки и параллелизма.

Существующие языки программирования не слишком помогали. Они были созданы для игр, управления настольными компьютерами и многих других обычных задач, существовавших до появления веб-браузера. Их неровные края и режимы отказов свели кодеров Google с ума настолько, что они начали спрашивать, нет ли лучшего способа. Есть ли что-то, что могло бы справиться с задачами ввода-вывода всего за несколько строк и при этом обеспечить безопасность, необходимую Google?

Ответ на этот вопрос был отрицательным. И тогда они создали Golang, простой язык, внешне похожий на C или Java. Публичные версии начали появляться в 2009 году, а первая версия 1.0 была выпущена в 2012 году. Сегодня Google продолжает инвестировать в язык, и последняя стабильная версия на данный момент - 1.22.5.

Внутри Google язык Go используется для создания крупных блоков инфраструктуры, а также был принят многими программистами за пределами Google. Недавно язык поднялся в топ-10 индекса Tiobe. На данный момент он находится на восьмой позиции.

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

8 причин, по которым разработчики любят или ненавидят язык Go

  • Его легко изучать
  • Не играет в любимчиков
  • Синтаксис, основанный на языке C
  • (Слишком) много правил
  • Дополнительная обработка ошибок
  • Стандартная библиотека
  • Размер исполняемого файла
  • Большой папа Google

Go прост в изучении

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

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

Почему некоторые его ненавидят: Простота - это не обязательно плохо, это просто то, что было опущено. Разве ведьма выбрала бы сокращенную книгу заклинаний? А квотербек выбрал бы учебник, в котором всего несколько пьес? Некоторые кодеры считают, что программирование на Go похоже на программирование с одной рукой, связанной за спиной. Языку не хватает всех тех премудростей, которые явили миру другие разработчики языков, и за это приходится платить высокую цену.

Go не играет в любимчиков

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

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

Почему некоторые его ненавидят: У каждого есть несколько любимых функций и трюков, но, скорее всего, в Go их нет. Разработчики иногда жалуются, что могли бы сделать то же самое, что и в Go, с помощью одной строки COBOL или Java, или другого любимого языка.

Синтаксис на основе языка Си

Создатели Go имеют глубокие корни в мире Unix, и это заметно. Синтаксис хорошо знаком любому, кто использовал C или любой из языков вроде Java или C#, заимствованных из C. Фигурные скобки и набор текста в Go будут удобны для этой команды. Команда разработчиков убрала некоторые шероховатости традиционного языка C и упростила некоторые детали, чтобы он выглядел и ощущался более современным, но в основном Golang полностью соответствует традициям, которые начались с языка C.

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

Почему некоторые его ненавидят: Во многих отношениях Python был задуман как антитеза C. Здесь нет фигурных знаков препинания для разграничения блоков кода, а типизация намеренно динамична. Тот, кому нравится подход Python, найдет в Go много того, что ему не нравится. С этой точки зрения программирование на Go кажется шагом или тремя шагами назад.

В Go слишком много правил

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

Почему некоторые любят его: Сильно идиоматические правила Go гарантируют, что код будет легче восприниматься. Команды будут меньше ссориться из-за стиля, потому что у них меньше вариантов и причин для развития своего личного стиля.

Почему некоторые ненавидят: Все эти дополнительные правила и соглашения кажутся смирительной рубашкой. Почему неиспользуемая переменная - это проблема? Если компилятор может ее обнаружить, он может удалить ее, не беспокоя меня. Так ли плохо для программистов иметь немного свободы в своей жизни?

В Go есть дополнительная обработка ошибок

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

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

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

Почему некоторые его ненавидят: Ненужная обработка ошибок делает функции Go толще и сложнее для понимания. Часто каждая функция в глубокой цепочке должна содержать аналогичный код, который делает более или менее то же самое с той же самой ошибкой. Другие языки, такие как Java или Python, поощряют программистов "перебрасывать" ошибки по цепочке к определенному блоку, который будет их "ловить", что может привести к более чистому коду.

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

Не только синтаксис Go задуман как простой, но мощный стандарт, объединяющий команды. Стандартная библиотека включает поддержку многих основных задач, характерных для программирования веб-микросервисов. Процедуры ввода и вывода данных начинаются с низкоуровневого жонглирования сетевыми пакетами и переходят к задачам повышенной сложности, таким как работа с протоколом HTTPS или декодирование данных JSON. Настройка полноценного веб-сервера занимает всего несколько строк кода, потому что все это включено в часть библиотеки "net/http".

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

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

Размер исполняемого файла

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

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

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

Почему некоторые его ненавидят: Сколько копий библиотек Go находится на моем диске? Если у меня 100 программ, значит, 100 копий. В какой-то момент эффективность становится вопросом. Да, дисковое пространство сейчас дешевле, чем когда-либо, но пропускная способность памяти и кэширование по-прежнему являются основными факторами, влияющими на скорость выполнения.

Большой папа Google

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

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

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

8 причин, по которым разработчики любят Go, и 8 причин, по которым не любят
Понравилась новость? Тогда не забудь оставить свой комментарий.
А так же, добавь наш сайт в закладки (нажми Ctrl+D), не теряй нас.
09 июля 2024 г.
115

Комментарии

Оставить комментарий:
* отправляя форму, я даю согласие на обработку персональных данных

Читайте еще

Продолжаем добавлять языки программирования для Вас.
Впереди много интересного!

Только свежие новости программирования и технологий каждый день.