Я услышал о языке программирования Go на последнем курсе бакалавриата (B.Tech) от технического директора GoIbibo - Vikalp Sahni, когда он пришел в колледж во время Национального саммита инноваций 2016 NIT Silchar. Затем я немного познакомился с языком и нашел его довольно потрясающим. Как это было в прошлом году и в последние два месяца учебы в колледже, поэтому я решил не учиться и насладиться последними удивительными днями. В тот раз я только заметил, что язык был разработан для современных случаев использования, таких как веб-приложения с высоким qps (запросами в секунду), компилируется на машинный язык напрямую, без промежуточных звеньев виртуальной машины и синтаксиса. , красивый синтаксис со статической типизацией.

Почему не Scala? или Haskell .. или любой другой?

Я выучил Java (немного правильно) после окончания учебы и работы в Directi / Media.net в качестве инженера-программиста. До этого я очень ненавидел Java. Из-за такого длинного стиля программирования, который мне сейчас нравится. Раньше я кодировал на PHP, C ++ (для изучения структур данных и алгоритмов) и Python (и его фреймворк Django). Очень любил разрабатывать веб-приложения с помощью фреймворка Django. Я также восхищался синтаксисом и расширяемостью Python.

Я подумал, было бы здорово, если бы я получил производительность, подобную C ++, и синтаксис, подобный Python (но ожидал, что это тоже будет статическая типизация)?

Go - это такой язык.

Функциональная парадигма Scala - это счастье, но она работает поверх JVM: /. Haskell, а не мое пиво.

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

Недавно я захотел создать систему с высоким уровнем qps. Затем я подумал об изучении этого одаренного Google языка. Некоторые функции, которые мне очень понравились:

  1. Горутины. поток 2 КБ, которому для переключения контекста требуется только 3 изменения регистра (поток принимает 16 изменений регистров и занимает 1 МБ). Я подумал, как, а затем узнал, что Goroutine мультиплексируется в потоках ОС, а среда выполнения Go поддерживает пул потоков и выполняет планирование. Это явно означает, что я могу создать столько горутин, сколько мне нужно, а среда выполнения Go сохранит достоинства моей программы. Мне сейчас не нужно поддерживать какой-либо пул потоков. Ура!
  2. Не общайтесь, разделяя память; вместо этого делитесь памятью, общаясь . Мне очень понравились концепции каналов для общения между горутинами. Теперь мои потоки так легко обмениваются сообщениями без каких-либо блокировок, обратных вызовов. Такой мир.
  3. Другой и более логичный синтаксис.
func MakeSandwich(bread_type string) (bool, error) {
        // logic
}

вернет кортеж с типом данных bool и error, в то время как принимает bread_type, который является строкой. Это заставляет меня читать код, затаив дыхание.

Редакторы…

В настоящее время я использую Gogland (программу раннего доступа) от Jetbrains. Но также настроили Плагин Go в IntelliJ IDEA.

Как я учусь? ..

Ежедневно посещая эти сайты

  1. GoTour
  2. Видео с конференции Роба Пайка: P вроде Google I / O 2012
  3. Эффективное движение
  4. Конечно, Go Documentation