Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
SlideShare a Scribd company logo
Зачем нужен 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. Простота разработки
• Типизация
• Быстро ли компилируется?
• Безопасен ли доступ к памяти?
Зачем нужен Go?
Зачем нужен Go?
Зачем нужен Go?
Люди плохо управляют памятью
• Безопасность
• Утечка ресурсов
При этом на C написаны:
• ОС
• Веб-сервера и другие
серверные приложения
• Базы данных
• Встраиваемые системы 2014
Схема: Herb Sutter (Dr. Dobb’s Journal, March 2005)
“The free lunch is over”
Многоядерность
Схема: Intel
• Чтобы получить прирост производительности,
программы надо писать иначе
Зачем нужен Go?
Язык 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

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