Go (язык программирования)

Материал из Seo Wiki - Поисковая Оптимизация и Программирование

Перейти к: навигация, поиск
<tr><th style="padding:3px">Класс языка:</th><td class="" style="padding:3px">

компилируемый, многопоточный </td></tr><tr><th style="padding:3px">Появился в:</th><td class="" style="padding:3px"> 2009 г. </td></tr><tr><th style="padding:3px">Автор(ы):</th><td class="" style="padding:3px"> Роберт Гризмер, Роб Пайк и Кен Томпсон </td></tr><tr><th style="padding:3px">Основные реализации:</th><td class="" style="padding:3px"> gc, gccgo </td></tr> </table> Go — компилируемый, многопоточный язык программирования. Данный язык был разработан компанией Google[1] как ответвление от проекта разработки операционной системы Inferno. Первоначальная разработка Go началась в сентябре 2007 года, а его непосредственным проектированием занимались Роберт Гризмер, Роб Пайк и Кен Томпсон[2]. Официально язык был представлен в ноябре 2009. На данный момент его поддержка осуществляется лишь для операционных систем Linux и Mac OS X.[3]

Go
Файл:Golang.png </span>

Содержание

Название

Следует отметить, что название языка, выбранное компанией Google, практически совпадает с названием языка программирования Go!, созданного Ф.Джи. МакКейбом и К. Л. Кларком в 2003 году.[4] Обсуждение названия ведется на странице, посвященной Go[4].

Описание

Синтаксис языка Go схож с синтаксисом языка Си, за исключением объявлений типа; прочие синтаксические различия заключаются в отсутствии круглых скобок для условных конструкций for и if. Язык также поддерживает сборку мусора (garbage collection). Модель многопоточности Go была создана на основе CSP Тони Хоара по типу предыдущих распараллеливаемых языков программирования Occam и Limbo,[2], но также присутствуют такие особенности Пи-исчисления как канальная передача.

Однако отсутствуют такие возможности как обработка исключений, наследование типов, обобщённое программирование, использование утверждений и переопределение методов (en:Method overriding).[2] Однако, у Google есть в дальнейших планах возможность добавления обобщённого программирования, тогда как против использования утверждений в FAQ по языку приводятся аргументы, а наследование без указания типа, наоборот, отстаивается. В отличие от Java присутствует поддержка ассоциативных массивов (в виде хэшей или словарей) как и строк.

Реализации

На данный момент существуют два компилятора Go. 6g (и сопутствующие ему инструменты, вместе известные под названием gc) написан на Си с применением yacc/Bison для парсера. Gccgo — еще один компилятор Go с клиентской частью, написанной на C++, и рекурсивным парсером, совмещенным со стандартным бэк-эндом GCC[5].

Примеры

Ниже представлен пример программы «hello world» на языке Go.

package main
 
import "fmt"
 
func main()
{
  fmt.Printf("Hello, World!\n")
}

Пример реализации команды Unix echo

package main
 
import (
  "os";
  "flag"; // парсер параметров командной строки
)
 
var omitNewline = flag.Bool("n", false, "не печатать последнюю линию")
 
const (
  Space = " ";
  Newline = "\n";
)
 
func main() {
  flag.Parse(); // Сканирование списка аргументов и установка флагов
  var s string = "";
  for i := 0; i < flag.NArg(); i++ {
    if i > 0 {
      s += Space
    }
    s += flag.Arg(i)
  }
  if !*omitNewline {
    s += Newline
  }
  os.Stdout.WriteString(s);
}

Примечания

Ссылки


ar:غو (لغة برمجة)

da:Go (programmeringssprog) de:Go (Programmiersprache) en:Go (programming language) es:Go (lenguaje de programación) fi:Go (ohjelmointikieli) fr:Go (langage) he:GO (שפת תכנות) hu:Go (programozási nyelv) it:Go (Linguaggio di programmazione) ja:Go (プログラミング言語) ms:Go (bahasa pengaturcaraan) nl:Go (google) no:Go (programmeringsspråk) pl:Go (język programowania) pt:Go (linguagem de programação) sr:Гоу tr:Go (programlama dili) vi:Ngôn ngữ GO zh:Go

Личные инструменты

Served in 0.640 secs.