Linux.org.ru
Новости - Галерея - Форум - Трекер - Wiki - Поиск
[#]  
Bsd-un (фотография)

Google представляет Go

Go — экспериментальный язык програмирования, разработанный в Google. Основные разработчики языка — Роб Пайк и Кен Томпсон, также известные как разработчики unix и plan9.

Go предназначен в первую очередь для написания крупных серверных приложений и способен сократить время сборки с десятков минут до нескольких секунд (в сравнении с C++) за счет системы модулей и явного указания зависимостей.

В языке отсутствуют классы, исключения, метапрограммирование и ручное управление памятью, однако присутствуют указатели, сборщик мусора и goto. Также на уровне языка поддерживаются легковесные процессы (goroutines) и каналы (channels).

Можно использовать фигурные скобки и юникод в идентификаторах.

>>> Подробности.

Метки: go, google, plan9, unix

Bsd-un *** (11.11.2009 3:31:15)
Проверено: hibou (11.11.2009 7:53:57)

[#]  

Google представляет Go

Why are maps built in?

мой ответ: потому, что их реализации нужны дженерики

www_linux_org_ru ** (11.11.2009 16:12:50)
[#] Ответ на: Google представляет Go от www_linux_org_ru 11.11.2009 16:01:22  
Absurd (фотография)

Re: Google представляет Go

>язык без дженериков обречен

Не видел ни одной успешной платформы базированной на статической типизации с ранним связываением. Что COM, что Жаба - везде позднее связывание и стандартизованный ABI. Вероятно, те же плюшки и в .NET

Absurd ** (11.11.2009 16:14:47)
[#] Ответ на: Google представляет Go от faustus 11.11.2009 15:47:52  

Google представляет Go

> Знал когда-то язык, где брейку можно было сказать, через сколько вложенных циклов вывалиться.

Кстати, вспомнил - return-from в Common Lisp.

faustus * (11.11.2009 16:14:48)
[#] Ответ на: Google представляет Go от faustus 11.11.2009 16:14:48  
Absurd (фотография)

Re: Google представляет Go

>> Знал когда-то язык, где брейку можно было сказать, через сколько вложенных циклов вывалиться.

>Кстати, вспомнил - return-from в Common Lisp.

break label в жабе

Absurd ** (11.11.2009 16:15:42)
[#] Ответ на: Google представляет Go от yk4ever 11.11.2009 15:58:50  

Re: Google представляет Go

> Ну я рад за него. И где они, эти языки?

Речь шла об опыте разработки языков и у Пайка он есть. Причем опыт более чем успешный. То, что Вы он них (языках) ничего не знаете, ни в коей мере не характеризует их (языки), а скорей характеризует Вас, как человека, скажем, не в теме.

Для справки - перечисленные языки (за исключением, пожалуй, Alef) имеют в настоящее время промышленное применение.

anonymous (11.11.2009 16:16:28)
[#] Ответ на: Google представляет Go от faustus 11.11.2009 15:56:13  

Google представляет Go

> Я не знаю, что такое "декларативная диспетчеризация", но наследование - это прежде всего полиморфизм, виртуальные функции.

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

А теперь давайте вспомним, что виртуальные функции можно определить не только в базовом классе, но и в интерфейсе. Если вы подумаете чуточку подольше, то поймёте, что наследование - это всего лишь реализация интерфейса, неявно определённого предком. Когда есть интерфейсы - наследование не нужно.

yk4ever * (11.11.2009 16:18:09)
[#] Ответ на: Re: Google представляет Go от anonymous 11.11.2009 16:16:28  

Google представляет Go

> Для справки - перечисленные языки (за исключением, пожалуй, Alef) имеют в настоящее время промышленное применение.

Ну так и Python его более чем имеет, что не помешало нашему товарищу яростно брызгать слюной :]

yk4ever * (11.11.2009 16:19:00)
[#] Ответ на: Re: Google представляет Go от pazak 11.11.2009 15:11:25  
Attila (фотография)

Google представляет Go

>Да вместо goto для выхода из 3-х вложеных циклов всегда можно использовать нечто боллее удобоваримое:

>1. удовлетворить условия завершения всех циклов разом


Мысль гениальна, осталось её реализовать :)

>2. сгенерировать исключение. 3. воткнуть все вложеные циклы в отдельную функцию, и там где вам хочется вызвать goto просто вернуть управление и эвентуально значение :)


Феерично! Процу больше нечем заняться и вместо кондового JAMP`а надо его поднагрузить call`ами, балавством со стеком и прочими плюшками, связанными с вызовом функций.

Наш лозунг "Память дешОвая и процы наши быстры!"

Attila (11.11.2009 16:19:13)
[#] Ответ на: Google представляет Go от denis_ka 11.11.2009 9:14:17  
sinister666 (фотография)

Re: Google представляет Go

>кто нибудь из гугла рассказал почему новый велосипед, а не развитие D?

Потому же, почему и не любой другой язык -- NIH-синдром.

sinister666 ** (11.11.2009 16:20:54)
[#] Ответ на: Re: Google представляет Go от Absurd 11.11.2009 16:15:42  

Google представляет Go

> break label в жабе

Точно! Про это вообще забыл. Имхо, все эти плюшки надо запретить.

faustus * (11.11.2009 16:21:22)
[#] Ответ на: Google представляет Go от faustus 11.11.2009 14:41:21  

Google представляет Go

>> Да? Сколько лет, какое образование, какой опыт работы в команде?

отдел быдлокадров в конторе быдлокодеров?

Urthang (11.11.2009 16:21:48)
[#] Ответ на: Google представляет Go от www_linux_org_ru 11.11.2009 16:03:38  

Google представляет Go

> в таком случае определи, что ты называешь нейспейсом

Неймспейс - средство группировки имён. Позволяет определить квалифицированное имя, типа MyModule.myFunction.

"Статический метод класса" есть вызов функции по квалифицированному имени: MyClass.myFunction. Т.е. статический класс = неймспейс.

Для нестатических методов класс-неймспейс указывается неявно, через тип (базовый) экземпляра.

yk4ever * (11.11.2009 16:22:29)
[#] Ответ на: Re: Google представляет Go от Absurd 11.11.2009 16:11:15  

Google представляет Go

> Указатель же можно сделать ключем,

И чё, перемещающему гарбаж коллектору бегать по всем ассоцмассивам, ключи править?

yk4ever * (11.11.2009 16:23:44)
[#] Ответ на: Google представляет Go от yk4ever 11.11.2009 16:23:44  
Absurd (фотография)

Re: Google представляет Go

>> Указатель же можно сделать ключем,

>И чё, перемещающему гарбаж коллектору бегать по всем ассоцмассивам, ключи править?

Ну по факту в Go указатель можно сделать ключем, так что identity в хеши можно сваливать. Это примерно как сваливать в жабский HashMap объекты у которых не перегружен equals() и hashCode().

Absurd ** (11.11.2009 16:30:14)
[#] Ответ на: Google представляет Go от Absurd 11.11.2009 10:28:29  

Google представляет Go

> Но нет экзепшенов (???)

Why does Go not have exceptions?

Exceptions are a similar story. A number of designs for exceptions have been proposed but each adds significant complexity to the language and run-time. By their very nature, exceptions span functions and perhaps even goroutines; they have wide-ranging implications. There is also concern about the effect they would have on the libraries. They are, by definition, exceptional yet experience with other languages that support them show they have profound effect on library and interface specification. It would be nice to find a design that allows them to be truly exceptional without encouraging common errors to turn into special control flow that requires every programmer to compensate.

Like generics, exceptions remain an open issue.

pi11 (11.11.2009 16:37:14)
[#] Ответ на: Google представляет Go от fyrer 11.11.2009 10:41:20  
ramil (фотография)

Re: Google представляет Go

...2056 год. в школах на уроках информатики детки пишут код своего генератора велосипедов языков

>Предвкушаю реализацию от майкрософт >[dot]G

скорее gg#

ramil (11.11.2009 16:40:10)
[#] Ответ на: Google представляет Go от www_linux_org_ru 11.11.2009 15:49:51  

Google представляет Go

Они-же по сути своей упирают на безтиповость. То-есть язык должен гарантировать надёжность преобразований либо не преобразований типа значений(!) по необходимости. Соответственно, раз у нас нет жёсткой типизации, значит нам ненужны ни наследования ни полиморфизм как средства обеспечения типобезопастности.

Вопрос теперь в другом, чем отслеживать привычные иерархии "значений" ? Модулями ? А как-же ограничение области видимости ? Разве модулями это обеспечивается ?

pazak (11.11.2009 16:41:43)
[#] Ответ на: Google представляет Go от Attila 11.11.2009 16:19:13  

Google представляет Go

> Феерично! Процу больше нечем заняться и вместо кондового JAMP`а надо его поднагрузить call`ами, балавством со стеком и прочими плюшками, связанными с вызовом функций.

Сразу вспоминаем про static inline и не парим мозг окружающим.

pazak (11.11.2009 16:43:03)
[#] Ответ на: Re: Google представляет Go от ramil 11.11.2009 16:40:10  

Google представляет Go

> ...2056 год. в школах на уроках информатики детки пишут код своего генератора велосипедов языков

http://www.jetbrains.com/mps/

faustus * (11.11.2009 16:46:50)
[#] Ответ на: Re: Google представляет Go от ramil 11.11.2009 16:40:10  
robot12 (фотография)

Google представляет Go

>..2056 год. в школах на уроках информатики детки пишут код своего генератора велосипедов языков

Вам, уважаемый, видимо в школе не рассказывают про то что давно существует YACC :) LOL

robot12 ***** (11.11.2009 16:47:13)
[#] Ответ на: Google представляет Go от faustus 11.11.2009 15:47:52  
Darkman (фотография)

Google представляет Go

> Знал когда-то язык, где брейку можно было сказать, через сколько вложенных циклов вывалиться

Ada

Darkman ** (11.11.2009 16:47:22)
[#] Ответ на: Google представляет Go от pi11 11.11.2009 16:37:14  
Absurd (фотография)

Re: Google представляет Go

>Why does Go not have exceptions?

Я уже разобрался - там вроде бы туплы можно возвращать. Так что можно вернуть пару bool success, SomeT result.

Absurd ** (11.11.2009 16:48:38)
[#] Ответ на: Google представляет Go от pazak 11.11.2009 16:43:03  
Attila (фотография)

Google представляет Go

>Сразу вспоминаем про static inline и не парим мозг окружающим.

И забИваем (на) исключения :)

Attila (11.11.2009 16:49:58)
[#] Ответ на: Google представляет Go от pazak 11.11.2009 16:41:43  

Google представляет Go

> А как-же ограничение области видимости ? Разве модулями это обеспечивается ?

Да. Только ими и должно обеспечиваться.

yk4ever * (11.11.2009 16:51:16)
[#]  

Google представляет Go

Ааааааааааааааааааааааааааааааааааа!

Они убрали скобки у if, for

Тип возвращаемого значения надо указывать после имени функции

Типы аргументов можно указывать перед функцией

Имеются типы функций и анонимные функции

Тип переменной нужно указывать после идентификатора

Для присвоения использовать :=

Добавили оператор <- для отправки/получения данных по сети

Одним словом еще один язык с синтаксисом ортогональным по отношению ко всем существующим языкам.

sign # (11.11.2009 16:52:03)
[#] Ответ на: Re: Google представляет Go от Absurd 11.11.2009 16:48:38  

Google представляет Go

> Так что можно вернуть пару bool success, SomeT result.

Алгебраические типы шагают по планете.

yk4ever * (11.11.2009 16:52:20)
[#] Ответ на: Google представляет Go от sign 11.11.2009 16:52:03  
Absurd (фотография)

Re: Google представляет Go

>Одним словом еще один язык с синтаксисом ортогональным по отношению ко всем существующим языкам.

Они материализовали все то что я хотел от Си. Наверно мне нужна шапочка из фольги.

Absurd ** (11.11.2009 16:54:00)
[#] Ответ на: Google представляет Go от yk4ever 11.11.2009 16:18:09  

Google представляет Go

>А теперь давайте вспомним, что виртуальные функции можно определить не только в базовом классе, но и в интерфейсе. Если вы подумаете чуточку подольше, то поймёте, что наследование - это всего лишь реализация интерфейса, неявно определённого предком. Когда есть интерфейсы - наследование не нужно.

Ты сам себе противоречишь.

<ф цитаты bash.org.ru>

>>Когда есть интерфейсы - наследование не нужно.

</ф цитаты bash.org.ru>

Полиморфизм это тот самое, без чего просто нет ООП. Если нет строгой типизации, ненужен ООП, и полиморфизм в том числе.

Когда ты это поймешь, а не просто будешь попугайничать псевдо-умными фразами, тогда можно будет вести беседу.

pazak (11.11.2009 16:54:42)
[#] Ответ на: Google представляет Go от pazak 11.11.2009 16:54:42  
Absurd (фотография)

Re: Google представляет Go

>Полиморфизм это тот самое, без чего просто нет ООП. Если нет строгой типизации, ненужен ООП, и полиморфизм в том числе.

В COM есть интерфейсы, но нет наследования.

Absurd ** (11.11.2009 16:56:40)
[#] Ответ на: Google представляет Go от yk4ever 11.11.2009 16:51:16  

Google представляет Go

> Да. Только ими и должно обеспечиваться.

Ага, щаз ... привожу пример: язык lua. Теперь ты свою заяву обоснуй.

pazak (11.11.2009 16:57:24)
[#] Ответ на: Re: Google представляет Go от Absurd 11.11.2009 16:56:40  

Google представляет Go

COM это простите язык ?????

Есть ещё CORBA с её интерфейсами ... Проведём параллели к наследованию ?

pazak (11.11.2009 16:58:53)
[#] Ответ на: Google представляет Go от pazak 11.11.2009 16:58:53  
Absurd (фотография)

Re: Google представляет Go

>COM это простите язык ?????

Это ООП-модель такая. Без наследования, но с интерфейсами.

Absurd ** (11.11.2009 17:00:38)
[#]  

Google представляет Go

А goto они включили лишь потому, что язык с таким названием не может не содержать такого оператора?

dn2010 ***** (11.11.2009 17:01:21)
[#] Ответ на: Re: Google представляет Go от Absurd 11.11.2009 16:14:47  

Google представляет Go

>>язык без дженериков обречен

> Не видел ни одной успешной платформы базированной на статической типизации с ранним связываением. Что COM, что Жаба - везде позднее связывание и стандартизованный ABI. Вероятно, те же плюшки и в .NET

я про фому, ты про ерему

причем тут позднее связывание? в современной яве есть (неполноценные) дженерики, в плюсах почти полноценные

кстати, им таки пришлость заюзать дженерики в built-in каналах -- их каналы типизированы, так что фактически у них chan<int>

но своим пользователям они такие возможности не дают -- вопиющий недемократизм, если не сказать фашизм языка

www_linux_org_ru ** (11.11.2009 17:02:02)
[#] Ответ на: Google представляет Go от yk4ever 11.11.2009 16:22:29  

Google представляет Go

> Для нестатических методов класс-неймспейс указывается неявно, через тип (базовый) экземпляра.

просветление уже недалеко... как же ты сделаешь в классах, которые "частные случаи неймспейса", конструктор по умолчанию, конструктор копирования по умолчанию и прочие нестатические фенечки?

З.Ы. гораздо проще сделать из класса неймспейс, сделав класс открытым в области статических полей и методов, тогда можно будет сказать, что неймспейс есть частный случай класса

www_linux_org_ru ** (11.11.2009 17:09:36)
[#] Ответ на: Google представляет Go от www_linux_org_ru 11.11.2009 17:02:02  

Google представляет Go

> но своим пользователям они такие возможности не дают -- вопиющий недемократизм, если не сказать фашизм языка

Вообще-то, их язык ещё не финализирован. Он ещё пока в развитии, общественности представлены промежуточные результаты. Если я правильно понимаю одно из применений языка, то со своей сумашедшей скоростью компиляции они хотят заменить интепретируемые языки в системе.

Casus ***** (11.11.2009 17:11:09)
[#] Ответ на: Google представляет Go от yk4ever 11.11.2009 15:10:38  

Google представляет Go

>> что вы привязались к этому синтаксису? вам не пофигу, есть там фигурные скобочки или нет?

>Нет, не пофигу. Они мешают.


Хорошему танцору, как известно, не мешают.

volh * (11.11.2009 17:11:29)
[#] Ответ на: Google представляет Go от robot12 11.11.2009 16:47:13  
ramil (фотография)

Re: Google представляет Go

с MPS знаком, сыро

> Вам, уважаемый, видимо в школе не рассказывают про то что давно существует YACC :) LOL


YACC - не слышал, но...
вас, видимо, в школе учил сам Джонсон, которому не знакома физиология и уровень подростка, либо вы вундеркинд (тогда зачем вам ЛОР)

ramil (11.11.2009 17:13:08)
[#] Ответ на: Google представляет Go от www_linux_org_ru 11.11.2009 17:02:02  
Absurd (фотография)

Re: Google представляет Go

>> Не видел ни одной успешной платформы базированной на статической типизации с ранним связываением. Что COM, что Жаба - везде позднее связывание и стандартизованный ABI. Вероятно, те же плюшки и в .NET

>причем тут позднее связывание?

Такая вещь как дженерики и связывание символа с реализацией должны относиться скорее к платформе, а не языку. А на уровне платформы их реализовать нельзя. Дотнет не смотрел, но ожидание чуда невелико.

>в современной яве есть (неполноценные) дженерики

Пошли на поводу у плюсовых троллей.

Absurd ** (11.11.2009 17:14:30)
[#] Ответ на: Re: Google представляет Go от Absurd 11.11.2009 17:00:38  

Google представляет Go

>>COM это простите язык ?????

>Это ООП-модель такая. Без наследования, но с интерфейсами.

вобщем это отдельная тема для разговора не имеющая отношения к ЯП и типизации. Для сведения: реализуя интерфейс, вы, несмотря на ваше отрицание данного факта , его наследуете :) неявно конечно, т.к язык на котором вы пишете приложение (в данном случае C) ООП средствами сам не обладает.

pazak (11.11.2009 17:16:25)
[#] Ответ на: Google представляет Go от pazak 11.11.2009 16:54:42  

Google представляет Go

>>Когда есть интерфейсы - наследование не нужно.

Это почти что правильно.

Когда есть интерфейсы (тайпклассы) и параметрический полиморфизм (а желательно еще и зависимые типы), наследование может быть смоделировано, и как таковое нужно не очень часто.

www_linux_org_ru ** (11.11.2009 17:17:42)
[#] Ответ на: Google представляет Go от yk4ever 11.11.2009 16:52:20  
zenith (фотография)

Google представляет Go

Цитата

Алгебраические типы шагают по планете.

4.2. До гугла не дошагали :)

Кстати, из всех возможностей этого недоязычка понравился только message passing и конкурентность (long live Erlang), но без pattern matching юзать его придётся через жопу с кучей nested cases.

zenith ** (11.11.2009 17:18:22)
[#] Ответ на: Re: Google представляет Go от Absurd 11.11.2009 17:14:30  

Google представляет Go

> Такая вещь как дженерики и связывание символа с реализацией должны относиться скорее к платформе, а не языку. А на уровне платформы их реализовать нельзя.

нельзя? по какой причине? (все же сильно подозреваю бред)

www_linux_org_ru ** (11.11.2009 17:20:33)
[#] Ответ на: Re: Google представляет Go от Absurd 11.11.2009 17:14:30  

Google представляет Go

> Пошли на поводу у плюсовых троллей.

В смысле? Generics в Яве - самое серьезное улучшение языка за его историю, позволяют обходиться без кастингов и писать более-менее чистый код. Достоинства значительно перевешивают недостатки.

faustus * (11.11.2009 17:22:35)
[#] Ответ на: Google представляет Go от Casus 11.11.2009 17:11:09  

Google представляет Go

> Вообще-то, их язык ещё не финализирован.

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

www_linux_org_ru ** (11.11.2009 17:25:16)
[#] Ответ на: Google представляет Go от faustus 11.11.2009 17:22:35  

Google представляет Go

> В смысле? Generics в Яве - самое серьезное улучшение языка за его историю, позволяют обходиться без кастингов и писать более-менее чистый код. Достоинства значительно перевешивают недостатки.

Абсурд иногда говорит интересное, но бывает на почве ненависти к плюсам его заносит в полный бред.

www_linux_org_ru ** (11.11.2009 17:27:16)
[#] Ответ на: Google представляет Go от www_linux_org_ru 11.11.2009 17:17:42  

Google представляет Go

>Когда есть интерфейсы (тайпклассы) и параметрический полиморфизм (а желательно еще и зависимые типы), наследование может быть смоделировано, и как таковое нужно не очень часто.

Если есть интерфейсы которые нужно реализовывать, (в не зависимости от присутствия или отсутствия в ЯП ООП-фичек), явно или неявно (COM и C) но наследование происходит. В случае с COM отсутствует полиморфизм. Но его реализовать можно только средствами языка.

Параметрический полиморфизм , всё равно полиморфизм. ООП быть при жёсткой типизации, без вариантов. Без типизации, ООП ненужен. Логика железобетонная и доказана кочей языков в последние 40 лет. Доказано самими ЯП, от: юниксовых шеллов, перла, луа, лиспов и питона, до: ява, C# и вершины ООП С++.

pazak (11.11.2009 17:29:47)
[#] Ответ на: Google представляет Go от Casus 11.11.2009 17:11:09  

Google представляет Go

> Вообще-то, их язык ещё не финализирован.

Зато у них есть возможность создавать коллекции так сказать из Object-а, и как в яве, может быть понаписано куча быдлокода под такие коллекции. А затем потребуется создать костыли для интероперабельности старого кода и нового кода, с типобезопасными коллекциями. История явы ничему не учит?

www_linux_org_ru ** (11.11.2009 17:29:49)
[#] Ответ на: Google представляет Go от www_linux_org_ru 11.11.2009 17:20:33  
Absurd (фотография)

Re: Google представляет Go

>> Такая вещь как дженерики и связывание символа с реализацией должны относиться скорее к платформе, а не языку. А на уровне платформы их реализовать нельзя.

>нельзя? по какой причине? (все же сильно подозреваю бред)

Да хз. Я не представляю как бы я это сделал. Вероятно, в .NET что-то такое сделали, с контрпримером я бы ознакомился с удовольствием.

Absurd ** (11.11.2009 17:33:20)
[#] Ответ на: Google представляет Go от pazak 11.11.2009 17:29:47  
Absurd (фотография)

Re: Google представляет Go

>Доказано самими ЯП, от: юниксовых шеллов, перла, луа, лиспов и питона

Что с CLOS не так?

Absurd ** (11.11.2009 17:34:46)

http://www.linux.org.ru/

Rambler's Top100 TopList