язык программирования go

13
Язык программирования GO Go from Google

Upload: mackensi-lord

Post on 08-Jul-2015

936 views

Category:

Technology


5 download

DESCRIPTION

ergrt

TRANSCRIPT

Язык программирования GOGo from Google

Содержание

• Фундаментальные идеи языка 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 производителен, дружелюбен к программи-стам и красив.

• Освоив этот язык, ты сможешь писать программы, которые будут гораздо эффективнее всего того, что написано на традиционных языках программирования.

Спасибо за внимание