Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Google создал язык программирования

87
11 ноября 2009 года
Kogrom
2.7K / / 02.02.2008
Эх, Гугл опередил меня :)

Кстати, нет версии для Windows. Ну и с оопизмом не всё понятно. Есть какие-то не ясные интерфейсы. Буду ждать новую версию, типа Goo, или Go++.

Ну и инициализация в виде i := 10 мне понравилась.
6
11 ноября 2009 года
George
4.1K / / 05.01.2007
Цитата: Kogrom
Ну и инициализация в виде i := 10 мне понравилась.

и тут от дельфи че то взяли (=

87
11 ноября 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: Washington
и тут от дельфи че то взяли (=



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

6
11 ноября 2009 года
George
4.1K / / 05.01.2007
i := 10;
это инициализация с начальным значением что-ли?
244
11 ноября 2009 года
UAS
2.0K / / 19.07.2006
Ну пара вещей в синтаксисе на первый взгляд понравилась, например:
 
Код:
07    import (
08        "os";
09        "flag";  // command line option parser
10    )

14    const (
15        Space = " ";
16        Newline = "\n";
17    )


А вот это раздражает:
 
Код:
22        for i := 0; i < flag.NArg(); i++ {
23            if i > 0 {
24                s += Space
25            }
26            s += flag.Arg(i)
27        }

Ну, по крайней мере := (не знаю, не люблю данную последовательность=)) + то, что тело цикла выделяются фиггурными скобками, а такие участки "for i := 0; i < flag.NArg(); i++" - нет. Как-то напрягает такое.

В сами премудрости языка не вникал.
87
11 ноября 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: Washington
i := 10;
это инициализация с начальным значением что-ли?



Ты зачем-то поправил свое сообщение. Вначале было правильно о том, что это инициализация без указания типа (пусть компилятор сам угадывает). Естественно, в этой целочисленной переменной будет начальное значение 10.

260
11 ноября 2009 года
Ramon
1.1K / / 16.08.2003
Очередной инновационный прорыв уровня ECMA скрипта:D
5
11 ноября 2009 года
hardcase
4.5K / / 09.08.2005
Хмм, на первый взгляд нет ничего принципиально прорывного.
По дизайну синтаксиса - странная смесь Алгола и Жабаскрипта.
А по функционалу до Sing# все же не дотягивает.


АПД. Дочитал до for-предложения. Это [COLOR="Red"]#МАТ#[/COLOR] [COLOR="#ff0000"]А вот этого делать нельзя. Модератор[/COLOR]
 
Код:
for i := 0; i < 10; i++ {
    f(i)
}
А вот так можно сократить (мне одному хочется написать while?):
 
Код:
for a < b {
    a *= 2
}
Итератор:
 
Код:
for i, s := range a {
    // type of i is int
    // type of s is string
    // s == a
    g(i, s)
}
Такое ощущение, что они хотели специально сделать "не так как у остальных". Доизобретались...
6
11 ноября 2009 года
George
4.1K / / 05.01.2007
Цитата: Kogrom
Ты зачем-то поправил свое сообщение. Вначале было правильно о том, что это инициализация без указания типа (пусть компилятор сам угадывает). Естественно, в этой целочисленной переменной будет начальное значение 10.


да че то не айс. если бы это был оператор присваивания, то я бы понял. допустим
i := 10; // Инициализация и присваивание значения
i := 5; // Только присванивание
то нормально. а иначе огород какой то. имхо.

29K
12 ноября 2009 года
Ander Skirnir
109 / / 08.06.2009
Инициализация с выводом типа оператором `:=` - штука красивая, но я, например, быстро читая код, мог бы иногда путать `=` с `:=`. Мне больше нравится .нетовское
var x = 10
// x.GetType().ToString() >> System.Int32
361
12 ноября 2009 года
Odissey_
661 / / 19.09.2006
Не совсем ясно почему на флаг поднята быстрая компиляция. А так вроде по описанию выходит что Go низкоуровневый язык для серверных приложений.

Типизация строгая с поддержкой вывода типов? Или я что то не то прочитал? Если так, то вдохновляет =)

Кстати, настроение улучшило обсуждение на их трекере названия языка Оказывается язык с таким названием уже был =) И автор более раннего Go "катит бочку". А народ попутно пытается придумать новое название.
87
12 ноября 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: Odissey_
Не совсем ясно почему на флаг поднята быстрая компиляция.


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

Цитата: Odissey_
Типизация строгая с поддержкой вывода типов? Или я что то не то прочитал? Если так, то вдохновляет =)



Вот этот момент как-то не укладывается в голову. Ну, при инициализации переменных удобно вычислять. А как вычислить тип параметров функции? По использованию? Думаю, что так можно вычислить только некоторый абстрактный тип, с определенными функциями и данными. Хотя, наверное я замечтался :)

5
12 ноября 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
А как вычислить тип параметров функции? По использованию?

Тип можно вычислить по алгоритму Хиндли-Милнера-Дамаса. Для этого компилятор решает систему уравнений, неизвестными в которых являются типы (по-гиковому это процесс унификации).

535
12 ноября 2009 года
Нездешний
537 / / 17.01.2008
Понравилось, что можно возвращать более одного значения из функции
 
Код:
func (r13 *rotate13) Read(b []byte) (ret int, err os.Error) {
        r, e := r13.source.Read(b);
        for i := 0; i < r; i++ {
            b = rot13(b)
        }
        return r, e
}

nw, ew := file.Stdout.Write(buf[0:nr]);


2 Kogrom
Насчет оопизма ;)

Объявление методов:
 
Код:
type IntArray []int

func (p IntArray) Len() int            { return len(p); }
func (p IntArray) Less(i, j int) bool  { return p < p[j]; }
func (p IntArray) Swap(i, j int)       { p, p[j] = p[j], p; }
Получается, вроде, что можно дополнить любой тип без наследования...

А интерфейс в чем-то похож на шаблон:
Код:
type Interface interface {
        Len() int;
        Less(i, j int) bool;
        Swap(i, j int);
}

//We can apply Sort to any type that implements Len, Less, and Swap.
func Sort(data Interface) {
        for i := 1; i < data.Len(); i++ {
            for j := i; j > 0 && data.Less(j, j-1); j-- {
                data.Swap(j, j-1);
            }
        }
}
Вот этот алгоритм Sort можно использовать с приведенным выше типом IntArray безо всякого указания взаимосвязи
361
12 ноября 2009 года
Odissey_
661 / / 19.09.2006
Цитата: hardcase
Тип можно вычислить по алгоритму Хиндли-Милнера-Дамаса. Для этого компилятор решает систему уравнений, неизвестными в которых являются типы (по-гиковому это процесс унификации).


Все верно, такая модель типизации например в Haskell =)

Цитата:
Понравилось, что можно возвращать более одного значения из функции


Честно говоря практическая ценность такого пока мной не улавливается. Большая наглядность?

Цитата:
Вот этот алгоритм Sort можно использовать с приведенным выше типом IntArray безо всякого указания взаимосвязи


Хм. Это похоже аля классы типов как в том же Haskell.

Итого. Собраны разные концепции из разных парадигм. Что получаем в целом ? =)

87
12 ноября 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: hardcase



Почитал. В тонкости не вникал, но получается, что тут надо знать внешние для функции типы. И при добавлении нового типа придётся пересчитывать функцию. Я то смотрел в сторону "утиной типизации".

Также можно применить метод, который в C++ используется в шаблонах - создаем нужное количество функций, основываясь на применении и пытаемся скомпилировать. Но тут свои недостатки.

87
12 ноября 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: Нездешний
Понравилось, что можно возвращать более одного значения из функции


Почти как в Python :)

Цитата: Нездешний
Объявление методов:
 
Код:
type IntArray []int

func (p IntArray) Len() int            { return len(p); }
func (p IntArray) Less(i, j int) bool  { return p < p[j]; }
func (p IntArray) Swap(i, j int)       { p, p[j] = p[j], p; }
Получается, вроде, что можно дополнить любой тип без наследования...


Тоже вроде как в Python.

Цитата: Нездешний
А интерфейс в чем-то похож на шаблон:
 
Код:
type Interface interface {
        Len() int;
        Less(i, j int) bool;
        Swap(i, j int);
}


Это больше похоже на абстрактный тип, но не как в C++, а с "Утиной типизацией". В C++ шаблон так не расписывается, если я не путаю.

6
12 ноября 2009 года
George
4.1K / / 05.01.2007
Цитата: Odissey_
Честно говоря практическая ценность такого пока мной не улавливается. Большая наглядность?


ну вот мне частенько бывает нужно вернуть из функции два результата. приходится делать не функцию function Foo(A: integer): integer; а процедуру procedure Bar(a: integer; var b, c: single);
наглядность таки теряется, а в теле процедуры уже нельзя использовать Result.

251
14 ноября 2009 года
SkyMаn
1.7K / / 31.07.2007
Цитата: UAS

А вот это раздражает:
 
Код:
22        for i := 0; i < flag.NArg(); i++ {
23            if i > 0 {
24                s += Space
25            }
26            s += flag.Arg(i)
27        }

Ну, по крайней мере := (не знаю, не люблю данную последовательность=)) + то, что тело цикла выделяются фиггурными скобками, а такие участки "for i := 0; i < flag.NArg(); i++" - нет. Как-то напрягает такое.


А еще не нравится то, что if/for-заголовок не в круглых скобках.

6
19 ноября 2009 года
George
4.1K / / 05.01.2007
[QUOTE="Google Wave"]фишка Google Go в том, что они взяли python, несколько изменили его в сторону С, и написали компилятор, как мне показалось, в бинарники. Причем скорость этих бинарников лучше, чем у аналогичных скриптов на питоне.

Если в одной фразе, они попытались совместить достоинства языков высоко и среднего уровня в своем творении[/QUOTE]
вот так как-то. :)
87
19 ноября 2009 года
Kogrom
2.7K / / 02.02.2008
Прикольно.

Небольшой оффтоп. Можно немного подкорректировать и получим:

фишка D в том, что они взяли python и C#, несколько изменили его в сторону С++, и написали компилятор, как мне показалось, в бинарники. Причем скорость этих бинарников лучше, чем у аналогичных скриптов на питоне.
6
19 ноября 2009 года
George
4.1K / / 05.01.2007
шо за такое D?
87
19 ноября 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: Washington
шо за такое D?


Это тот язык, за которым я наблюдал ещё до увлечения Python. Жду пока накопится достаточно документации и инструментов, и может тогда перейду на него. А может и разочаруюсь, как в Java...

http://ru.wikipedia.org/wiki/D_(язык_программирования)

5
19 ноября 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Причем скорость этих бинарников лучше, чем у аналогичных скриптов на питоне.


Дык, это же язык со статической типизацией, следовательно он полностью компилируемый. Этот язык возник как попытка исправить "родовые травмы" C++, кстати, сам Александреску участвует в его разрботке.

87
19 ноября 2009 года
Kogrom
2.7K / / 02.02.2008
Цитата: hardcase
кстати, сам Александреску участвует в его разрботке.



Недавно на ЛОРе была новость со статьёй Александреску про D. Ну и комментарии интересно почитать. Одни говорят "закапывайте быстрее", другие радуются. В общем, как всегда.

5
20 ноября 2009 года
hardcase
4.5K / / 09.08.2005
Цитата: Kogrom
Недавно на ЛОРе была новость со статьёй Александреску про D. Ну и комментарии интересно почитать. Одни говорят "закапывайте быстрее", другие радуются. В общем, как всегда.

На Хабре тоже была статья, даже в двух вариантах перевода. Другое дело, что унылых посредственностей, которые узнали слово class и уже думают, что умеют писать программы, и, более того, могут зарабатывать на этом деньги - было всегда изрядное число. Мне иной раз кажется (после взгляда на всякие топики форума), что нужно допускать охочих до программирования людей только после сдачи энного количества экзаменов, и по их итогам выдавать "права на программирование", по аналогии с правами на вождение автотранспорта, получаемые в ГАИ.

92
20 ноября 2009 года
Тень Пса
2.2K / / 19.10.2006
Цитата: Washington
ну вот мне частенько бывает нужно вернуть из функции два результата. приходится делать не функцию function Foo(A: integer): integer; а процедуру procedure Bar(a: integer; var b, c: single);
наглядность таки теряется, а в теле процедуры уже нельзя использовать Result.


можно вернуть структуру ;)

288
20 ноября 2009 года
nikitozz
1.2K / / 09.03.2007
Цитата: Тень Пса
можно вернуть структуру ;)



Лень объявлять новую :)

9
20 ноября 2009 года
Lerkin
3.0K / / 25.03.2003
Что-то гуглята в атаку перешли конкретно. Статейка.
6
20 ноября 2009 года
George
4.1K / / 05.01.2007
там ОС, основанная на облачных вычислениях. По сути большой браузер. Вся логика будет на серверах гугла, я так понял суть. Вроде прикольно, вроде клево, но подозрительно. Уж больно шустро гугл мир захватывает. Шустрее всяких гитларов...
241
21 ноября 2009 года
Sanila_san
1.6K / / 07.06.2005
Хех. С моим-то каналом мне только на винде и сидеть.:)
536
21 ноября 2009 года
alex-kniaz
382 / / 07.08.2008
Не. Это выходит что гугля у себя может тиражировать с вашего компа чтго угодо, а значит - н ичего хорошего
5
28 января 2010 года
hardcase
4.5K / / 09.08.2005
dukeleto> anybody have any thoughts about Go? golang.org/doc/go_faq.html
Whiteknight> isn't that a game that I'm terrible at?
dukeleto> that looks very interesting
Austin> Dude, that language will never succeed. Remember the rule.
plobsing> and what rule is that exactly?
Austin> No language with ':=' will ever succeed.
plobsing> touche
Austin> It's the operator of doom.
241
29 января 2010 года
Sanila_san
1.6K / / 07.06.2005
Цитата: hardcase
dukeleto> anybody have any thoughts about Go? golang.org/doc/go_faq.html
Whiteknight> isn't that a game that I'm terrible at?
dukeleto> that looks very interesting
Austin> Dude, that language will never succeed. Remember the rule.
plobsing> and what rule is that exactly?
Austin> No language with ':=' will ever succeed.
plobsing> touche
Austin> It's the operator of doom.


Ада, Паскаль и что там ещё?

16K
29 января 2010 года
k0t
97 / / 23.04.2007
Цитата: Sanila_san
Ада, Паскаль и что там ещё?


Smalltalk, еще вроде бы в Modula-3, но не уверен

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог