Я услышал о языке программирования 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 языка. Некоторые функции, которые мне очень понравились:
- Горутины. поток 2 КБ, которому для переключения контекста требуется только 3 изменения регистра (поток принимает 16 изменений регистров и занимает 1 МБ). Я подумал, как, а затем узнал, что Goroutine мультиплексируется в потоках ОС, а среда выполнения Go поддерживает пул потоков и выполняет планирование. Это явно означает, что я могу создать столько горутин, сколько мне нужно, а среда выполнения Go сохранит достоинства моей программы. Мне сейчас не нужно поддерживать какой-либо пул потоков. Ура!
- Не общайтесь, разделяя память; вместо этого делитесь памятью, общаясь . Мне очень понравились концепции каналов для общения между горутинами. Теперь мои потоки так легко обмениваются сообщениями без каких-либо блокировок, обратных вызовов. Такой мир.
- Другой и более логичный синтаксис.
func MakeSandwich(bread_type string) (bool, error) { // logic }
вернет кортеж с типом данных bool и error, в то время как принимает bread_type, который является строкой. Это заставляет меня читать код, затаив дыхание.
Редакторы…
В настоящее время я использую Gogland (программу раннего доступа) от Jetbrains. Но также настроили Плагин Go в IntelliJ IDEA.
Как я учусь? ..
Ежедневно посещая эти сайты
- GoTour
- Видео с конференции Роба Пайка: P вроде Google I / O 2012
- Эффективное движение
- Конечно, Go Documentation