SlideShare a Scribd company logo
1 of 26
Зачем нужен Go?
Александр Борзунов
ШПоРа, 2016 год
2007
Robert Griesemer
JVM
V8
Rob Pike
Plan 9
UTF-8
Ken Thompson
B, C
Unix
Уровень
абстракции
Ассемблер
С/С++
Java
C#
Python
Ruby
Perl
PHP
Javascript
• Скорость работы vs. Простота разработки
• Типизация
• Быстро ли компилируется?
• Безопасен ли доступ к памяти?
Люди плохо управляют памятью
• Безопасность
• Утечка ресурсов
При этом на C написаны:
• ОС
• Веб-сервера и другие
серверные приложения
• Базы данных
• Встраиваемые системы 2014
Схема: Herb Sutter (Dr. Dobb’s Journal, March 2005)
“The free lunch is over”
Многоядерность
Схема: Intel
• Чтобы получить прирост производительности,
программы надо писать иначе
Язык Go
• Компилируемый
• Строго типизированный
• Со сборщиком мусора
• Структурированный код
• Встроенная многопоточность
• Есть указатели, но нет арифметики с ними
• Простота
Hello, World!
Переменные и типы
Функции
Обработка ошибок
Coroutines -> Goroutines
Coroutines -> Goroutines
Channels
Worker Pool
Что ещё?
• Богатая стандартная библиотека
– net, net/http
– regex
– JSON, XML, HTML
– math/big, heap, list, index/suffixarray
– zip, gzip, tar
– AES, MD5, SHA
– JPEG, PNG
– …
• Рефлексия
Не хватает чего-то?
$ go get github.com/codegangsta/cli
После этого можно писать:
import "github.com/codegangsta/cli"
Что ещё?
$ go fmt code.go
См. также
• Tour of Go:
– https://tour.golang.org/
• Effective Go:
– https://golang.org/doc/effective_go.html
• Стандартная библиотека:
– https://golang.org/pkg/
• Спецификация
– https://golang.org/ref/spec
Источники
• Go Introduction by Thomas Wilde:
– https://www.youtube.com/watch?v=hha7d97VYkM
• Dave Cheney’s blog:
– http://dave.cheney.net/
• Использовались логотипы Go, созданные и
модифицированные:
– Renee French (http://reneefrench.blogspot.ru/)
– Austin Go Language User Group
(http://www.meetup.com/atxgolang/)
Вопросы?
Спасибо за внимание!

More Related Content

What's hot

BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновAnton Piskunov
 
Оптицизация: на грани и за
Оптицизация: на грани и заОптицизация: на грани и за
Оптицизация: на грани и заAnton Patrushev
 
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++Yandex
 
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrackБаг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrackAlexander Byndyu
 
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++Yandex
 
Google protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектахGoogle protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектахciklum_ods
 
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.HappyDev-lite
 
Понимая Git /git/. Git изнутри наружу
Понимая Git /git/. Git изнутри наружуПонимая Git /git/. Git изнутри наружу
Понимая Git /git/. Git изнутри наружуGDG Odessa
 
Translation and corpus linguistics
Translation and corpus linguisticsTranslation and corpus linguistics
Translation and corpus linguisticsmaarudneva
 
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис РечкуновJSib
 
Взаимодействие Go и C-библиотек. Go и Erlang
Взаимодействие Go и C-библиотек. Go и ErlangВзаимодействие Go и C-библиотек. Go и Erlang
Взаимодействие Go и C-библиотек. Go и ErlangDevDay
 
How to port JavaScript library to Android and iOS
How to port JavaScript library to Android and iOSHow to port JavaScript library to Android and iOS
How to port JavaScript library to Android and iOSAlexey Zinoviev
 

What's hot (12)

BeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демоновBeeGo для веб приложений, API и демонов
BeeGo для веб приложений, API и демонов
 
Оптицизация: на грани и за
Оптицизация: на грани и заОптицизация: на грани и за
Оптицизация: на грани и за
 
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
 
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrackБаг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
Баг-трекер по-новому: что и почему JetBrains изменил в последней версии YouTrack
 
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
Александр Панин, Как мы делали кроссплатформенную библиотеку SpeechKit на C++
 
Google protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектахGoogle protocol buffers в мобильных проектах
Google protocol buffers в мобильных проектах
 
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
 
Понимая Git /git/. Git изнутри наружу
Понимая Git /git/. Git изнутри наружуПонимая Git /git/. Git изнутри наружу
Понимая Git /git/. Git изнутри наружу
 
Translation and corpus linguistics
Translation and corpus linguisticsTranslation and corpus linguistics
Translation and corpus linguistics
 
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
#1 "JSib – Знакомство и амбициозные планы" Денис Речкунов
 
Взаимодействие Go и C-библиотек. Go и Erlang
Взаимодействие Go и C-библиотек. Go и ErlangВзаимодействие Go и C-библиотек. Go и Erlang
Взаимодействие Go и C-библиотек. Go и Erlang
 
How to port JavaScript library to Android and iOS
How to port JavaScript library to Android and iOSHow to port JavaScript library to Android and iOS
How to port JavaScript library to Android and iOS
 

Similar to Зачем нужен Go?

Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовYandex
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Minsk Linux User Group
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковDevGAMM Conference
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.ScrumTrek
 
ekb.py: Mini Zen of Python
ekb.py: Mini Zen of Pythonekb.py: Mini Zen of Python
ekb.py: Mini Zen of PythonYury Yurevich
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines Sergey Zubkov
 
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON
 
Mykyta Krychko "When simple TRUE / FALSE is not enough. Analyzing test result...
Mykyta Krychko "When simple TRUE / FALSE is not enough. Analyzing test result...Mykyta Krychko "When simple TRUE / FALSE is not enough. Analyzing test result...
Mykyta Krychko "When simple TRUE / FALSE is not enough. Analyzing test result...Fwdays
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
HappyDev-lite-2016-весна 04 Анна Тарасенко. На каких языках говорят программисты
HappyDev-lite-2016-весна 04 Анна Тарасенко. На каких языках говорят программистыHappyDev-lite-2016-весна 04 Анна Тарасенко. На каких языках говорят программисты
HappyDev-lite-2016-весна 04 Анна Тарасенко. На каких языках говорят программистыHappyDev-lite
 
Golang в avito
Golang в avitoGolang в avito
Golang в avitoAvitoTech
 
To Go или не to Go
To Go или не to GoTo Go или не to Go
To Go или не to GoIvan Zezyulya
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang productionAlina Dolgikh
 
разработка корп приложений на платформе 1с 8
разработка корп приложений на платформе 1с 8разработка корп приложений на платформе 1с 8
разработка корп приложений на платформе 1с 8Igor Antonov
 

Similar to Зачем нужен Go? (20)

Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав БахмутовПлюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
Плюсы и минусы Go для разработчиков на C++, Вячеслав Бахмутов
 
Blueprint vs. C++ in UE4
Blueprint vs. C++ in UE4Blueprint vs. C++ in UE4
Blueprint vs. C++ in UE4
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Wargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движковWargaming.net: Архитектура современных 3D движков
Wargaming.net: Архитектура современных 3D движков
 
Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.Алексей Лустин. Непрерывная проверка качества кода.
Алексей Лустин. Непрерывная проверка качества кода.
 
ekb.py: Mini Zen of Python
ekb.py: Mini Zen of Pythonekb.py: Mini Zen of Python
ekb.py: Mini Zen of Python
 
C++ Core Guidelines
C++ Core Guidelines C++ Core Guidelines
C++ Core Guidelines
 
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
SECON'2016. Парамонов Сергей, Автоматизируй это! Как не погрязнуть в рутине п...
 
Sivko
SivkoSivko
Sivko
 
Mykyta Krychko "When simple TRUE / FALSE is not enough. Analyzing test result...
Mykyta Krychko "When simple TRUE / FALSE is not enough. Analyzing test result...Mykyta Krychko "When simple TRUE / FALSE is not enough. Analyzing test result...
Mykyta Krychko "When simple TRUE / FALSE is not enough. Analyzing test result...
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
HappyDev-lite-2016-весна 04 Анна Тарасенко. На каких языках говорят программисты
HappyDev-lite-2016-весна 04 Анна Тарасенко. На каких языках говорят программистыHappyDev-lite-2016-весна 04 Анна Тарасенко. На каких языках говорят программисты
HappyDev-lite-2016-весна 04 Анна Тарасенко. На каких языках говорят программисты
 
Ryazan
RyazanRyazan
Ryazan
 
Golang в avito
Golang в avitoGolang в avito
Golang в avito
 
To Go или не to Go
To Go или не to GoTo Go или не to Go
To Go или не to Go
 
Максим Лапшин. Erlang production
Максим Лапшин. Erlang productionМаксим Лапшин. Erlang production
Максим Лапшин. Erlang production
 
разработка корп приложений на платформе 1с 8
разработка корп приложений на платформе 1с 8разработка корп приложений на платформе 1с 8
разработка корп приложений на платформе 1с 8
 
ОПК № 1 – Вводная
ОПК № 1 – ВводнаяОПК № 1 – Вводная
ОПК № 1 – Вводная
 

Зачем нужен Go?