После полугода разработки компания Google представила (http://blog.golang.org/go1.3) релиз языка программирования Go 1.3 (http://golang.org), который позиционируется как гибридное решение, сочетающее высокую производительность компилируемых языков с такими достоинствами скриптовых языков, как лёгкость написания кода, быстрота разработки и защищённость от ошибок. Код проекта распространяется под лицензией BSD.Синтаксис Go базируется на привычных элементах языка Си с отдельными заимствованиями из языка Python. Язык достаточно лаконичен, но при этом код легко читается и воспринимается. Код на языке Go компилируется в обособленные бинарные исполняемые файлы, выполняемые нативно без использования виртуальной машины (модули профилирования, отладки и другие подсистемы выявления проблем на этапе выполнения интегрируются в виде runtime-компонентов (http://golang.org/pkg/runtime/)), что позволяет добиться производительности, сопоставимой с программами на языке Си.
Проект изначально разрабатывается с оглядкой на многопоточное программирование и эффективную работу на многоядерных системах, в том числе предоставляя реализованные на уровне операторов средства для организации параллельных вычислений и взаимодействия между параллельно выполняемыми методами. Язык также предоставляет встроенные средства защиты от выхода за допустимые области выделенных блоков памяти и обеспечивает возможность использования сборщика мусора.
Основные новшества (http://golang.org/doc/go1.3), представленные в выпуске Go 1.3:
- Добавлена поддержка платформ DragonFly BSD, Solaris (illumos и Solaris 11) и Plan 9. Повышены минимальные требования к версиям FreeBSD (FreeBSD 8+ c COMPAT_FREEBSD32 для x86 и FreeBSD 10 для ARM), NetBSD (6.0+) и OpenBSD (5.5+). Прекращена поддержка ОС Windows 2000, выпуск обновлений для которой был прекращён Microsoft в 2010 году.- В инструментарий gc добавлена поддержка (https://code.google.com/p/go-wiki/wiki/NativeClient) генерации исполняемых файлов для окружения Native Client (http://www.opennet.me/opennews/art.shtml?num=29671) (NaCl), что позволяет организовать выполнение не заслуживающего доверия кода в sandbox-окружении, изолированном от остальной системы. Пока поддерживается только генерация платформозависимых файлов для 32- и 64-разрядных процессоров Intel, поддержка Portable Native Client (http://www.opennet.me/opennews/art.shtml?num=36962) (PNaCl) отсутствует;
- В сервер документации Godoc (http://godoc.org/code.google.com/p/go.tools/cmd/godoc) добавлены средства для статического атализа кода при запуске с флагом "-analysis". Результаты анализа отображаются как в представлении исходных текстов, так и в документации к пакету, что упрощает навигацию по коду и разбор логики его работы;
- Проведена оптимизация runtime-компонентов, что в сочетании с улучшенным сборщиком мусора, новой непрерывной стратегией работы со стеком для подпрограмм (ранее использовалась сегментированная модель), улучшением движка регулярных выражений и более быстрым детектором состояний гонки (race detector (http://golang.org/doc/articles/race_detector.html)) положительно отразилось на производительности выполнения исполняемых файлов;
- Проведён рефакторинг системы динамического связывания и компилятора. Стадия выбора инструкций перемещена из компилятора в линковщик, что позволило ускорить повторные сборки больших проектов;
- Обеспечен режим точного контроля типов при работе сборщика мусора со стеком, что позволило исключить ошибочную трактовку переменных как укзателей. Задействован новый алгоритм вычищения, отличающийся параллелизацией выполнения операций и манипуляцией страницами памяти большего размера. Суммарный эффект от нового алгоритма оценивается в 50-70% снижении времени на сборку мусора.URL: http://blog.golang.org/go1.3
Новость: http://www.opennet.me/opennews/art.shtml?num=40035
Полезно разве что как замена феерически кривого кошмара под названием питон. Как замена C++ годится только Rust.
Ну вот когда Rust допишут хотябы до какого-то стабильного состояния, тогда и будет заменой
Это да.
> Полезно разве что как замена феерически кривого кошмара под названием питон.Программист на питон?
Чем оно лучше православного питона?
Ну как минимум нормальным синтакисом, многопоточностью и полноценной компиляцией.
Это и есть такой питон, только для сишников.
Тем что синтаксис не для постановки гопов в стойло и скорость работы человеческая.
И D годится, и Rust, и OCaml тоже сгодится.
Только никто С++ на них менять не бежит. И не побежит.
фейсбук вон публиковал отчёт по поводу выгодности перехода на D с C++уже бегут, игнорируйте дальше
сейчас Роб напишет, что Александреску - некомпетентный хипстер и вообще продался корпорастам :)
Компетентный всё же, не отнять, но таки хипстер.А вот Bartosz уже осознал свою детскую болезнь D-визны и исправляется http://bartoszmilewski.com/2014/06/09/the-functional-revolut.../
Только Фэйсбук пока и бежит одиноко.
Да и то - основная часть так и будет на PHP, и Саймон уже остро отточенной лямбдой в D тычет.
А остальные уже все на Go.
Go -- отличный язык, но играющий несколько в других нишах, чем C++, D, Ocaml, да и чем PHP.Что у нас нынче флагманский веб-фреймворк под Go? Rivet?
В отличие от всех перечисленных Go всего 3 года. От идеи до Go1.3 ...
Это ответ на вопрос "а что на нём написано", и про нищи.
За три года прогресс вполне впечатляющий. Как оно дальше пойдёт - будем посмотреть :)
1. три года -- не от "идеи", а от r56
2. и всё-таки, какой флагманский веб-фреймворк? мартини? ривет? оба не впечатлили
Тьфу, не ривет, а ревел.
>1. три года -- не от "идеи", а от r56Хоботов - это мелко!(С)
r56 была первой публичной, до этого над ней трудились 3 гика. Правда уровня каких у нас нет :) но всё-же ...>2. и всё-таки, какой флагманский веб-фреймворк? мартини? ривет? оба не впечатлили
У тебя есть шанс изменить мир :) Ну ты понел ?
> r56 была первой публичнойэто было публичной версией _реализации_, а не идеи. идея могла ещё лет десять формироваться у тех же трёх гиков. язык отдизайнен неплохо.
>>2. и всё-таки, какой флагманский веб-фреймворк?
> У тебя есть шанс изменить мир :)так и запишем: поциент не в теме.
> уже бегут, игнорируйте дальшеЗа кадром слышен конский топот си++'ников которые побежали менять шило на мыло. А что, много например игр уже на D перешли с C++? А то игроделы например повально на полюсах пишут. Потому что больше не на чем. GC и прочие медвежьи услуги им только мешают, им надо скорость но чтобы достаточно сложный код достаточно быстро можно было воротить. Вот и используют плюсы. Потому что все остальные альтернативы - не такие уж и альтернативные.
Всё несколько сложнее, но в целом - да.http://c0de517e.blogspot.ru/2014/06/where-is-my-c-replacemen...
вот ведь… а почему ты ребятам из Circular Studios не сказал, что ничего у них не выйдет? если бы только они вовремя узнали… а теперь уже поздно, код уже написан и работает.
> вот ведь… а почему ты ребятам из Circular Studios не сказал, что ничего у них не выйдет?А у них вышло? Dash game - к успеху пришли пацаны чего там :)
> а теперь уже поздно, код уже написан и работает.
Да это хня - у меня шахматы на sed'е есть! Так что рулит sed и точка!
дальше сам продолжай, это слишком неинтересно. «а-а-а, нельзя ничего написать!» «ну вот, написано.» «а-а-а, не заработали на этом миллиарды — значит, ерунда!» (про то, что «нельзя написать», ненавязчиво забываем). и так далее. дальше веди этот увлекательный диалог с кем-нибудь другим.
с каких пор лицокнига стала мерилом и образцом? Что-то не наблюдаю ни одного opengl или какого-нибудь реляционного проекта, испуганно бегущего в сторону Go :)
только это следствие не преимуществ C++, а того что даже относительно приемлемо работающий код вообще редко меняют. C++ - это Windows от языков программирования. Ёжики плачут, колются, но... Будь OpenSSL написан на Rust с его жестким контролем памяти, никакого хертблида бы не было.
А если бы на ATS с формальной верификацией - тогда вообще б коммунизм уже наступил.Вот только в реальности 90% таких "если" просто не были написаны.
> Будь OpenSSL написан на Rust с его жестким контролем памяти, никакого хертблида бы не было.:) Надежды вьюношу питают ... Чтобы не было хеартблидов надо проггеров догл юить^W учить а на чём они пишут - дело где то 18-ое :)
Для начала надо прибить оверинженернутый протокол который без багов не получится реализовать вообще ни на какому ЯП. И сделать заново. В 20 раз проще. Без легаси и костылей. Тогда на любом ЯП станет реально реализовать без багов или с минимальным количеством таковых.Эталонный пример: протокол CurveCP. Все лучшее что вообще можно ожидать от криптографического протокола подобного типа. И в десятки раз меньше кода чем в любой SSLнутой либе...
> Эталонный пример: протокол CurveCP.ага. эталон. послать пакет без данных можно, а ACKнуть его нельзя.
> Будь OpenSSL написан на Rust с его жестким контролем памяти,
> никакого хертблида бы не было.Если б у бабушки... ! С жестким контролем памяти оно во первых тупило бы раза в три во всей криптографии, за счет лишних проверок, продув первому же конкуренту на си. Потому что жаба всех удавит ставить в 3 раза больше серверов. Кроме того, писали бы это еще более стремные кидизы, дорвавшиеся до модно-стильно-молодежного ЯП. И в результате там было бы еще в 5 раз больше багов. А криптография баги не прощает. И отнюдь не только чтение лишней памяти.
> С жестким контролем памяти оно во первых тупило бы раза в три во всей криптографии, за счет лишних проверокВы что же это, серьезно считаете что проверка типов - она в рантайме происходит?
В GO схватить ошибку типа по райнтам - нефиг делать.
Ну так если таким вот макаром углы-то срезать> Because interface{} can refer to any value, it's a limited way to escape the restrictions of static typing, like void* in C but with additional run-time type checks
чего ж тут ожидать хорошего
Что-ты, биллет, канкстр какой-то, а? Канкстр?
Не - ну раз такой мощщщный Ыгспёрд сказал ... всё пацаны, расходимся.А если по делу - это то на чём надо писать всё что не ядро. Я ещё более Ыгсперд - да :)
Ну ты и неосилятор :) У меня сервера крутят Пистон лет 7 уже 24*7 :))))) Я понимаю, когда чел не осилил Хаскель,но когда Пистон... может пора освободить дорогу другим? А самому, скажем, за баранку? :)
> Ну ты и неосилятор :) У меня сервера крутят Пистон лет 7 уже 24*7 :)))))А у меня - код целевой задачи :) Но ты крути пистон дальше, я не против :)
> Пистон... может пора освободить дорогу другим? А самому, скажем, за баранку?
До чего же хорошо сказано, бро! :)
> Пистон... может пора освободить дорогу другим?Интересно. То-есть, если ты не хочешь "джамшутить" в IT, используя ЯП для быдлoкодеров - единственное что приходит в голову "джамшутеру от IT" - посоветовать джамшутинг в другой сфере :). Ну да, ваш ответ лишний раз подтверждает тезис о том кто пользуеся бидоном...
Ну хз, я уже практически все стал писать на Go. PHP, Python, Java уже с год ничего не писал. Так еще для винды использую Delphi.
А как насчёт D?
Остался на обочине истории.
> Остался на обочине истории.а пацаны-то до сих пор не в курсе…
>> Остался на обочине истории.
> а пацаны-то до сих пор не в курсе…Ну правильно, так всегда и бывает :)
> Как замена C++ годится только Rust.Уолтер Брайт и Андей Александреску обнялись и плачут: столько лет, столько усилий — и всё зря…
>> Как замена C++ годится только Rust.
> Уолтер Брайт и Андей Александреску обнялись и плачут: столько лет, столько усилий — и всё зря…Да брось. D - уже не взлетел, Rust - только готовится не взлететь :)
Правда она как топор бро :)
> Да брось. D - уже не взлетелчётко расписал. я повержен, мне нечего противопоставить такой мощной аргументации.
свет в конце тоннеля?
Тьма вначале пути
А мне нравится... Гоурутины и каналы очень удобная штука...
> А мне нравится... Гоурутины и каналы очень удобная штука...Они есть еще в десятке языков и либ
Akka для JVM появилась примерно в одно время с Go, то же самое с async/await в C#, Erlang - язык не для людей, в C++ нет GC, остальные типа Lua очень мало распространены. Вот и получается, что Go оказался в нужное время в нужном месте.
В нормальном языке GC и не нужен, только если вы сами не в состоянии контролировать то, что выделяете.
> В нормальном языке GC и не нужен, только если вы сами не
> в состоянии контролировать то, что выделяете.тебе часто говорят, что ты идиот? думаю, да: это слишком очевидное наблюдение.
Тебе сказать честно или подыграть, чтобы не обиделся на то, что тебя одного называют идиотом ? Эта самокритика меня просто убивает и да, это слишком очевидное наблюдение.
то есть, постоянно. ок.
Сегментированная модель стека для гороутин -- это было самым тёмным местом в понимании (для меня). В документации на ранний Go ничего внятного не нашёл. Теперь вот, при замене на общеиспользуемую модель стека наконкц-то объяснили, как это работало...
"Опыт - это такая странная фигня, которая появляется у вас сразу после того как он был очень нужен".
Юзаем. Своё место имеет. Устраивает.