Статьи

Введение в Go — элегантность с мощью и простотой

Хотя я обычно стараюсь придерживаться только «хлебных масел» языков (например, php, python, java & C #), мой последний проект был связан с веб-приложением Google appengine , написанным на собственном флагманском языке Google Go .

Будучи полиглотом, который всегда заинтригован новыми языками, я не мог не задаться вопросом о том, как он кодирует с помощью Go, поэтому я взялся за проект. Мой опыт написания кода на Go был настолько приятным, что я не мог не поделиться этим с вами.

Go обладает уникальным сочетанием элегантности и силы: для кодирования и поддержки приложений на любом языке удобочитаемость является очень важной функцией. По мере того, как размер вашего проекта становится все больше и больше, это становится все более и более важным. Фактически, вы даже готовы пожертвовать некоторым приростом производительности, достигнутым языками низкого уровня, такими как C, чтобы добиться производительности разработчика с помощью более «читаемых» языков, таких как java и python. Этот фактор отчасти объясняет, почему все меньше и меньше программ кодируется на C / C ++ сейчас, а больше на java. Это также объясняет недавнюю популярность Python, интерпретируемого и относительно «невысокого» языка, по сравнению с его родными, Java и C ++.

То, что Go приносит на стол, является изящным сочетанием как удобочитаемости, так и производительности. Да, невероятно, но это правда! У него есть компилятор и самая мощная система типов, подобная C / C ++, в сочетании с синтаксисом, который чувствует себя как дома с динамическими языками, такими как python. Он даже имеет простоту, сравнимую с питоном.

Синтаксически Go основан на C ++, но с множеством модификаций, которые упрощают его использование, таких как:

  1. Нет точек с запятой (;) для завершения операторов;
  2. Не требуется объявление типа, как C (int i = 2;). В Go типы автоматически «угадываются» из значения (i: = 2).
  3. Не содержит фигурных скобок обязательных операторов, таких как for и if.

Здесь было бы полезно понять пример того, как Go отличается и лучше. Рассмотрим простую функцию вычисления квадратного корня в C ++:

1
2
3
4
5
6
7
float Sqrt(float x) {
    int z = 1.0;
    for (int i= 0; i < 1000; i++) {
        z -= (z*z - x) / (2 * z);
    }
    return z;
}

Теперь здесь та же функция, написанная на Go:

1
2
3
4
5
6
7
8
9
package newmath
  
func Sqrt(x float64) float64 {
    z := 1.0
    for i := 0; i < 1000; i++ {
        z -= (z*z - x) / (2 * z)
    }
    return z
}

Вы заметили несколько вещей о Go? Например:

  1. Меньше грубостей: не нужно хешей, скобок вокруг ifs / fors и нет необходимости использовать точки с запятой для завершения операторов (некоторые из вас могут поспорить о точках с запятой, говоря, что это позволяет быстро комбинировать несколько операторов в одной строке, но понимаете ли вы, как меньше читаемый код, который вы создаете, делая это?)
  2. Динамизм:: = — это оператор «короткого присваивания» в Go, означающий, что вам не нужно указывать его тип. «Z: = 1.0», безусловно, более элегантно по сравнению с «float z = 10;».
  3. Эффективная компиляция: несмотря на динамическую природу этого языка, которая, кажется, предполагает интерпретируемую природу, Go компилирует и работает так же эффективно, как и язык низкого уровня, такой как C / C ++.

Другая причина вложения ваших навыков в Go заключается в том, что Go пользуется поддержкой Google . Действительно, сам язык является изобретением Google, и Google начал внедрять его в большинстве своих проектов, таких как облачный хостинг Google Appengine .

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

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

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

Примечание. Если вы используете Linux-систему на основе Debian, например Ubuntu, вы можете установить golang с помощью CLI:

1
sudo apt-get install gccgo

Рекомендации: