язык программирования go
DESCRIPTION
ergrtTRANSCRIPT
Содержание
• Фундаментальные идеи языка GO• Средство параллельного программирования• Анализ реальных возможностей языка на текущий
момент времени
Фундамент языка
• Гарантия высокой скорости компиляции и производительности приложений.
• Простота разработки и поддержки приложений, свойственная высокоуровневым скриптовым языкам.
• Встроенные средства параллельного программирования, позволяющая задействовать все имеющиеся ядра современных процессоров.
Производительность
• Компилятор Go гарантирует проверку типов, а результирующий код получает встроенный сборщик мусора и собственный механизм распараллеливания процессов:– Язык не имеет механизма неявного приведения типов– Механизм параллельного программирования использует
собственную реализацию потоков внутри каждой программы.
– Встроенный сборщик мусора довольно проворен.
Простота разработки
• Язык включает в себя такие высокоуровневые конструкции, как ассоциативные массивы и строки. (которые можно сравнивать, копировать, вычислять длину, делать срезы).
• Он имеет средства для создания собственных типов данных(подобных классов в других языках).
• Лишен указателей, способных ссылаться на любой участок памяти (срыв стека не возможен).
Простота разработки
• GO – язык созданный программистами для программистов.
• Основная идея языка в том, чтобы быть инструментом, который позволяет писать программы, вместо того, чтобы думать о том, заработают ли они вообще (эта черта свойственна Си и, еще в большей степени С++).
Параллельное программирование
• Реализация простой и эффективной модели, полностью следующая теории взаимодействующих последовательных процессов (CSP).
• CSP в GO: – Создание переменной-канала.– Определение функции, которая принимает переменную-
канал в качестве аргумента, а в своем теле содержит код, который должен быть выполнен в отдельной нити.
– Запуск функции в отдельном потоке с помощью ключевого слова «go».
– Чтение из канала.
Примерpackage mainimport "time import "fmt“
func timer(ch chan string, ns, count int) { for j 1; j <= count; J++ { time.Sleep(int64(ns)) if j == count {
fmt.Printf("[timer] Отправляю последнее сообщение...\n") ch <- "стоп!" } else { fmt .Print f(" (timer} Отправляю... \n") ch <- "продолжаем“
fmt.Printf("[timer]Отправил!\n")}}
• func main() { var str string
ch := make(chan string) go timer(ch, 1000000000, 5)for {
fmt.Printf("[main] Принимаю…\n")str = <-ch
if str == "стоп!" {fmt.Printf("[main] Принял последнее сообщение, завершаю работу.\n") return} else {fmt.Printf("[main] Принято!\n“)
}}
Анализ
• Go пока еще молодой, но очень перспективный язык, при создании которого был учтен более чем тридцатилетний опыт в области разра-ботки операционных систем и языков программирования
• Go производителен, дружелюбен к программи-стам и красив.
• Освоив этот язык, ты сможешь писать программы, которые будут гораздо эффективнее всего того, что написано на традиционных языках программирования.