LINUX.ORG.RU

Go выпущен в составе Google App Engine 1.5

 , , ,


0

1

Google объявил о поддержке языка Google Go на сервисе хостинга веб-приложений Google App Engine.

Google Go — компилируемый язык программирования с поддержкой многопоточности. Язык был создан Кеном Томпсоном (Ken Thompson), который принимал участие в создании Unix, его коллегой по Бэлл Робом Пайком (Rob Pike) и Робертом Грайсемером (Robert Griesemer), который принимал участие в разработке компилятора Java HotSpot.

В отличие от Java, язык компилируется в машинный код, но от C++ его отличает наличие менеджера памяти. Язык не имеет поддержки обработки исключений, наследования типов и обобщённого программирования.

Go предоставляет «goroutines» — легковесные потоки, а также каналы для обмена данными между ними.

Другие языки, такие как Scala и Erlang, также имеют средства для управления параллельностью исполнения, но Go создан с целью предоставления программисту максимального контроля над исполнением программы, как это делают С и С++.

>>> App Engine goes with Go

★★☆☆

Проверено: maxcom ()
Последнее исправление: svu (всего исправлений: 5)
Ответ на: комментарий от jtootf

>на деньги M$ развивается только GHC, тащемта, да и то только отчасти

коготок увяз - всей птичке пропасть.

ghc жрет память и глючит в лучших традициях МСофиса и вендувс.

AVL2 ★★★★★
()
Ответ на: комментарий от jtootf

А вот попробуй, узнаешь.

Я собрал сам ghc и весь базовый надор софта под centos. И дальше погонял там разные проги. Имел счастие пронаблюдать.

AVL2 ★★★★★
()

Даешь веб-приложения на брейнфаке! :)

initab
()
Ответ на: комментарий от AVL2

А вот попробуй, узнаешь.

переключился на emacs с открытым проектом. попробовал. замечательно работает. я что-то делаю не так?

jtootf ★★★★★
()
Ответ на: комментарий от Quasar

>Для серверов - Erlang перспективнее.

Это потому что там его никто не увидит?

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

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

AVL2 ★★★★★
()
Ответ на: комментарий от anonymous

PHP? нет, обсуждать это динамическое дерьмо, написанное израильскими школьниками и выпадающее в unexpected T_PAAMAYIM_NEKUDOTAYIM, которое получило нэймспэйсы только в прошлом году, я не собираюсь.

ArtemZ
()
Ответ на: комментарий от AVL2

>Или вы тут размеры стойки, системы охлаждения, юпсы и сетевые переключатели клавиатуры с монитором обсуждаете?

Обсуждаем режим работы. Или десктопу сейчас требуется держать удаленное подключение тысячи-другой пользователей?

DNA_Seq ★★☆☆☆
()
Ответ на: комментарий от anonymous

> Нет под рукой ссылок?

Под рукой нет, но истина где-то там: http://groups.google.com/group/golang-nuts

Желание гугла сделать явный проброс ошибок наверх в системных (С++ и как-бы Go) языках вполне понятен.

Причем тут «желание гугла»? Исключения в Си++ имеют репутацию медленной и хрупкой штуки, поэтому ей и не рекомендуется пользоваться.

Это не хипарское: кинул и забыл

Смешно. Необходимость постоянно проверять коды ошибок - вот что ведет к тому, что ошибки упускаются.

Зачем натягивать такую жесткую политику на фронтенд?

О чем ты?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Вероятно, вы не поняли зачем нужен defer и как он используется в go, вот пара ссылок: что такое defer http://golang.org/doc/effective_go.html#defer и http://golang.org/doc/go_spec.html#Defer_statements Обработка ошибок http://golang.org/doc/effective_go.html#errors включая panic & recover и еще Why does Go not have exceptions?

anonymous
()
Ответ на: комментарий от A-234

компилируемый язык программирования с поддержкой многопоточности
Неосиляторам pthreads посвящается? А так OpenMP есть.

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

anonymous
()
Ответ на: комментарий от anonymous

> Вероятно, вы не поняли зачем нужен defer

Я понял, зачем он нужен. Это такая ублюдочная форма finally.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

> Исключения в Си++ имеют репутацию медленной

И именно поэтому гугл от них отказался. У них исключительные ситуации происходят миллион раз в секунду, и тормознутые экцепшоны стали бы узким местом.

О чем ты?

Ручная проверка кодов возврата нужна в критических местах (по мнению гугля), ни питон ни жаваскрипт на ответственные куски не тянут, поэтому raise/throw в гайдах разрешен.

anonymous
()
Ответ на: комментарий от jtootf

Мне как раз не нравится эта его простота. Что за язык, в котором на все случаи жизни универсальная структура данных - кортеж, или что там? Мне это напоминает shell script - на все случаи жизни текст. Ну и инфраструктура у него странная. Помню как словил батхерт от прочтения дампа от упавшего RabbitMQ.

dizza ★★★★★
()
Ответ на: комментарий от AVL2

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

пффф... если сервер от дядюшки ляо, собранный из остатков графических станций или офисное решение на 35ю то наверное, во всех остальных одноплатники для управления и диагностики. И где это на десктопах по 4-8 многоядерных процов?

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

iBliss
()
Ответ на: комментарий от anonymous

> И именно поэтому гугл от них отказался. У них исключительные ситуации происходят миллион раз в секунду, и тормознутые экцепшоны стали бы узким местом.

Вовсе не по этому, глянь в style guide

maxcom ★★★★★
()
Ответ на: комментарий от AVL2

> ... которые возникают у прогеров при > имплементе < того или ...

Спасибо, блеванул!

alx_me ★★☆
()
Ответ на: комментарий от alx_me

В Objective-C, например, нет исключений (они есть, но используются только для ошибок «программер набыдлокодил», типа выхода за границы массива). Все остальные ошибки обрабатываются через коллбэки. И вот не скажу, что мне как-то нужны исключения, такой подход вполне работает и не жужжит.

mholub
()
Ответ на: комментарий от maxcom

> глянь в style guide

Это вообще-то был ответ (я надеялся, ироничный) на хвостостреловскую нелепицу почему плюсатые исключения плохи.

anonymous
()
Ответ на: комментарий от mholub

Таварищи из google-а старались, писали вам выше объяснялку почему _на практике_ RTTI и exceptions приводят к быдлокоду. Я предлагаю им поверить.

alx_me ★★☆
()
Ответ на: комментарий от alx_me

На своей практике я их выводы подтверждаю.

alx_me ★★☆
()
Ответ на: комментарий от anonymous

> на хвостостреловскую нелепицу почему плюсатые исключения плохи.

А я надеялся, что мое несогласие с этой нелепицей очевидно.

tailgunner ★★★★★
()
Ответ на: комментарий от maxcom

Отлично. Спасибо.
У меня и в школе то по русскому была тройка :(

grim ★★☆☆
() автор топика

Посоны.
Решил проверить производительность программок на Go.
В качестве примера берем вебсервер описаный в конце http://golang.org/doc/effective_go.html.
Зопуйскаем тестируем ab2.
Go 100000 соединений , 100 паралельных соединений.

Server Software:        
Server Hostname:        127.0.0.1
Server Port:            1718

Document Path:          /
Document Length:        240 bytes

Concurrency Level:      100
Time taken for tests:   29.501 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      33600000 bytes
HTML transferred:       24000000 bytes
Requests per second:    3389.69 [#/sec] (mean)
Time per request:       29.501 [ms] (mean)
Time per request:       0.295 [ms] (mean, across all concurrent requests)
Transfer rate:          1112.24 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       3
Processing:     1   29   4.4     29      69
Waiting:        1   29   4.4     29      64
Total:          4   29   4.4     29      69

Percentage of the requests served within a certain time (ms)
  50%     29
  66%     31
  75%     32
  80%     33
  90%     35
  95%     37
  98%     39
  99%     40
 100%     69 (longest request)
Далее сделаем статическую страничку с содержимым подобным тому что отдает вышеупомянутый сервер.
Апач префорк с 10 воркерами.

Server Software:        Apache/2.2.17
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /
Document Length:        249 bytes

Concurrency Level:      100
Time taken for tests:   14.495 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      53200000 bytes
HTML transferred:       24900000 bytes
Requests per second:    6898.96 [#/sec] (mean)
Time per request:       14.495 [ms] (mean)
Time per request:       0.145 [ms] (mean, across all concurrent requests)
Transfer rate:          3584.23 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       3
Processing:     2   14   2.2     14      48
Waiting:        2   14   2.1     14      43
Total:          4   14   2.2     14      48

Percentage of the requests served within a certain time (ms)
  50%     14
  66%     15
  75%     15
  80%     16
  90%     17
  95%     18
  98%     21
  99%     23
 100%     48 (longest request)

Результат апача более чоток )
Почему так?

guyvernk
()
Ответ на: комментарий от anonymous

>какой из языков нынче более перспективный Scala или Erlang?

Для тебя - вижуал бэйсик

Led ★★★☆☆
()

Go создан с целью предоставления программисту максимального контроля над жизнью пользователя, как это делают все сервисы Google.

fixed

anonymous
()
Ответ на: комментарий от maxcom

заменил статику на php формирующий туже статику через echo.

apache prefork + mod_php

Server Software:        Apache/2.2.17
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /
Document Length:        239 bytes

Concurrency Level:      100
Time taken for tests:   34.218 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      42100000 bytes
HTML transferred:       23900000 bytes
Requests per second:    2922.45 [#/sec] (mean)
Time per request:       34.218 [ms] (mean)
Time per request:       0.342 [ms] (mean, across all concurrent requests)
Transfer rate:          1201.52 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       3
Processing:     1   34   5.4     34     108
Waiting:        1   33   4.7     34      99
Total:          3   34   5.4     34     108

Percentage of the requests served within a certain time (ms)
  50%     34
  66%     36
  75%     36
  80%     37
  90%     39
  95%     42
  98%     48
  99%     55
 100%    108 (longest request)

а вот тут пхп уже начал немного отставать.

guyvernk
()
Ответ на: комментарий от guyvernk

получается, go работает со скоростью РНР? забавно

причем глобальный и надежный РНР чуть да обогнал go по Transfer rate

РНР код в студию!

www_linux_org_ru ★★★★★
()
Ответ на: комментарий от www_linux_org_ru

да там простые echo

cat index.php 
<?php
echo "<html> ";
echo "<head> ";
echo "<title>QR Link Generator</title> ";
echo "</head> ";
echo "<body> ";
echo '<form action="/" name=f method="GET"><input maxLength=1024 size=70 name=s value="" title="Text to QR Encode"><input type=submit value="Show QR" name=qr> ';
echo "</form> ";
echo "</body> ";
echo "</html> ";
?>

guyvernk
()
Ответ на: комментарий от AVL2

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

А если сделают foreign function interface + обвязку к Qt?

Leron ★★
()
Ответ на: комментарий от anonymous

Алсо, не забываем что PHP не может в оптимизации, т.е. в байт-коде будет 9 вызовов функции.

anonymous
()
Ответ на: комментарий от anonymous

Специально для ононимуcа.

php new

cat index.php
<?php
echo '<html> <head> <title>QR Link Generator</title></head><body><form action="/" name=f method="GET"><input maxLength=1024 size=70 name=s value="" title="Text to QR Encode"><input type=submit value="Show QR" name=qr></form> </body></html> ';
?>

Server Software:        Apache/2.2.17
Server Hostname:        127.0.0.1
Server Port:            80

Document Path:          /
Document Length:        234 bytes

Concurrency Level:      100
Time taken for tests:   33.136 seconds
Complete requests:      100000
Failed requests:        0
Write errors:           0
Total transferred:      41600000 bytes
HTML transferred:       23400000 bytes
Requests per second:    3017.87 [#/sec] (mean)
Time per request:       33.136 [ms] (mean)
Time per request:       0.331 [ms] (mean, across all concurrent requests)
Transfer rate:          1226.01 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       4
Processing:     2   33   3.7     33      93
Waiting:        2   33   3.5     33      80
Total:          5   33   3.7     33      93

Percentage of the requests served within a certain time (ms)
  50%     33
  66%     35
  75%     35
  80%     36
  90%     37
  95%     38
  98%     41
  99%     43
 100%     93 (longest request)

guyvernk
()
Ответ на: комментарий от DNA_Seq

>Обсуждаем режим работы. Или десктопу сейчас требуется держать удаленное подключение тысячи-другой пользователей?

а какой процент серверов обслуживает больше, чем десяток-сотню пользователей?

AVL2 ★★★★★
()
Ответ на: комментарий от Leron

>А если сделают foreign function interface + обвязку к Qt?

и еще 100500 биндингов к разным либам. Возможно тогда эрланг станет самым универсальным функциональным яыком/платформой.

AVL2 ★★★★★
()

кстати у кого gocode работает с любым редактором?

у меня ни с эклипсом ни с емаксом не работает :/

guyvernk
()
Ответ на: комментарий от DNA_Seq

Вот мне тоже интересен этот вопрос. Как безопасность нативного кода будет обеспечиваться.

mio ★★
()
Ответ на: комментарий от jtootf

>на деньги M$ развивается только GHC, тащемта, да и то только отчасти

это мой ник вверх тормашками

chg ★★★★★
()
Ответ на: комментарий от anonymous

Корпорация делает язык под свои нужды, нравится это модным парням или не нравится, её слабо волнует.

Это прекрасно, но непонятно, зачем учить малоудобный узкоспециализированный язык, заточенный под инфраструктуру отдельно взятой компании? То, что у компании есть много денег, чтобы нанять именитых исследователей, и чтобы продвигать свой новый язык, совершенно не означает, что этот язык программирования несет значимую пользу сообществу программистов.

liberte
()
Ответ на: комментарий от liberte

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

Как ты относишься к жабке? 15 лет назад тысячи плю и просто систов высказывали похожие мысли. Однако сейчас на ЛОРе куча личностей, готовых за неё родимую пасть порвать.

anonymous
()

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

Насколько я понимаю, в части Java это очень такое тоненькое трололо?

hobbit ★★★★★
()
Ответ на: комментарий от tailgunner

> Си не подходит для сравнения просто потому, что 30 лет назад, когда он занял свою нишу, поддержка исключений в языках была экзотикой.

Да, а ведь уже был PL/I...

hobbit ★★★★★
()
Ответ на: комментарий от anonymous

Как ты относишься к жабке? 15 лет назад тысячи плю и просто систов высказывали похожие мысли. Однако сейчас на ЛОРе куча личностей, готовых за неё родимую пасть порвать.

Java — отличный язык и платформа (но она и 15 лет назад мне нравилась, после ассемблера-то). Это, конечно, можно списать на личное субъективное мнение, но Java, во-первых, разрабатывалась не под специфическую инфраструктуру, а скорее наоборот, а во-вторых, она прошла долгий эволюционный путь (в поисках коммерческой ниши, но это уже не играет роли) — апплеты, мобильные платформы, серверные решения (базы данных, сервлеты) и т.д., и в настоящее время по праву считается по-настоящему общим языком / платформой.

Java — пример того, что ограничения инфраструктуры носят временный характер (JIT, HotSpot), а решают в конце-концов возможности языка, удобство использования (включая кросс-платформенность) и относительная простота (как тут не вспомнить C++).

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