Компания Google представила (http://blog.golang.org/go1.4) релиз языка программирования Go 1.4 (http://golang.org), который позиционируется как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.
Синтаксис Go базируется на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов (http://golang.org/pkg/runtime/)), что позволяет добиться производительности, сопоставимой с программами на языке Си.Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора.
Основные новшества (http://golang.org/doc/go1.4), представленные в выпуске Go 1.4:
- Реализована официальная поддержка (https://golang.org/s/go14android) разработки приложений для платформы Android. Для подобных приложений можно использовать как штатные библиотеки, так и библиотеки из отдельного репозитория (http://golang.org/x/mobile) для мобильных систем, но библиотечные средства для мобильных приложений пока находятся в состоянии активной разработки и оставляют желать лучшего. Исполняемые файлы для Android пока могут генерироваться только для архитектуры ARM;- Поддержка организации работы циклов for-range без определения параметров сохранения текущего значения ("for range x {" в дополнение к "for i := range x {" и "for i, v := range x {"), что может быть востребовано в случаях, когда необходимо лиши прокрутить цикл для всех элементов набора, но сами элементы не представляют интереса.
- В команду go добавлена новая подкоманда "generate (http://golang.org/cmd/go/#hdr-Generate_Go_files_by_processin...)", позволяющая автоматизировать запуск инструментов для генерации исходных текстов до начала компиляции. Например, таким способом можно сгенерировать методы объекта String для типизированных констант, воспользовавшись утилитой stringer;
- Поддержка генерации исполняемых файлов для окружения Native Client (NaCl), работающего на системах с процессорами ARM. NaCl позволяет организовать выполнение не заслуживающего доверия кода в sandbox-окружении, изолированном от остальной системы. Ранее поддержка была ограничена только генерация платформозависимых файлов для 32- и 64-разрядных процессоров Intel;
- Поддержка сборки исполняемых файлов для операционной системы Plan 9 на процессорах с архитектурой AMD64;
- Большинство runtime-компонентов, таких как сборщик мусора, обработчики строковых операций и код для организации распараллеливания, переписаны с языка Си на язык Go. В сборщике мусора появилась возможность сканирования стека программы во время её исполнения, точной оценки степени использования переменных и полного контроля за местоположением активных указателей, что сказалось на сокращении использования памяти в куче на 10%-30%. С точки зрения производительности немного ускорена сборка мусора и скорость выполнения приложений за счёт внесения дополнительных оптимизаций при выполнении операций развёртывания кода (inlining). Значительные оптимизации ожидаются в следующем выпуске.URL: http://blog.golang.org/go1.4
Новость: http://www.opennet.me/opennews/art.shtml?num=41248
>Большинство runtime-компонентов, таких как сборщик мусора, ..., переписаны с языка Си на язык GoМы переписали сборщик мусора на Go, чтобы ты мог собирать мусор, когда ты собираешь мусор.
Я убью тебя, лодочник!(С)
Ты вряд ли слышал, но твой папа любил под _это_ пивка хряпнуть :)На самом деле есть и светлая сторона вопроса. По крайней мере это так же означает что:
- экзамен на взрослость язык скоро пройдёт (bootstraping);
- сборка по всякую экзотику упростится шо мама не горюй и Go таки всунут в каждую кофеварку;
- сборшик мусора - это 100% системный софт. И уже доказанно что жто можно делать на самом Go;Вощем перспективы правильные. Молодца дед Пайк!!! Старая школа!
( Это вам не полу-3.14-р потцеринг :)
к сожалению, НИ ОДИН из развиваемой радужно-голубой корпорацией зла, Языков Программирования - не тянет на.
или к счастью, впрочем. как и остальные их "продукты и сервисы".
Да сколько уже можно повторять, что Google никакого отношения к языку Go не имеет.
для почитать, сравнить:
https://ru.wikipedia.org/wiki/Go!
https://ru.wikipedia.org/wiki/Go
>Ты вряд ли слышал, но твой папа любил под _это_ пивка хряпнуть :)Сынок, ты знаешь о чем эта песня? Пивка хряпнуть, ага.
А то! Я под неё твою маму ... пивом хряпал :)
>Реализована официальная поддержка разработки приложений для платформы Android
>Поддержка генерации исполняемых файлов для окружения Native Client (NaCl), работающего на системах с процессорами ARMВот оно чего Михалыч ... неужто хотят попки жабаскрптерам порвать? Я б затонейтил :)
Задонайти гуглу, а то пропадут
Если гугол таки порвёт что озвучено куму озвученно - прощу им все их грехи! :-Р
Таки да, за убийство JS в веб-приложениях (хотя бы в больших) и замену на хоть как-то вменяемый язык много что простить можно. Но вряд ли, учитывая, что NaCl вряд ли появится в других браузерах
Ну ... значит не будет других браузеров ! :-\Ой! Чего это я? Я же _добрый_ фей :)
В цитате пропущен добродушный безумный хохот.
> позиционируется как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибокЗащищенность от всех ошибок? Если нет, то надо бы уточнить от каких.
> Защищенность от всех ошибок? Если нет, то надо бы уточнить от каких.Кому надо - и так в теме. Кто дурак ... от дурака хорошо помогает АК, но он отчего то в комплекте отсутствует :(
> Защищенность от всех ошибок? Если нет, то надо бы уточнить от каких.Прослойку между компом и стулом - не исправляет)). У большинства скриптовых языков часто в рантайме возникают проблемы из за несоответствия типов, Go в этом плане позволяет работать чрезвычайно гибко за счет утиных интерфейсов, или жесткого указания типов. В случае чего компилятор просто вылетит с ошибкой, у скриптовых же языков все это происходит в рантайме
Хочешь погуляем вместе?^^
> У большинства скриптовых языков часто в рантайме возникают проблемы из за несоответствия типовНо ведь в новости написано, что достоинством именно динамических языков является "защита от ошибок", а Go эти достоинства, согласно тексту новости, заимствует.
> Но ведь в новости написано, что достоинством именно динамических языков является "защита от ошибок", а Go эти достоинства, согласно тексту новости, заимствует.В новости действительно этот нюанс не совсем корректно подан.
Rust, по тестам, в среднем в 2.5 раза быстрее Гугловского Го:http://benchmarksgame.alioth.debian.org/u32/compare.php?lang...
Они в новых релизах проблемой скорости будут уделять внимание-то??
RUST начиная с 2015 года, официально стабилизировался и будут уже гораздо привлекательнее!
>>С точки зрения производительности немного ускорена сборка мусора и скорость выполнения >>приложений за счёт внесения дополнительных оптимизаций при выполнении операций >>развёртывания кода (inlining). Значительные оптимизации ожидаются в следующем выпуске.Хочется надеется что по скорости он будет как минимум на равных с RUST, обвязка у Гугла конечно хорошая уже, различные библиотеки уже успели появиться, фрейморки комьюнити создает.
Но и у Моззилы есть огромная армия поклонников в коммьюнити, так что Гугл сейчас должен активнее шевелиться... эй Гугл надеюсь ты читаешь это!?!))
> Но и у Моззилы есть огромная армия поклонников в коммьюнитиОно и видно. На go уже написана куча всяких околосистемных приблуд. А на Rust пишут сами мозиловцы. И то только какой-то servo, который даром никому кроме его авторов не упал.
У гугла есть секретное оружие - они пиариться умеют. При том грамотно и адресно. Зря они чтоли контекстной рекламой зарабатывают?
А мозильщики в последнее время умеют:
1) жевать сопли
2) страдать фигней.
3) срочно передирать архитектуру и оформление хромиума.
servo - samsung.библиотеки есть, но факт что все будут работать с версией 1.0 которая должна выйти в начале 2015года.
по поводу того что делает мозилла, - это не ИП с 1человеком, есть разные отделы, и Руст пилится очень активно. Он не предназначен для домохозяеек, поэтому дизайнеры не при делах, а пиарить будут тех-евангелисты. Уж что-что а ЯваСкрипт они вывели на орбиту и сечас его не догнать.
> а ЯваСкрипт они вывели на орбитуПримерно так же, как Россия вывела на орбиту первый спутник.
Вообще-то СССР. Но евродундукам типа тебя без разницы
Мне тоже нравится Rust. Скорость, безопасность, генерики и многое другое -- рулят.Но всё-таки, некорректно употреблять прошедшее время о 2015-ом годе, находясь в 2014-ом...)
писать на русском языке сложнее чем Go,Rustе)))
Привлекательнее в чём?
> Rust, по тестам, в среднем в 2.5 раза быстрее Гугловского Го:
> http://benchmarksgame.alioth.debian.org/u32/compare.php?lang...А уж tcl какой нить - рвёт как тузик грелку!
Только одна проблема: ржавчина - это плюсы сделанные правильно (авторы языка гарантируют это!), а тогда и сравнивать надо так:
http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...
... чето уже совсем не так круто да?
Вспомним D. Вот уж на что правильный бвл C++ и со скоростью тоже порядок. И где он? Там же и ржавчина будет. No doubts babe!> Они в новых релизах проблемой скорости будут уделять внимание-то??
Где ты видишь проблему? А так да - обещали что 1.5 будет про перформанс.
> RUST начиная с 2015 года, официально стабилизировался и будут уже гораздо привлекательнее!
Ну - 3 недели я подожду, чего там :)
У D две проблемы - его слишком долго крутили и меняли, и за ним долго почти никого не было. За Rust побольше народу, но калечат его пока не хуже.А, да - надо понимать, что D - это именно плюсы, сделанные правильно. От сложностей, связанных с их кривостью, его подлечили, а вот сложность by design - чтобы удобно и эффективно было писать именно сложное - в нём осталась. В этом плане Go, с его примитивностью, имеет огромное преимущество перед D и несколько меньшее - перед Rust.
я согласен что сравнение RUST и GO не совсем корректное, но это два наиболее трендовых языка последнего времени, за спинами которых стоят известные комманды/компании...По поводу сравнения с плюсами, в среденем по различным тестам идут почти вровень
>Rust, по тестам, в среднем в 2.5 раза быстрее Гугловского ГоА Go (стабильный) мы используем в продакшене, в среднем, уже года полтора-два.
Ощущаешь, как твои бенчмарки приносят тебе деньги? Пробовал делать что-то бизнесовое на расте?
А чего делаете на нём, если не секрет? какие либы используете?
> А чего делаете на нём, если не секрет?Некоторые части вэба. И достаточно всяко разных серверных приложений на внутренние задачи.
> какие либы используете?
Пару либ с горилки (gorilla (http://www.gorillatoolkit.org/)) для вебчика, и свои обвязки вокруг оных (по типу этого https://github.com/SpiritOfStallman/attar). Ql (https://github.com/cznic/ql) как embedded database.
Для остального хватает внутренней библиотеки.
А какую IDE используете для разработки на Go? Какие может быть самые удобные?
> А какую IDE используете для разработки на Go? Какие может быть самые
> удобные?Объективно полноценной ide под него нету.
Но ближе всего к этому подобралась LiteIDE, которую к тому же очень активно пилят(https://github.com/visualfc/liteide). Её и пользуем.
PS: сам я любитель вима-для-всего, но для go мне он показался не удобным (что бы без тонны левых плагинов, которые работают через пень-колоду; и что бы комфортно с gofmt и прочими плюшками).
ну что-ж спасибо за инФу, попробуем гоу.
Эмс... мне жаль вас расстраивать, но Rust сейчас как бы есть, но его нет)) Когда появится версия 1.4 Rust, с сообществом как у Go, когда появятся флагманские проекты, аля Docker, CoreOS, InfluxDB,.. тогда стоит делать такой вброс. Если вам критична производительность - Pure C/ASM в помощь. Go под свою целевую нишу - идеален.Прошу прощения за оффтоп, но это напоминает старые холивары в стиле:
- php - какуля
- почему?
- медленный и демоны писать хреново
- ок, но php решает другие целевые задачи
- вот видишь, по этому он ***
ох-ты не знал что Docker на Go написан.
Да в этой самой модной ныне теме (контейнеры) проще перечислить что написано _не_ на Go :)
> Да в этой самой модной ныне теме (контейнеры) проще перечислить что написано
> _не_ на Go :)Это правда, но docker сделал этот подход более user-friendly. Программное решение - это не сферически конь в вакууме, ваш код (на любом языке) может быть идеальным, он может быть той серебряной пулей, которой нет, он может работать на самых экзотически системах, но пока у вас нету хоть какого-то сообщества, на нашей планете всего один человек, которому нужен этот код)) Так же и тут: да, есть LXC, тема не нова и бла-бла-бла. Собственно это ничего не меняет, есть docker со своим сообществом и есть другие с сообществами по меньше в много раз.
Для примера тот же nodejs: идея в js на сервере не новая уже over-дофига лет, но тут появился Раян и решил портировать V8 под сервер, а так же добился признания и большого сообщества.
Кстати прочитал анонс релиза на оригинале и не нашел там вот про это ничего
>>Значительные оптимизации ожидаются в следующем выпуске.где или на основании какой инфы автор перевода/поста сделал этот вывод?
Лакмусовая бумага жёлтого цвета.
> Кстати прочитал анонс релиза на оригинале и не нашел там вот про
> это ничего
>>>Значительные оптимизации ожидаются в следующем выпуске.
> где или на основании какой инфы автор перевода/поста сделал этот вывод?Да не - было! И про 1.5 ... а сейчас нет? Или я уже бухой или подчистили 8-о
>где или на основании какой инфы автор перевода/поста сделал этот вывод?в 1.5 запилят конкурентный GC вместо нынешнего stop-the-world, благодаря чему горутины перестанут зависать так, как они зависают сейчас. (сейчас приходится вручную вызывать в коде runtime.GC())
Народ, подскажите, плз, сначала GO ил Java лучше учить?
assember
Начинать буду с того, что легче.
C.
Для себя - golang. Для хорошей работы java.
> Для себя - golang. Для хорошей работы java."""A new competitor seemed to emerge out of the woodwork every month or so. [...I would...] look at their job listings. After a couple years of this I could tell which companies to worry about and which not to. [...] The safest kind were the ones that wanted Oracle experience. You never had to worry about those. You were also safe if they said they wanted C++ or Java developers. If they wanted Perl or Python programmers, that would be a bit frightening-- that's starting to sound like a company where the technical side, at least, is run by real hackers. If I had ever seen a job posting looking for Lisp hackers, I would have been really worried.
--http://paulgraham.com/avg.html
++По площадям бей, по площадям.
Пошёл ты :) Что ты гонишь такое?
Go в среднем сравним с Java по скорости, при этом памяти требует в два раза меньше для тех же задач + кода для тех же задач в два раза меньше писать надо, - единсвенная фича JAVA стабильность, есть и у C.
А как же переносимость? Куча библиотек и фреймворков? Существующие паттерны? Лёгкость поиска разработчиков? Альтернативные языки и JVM? Вездесущесть?Под десктоп я бы на Java писать не стал, а server-side в плане толстых продуктов пока не доверил бы go.
Для начала нужно изучить следующие дисциплины:
* матан;
* линал;
* комплан;
* функан;
* диффгем;
* теория чисел;
* дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление;
* производящие функции;
* ряды;
* комбинаторика;
* теорвер/матстат/слупы/теория массового обслуживания;
* цепи Маркова;
* интегральные преобразования;
* дискретная математика;
* численные методы.
>[оверквотинг удален]
>* теория чисел;
>* дифуры/интуры/урчпы/вариационное исчисление/оптимальное управление;
>* производящие функции;
>* ряды;
>* комбинаторика;
>* теорвер/матстат/слупы/теория массового обслуживания;
>* цепи Маркова;
>* интегральные преобразования;
>* дискретная математика;
>* численные методы.после нужно почитать Кнута
И уже после этого провалить собеседование на PHP-джуниора. По возрасту.
... И ни одной темы не упомянуто по классическому "computer science".
Надеюсь, вы занимались не перечислением просто того что сами лично прошли?..Из тем которые по факту пригождаются лично мне в IT:
* структуры данных (хэшмэпы, бинарные деревья, линкованные списки и т.д.)
* классы сложностей алгоритмов (P/NP/EXPTIME/EXPSPACE/..)Для проверки знаний понимать как устроена машина Тьюринга, доказать эквивалентность двух-головочной и одно-головочной машин Тьюринга, уметь доказывать задачи на -hard и -complete классы сложности.
А вообще, если действительно за это браться, то просто найти подходящий учебник по CS и идти по нему.
Замечу, впрочем, что я лично > 2/3 из перечисленной выше математики прошёл. Может быть если бы не прошёл -- и не далась бы CS. Не знаю.
Математика обычно достаточно интересна чтобы изучать её саму по себе. И она заслуженно имеет репутацию предмета после которого легко погружаешься в очень многие другие. А cs слишком молода чтобы про неё такое утверждать (кажется).
"и т.д."Чего и т.д. то? Что конкретно? А то уже тонны всего, не знаешь что и учить даже.
Наугад из тем которые были мне интересны:* immutable структуры со сложностью взятия элемента элемента по индексу log(N) и сложностью замены элемента по индексу log(N). Под "заменой" элемента имеется в виду создание новой "структуры", в которой этот один элемент "заменён". Понятно ли объяснил? оО
* immutable hash map в том же смысле немутируемости как выше, и со сложностью извлечения/вставки log(N) (среднее).
* DHT. Distrubuted hash table -- может быть это частично счесть за структуру данных. И это однозначно очень интересно!
* Красно-чёрные деревья?
Модель акторов это вроде не структура данных. А жаль, хорошая штука :D Но не в тему, ок.
У Go очень низкий порог вхождения, так что проще будет начать с него.
Ого! Plan9 снова в тренде!
Вы ребята намереваетесь сделать GO в своих осях тем языком, место которго занимает C# в Виндах?
Ну и, учитывая тенденцию развития и применения веб технологий в ОС сегодня, можно также и Dart+HTML5 запихать в оси вместо JS+HTML5.
Проще новый язык сделать, чем вытянуть эти.
Кто-нибудь из присутсвующих в треде использовал Go вместе с OracleDB(11.2)?
что используете для подключения, пакет/модуль какой?
Кто-нибудь может внятно объяснить зачем нужен этот язык? Пробовал начинать изучать - показалось, что полная хрень как ни крути. Вот есть C, есть C++, ObjectiveC, Vala, Rust, Haskell, JavaScript, Java, Scala, PHP, Perl, Python, Ruby, многочисленные диалекты LISP, и вот по всем ним, в общем-то понятно что это, зачем и как на этом строить программы, а на Go смотришь и недоумеваешь что это вообще за прикол.