The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Представлен новый открытый проект Google - язык программирования Go

11.11.2009 14:00

В официальном блоге компании Google был представлен новый язык программирования , ориентированный на высокую производительность, которая почти сопоставима с Си, но имеет более простой синтаксис, обеспечивающий скорость разработки сопоставимую с такими динамическими языками, как Python.

По заявлениям разработчиков, Go предлагает выразительную систему типов, быструю компиляцию, хорошую производительность, защиту от выхода за допустимые области выделенных блоков памяти и встроенные возможности языка, которые упрощают многопоточное программирование и реализацию параллелизма. Google выпускает исходный код продукта под лицензией BSD с надеждой, что сообщество будет заинтересовано новым языком программирования и примет участие в дальнейшем его совершенствовании и развитии.

Разработчики Google считают, что язык Go и в текущей реализации является относительно зрелым, но не совсем готов для использования в реальных производственных средах. Сопутствующий инструментарий для нового языка программирования еще находится в стадии разработки. Отсутствует интеграция с какой-либо IDE, стандартные библиотеки не до конца наполнены, и на настоящий момент еще мало реальных примеров работающего кода. Открытие Go для большого сообщества программистов могло бы значительно ускорить процесс развития языка во всех этих важнейших областях.

Компиляторы Go, называемые 6G и 8G (для 64-битных и x86 платформ), ориентированы на высокие скорости компиляции (единицы секунд даже для огромных проектов). Существует также альтернативный компилятор под названием Gccgo, основанной на GNU Compiler Collection (GCC). GCC-компилятор менее быстрый и предназначен для генерирования более эффективного кода. Надо отметить, что разработчики отказались от использования LLVM-компилятора, так как его производительность по времени компиляции была признана недостаточной.

Скомпилированные исполняемые файлы являются полностью бинарными файлами, что отличает Go от языков управляемого кода, где компилятор генерирует байт-код для виртуальных машин. Go, тем не менее, имеет некоторые компоненты времени выполнения (runtime), которые могут быть встроены в исполняемые файлы. Фактическая производительность исполнения считается сопоставимой с Cи-кодом.

Примеры кода языка Go показывают, что синтаксис является Cи-подобным. Но существуют и отличительные черты. Например, существует сокращенный синтаксис определения переменных, который поддерживает обнаружение простых типов. Имеется также синтаксис анонимных функций, который позволяет вам использовать реальные замыкания (real closures). Есть некоторые Python-подобные особенности, в том числе slicing массивов и map-типы с синтаксисом конструктора, который выглядит наподобие dictionary в Python.

Одной из отличительных особенностей Go является его необычная система типов. Язык воздерживается от некоторых типичных для объектно-ориентированного программирования концепций, например наследования. Вы можете определить структурные типы, а затем создать методы для работы с ними. Вы можете также определить интерфейсы подобно Java. В Go, однако, не вручную указывается какой интерфейс реализует класс. Разработчики объяснили, что данный механизм интерфейсов предоставляет разработчикам некоторую гибкость неявной типизации (duck-typing), более того он предоставляет преимущества проверки во время компиляции.

Параллелизм — отличительная особенность дизайна Go. Язык вводит понятие "goroutines" — методы, которые выполняются одновременно. Любая функция может быть выполнена как "goroutine" с помощью указания в префиксе вызова функции ключевого слова "go". Язык реализует "channel" механизм, который может быть использован для безопасного обмена данными с "goroutines".

  1. Главная ссылка к новости (http://arstechnica.com/open-so...)
  2. The Go Programming Language
Автор новости: PGCatabras
Тип: Интересно / К сведению
Ключевые слова: Google, go, language, compile, gcc
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение (57) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Серж (??), 15:31, 11/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    ПО ходу, софт для следующих Андроидов будет писаться именно на нём.
     
     
  • 2.4, Stanislaus (ok), 15:47, 11/11/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Скорее всего =) Кстати, очень хороший ход. Скорость выполнения С + быстрая разработка = Google Android everywhere.
     
     
  • 3.21, User294 (ok), 17:51, 11/11/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Скорость выполнения С

    Тупой вопрос: как будет достигнута скорость выполнения си при насильной проверке диапазонов адресов? В тугом цикле эта проверка может весить больше чем вся полезная нагрузка цикла. При том - програмер то может сделать нужные проверки вне цикла чтобы их в цикле не лупить. А вот коспилер не настолько умный, AI способным понимать логику программы он не обладает.

     
     
  • 4.24, Cobold (??), 19:13, 11/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    видимо best case на этом языке сравним с каким-нибудь результатом на си. Уже повод рассказывать про сферическую "скорость исполнения" :)
     
  • 4.50, dimavin (?), 15:47, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Performance: typically within 10-20% of C.
     
  • 2.37, usr (?), 10:41, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Сплюнь.
    Так и не понял, какую проблему они хотели решить. Быстрая компиляция? Да, это мегакруто. Синтаксис страшненький.
    Лучше бы свободную энергию применили на что-то полезное. Скажем, опциональную типизацию сделали для Python. Или GWT двигали в направлении django.
     

  • 1.2, Stanislaus (ok), 15:44, 11/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    И откуда идет сравнение с Python? Что общего?

    Рад, что гугл отходит от практики айдентированного форматирования кода.

     
     
  • 2.12, letsmac (?), 16:16, 11/11/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Судя по всему Гвидо к нему таки прикладывался. Он же тоже гугловец.
     

  • 1.3, Аноним (-), 15:45, 11/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +8 +/
    Жду не дождусь, когда они уже начнут собирать армию роботов для захвата мира
     
     
  • 2.63, поцанчик (ok), 14:22, 26/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Жду не дождусь, когда они уже начнут собирать армию роботов для захвата
    >мира

    Жду недождусь когда же они обломаются, поняв что их роботы тормозят именно из-за того, что написаны на этом языке.

     
  • 2.65, Basiley (ok), 10:47, 28/01/2010 [^] [^^] [^^^] [ответить]  
  • +/
    проект Android, назван так не случайно.
    и стартовал давно.
    вы все еще ждете ? или как в Вилабаджо ? кипятите?
     

  • 1.13, Crazy Alex (??), 16:17, 11/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Надо еще потребление памяти глянуть... А то, судя по сравнениям с shootout, та же ява или лисп довольно быстры  - только памяти едят в разы больше сишных/плюсовых версий...
     
  • 1.18, Аноним (18), 17:28, 11/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Там нету эксепшенов или я не нашел? Без эксепшенов хреново как-то.
     
     
  • 2.19, Cobold (??), 17:32, 11/11/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    В FAQ написано что нету
     
     
  • 3.26, Аноним (-), 00:40, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    они не используют ексепшены вообще пожизни
    http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Exceptions
    написано однозначно "We do not use C++ exceptions."
     

  • 1.22, Belya (?), 18:02, 11/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Походу Google OS не за горами :)
     
  • 1.23, Михаил Кривушин (?), 18:51, 11/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Приятно, когда человек сходил на сайт проекта, и только после этого изобразил новость. Спасибо.
     
  • 1.25, Gambler (ok), 00:31, 12/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Советую в параллель почитать про D (http://digitalmars.com/d/) как альтернативу. Тоже компилируемый с автоматичкским управлением памятью.
     
     
  • 2.44, Ptomaine (?), 12:27, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +5 +/
    > Советую в параллель почитать про D (http://digitalmars.com/d/) как альтернативу. Тоже компилируемый с автоматичкским управлением памятью.

    Полностью согласен. Только его (язык D) как-то народ не очень хочет принимать пока. Google - это бренд и любая его "свистелка-перделка" будет принята куда лучше, чем та же штука, но от менее популярной компании или человека. Это, примерно, как с браузером "Опера" получилось - с незапамятных времён в ней были "табы" и управление при помощи мышиных жестов (Mouse Gestures), но только намного позже, когда они появились в FireFox и IE7, народ стал говорить, что это круто и классно, а то, что это давным давно было в "Опере" никто даже не знал. Мне кажется, что люди будут придумывать велосипеды всегда и только время покажет на чьём именно велосипеде будут "кататься".

    З.Ы. Язык D мне очень нравиться. Особенно его 2-я, разрабатываемая версия.

     
     
  • 3.46, Iv945n (ok), 15:33, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > а то, что это давным давно было в "Опере" никто даже не знал

    при этом, сидя в Опере, открывали сотнями эти табы, не обращая на них внимание, и потом спрашивали чего же оно так тормозит.

     
  • 2.59, Дмитрий Т (?), 15:26, 13/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Советую в параллель почитать про D (http://digitalmars.com/d/) как альтернативу. Тоже компилируемый с
    >автоматичкским управлением памятью.

    Лицензия у D другая...

     

  • 1.27, Аноним (27), 01:21, 12/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Как произносить, Гу или Го? ))) Го - это какая то популярная китайская игра! А вообoще, сколько можно изобретать этих языков? Голова кругом.
     
     
  • 2.30, pavlinux (ok), 04:39, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Как произносить, Гу или Го? ))) Го - это какая то популярная
    >китайская игра! А вообoще, сколько можно изобретать этих языков? Голова кругом.
    >

    Вроде болтает ГО,  Лэнгувидьжь  

    http://www.youtube.com/watch?v=wwoWei-GAPo

    Гугля пиарщики ещё те, майки раньше сделали, чем язык объявили!!! :)

     
     
  • 3.35, Аноним (27), 10:06, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Спасибо за пояснения. Ну да, всетаки Го! Значит кто то будет играть в Го ))
     
  • 2.45, Sadok (??), 13:33, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Го - японскя игра
     
     
  • 3.47, Iv945n (ok), 15:34, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >Го - японскя игра

    Да, я даже поигрывал на досуге, не менее занимательно чем шашки и "сапёр".

     
     
  • 4.48, Sadok (??), 15:37, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>Го - японскя игра
    >
    >Да, я даже поигрывал на досуге, не менее занимательно чем шашки и
    >"сапёр".

    У меня даже разряд какой-там есть )

     
     
  • 5.52, Митра (?), 23:49, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/

    >У меня даже разряд какой-там есть )

    Какой у вас дан?


     
     
  • 6.53, Sadok (??), 07:36, 13/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >
    >>У меня даже разряд какой-там есть )
    >
    >Какой у вас дан?

    да, какой дан?? )) у меня еще из начальных.. "кю" (кажется так). и было это еще в СССР )

     
  • 3.70, Sivolday (??), 14:54, 28/07/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Го - японское название китайской игры вейчи. Она же в Корее называется "бадук".
     

  • 1.28, Zulu (?), 03:16, 12/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Параллелизм — отличительная особенность дизайна Go.  Язык реализует "channel" механизм, который может быть использован для безопасного обмена данными с "goroutines".

    OMG they reinvented Erlang! Bastards!

     
     
  • 2.66, Basiley (ok), 10:49, 28/01/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >> Параллелизм — отличительная особенность дизайна Go.  Язык реализует "channel" механизм, который может быть использован для безопасного обмена данными с "goroutines".
    >
    >OMG they reinvented Erlang! Bastards!

    не.
    в Эрланге органичнее реализовано.
    как и сам язык, впрочем.

     

  • 1.29, pavlinux (ok), 04:22, 12/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > func (file *File) Write(b []byte) (n int, err Error)

    Это называется "простой синтаксис"

    >f := new(File);
    >f.fd = fd;

    e := f.Read(buf[i:i+1]);
      if nbytes == 0
         e = 1;


    Уже вижу тонну багов, связанных с путаницей между ":=", "=" и "=="

    > import ( "flag"; "http"; "io"; "log"; "strings"; "template"; )

    Нахрена кавычки, это что строки, просто текст?
    А что будя если указать  import ( "fla\0x67"; "http \n"; "           io";)


    > _ = freeList <- b;  

    Это вааабще весело...

     
     
  • 2.31, 82500 (?), 09:22, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Ты че тут понаписал? Вот же спецам из гугла не повезло, нужно было в главные архитекторы языка хвостатого павлина взять, чтобы красиво, как в мс.
     
     
  • 3.33, pavlinux (ok), 09:33, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Ты че тут понаписал? Вот же спецам из гугла не повезло, нужно
    >было в главные архитекторы языка хвостатого павлина взять, чтобы красиво, как
    >в мс.

    Не пиздить! А если пиздить, то по делу. Про Моё тело не по делу!


     
  • 2.32, Vertigo (??), 09:25, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Да, вот странно. Зачем двойное равенство, если присваивание как в паскале? Там, вроде бы, одинарным обходятся неплохо.
     
     
  • 3.49, Iv945n (ok), 15:37, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >Да, вот странно. Зачем двойное равенство, если присваивание как в паскале? Там,
    >вроде бы, одинарным обходятся неплохо.

    Чтобы  раз и навсегда избежать путанницы и неосознанности в этом вопросе логично было бы вообще = запретить, а оставить только := для присвоения и == для сравнения IMHO.

     

  • 1.34, Аноним (27), 10:00, 12/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Короче, учить надо те языки которые востребованы на рынке труда, и максимально подходит для решения конкретных задачи. Все эти споры, о синтаксисе, о том какой язык самый крутой, пустое сотрясание воздуха
     
     
  • 2.51, Cobold (??), 18:01, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    как-то недавно проскакивала статистика показывавшая что на рынке труда максимально востребован COBOL. По той простой причине что для него практически невозможно найти не занятых программистов. Повод задуматься :)
     

  • 1.36, nvv13 (?), 10:34, 12/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Язык go
    это что
    теперь goto опять в моде будет?
     
     
  • 2.38, Аноним (27), 10:59, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    нет, это гугл готовится к выходу соей ОС. Что то они больно шустро зашагали, наверняка из за своей операционки.
     

  • 1.39, Аноним (-), 11:03, 12/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А в нём нет ни while, ни until. А как же циклы делать?

    P.S.
    я не программист.

     
     
  • 2.40, nvv13 (?), 11:14, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    есть For смотри  http://golang.org/doc/go_spec.html#For_statements
    есть Goto смотри  http://golang.org/doc/go_spec.html#Goto_statements
     
  • 2.41, pavlinux (ok), 11:38, 12/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >А в нём нет ни while, ни until. А как же циклы
    >делать?

    aa:
    if ( a ! = 1000000000 )  {
      a += a++ + 1;
      goto aa;
    }

    :)

     
     
  • 3.64, поцанчик (ok), 21:43, 26/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    >>А в нём нет ни while, ни until. А как же циклы
    >>делать?
    >
    >aa:
    >if ( a ! = 1000000000 )  {
    >  a += a++ + 1;
    >  goto aa;
    >}
    >
    >:)

    :DDDDDDDDDDDDDD

     
  • 3.71, igorbat (?), 23:21, 26/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >>А в нём нет ни while, ни until. А как же циклы
    >>делать?
    >
    >aa:
    >if ( a ! = 1000000000 )  {
    >  a += a++ + 1;
    >  goto aa;
    >}
    >
    >:)

    это напоминает PL1 --)))

     
  • 2.56, letsmac (?), 11:42, 13/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    For + If. Зачем goto ввели непонятно.
     

  • 1.42, nvv13 (?), 11:49, 12/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот попробуйте поискать примеры кода
    go example
    или
    python example

    go example - вообще чуш выдаёт

    !!!как же неудачно назван язык!!!
    красиво, не спорю, но неудачно!!

     
     
  • 2.60, Аноним (-), 12:32, 14/11/2009 [^] [^^] [^^^] [ответить]  
  • +/
    Вы таки думаете, что гугол не настроит свою гуглоискалку, чтобы она вменяемо выдавала результаты при поиске проектов на go? Уже чувствуется, как продвигается гуглокод при поиске опенсорсных проектов
     
  • 2.67, Basiley (ok), 10:51, 28/01/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >вот попробуйте поискать примеры кода
    >go example
    >или
    >python example
    >
    >go example - вообще чуш выдаёт
    >
    >!!!как же неудачно назван язык!!!
    >красиво, не спорю, но неудачно!!

    marines, go, go, go !!

    но если сурьезно, Биллу Гейтсу должно икаться, с его любовью к безусловным переходами и инлайн-ассемблеру :)

     

  • 1.43, nvv13 (?), 11:58, 12/11/2009 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    вот нашёл язык go!
    http://en.wikipedia.org/wiki/Go!_(programming_language)
    то есть название языка "go!", создан в 2003 году
     
     
  • 2.58, compiler (?), 14:26, 13/11/2009 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Go! и Go -- разные языки.
     
     
  • 3.68, Basiley (ok), 11:02, 28/01/2010 [^] [^^] [^^^] [ответить]  
  • +/
    >Go! и Go -- разные языки.

    не факт что Go! хуже. и не настолько разный, чтобы не заметить ряд ВОПИЮЩИХ(и несанкционированных)"заимствований".
    +автор Go! угробил несколько месяцев, уговаривая Гугль, не тырить у него название языка.
    безрезультатно.
    вот что бывает когда люди из Microsoft, переодеваются в "Хороших".

     

  • 1.69, Аноним (-), 01:26, 25/07/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Опять забыли про поддержку Widnows )))
     
     
  • 2.74, Вот тебе Windows (?), 03:18, 20/12/2010 [^] [^^] [^^^] [ответить]  
  • +/
    http://code.google.com/p/gomingw/downloads/list
     

  • 1.72, yan (??), 12:52, 27/08/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    При поиске наиболее адекватные результаты выдает "Golang", а не просто Go
    Добавьте в ключевые слова plz/
     
     
  • 2.73, yan (??), 12:53, 27/08/2010 [^] [^^] [^^^] [ответить]  
  • +/
    аналогично и в вики http://en.wikipedia.org/wiki/Golang
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Спонсоры:
    Слёрм
    Inferno Solutions
    Hosting by Ihor
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2019 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру