[Перевод] Зачем вам изучать Go? (Вниз)

Go

исходный адрес

Иди может работать прямо на базовом аппаратном обеспечении

与其他的现代高级语言相比,如 Java 或 Python,使用 C、C++ 的最大优势,就在于性能,因为 C/C++ 均为编译型语言,而非解释型语言。 (Расширенный:Как понять компилируемые и интерпретируемые языки?)

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

Для скомпилированных языков, таких как C/C++, этап компиляции в байтовый код опущен в цикле выполнения для повышения производительности, вместо того, чтобы полагаться на выполнение VM (виртуальная машина), а напрямую компилировать удобочитаемый код в двоичный документ.

В то время как преимущества производительности таких языков, как C/C++, очевидны, освобождение и выделение переменных в этих языках — это заноза в заднице. И большинство современных языков программирования высокого уровня имеют в этом отношении преимущество, они будут использовать сборщик мусора или алгоритм подсчета ссылок для обработки выделения и удаления объектов.

Так существует ли язык, который может взять лучшее из обоих миров?

Go просто сделал лучшее из обоих миров, Go, как и некоторые базовые языки (такие как: C/C++), является компилируемым языком, а это означает, что его производительность почти близка к базовому языку, который реализует сборку мусора для выделения и удалять объекты. Поэтому больше не нужно использовать объявления malloc() и free()! Это так круто!

Проекты Go легко поддерживать

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

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

Go намеренно отказывается от некоторых функциональных особенностей современных объектно-ориентированных языков программирования.

  • нет концепции класса. Все транзакции разделены по пакетам, используя структуру вместо понятия класса.
  • Наследование не поддерживается. Это упрощает изменение кода. В других языках, таких как Java или Python, если класс ABC наследует класс XYZ, когда разработчик изменяет класс XYZ, это может иметь побочные эффекты для других классов, наследующих XYZ. Также делает код более понятным, избавляясь от наследования (поскольку при просмотре фрагмента кода нет суперкласса).
  • нет конструктора.
  • нет аннотаций.
  • нет дженериков.
  • не исключение.

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

Как видно из рисунка выше, Go почти так же эффективен, как C/C++, а синтаксис кода также может быть таким же простым, как Ruby и Python. Так что это беспроигрышный вариант как для разработчиков, так и для производительности процессора!

В отличие от других новых языков, таких как Swift, синтаксическая система Go очень стабильна. Он остался неизменным с момента первого публичного выпуска версии 1.0 в 2012 году. Это делает Go обратно совместимым.

Go получает поддержку GOOGLE.

  • Я знаю, что это не непосредственное техническое преимущество. Однако у Google одна из крупнейших облачных инфраструктур в мире, и она уже имеет значительные масштабы. Go был разработан и поддерживается Google для решения своих проблем с поддержкой масштабируемости и эффективности. И это все, с чем вы столкнетесь при создании собственного сервера.
  • Кроме того, такие компании, как Adobe, BBC, IBM, Intel и дажеMediumИ некоторые крупные компании также используют Go. (Source)

в заключении

  • Хотя Go сильно отличается от других объектно-ориентированных языков, его все же нельзя недооценивать. Go не только обеспечивает такую ​​же высокую производительность, как C/C++, но также обеспечивает эффективную параллельную обработку, как Java, и в то же время может доставлять вам такое же удовольствие от программирования, как Python/Perl.
  • Если вы все еще не планируете изучать Go, повторюсь, аппаратные ограничения сильно заставят разработчиков писать высокопроизводительные программы. Разработчики должны понимать аппаратное обеспечение, чтобы оптимизировать программу, чтобы оптимизированное программное обеспечение могло работать на более дешевых и медленных аппаратных устройствах (таких какIOTустройство) и сделать так, чтобы конечный пользователь получил лучший опыт в целом.