LINUX.ORG.RU

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

 , , ,


0

0

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

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

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

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

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

★★★

Проверено: hibou ()

Ответ на: Google представляет Go от yk4ever

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

>дактайпинг >... >примерно то же, что и динамическая типизация

Да ты же упоротый! Динамическая типизация это возможность переменной сохранять значения разных типов. Утиная типизация это более гибкая система проверки типов, основанная на сличении интерфейса. Интерфейса в широком смысле (как совокупности сигнатур всех методов).

anonymous ()
Ответ на: Re: Google представляет Go от anonymous

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

> Давай ка заменим слово "наследование" на subclassing, может тогда ты осилишь понять, что реализация интерфейса это не сабклассинг.

Ага. Зато обратное верно: "сабклассинг" есть частный случай реализации интерфейса.

> И перестань хамить, неуч.

С анонимусами надо строго. Следующий!

yk4ever ()
Ответ на: Re: Google представляет Go от anonymous

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

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

Да. Поэтому они часто используются вместе.

> основанная на сличении интерфейса.

Подчеркнём: интерфейсы сличаются не полностью, а всего лишь по мере необходимости.

> Интерфейса в широком смысле (как совокупности сигнатур всех методов).

Нет, совершенно необязательно всех.

> Да ты же упоротый!

Анонимусы такие анонимусы. Следующий!

yk4ever ()
Ответ на: Google представляет Go от Darkman

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

> "Если Вы такие умные, что ж Вы строем не ходите ?" - так что-ли ?

В принципе, да.

faustus ()
Ответ на: Re: Google представляет Go от anonymous

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

> Что-то? А можешь обосновать?

А что не понятно? В ретурнами посередине функции, control flow получается запутанный, это все равно, что goto. Программировать необходимо структурально и понятно.

faustus ()
Ответ на: Re: Google представляет Go от anonymous

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

>Давай ка заменим слово "наследование" на subclassing, может тогда ты осилишь понять, что реализация интерфейса это не сабклассинг.

Наследование это декларация принадлежности типа к какому-то множеству. Множественное наследование - к нескольким множествам.

Absurd ★★★ ()
Ответ на: Google представляет Go от faustus

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

> ретурнами посередине функции, control flow получается запутанный, это все равно, что goto.

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

Самая большая проблема это не ретурны, а сайд эффекты. Вот этого, да, надо избегать. Но "избегать" а не выкручивать руки средствами языка. В жабе вон - уже довыкручивались, scala после этого как бальзам на раны, несмотря на гораздо более строгую типизацию.

Darkman ★★★ ()
Ответ на: Google представляет Go от yk4ever

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

> Класс обладает не объединением, а пересечением свойств всех его элементов.

Согласен, здесь я и ошибся. Если исходить из определения классификации, то да, класс - это пересечение, а не объединение. Т.е. класс - это множество _общих_ свойств, присущих представителям класса. Признаю, каюсь.

> 1) Рассмотрим класс грибов и образец Puzan

> 2) Все грибы дышат (потребляют кислород, выделяют углекислый газ)

...

> 6) Но тем не менее, он гриб :)

Исходя из вашей классификации, все мы тут грибы.

> А вы - двоечник.

А вот обзываться нехорошо.

Puzan ★★★★ ()
Ответ на: Re: Google представляет Go от Puzan

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

> Исходя из вашей классификации, все мы тут грибы.

классификация основана на Вашей логике, впрочем, Вы уже поняли свою ошибку

unC0Rr ★★★★★ ()
Ответ на: Google представляет Go от yk4ever

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

То есть по теме ответить нечего? Что ты, как попугай, твердишь и твердишь "следующий"? Ты бы хоть на один аргумент что-то отписал конструктивно. Куда тебе следующих, ты разберись в терминах, неуч, жырнота, хам.

anonymous ()
Ответ на: Google представляет Go от faustus

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

> А что не понятно? В ретурнами посередине функции, control flow получается запутанный, это все равно, что goto. Программировать необходимо структурально и понятно.

Ну что за толстый троль? Множественные точки выхода как раз могут упростить control flow убирая ненужные проверки вида if (status == STATUS_SUXXESS)

anonymous ()

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

буGоGо :)

имя для языка уже давно было занято

golang.org -> Issue tracker -> I have already used the name for *MY* programming language

I have been working on a programming language, also called Go, for the last 10 years. There have been papers published on this and I have a book. I would appreciate it if google changed the name of this language; as I do not want to have to change my language!

ЗЫ: Goo тоже занято (полудохлый диалект лиспа)

anonymous ()
Ответ на: Re: Google представляет Go от unC0Rr

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

>> Исходя из вашей классификации, все мы тут грибы.

> классификация основана на Вашей логике, впрочем, Вы уже поняли свою ошибку

Нифига. Исходя из вашего определения грибов, как раз по правильной классификации мы все грибы. Если "Все грибы дышат (потребляют кислород, выделяют углекислый газ)" является классификацией грибов, то не важно, есть у тебя руки/ноги/голова, ты все равно гриб.

В общем, думаю надо с этим заканчивать. Все равно не по теме спор.

Лучше скажите мне, есть ли объектно-ориентированный язык, как замена C, для применения во встраиваемой технике (в т.ч. в realtime)? С++ не подходит из-за большого и динамического runtime (можно, конечно, использовать только часть C++, но как-то это некрасиво). Когда-то ипонцы решили сделать такой путем обрезания C++ (EC++), но что-то это не вышло за пределы их страны. Язык должен быть предсказуем как по времени выполнения, так и по расходу памяти, т.е. никаких интерпретаторов, гарбаж-коллекторов, динамической типизации и пр.

Puzan ★★★★ ()
Ответ на: Re: Google представляет Go от anonymous

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

> Ты бы хоть на один аргумент что-то отписал конструктивно.

Я отписал. До вас сразу не дошло. А тратить время на анонимусов глупо. Следующий!

yk4ever ()
Ответ на: Re: Google представляет Go от Puzan

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

> Лучше скажите мне, есть ли объектно-ориентированный язык, как замена C, для применения во встраиваемой технике (в т.ч. в realtime)?

Pascal. Ada.

> С++ не подходит из-за большого и динамического runtime

ООП подразумевает динамический рантайм. Он нужен для диспетчеризации.

yk4ever ()
Ответ на: Google представляет Go от yk4ever

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

Pascal не ОО, Ada слишком тяжелая с огромным рантаймом. Уж лучше Oberon.

> ООП подразумевает динамический рантайм. Он нужен для диспетчеризации.

Вовсе нет. В обльшинстве случаев диспетчеризацию можно сделать статически (или псевдодинамически), на базе таблиц.

Puzan ★★★★ ()
Ответ на: Google представляет Go от robot12

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

robot12

А что, есть другие задачи ? :) LOL

Конечно: повышение ЧСВ автора, а также его ценности в глазах крупных компаний. А программы обычно пишут на С/C++.

KblCb ★★★★★ ()
Ответ на: Re: Google представляет Go от Puzan

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

> Лучше скажите мне, есть ли объектно-ориентированный язык, как замена C, для применения во встраиваемой технике (в т.ч. в realtime)? С++ не подходит из-за большого и динамического runtime (можно, конечно, использовать только часть C++, но как-то это некрасиво). Когда-то ипонцы решили сделать такой путем обрезания C++ (EC++), но что-то это не вышло за пределы их страны. Язык должен быть предсказуем как по времени выполнения, так и по расходу памяти, т.е. никаких интерпретаторов, гарбаж-коллекторов, динамической типизации и пр.

Ada2005 ?

Darkman ★★★ ()
Ответ на: Google представляет Go от yk4ever

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

> ООП подразумевает динамический рантайм. Он нужен для диспетчеризации.

С какой стати ? Можно пример ?

Darkman ★★★ ()
Ответ на: Google представляет Go от Darkman

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

> Не будет она "адекватной". В первую очередь из-за GC. Си много где в риалтайме используется - какой там к чёрту GC.

Оно понятно что гарбаж коллекторы конечно костыль, и выделение на стеке со смарт поинтерами лучше. Мне именно присутствие ГК непонравилось. Почему во всех новых языках обязательно ГК, а не просто смарт поинтеры ? Они ведь гораздо красивее.

pazak ()
Ответ на: Google представляет Go от KblCb

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

>Конечно: повышение ЧСВ автора, а также его ценности в глазах крупных компаний.

Интересно, кого из авторов Go Вы имели в виду ?

imho ни одному из них особенно представляться не нужно :)

robot12 ★★★★★ ()
Ответ на: Google представляет Go от Darkman

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

> С какой стати ? Можно пример ?

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

Тогда что с собой кресты таскают? Просто стандартная бублиотека такая раздутая?

yk4ever ()
Ответ на: Google представляет Go от robot12

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

> imho ни одному из них особенно представляться не нужно :)

Да и ценность в глазах крупной компании Google уже наблюдается :]

yk4ever ()
Ответ на: Google представляет Go от yk4ever

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

>Да и ценность в глазах крупной компании Google уже наблюдается :]

Ну да ... тжаль тов. Завалишин там не работает :)

robot12 ★★★★★ ()
Ответ на: Google представляет Go от yk4ever

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

> Тогда что с собой кресты таскают? Просто стандартная бублиотека такая раздутая?

И библиотека раздутая и поддержка наверное всего, что можно (исключения, rtti, динамическая аллокация и пр.). По крайней мере из gcc это выковырять не получается.

Puzan ★★★★ ()
Ответ на: Google представляет Go от Darkman

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

> http://coding.derkeiler.com/Archive/Ada/comp.lang.ada/2009-02/msg00051.html > http://www.ghs.com/products/safety_critical/gmart.html

Запуск на голом железе - это частный случай (спорить о терминах больше не буду), интересно другое, какой объем рантайма?

Puzan ★★★★ ()
Ответ на: Google представляет Go от Darkman

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

Собственно, GSTART реализует этот профиль (вторая ссылка).

Puzan ★★★★ ()
Ответ на: Re: Google представляет Go от Puzan

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

> интересно другое, какой объем рантайма?

libada - 3.1Mb

минимальный бинарь - 425Kb (правда здесь уже и многозадачность, и эксепшены и ещё куча всего)

Но нужно учитывать что можно пересобрать стандартную библиотеку оставив только то что надо. Первая ссылка как раз про это и была.

Плюс сколько там памяти в среднем эмбедеде счас используется ?

Darkman ★★★ ()
Ответ на: Google представляет Go от Darkman

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

> Плюс сколько там памяти в среднем эмбедеде счас используется?

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

Вот для средних и больших можно и линукс и C++ и даже питон с явой, а для маленьких и совсем маленьких такой подход уже не прокатит.

Puzan ★★★★ ()
Ответ на: Re: Google представляет Go от Puzan

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

> а для маленьких и совсем маленьких такой подход уже не прокатит.

Сдаётся мне, что здесь кроме Си ничего и не надо, т.к. вся мощща той же Ады врятли будет востребована.

Правда стоит отметить, что некоторым производителям хочется оторвать всё что болтается за качество их библиотек, особенно когда одни хидера под кучу архитектур с вагоном #ifdef. Вот тут и понимаешь, что препроцессор - зло, причём зло в квадрате, когда его так используют.

Darkman ★★★ ()
Ответ на: Google представляет Go от yk4ever

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

>Просто стандартная бублиотека такая раздутая?

Я как-то давно увлекался максимальной минимизацией бинарей под виндой и могу сказать про три вещи цепляющиеся за stdlib ограмным месивом из соплей: а) Глобальные и статические объекты и тот код который приклеивается перед main() и вызывает конструкторы глобальных статических объектов. б) Экзепшены и RTTI цепляются всем чем только можно - если где-то в коде есть экзепшены и dynamic_cast, то линкер ругается на огромную кучу неотрезолвленных символов если линкуемся без RTL в) ::operator new()/::operator delete(). Можно написать свой new/delte на базе BSD кода и примитивов ОС и пользоваться глобальными указателями на объекты вместо глобальных объектов инициализируя их в main(), но когда в дело входит RTTI и экзепшены возможность разглючить это болото представляется маловероятной. Старым реализациям C++ stdlib и STL было достаточно только new/delete, новые походу используют все фичи С++.

Absurd ★★★ ()
Ответ на: Google представляет Go от Darkman

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

> Сдаётся мне, что здесь кроме Си ничего и не надо, т.к. вся мощща той же Ады врятли будет востребована.

В общем, вся мощща Ады и не нужна, но и простого C недостаточно. Хочется большей абстракции.

Puzan ★★★★ ()
Ответ на: Re: Google представляет Go от Puzan

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

>Хочется большей абстракции.

на embed-девайсе с мозгами ~5-10Кб и никакущим сравнительно процом?

arkhnchul ★★ ()
Ответ на: Re: Google представляет Go от Puzan

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

> Хочется большей абстракции.

Отрываем при пересборке от libada всё что не нужно - exceptions, multitasking, etc... проставляем прагмы - и вперёд. Там много чего оторвать можно - концепция того же рандеву требует крайне нехилой поддержки со стороны рантайма, а обойтись без неё можно, если хочется. Встраиваемые системы при проектировании Ады всегда учитывались, она собственно для них и создавалась.

Darkman ★★★ ()
Ответ на: Re: Google представляет Go от arkhnchul

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

> на embed-девайсе с мозгами ~5-10Кб и никакущим сравнительно процом?

На таком, конечно, нет, а если в 10 раз больше, то вполне.

Никакущесть проца - весьма относительное понятие.

Puzan ★★★★ ()
Ответ на: Google представляет Go от pazak

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

> Почему во всех новых языках обязательно ГК, а не просто смарт поинтеры ? Они ведь гораздо красивее.

да, пациент, вам совсем плохо

Joe_Bishop ()
Ответ на: Google представляет Go от sig_11

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

Бендером и Фраем изобретен язык Be - в нем нет ни одного оператора, но есть свои казино и шлюхи...

anonymous ()
Ответ на: Google представляет Go от Joe_Bishop

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

> да, пациент, вам совсем плохо

Кресты бесследно для психики не проходят, нет.

yk4ever ()
Ответ на: Google представляет Go от yk4ever

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

>Кресты бесследно для психики не проходят, нет.

Наверно любая запутанная и притянутая за уши концепция с кучей противоречий и исключений привлекает кучу фанатичных зубрилок рождающих тонны ненависти на любого кто пытается разгрести авгиевы конюшни.

Absurd ★★★ ()
Ответ на: Re: Google представляет Go от Absurd

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

> Наверно любая запутанная и притянутая за уши концепция с кучей противоречий и исключений привлекает кучу фанатичных зубрилок

...и порождает калЕк и ниасиляторов, которые фанатично ненавидят концепцию.

tailgunner ★★★★★ ()
Ответ на: Re: Google представляет Go от tailgunner

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

>> Наверно любая запутанная и притянутая за уши концепция с кучей противоречий и исключений привлекает кучу фанатичных зубрилок

>...и порождает калЕк и ниасиляторов, которые фанатично ненавидят концепцию.

Лавуазье видимо ниасилил флогистон.

Absurd ★★★ ()
Ответ на: Google представляет Go от beastie

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

>что ж будим портировать под опенёк.

А в пне уже появился юникод?

mutronix ★★★★ ()

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

> In Go the rule about visibility of information is simple: if a name (of a top-level type, function, method, constant or variable, or of a structure field or method) is capitalized, users of the package may see it. Otherwise, the name and hence the thing being named is visible only inside the package in which it is declared. This is more than a convention; the rule is enforced by the compiler. In Go, the term for publicly visible names is ''exported''.

Вот что надо было указать в шапке в кратком описании. Такого даже в питоне не наворотили.

Каждому языку по фиче - у питона индентация matters, у Брэма скобки несбалансированы, тут вот - уважительное наименование "публичных" имен, с большой буквы. Где еще какая трава?

t184256 ★★★★★ ()

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

Что то сдается мне что "goto" эволюционирует.

crono ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.