The OpenNET Project / Index page

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

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"Доступен язык программирования Go 1.6"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Доступен язык программирования Go 1.6"  +/
Сообщение от opennews (ok) on 18-Фев-16, 11:49 
После шести месяцев разработки компания Google представила (http://blog.golang.org/go1.6) релиз  языка программирования Go 1.6 (http://golang.org), который позиционируется как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок.  Код проекта распространяется под лицензией BSD.


Синтаксис Go основан на привычных элементах  языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код  легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов (http://golang.org/pkg/runtime/)), что позволяет добиться производительности, сопоставимой с программами на языке Си.

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


Основные новшества (http://golang.org/doc/go1.6), представленные в выпуске Go 1.6:


-  В модуль net/http (https://golang.org/pkg/net/http/) добавлена поддержка протокола HTTP/2, которая при использовании HTTPS включена по умолчанию как для клиентов, так и для серверов. Использование новой версии модуля позволит задействовать HTTP/2 в уже существующих проектах на языке Go, в том числе в http-сервере Caddy (https://caddyserver.com/);

-  Расширены возможности, связанные с использованием шаблонов (модуль text/template (https://golang.org/pkg/text/template/)). Добавлена поддержка чистки пробелов (https://golang.org/pkg/text/template/#hdr-Text_and_spaces) вокруг операций в шаблоне и реализована новая операция "{{block}} (https://golang.org/pkg/text/template/#hdr-Actions)" для создания блочных шаблонов, собираемых из других шаблонов;

-  Включена по умолчанию поддержка директории vendor (https://golang.org/s/go15vendor), предназначенной для поставки внешних зависимостей, привязанных к определённому поставщику;

-  Проведена оптимизация работы модулей compress/bzip2, compress/gzip, crypto/aes, crypto/elliptic и crypto/ecdsa, производительность которых возросла приблизительно на 10%. Изменён алгоритм сортировки, используемый в sort.Sort, что также позволило поднять производительность примерно на 10%. Cтарый алгоритм сортировки доступен через вызов sort.Stable (https://golang.org/pkg/sort/#Stable) для тех кому требуется полная идентичность порядка вывода;

-  Сокращено число пауз, вызванных работой сборщика мусора, что особенно заметно в программах, расходующих большие объемы памяти;

-  Добавлены экспериментальные порты для Linux на 64-рядных процессорах MIPS (linux/mips64 и linux/mips64le) и  Android on 32-разрядных процессорах x86 (android/386);
-  Для сборки порта во FreeBSD в качестве внешнего компилятора по умолчанию задействован Clang вместо GCC;
-  В компилятор, систему динамического связывания и команду "go" добавлена новая опция "-msan", доступная только на архитектуре linux/amd64 и включающая режим совместимости с анализатором памяти Clang MemorySanitizer (http://clang.llvm.org/docs/MemorySanitizer.html), который удобно использовать для тестирования приложений, содержащих вставки на  C и C++;
-  В runtime добавлен легковесный механизм выявления неправомерного одновременного использования ассоциативных массивов (map). Если один goroutine записывает в map, то другой  goroutine не может прочитать или записать в map. В случае, когда данное условие нарушено и runtime  выявил конфликт,  программа будет экстренно завершена с выводом соответствующего сообщения об ошибке. Для выявления подобных проблем на этапе отладки предлагается использовать race-detector (https://blog.golang.org/race-detector);

-  В runtime изменён метод вывода информации о крахе программы, которая теперь включает только дамп стека для вызвавшего проблему goroutine, а не для всех goroutine как раньше. Изменить данное поведение можно через переменную окружения  GOTRACEBACK (https://golang.org/pkg/runtime/#hdr-Environment_Variables) или вызвав функцию debug.SetTraceback (https://golang.org/pkg/runtime/debug/#SetTraceback);
-  В Cgo, механизм для организации вызова кода на C/C++ из программ на языке Go, внесены изменения (https://golang.org/doc/go1.6#cgo) в правила совместного доступа к указателям, которые в основном связаны с обеспечение сосуществования кода на языке Си со сборщиком мусора языка Go.

URL: https://blog.golang.org/go1.6
Новость: http://www.opennet.ru/opennews/art.shtml?num=43898

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


2. "Доступен язык программирования Go 1.6"  +/
Сообщение от Crazy Alex (ok) on 18-Фев-16, 11:55 
Не понял - что такого в том, чтобы в двух goroutine обращаться к одному map? Они ж кооперативные, никаких проблем с локами быть не должно?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

4. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от Sergey (??) on 18-Фев-16, 12:23 
map-ы в Go не thread-safe. Читать можно конечно и без всяких lock-ов, но не писать. Удобно поэтому для конкурентного доступа к map использовать sync.RWMutex.
Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

26. "Доступен язык программирования Go 1.6"  +/
Сообщение от Дима777 on 18-Фев-16, 16:49 
Да, удобно. Но зачем теперь сразу ошибку сегфолтить?
Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

51. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от skybon (ok) on 18-Фев-16, 23:37 
Явное лучше неявного.

Словить панику на месте приятнее чем чесать репу разбирая странности потом.

Ответить | Правка | ^ к родителю #26 | Наверх | Cообщить модератору

54. "Доступен язык программирования Go 1.6"  –2 +/
Сообщение от Кирилл (??) on 19-Фев-16, 01:58 
С вашей логикой тогда надо крэшить для всех типов одновременный доступ, например, для int. Одновременная запись в string не вызывает паники, и как бэ "явное неявное" почему-то всех устраивает. Race - все же на совести программиста. Зачем паниковать, тоже не понимаю.

Тем более есть прекрасный sync в стандартной либе.

Ответить | Правка | ^ к родителю #51 | Наверх | Cообщить модератору

69. "Доступен язык программирования Go 1.6"  –1 +/
Сообщение от Никто (??) on 19-Фев-16, 15:16 
> С вашей логикой тогда надо крэшить для всех типов одновременный доступ, например,
> для int.

Было бы неплохо, но сложно реализовать не уничтожив скорость работы и не раздув код

Ответить | Правка | ^ к родителю #54 | Наверх | Cообщить модератору

3. "Доступен язык программирования Go 1.6"  –2 +/
Сообщение от Аноним (??) on 18-Фев-16, 12:00 
Абзац про гоу-няшное костылестроение с горутином в мужском роде — это пять. Сегодня так ещё не смеялся.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

5. "Доступен язык программирования Go 1.6"  +7 +/
Сообщение от Аноним (??) on 18-Фев-16, 12:24 
Хороший язык!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

13. "Доступен язык программирования Go 1.6"  –5 +/
Сообщение от Аноним (??) on 18-Фев-16, 13:12 
Для написания фирмваре?
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

78. "Доступен язык программирования Go 1.6"  +/
Сообщение от Аноним (??) on 20-Фев-16, 21:55 
CS 1.6 - понимаю
CS Go - понимаю
Go 1.6 - не понимаю
¯\_(ツ)_/¯
Ответить | Правка | ^ к родителю #13 | Наверх | Cообщить модератору

21. "Доступен язык программирования Go 1.6"  +5 +/
Сообщение от Настоящий Аноним on 18-Фев-16, 14:53 
Отличный язык!
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

22. "Доступен язык программирования Go 1.6"  +/
Сообщение от Аноним (??) on 18-Фев-16, 15:42 
От какого языка отличный?
Ответить | Правка | ^ к родителю #21 | Наверх | Cообщить модератору

24. "Доступен язык программирования Go 1.6"  +2 +/
Сообщение от Аноним (??) on 18-Фев-16, 16:17 
От других.
Ответить | Правка | ^ к родителю #22 | Наверх | Cообщить модератору

32. "Доступен язык программирования Go 1.6"  +/
Сообщение от Аноним (??) on 18-Фев-16, 19:08 
Злые языки бають, что от лимбо не отличный. Ату их!
Ответить | Правка | ^ к родителю #24 | Наверх | Cообщить модератору

6. "Доступен язык программирования Go 1.6"  +2 +/
Сообщение от Никто (??) on 18-Фев-16, 12:28 
>с такими достоинствами скриптовых языков, как ... защищённость от ошибок.

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

7. "Доступен язык программирования Go 1.6"  +/
Сообщение от Никто (??) on 18-Фев-16, 12:29 
>Скриптовые языки НЕ предоставляют защищённости от ошибок

Исправлено

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

14. "Доступен язык программирования Go 1.6"  +/
Сообщение от Kodesu (ok) on 18-Фев-16, 13:18 
> легко отлавливаемых

У низкоуровневых языков есть свои траблы.
Программы с миллиардами (!) пользователей, написанные на C страдают от таких проблем, как переполнение буфера и выход за границу массива. (Пруфы? Открой список CVE за последние пару лет)
И что-то не сильно легко эти баги отлавливаются.

Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

17. "Доступен язык программирования Go 1.6"  +13 +/
Сообщение от Аноним (??) on 18-Фев-16, 13:31 
Программы с миллиардами (!) пользователей, написанные на ПХП страдают от таких проблем, как переполнение sql-injection и сравнение нуля с пустой строкой. (Пруфы? Открой новости за последние пару лет)
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

31. "Доступен язык программирования Go 1.6"  –2 +/
Сообщение от Аноним (??) on 18-Фев-16, 18:43 
ПХП же хуже мерзкого бейсика, к чему он тут?
Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

35. "Доступен язык программирования Go 1.6"  +/
Сообщение от Никто (??) on 18-Фев-16, 19:51 
Как бы о защищённости от ошибок динамически типизированных языков.
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

60. "Доступен язык программирования Go 1.6"  –1 +/
Сообщение от Чепукто on 19-Фев-16, 06:08 
Обоснуй!
PS: я не про то, что PHP или, упасихоспади, Basic в чем-то хороши. Но вот так PHP равнять с Бейсиком! Не настолько же он плох!!!
Ответить | Правка | ^ к родителю #31 | Наверх | Cообщить модератору

56. "Доступен язык программирования Go 1.6"  –2 +/
Сообщение от Лютый жабист on 19-Фев-16, 05:10 
Программы с миллиардами (!) пользователей, написанные на ПХП страдают от таких проблем, как переполнение sql-injection и сравнение нуля с пустой строкой


Дык программы на си и этим страдают и перечисленным предыдущим оратором.
То что на php или java можно сделать `rm -rf /` не повод считать их плохими.

А вот то, что на си даже крутой программер не может обеспечить 100% отсутствие переполнений - это повод назвать сишечку какашечкой.

Ответить | Правка | ^ к родителю #17 | Наверх | Cообщить модератору

61. "Доступен язык программирования Go 1.6"  +/
Сообщение от Чепукто on 19-Фев-16, 06:25 
> Программы с миллиардами (!) пользователей, написанные на ПХП страдают от таких проблем,
> как переполнение sql-injection и сравнение нуля с пустой строкой
> Дык программы на си и этим страдают и перечисленным предыдущим оратором.
> То что на php или java можно сделать `rm -rf /` не
> повод считать их плохими.
> А вот то, что на си даже крутой программер не может обеспечить
> 100% отсутствие переполнений - это повод назвать сишечку какашечкой.

Ща вот прям срыв покровов будет. ПХП написан на C (как, в общем-то, и Java, и даже само небо и сам Аллах). Поэтому:
1. Программы на ПХП имеют кучу проблем, обусловленных ПХП.
2. Программы на ПХП наследуют проблемы С, на котором написан ПХП.
3. Программисты на ПХП не могут поправить косяки программистов С, написавших ПХП, и живут как-то с этим.


Ответить | Правка | ^ к родителю #56 | Наверх | Cообщить модератору

20. "Доступен язык программирования Go 1.6"  +2 +/
Сообщение от Мяут (ok) on 18-Фев-16, 14:52 
Справедливости ради, такие ошибки можно и нужно вылавливать статическими анализаторами типа PVS-Studio (на чем они кстати и пиарятся). То, что это мало кто делает -- вопрос другой.
А вот для языков с динамической типизацией статический анализатор как-то трудно представить
Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

33. "Доступен язык программирования Go 1.6"  +3 +/
Сообщение от Никто (??) on 18-Фев-16, 19:35 
Ваше замечание в целом верно кроме того, что не имеет отношения к моему комментарию. Я не писал про низкоуровневые языки. Перечитайте, у меня написано:

>статически строго типизированных компилируемых языках

На всякий случай уточню - это не про Си, ему не хватает строгости.

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

Ответить | Правка | ^ к родителю #14 | Наверх | Cообщить модератору

40. "Доступен язык программирования Go 1.6"  +2 +/
Сообщение от Kodesu (ok) on 18-Фев-16, 20:46 
> это не свойство вида типизации.

Согласен. Мой комментарий был не к месту.

Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

50. "Доступен язык программирования Go 1.6"  +/
Сообщение от angra (ok) on 18-Фев-16, 23:36 
При выходе за границу массива или иной структуры в скриптовых языках не произойдет чтения или перезаписи других данных. С этой точки зрения они защищают(но не предотвращают) от данного класса ошибок.
Ответить | Правка | ^ к родителю #33 | Наверх | Cообщить модератору

65. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от Никто (??) on 19-Фев-16, 13:43 
>При выходе за границу массива или иной структуры в скриптовых языках не произойдет чтения
>или перезаписи других данных

Это не свойство динамически типизированных языков.

Ответить | Правка | ^ к родителю #50 | Наверх | Cообщить модератору

27. "Доступен язык программирования Go 1.6"  –6 +/
Сообщение от Аноним (??) on 18-Фев-16, 17:15 
никнейм у тебя правильный, соотвествует уровню комментариев
Ответить | Правка | ^ к родителю #6 | Наверх | Cообщить модератору

8. "Доступен язык программирования Go 1.6"  –4 +/
Сообщение от Никто (??) on 18-Фев-16, 12:38 
>Код на языке Go компилируется в обособленные бинарные исполняемые файлы,
>выполняемые нативно без использования виртуальной машины (...), что позволяет
>добиться производительности, сопоставимой с программами на языке Си

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

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

23. "Доступен язык программирования Go 1.6"  +3 +/
Сообщение от freehck email(ok) on 18-Фев-16, 15:51 
Хм. Мой опыт использования aptly показал, что это инструмент весьма шустрый.
Раз Вы взялись утверждаеть, что у Go такие же проблемы с производительностью, как и у Java - пожалуйста, подтвердите пруфами.
Ответить | Правка | ^ к родителю #8 | Наверх | Cообщить модератору

25. "Доступен язык программирования Go 1.6"  –2 +/
Сообщение от Аниним on 18-Фев-16, 16:45 
А у java есть проблемы с производительностью?
Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

29. "Доступен язык программирования Go 1.6"  +4 +/
Сообщение от Аноним32 on 18-Фев-16, 17:57 
java вообще летает, особенно в связке с 100500 мб оперативы и N ядерным процом с тактовой частотой 100500 ГГц.
Ответить | Правка | ^ к родителю #25 | Наверх | Cообщить модератору

57. "Доступен язык программирования Go 1.6"  –3 +/
Сообщение от Лютый жабист on 19-Фев-16, 05:15 
> java вообще летает, особенно в связке с 100500 мб оперативы и N
> ядерным процом с тактовой частотой 100500 ГГц.

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

Ответить | Правка | ^ к родителю #29 | Наверх | Cообщить модератору

62. "Доступен язык программирования Go 1.6"  +/
Сообщение от . on 19-Фев-16, 07:59 
На чём написана jvm напомнить? :)
Ответить | Правка | ^ к родителю #57 | Наверх | Cообщить модератору

64. "Доступен язык программирования Go 1.6"  –1 +/
Сообщение от Лютый жабист on 19-Фев-16, 08:59 
На чём написано си себе напомни.
Ответить | Правка | ^ к родителю #62 | Наверх | Cообщить модератору

73. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от _ (??) on 19-Фев-16, 17:24 
Внезапно - на С же и написанна :) Но жабофилам этого не понять, мозжечок не вмещает :)
Ответить | Правка | ^ к родителю #64 | Наверх | Cообщить модератору

34. "Доступен язык программирования Go 1.6"  +/
Сообщение от Никто (??) on 18-Фев-16, 19:47 
Я не писал о проблемах производительности. Я указал на то, что утверждение:

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

Является ошибочным.

По поводу доказательств. Посмотрите, кто соседствует друг с другом в тестах скорости:
http://benchmarksgame.alioth.debian.org/u64q/which-programs-...
Раньше этот тест был более информативным:
http://web.archive.org/web/20150923053032/http://benchmarksg...

Поинтересуйтесь, почему в блоге разработчиков так радуются улучшению производительности сборщика памяти:
https://blog.golang.org/go15gc

Ответить | Правка | ^ к родителю #23 | Наверх | Cообщить модератору

46. "Доступен язык программирования Go 1.6"  +/
Сообщение от freehck email(ok) on 18-Фев-16, 22:11 
Прошу простить мне неграмотность, однако не подскажете ли Вы мне также, что я должен знать, чтобы понимать эти графики? Я нигде не нашёл описания подобного рода графиков, хотя совершенно точно видел их уже не раз. Я боюсь, что читаю их не правильно.

1) Что значит жирная линия посередине столбца? Это среднее значение всех программ, участвовавших в тесте?

2) Что означает белый столбец, внутри которого содержится линия? Это разброс всех замеренных результатов?

3) Что означают чёрные палочки под и над столбцом? Это погрешности измерений?

Ответить | Правка | ^ к родителю #34 | Наверх | Cообщить модератору

66. "Доступен язык программирования Go 1.6"  +/
Сообщение от Никто (??) on 19-Фев-16, 13:53 
Это графики для визуализации статистических данных. Можете почитать про боксплоты в "Наглядная статистика. Используем R" биолога Шипунова. Если лень - просто ориентируйтесь на жирную горизонтальную линиию - медиану.
Ответить | Правка | ^ к родителю #46 | Наверх | Cообщить модератору

47. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от freehck email(ok) on 18-Фев-16, 22:41 
Окей, значит я пока понял это дело так. Go процентов на 30% шустрее Java, но оба они примерно в 2 раза медленнее C.
http://benchmarksgame.alioth.debian.org/u64q/compare.php?lan...

Результат, в принципе, интересный. Меня также удивляет, что OCaml оказался позади Java и Scala, хотя на данный момент, как утверждают некоторые товарищи из Inria, он обладает самым быстрым GC, пускай и однопоточным: при столь малых размерах получаемых бинарей программы на Ocaml могут позволить себе форки, и забить на треды.

Ещё такой момент: я не понимаю, каким образом у Java/Scala получаются такие хорошие результаты. Это AOT тому причиной? Я вот чего не знаю наверняка:
1) Jar-ники с jvm-байткодом можно полностью перегнать в нативный код для ускорения программы после старта?
2) В jvm есть gc, но ходят слухи, что работает он так "хорошо", что сжирает вообще все русурсы CPU, и потому его отключают. Вам известно, как дела обстоят на самом деле?

По поводу радости разработчиков Go улучшению производительности gc, думаю, тут всё весьма очевидно. Заставить хорошо работать многопоточный gc - та ещё головная боль, ocaml-исты с этой задачей уже собаку съели, но до сих пор не сделали. Если у Go он работает, причём быстро - так это большая победа.

Ответить | Правка | ^ к родителю #34 | Наверх | Cообщить модератору

48. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от freehck email(ok) on 18-Фев-16, 23:05 
> 1) Jar-ники с jvm-байткодом можно полностью перегнать в нативный код для ускорения программы после старта?

Так с этим вроде стало яснее. Был AOT-compiler GCJ из набора, который похоже загнулся, ибо последние обновления датированы 2009-м. Сейчас осталось проприетарное поделие Excelsior JET, которое, впрочем, уже поддерживает восьмёрку.

Я так понял, что они перегоняют набор jar-ников в бинарь. А в самих jar-никах содержится исключительно jvm-байткод. Всегда.

Попровьте меня, если где-то ошибся.

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

58. "Доступен язык программирования Go 1.6"  –4 +/
Сообщение от Лютый жабист on 19-Фев-16, 05:26 
> Окей, значит я пока понял это дело так. Go процентов на 30%
> шустрее Java, но оба они примерно в 2 раза медленнее C.

Ты неправ. Во первых задачи бывают разные, я сталкивался с реальными задачами, на которых java быстрее си.

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

Ну, а так, в теории да, "сферическовакуумная сишечка быстрее в 2 раза".

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

59. "Доступен язык программирования Go 1.6"  –5 +/
Сообщение от Лютый жабист on 19-Фев-16, 05:31 
> 2) В jvm есть gc, но ходят слухи, что работает он так
> "хорошо", что сжирает вообще все русурсы CPU, и потому его отключают.
> Вам известно, как дела обстоят на самом деле?

Странно иметь какие-то мнение по вопросу вообще не будучи в теме. Сборщик мусора в java-программах часто вообще не запускается.

На очень жирных программах, в духе - системная интеграционная шина огромной организации, которая имеет потребление порядка 20ГБ ОЗУ и лютое количество enterprise java bean-ов ("потоков") может например срабатывать раз в 6-10 часов и тормозить программу на пару-тройку секунд. И что? Кто лучше-то может?

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

67. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от Никто (??) on 19-Фев-16, 15:05 
>2) В jvm есть gc, но ходят слухи, что работает он так "хорошо", что сжирает вообще все
>русурсы CPU, и потому его отключают

GC в Oracle JVM работает куда лучше для модели Java чем GC в Go, но разработчики инструментария для Go не стоят на месте.
Потенциально Go предоставляет возможность для большей эффективности при работе с памятью поскольку в отличии от Java позволяет размещать переменные структурного типа статически. На практике это может никак не проявиться, потому что это сложнее, особенно для бывшего Джависта, который тянет в Go патерны из Java. С другой стороны, JVM в ряде случаев способна провести оптимизацию и разместить динамические с точки зрения языка данные статически. Это не говоря уже о AOT, который позволяет провести более глубокую оптимизацию за счёт меньших ограничений на время компиляции. С другой стороны JIT позволяет получить профиль использования программы и делать оптимизацию более предметно.

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

Ответить | Правка | ^ к родителю #47 | Наверх | Cообщить модератору

9. "Доступен язык программирования Go 1.6"  –1 +/
Сообщение от anonymous (??) on 18-Фев-16, 12:41 
Мне вот интересно, зачем они все эти модули в языке тащат.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

10. "Доступен язык программирования Go 1.6"  –3 +/
Сообщение от anonymous (??) on 18-Фев-16, 12:47 
Потому как язык изначально для толковых студней создавалася, поэтому, с кучей стандартных либ в Go проще стартануть.

Я, конечно, за минимальньное ядро языка (aka runtime) - работа со строками, числами, базовый I/O (сокеты, файлы) - должно быть достаточно.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

36. "Доступен язык программирования Go 1.6"  +2 +/
Сообщение от Crazy Alex (ok) on 18-Фев-16, 20:11 
Потому что это означает, что оно всё будет развиваться в гармсонии с остальными частями языка, и будет какой-то понятный мейнстрим с понятным статусом, а не десяток "стандартов де-факто", тянущих каждый в свою сторону.

"Batteries included" - это сейчас вообще необходимость для любого нового языка.

Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

45. "Доступен язык программирования Go 1.6"  –2 +/
Сообщение от anonymous (??) on 18-Фев-16, 21:44 
Пользователь IDE? :)

ЯП = синтаксис, и либы тут немного сбоку. Хороший пример - C/C++ к-ми можно пользоваться без стандартных либ.

Ответить | Правка | ^ к родителю #36 | Наверх | Cообщить модератору

49. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от angra (ok) on 18-Фев-16, 23:23 
Начни с ввода/вывода в консоль без стандартных либ в С/С++.

Ответить | Правка | ^ к родителю #45 | Наверх | Cообщить модератору

52. "Доступен язык программирования Go 1.6"  –2 +/
Сообщение от anonymous (??) on 19-Фев-16, 00:10 
Ну посмотри как в линукс ядре, например, выводят на консоль. Без стандартных либ.
Ответить | Правка | ^ к родителю #49 | Наверх | Cообщить модератору

63. "Доступен язык программирования Go 1.6"  +4 +/
Сообщение от . on 19-Фев-16, 08:11 
Дооо - ты напиши корректный printf сначала чмо малолетнее :) Там и зубры тока так зубы ломают :-F
Ответить | Правка | ^ к родителю #52 | Наверх | Cообщить модератору

76. "Доступен язык программирования Go 1.6"  –1 +/
Сообщение от Андрей (??) on 20-Фев-16, 05:14 
Так в ядре же есть своя libc: klibc. И вот куча функций:
usr/klibc/printf.c
usr/klibc/vfprintf.c
usr/klibc/vsnprintf.c
usr/klibc/stdio/fwrite.c
usr/klibc/SYSCALLS.def

Происходит следующее:
--> printf()
             --> vfprintf(stdout,... )
                                       --> vsnprintf()
             --> _fwrite(..., stdout)
                                       --> fwrite_noflush()
                                                            --> write() (SYSCALL)

Ответить | Правка | ^ к родителю #52 | Наверх | Cообщить модератору

37. "Доступен язык программирования Go 1.6"  +3 +/
Сообщение от Никто (??) on 18-Фев-16, 20:12 
Этих модулей нет в языке, они в стандартной библиотеке. Чем это хорошо при должном уровне разработки библиотек - понятно, чем плохо - не понятно.
Ответить | Правка | ^ к родителю #9 | Наверх | Cообщить модератору

12. "Доступен язык программирования Go 1.6"  +/
Сообщение от Аноним (??) on 18-Фев-16, 13:09 
> что позволяет добиться производительности, сопоставимой с программами на языке Си.

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

Ну и его сраный рантайм, пихаемый прямо в код бинаря, никак не добавляет производительности, сравнимой с Си

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

42. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от Никто (??) on 18-Фев-16, 21:14 
Скорость только возрастает, если рантайм встраивается в исполняемый файл. Рантайм есть и у Си, но обычно идёт в виде динамической библиотеки при возможности статической компоновки. Для Go выбрали обратный подход - по умолчанию идёт статическая компоновка, но возможна и динамическая.
Ответить | Правка | ^ к родителю #12 | Наверх | Cообщить модератору

15. "Доступен язык программирования Go 1.6"  +5 +/
Сообщение от Аноним (??) on 18-Фев-16, 13:19 
CS GO 1.6 вышел?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

16. "Доступен язык программирования Go 1.6"  –2 +/
Сообщение от 0eviy (ok) on 18-Фев-16, 13:25 
круто!
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

18. "Доступен язык программирования Go 1.6"  +/
Сообщение от Аноним (??) on 18-Фев-16, 13:35 
>Изменён алгоритм сортировки, используемый в sort.Sort, что также позволило поднять производительность примерно на 10%

судя по коммиту, увеличили минимальный размер массива для сортировки вставками, но добавили сортировку Шелла.
Интересно, почему там не используется timsort, как в большинстве современных библиотек. (видимо потому что появился после 1990-го года. Все эти Коксы с Пайками - они такие)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

77. "Доступен язык программирования Go 1.6"  +/
Сообщение от Андрей (??) on 20-Фев-16, 05:32 
> Интересно, почему там не используется timsort, как в большинстве современных библиотек

В большинстве??? Согласно википедии: питон, а также джава, андроид и октав. Всё.

> (видимо потому что появился после 1990-го года. Все эти Коксы с
> Пайками - они такие)

Ну, Роб Пайк, может, и да. Но Рас Кокс - поколение помоложе.

Ответить | Правка | ^ к родителю #18 | Наверх | Cообщить модератору

19. "Доступен язык программирования Go 1.6"  +/
Сообщение от Аноним email(??) on 18-Фев-16, 14:25 
> Добавлены экспериментальные порты для Linux на 64-рядных процессорах MIPS (linux/mips64 и linux/mips64le) и Android on 32-разрядных процессорах x86 (android/386);

прошу гугл добавить arm/arm64 и powerpc/powerpc64 - очень хочется докеры

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

28. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от Аноним (??) on 18-Фев-16, 17:16 
> Cтарый алгоритм сортировки доступен через вызов sort.Stable

Дезинформация. sort.Stable был и до этого, а sort.Sort был отличен от него.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

30. "Доступен язык программирования Go 1.6"  +/
Сообщение от Андрей (??) on 18-Фев-16, 18:15 
> В Cgo, механизм для организации вызова кода на C/C++ из программ на языке Go

А вот этот последний пункт - самая большая головная боль для кучи проектов. Даже если ты передавал opaque указатель, теперь - нельзя! Указатели нужно хранить в map, и передавать можно только "указатели" на эти указатели.

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

38. "Доступен язык программирования Go 1.6"  +/
Сообщение от Crazy Alex (ok) on 18-Фев-16, 20:12 
В общем, извращенцы
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

74. "Доступен язык программирования Go 1.6"  +/
Сообщение от Андрей (??) on 20-Фев-16, 04:56 
Вообще, я - за Go! Но, признаю, что это решение выглядит неуклюже. Причина: сборщик мусора. Чтобы ему было удобней, решили пожертвовать удобством для cgo.
Ответить | Правка | ^ к родителю #38 | Наверх | Cообщить модератору

53. "Доступен язык программирования Go 1.6"  +/
Сообщение от Аноним (??) on 19-Фев-16, 01:35 
Наркоман, что ли? Ничего подобного и близко нет.
Ответить | Правка | ^ к родителю #30 | Наверх | Cообщить модератору

75. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от Андрей (??) on 20-Фев-16, 04:58 
Для тех, кто в танке, один из основных разработчиков Go, ответственный за gccgo/cgo:
https://github.com/golang/go/issues/8310#issuecomment-66096613
Ответить | Правка | ^ к родителю #53 | Наверх | Cообщить модератору

39. "Доступен язык программирования Go 1.6"  –5 +/
Сообщение от rvs2016 (ok) on 18-Фев-16, 20:20 
Привет, мир, пожалуйста, в студию.
Какие браузеры поддерживают язык?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

43. "Доступен язык программирования Go 1.6"  +6 +/
Сообщение от Никто (??) on 18-Фев-16, 21:26 
Здравствуй, школьник. В привычном понимании этого слова никакие браузеры не поддерживают этот язык. Тем не менее и как это ни смешно, "привет, мир" можно попробовать прямо из браузера сразу на главной странице официального сайта https://golang.org/
Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

55. "Доступен язык программирования Go 1.6"  +1 +/
Сообщение от Аноним (??) on 19-Фев-16, 02:45 
при чем тут браузеры?
Ответить | Правка | ^ к родителю #39 | Наверх | Cообщить модератору

41. "Доступен язык программирования Go 1.6"  –1 +/
Сообщение от 321 (??) on 18-Фев-16, 21:11 
версии слишком быстро плодятся. версия gccgo - не поспевает.
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

68. "Доступен язык программирования Go 1.6"  –1 +/
Сообщение от Аноним (??) on 19-Фев-16, 15:13 
Что за версия языка еще? Это, типа, стандарт Go99 или Go14?
Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

70. "Доступен язык программирования Go 1.6"  +/
Сообщение от Andrey Mitrofanov on 19-Фев-16, 15:51 
> Что за версия языка еще? Это, типа, стандарт Go99 или Go14?

Чего https://golang.org/ref/spec (см.внизу: "Build version go1.6."!) непонятого-то? Спецификация - часть билда компилёра, компилёр - референсная (и единственная, надо полагать?) реализация, включённой в него спецификации, и т.д., и т.д -- чтобы понять рекурсию, надо понять: Ленин - Партия, Партия - Ленин.

Ответить | Правка | ^ к родителю #68 | Наверх | Cообщить модератору

71. "Доступен язык программирования Go 1.6"  –1 +/
Сообщение от Аноним (??) on 19-Фев-16, 16:57 
Версия компилятора все-таки? Вот есть GCC 5.3.1, поддерживающий C++11. 5.3.1 - версия GCC, а C++11 это версия стандарта языка С++. Сабж то какую версию Go поддерживает? И как у языка может быть версия?
Ответить | Правка | ^ к родителю #70 | Наверх | Cообщить модератору

72. "Доступен язык программирования Go 1.6"  +/
Сообщение от Andrey Mitrofanov on 19-Фев-16, 17:21 
> Версия компилятора все-таки?

Многие жалуются, что я непонятно пишу, поэтому для тех, кто не понял: я написал "версия и того(компилятора=реализации), и другого(языка=спецификации)".


> C++11 это версия стандарта языка С++
>И как у языка может быть версия?

Это Вы так сам с собой разговариваете? Извините, если помешал.

Мне так казалось, что [как бы очевидно, что] язык=спецификация, версия языка=версия "стандарта".

Ответить | Правка | ^ к родителю #71 | Наверх | Cообщить модератору

80. "Доступен язык программирования Go 1.6"  +/
Сообщение от IvAnZ on 22-Фев-16, 08:32 
Кто-нибудь Caddy производительность смотрел против nginx?
Я смотрю там reverse-proxy failover check  из коробки, чего у nginx нет (есть в Plus версии или надо Lua прикручивать)
https://caddyserver.com/docs/proxy

Думаю есть ли смысл только как Load-Balancer Caddy поставить перед nginx?

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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