Это копия, сохраненная 8 декабря 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Компилируемый, многопоточный язык программирования со статической типизацией, разработанный компанией Google.
Какие у него сильные стороны?
Быстрая компиляция и работа, устойчивость к нагрузкам, простота, богатая стандартная библиотека, универсальность.
А так же асинхронность, спрятанная под капотом (100% утилизация железа). Очень легкие зеленные потоки, которых можно запустить по миллиону штук (программисты на многоядерных квантовых компьютерах в восторге).
Какие у него слабые стороны?
Еще развивается (хотя внушительными темпами, смотрите ниже раздел "Перспективы"). Малое количество вакансий, отсутствие такого количества готовых решений, который имеют языки с более долгой историей.
В основном сейчас знания языка приветствуется (особенно для коллег с питона).
На какие языки он похож?
C (не плюсы), Python, JS, немного духа Java (её лучших сторон)
Какая у него основная сфера применения?
Embedded, highload-web, бюджетный веб (так как не жрет ресурсы как скрипты или джава).
Какая у него основная сфера применения в будущем (вполне вероятном будущем)
Основная (но не единственная) мобильная разработка на новых девайсах нового поколения андроид (джава некуда не денется, но все плюшки будут на первичном языке - Go).
Разработка на новых квантовых процессорах (которые в первое время будут относительно медленней современных пк, но будут выигрывать за счет наличия сразу миллиона ядер, где Go будет работать без каких либо проблем и усилий со стороны синтаксиса).
Робототехника, которая будет построена на аналогах нейронных сетей, на квантовых компьютерах (опять же за счет легковесных асинхронных горутин, которые не требуют от программиста каких-то лишних телодвижений).
Холивар
Язык настолько прост и удобен, что позволяет не городить тучу запутанного кода наподобие промышленного кода java (не маловажную роль играет классический структурно-процедурный стиль, со взятыми лучшими ООП решениями), а имея встроенную асинхронность, ставит серьезный вопрос для языков, которые как-то пытаются эту асинхронность у себя эмулировать (калбэк ад и прочие ужасы).
Го станет тем языком, который откинет джаву к своему собрату коболу, он вместе с питоном заменит js на фронтенде (когда окончательно завезут wasm), заменит частично сам питон, так как быстрее своего собрата и в вакансиях уже знания Go приветствуется.
Приверженцы старой структурной школы php смотрят на Go как на глоток свежего воздуха, после того как PHP стал бестолочно копировать джаву (разделив сообщество на две части).
Го не заменит низкоуровневые языки, такие как Си и С++, но он будет приятен для тех, кто любит простоту Си (но удобство скриптовых языков).
Производительность
https://benchmarksgame.alioth.debian.org/u64q/go.html
https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=db
https://www.techempower.com/benchmarks/#section=data-r12&hw=peak&test=plaintext
Перспективы
http://www.tiobe.com/tiobe-index/
https://www.google.ru/trends/explore?q=golang
Число репозиториев с не менее 1000 звезд (колонка "Languages")
https://github.com/search?utf8=✓&q=stars:>1000&type=Repositories&ref=searchresults
Уже на уровне топовых языков
http://sogrady-media.redmonk.com/sogrady/files/2016/07/lang.rank_.Q316.plot-WM.png
Полезное
Для начинающих (годный и развернутый список)
https://goo.gl/NfNfZg
Мануал веба на го с погружением в язык
https://github.com/astaxie/build-web-application-with-golang/blob/master/ru/preface.md
Го в примерах
https://gobyexample.ru/
Ищем пакеты:
https://godoc.org/
Сторонние го либы
https://github.com/golang/go/wiki/Projects
Кто уже юзает го
https://github.com/golang/go/wiki/GoUsers
Видосы (есть на русском, если полистать)
http://4gophers.ru/video
Число репозиториев с не менее 1000 звезд (колонка "Languages")
https://goo.gl/0kUJoW
Некоторые аноны предполагают, что авторы просто не успели завести все что можно и сахарить будут после, когда соберут нужную аудиторию и число проектов (естественно с обратной совместимостью, бизнес-way)
Но практичный анон говорит, нужно отключить в голове синдром утенка и воспринимать язык как инструмент для простого и удобного решения своих задач (и прекратить дрочить на синтаксический сахар в языках)
>(и прекратить дрочить на синтаксический сахар в языках)
Т.е. гоферы попросту признают что они безликое говно, на мнение которого всем поебать, и заменить их можно кем угодно?
В говне же мало того, что нет вот вообще нихуя, так ещё всё и вся прибито к полу как деревянными игрушки, что показывает суть языка.
>программисты на многоядерных квантовых компьютерах в восторге
Говно уже завезти на мейнфреймы успели? Нет. Потому что нинужна. Так зачем ты дезинформируешь людей?
> бюджетный веб (так как не жрет ресурсы как скрипты)
В нише скриптопараш ресурсы значения не имеют, так как само приложение там нужно чтобы 1 раз в сутки по таск менеджеру хуйнуть в кэш новые данные, зато скорость разработки значение имеет и для неё как раз таки нужны:
>синтаксический сахар
>готовые решения
И этого у говна нет.
Если же брать обработку данных, скриптопараши нужны там в качестве обертки над библиотеками на C и говно здесь не даст преимущества в ресурсах.
> В нише скриптопараш ресурсы значения не имеют, так как само приложение там нужно чтобы 1 раз в сутки по таск менеджеру хуйнуть в кэш новые данные
> rails
))
Ну ты типа указываешь контекст выполнения метода же. Эта хуйня называется ресирвером.
Например:
>func (s TwitterSource) Find(word string) ([]Message, error) {
> return s.searchAPICall(s.Username, word)
>}
Так вот после func идет хуйня, которую можно назвать указателем, контекстом, ресирвером, мне похуй.
Хуево это, в общем.
Ну так это не методы нихуя, это просто функции, которые можно прибиндить к определенному типу (там табличка тип-функция создается). А структура это, или число, или строка - вообще похуй.
type MyList []int
func (m MyList) append(x int) {
m = append(*m, x)
}
как ты блять тут сделаешь иначе. TwitterSource - это не класс нихуя, это обычная структура, у нее не может быть методов. Когда блять эти ООП-макаки поймут, что данные и методы для работы с ним - разные вещи, их не нужно определять в одном месте. С плюсах это правильно сделали, кстати.
Хуйню несете короч, выучите сначала язык
>плюсах это правильно сделали, кстати.
Проиграл с этого годауна. В плюсах функции как раз связанны классами/структурами с данными, единственная причина почему реализацию выносят в отдельный файл — костыли препроцессора и линкера из си.
Кстати, привязка функций к типам — это фича из ML сороколетней давности. Видимо хоть один нормальный язык Пайк за свои овердохуя дет таки осилил.
Про плюсы там реально хрень, но все остальное верно
А в чем на этом ГО кодить?
IDE какая есть для него?
Гоудаунам нравится самим приседать на бутылку, писать if err != nil {... на каждый пук и писать код в текстовом редакторе
Меньше чем год назад го-тред тонул, если не лились подростковые комплексы Ильи, которые он решал за счет языков программирования.
А сейчас я наблюдаю бугурты сравни топовым языкам. Это крупная победа, коллеги. Го - выстрелил!
есть конечно плагин для идею, но это зашквар какой-то, использовать иде вместо терминала
Ставишь вим/atom/sublime text, ставишь gocode (через go get, https://github.com/nsf/gocode)
atom: https://atom.io/packages/go-plus
sublime: https://packagecontrol.io/search/gosublime
vim: сам что-нибудь найди, писал давно, заебался настраивать
Для сборки опять же через go get ставишь rerun (https://github.com/ivpusic/rerun) и просто запускаешь из папки своего проекта (можно и go run вручную каждый раз, но rerun перезапускает при изменении)
но ты скорее всего нуб, который писал только на шарпе на студии и не знает, что такое терминал
я еще погуглил за тебя и вот
для vscode: https://github.com/Microsoft/vscode-go
для idea: http://go-ide.com/
>но ты скорее всего нуб, который писал только на шарпе на студии и не знает, что такое терминал
Я ощущаю тебе лет 20, или около того.
в точку, лол
> нет официального иде для разработки от создателей
Теперь я хоть понимаю, с кем общаюсь. Ох уж эти java-дети.
Ты поди для разработки под мк иде просить будешь, даунёнок?
А ты что думал? В го треде все посты в духе "зачем оно" задают дцпшники мечтающие вкатиться на 300к в секунду.
>Ты поди для разработки под мк иде просить будешь, даунёнок?
Иду на сайт проивзводителя МК.
Нахожу мой МК.
Нажимаю ссылочку
>скачать СДК IDE мокрые потные кисоньки.
ЛЮБОЙ производитель МК предоставляет среду разработки и экосистему.
Иначе никому такой МК ненужен.
и блять под каждый МК писать на новой иде, вместо любимого редактора с десятком плагинов и идеальными настройками, нужным функционалом и тп и тд, это долбоебизм какой-то
>и блять под каждый МК писать на новой иде, вместо любимого редактора с десятком плагинов и идеальными настройками, нужным функционалом и тп и тд, это долбоебизм какой-то
Зачем под каждый?
У каждого производителя своя экосистема.
Гибко распространяющаяся на весь модельный ряд.
>вместо любимого редактора с десятком плагинов и идеальными настройками, нужным функционалом и тп и тд
Не бывает редакторов с идеальными настройками и нужным функционалом.
Так же как идеальных ЯП.
>это долбоебизм какой-то
Это рынок.
Для конечного пользователя важны не абстрактные идеальности и хорошисти в вакууме, а живая экосистема.
Поэтому виндовс доминирует на десктопе, а андроид на смартфонах.
Но почему я не могу использовать ту же экосистему из своего редактора? Если не учитываться мк (не занимаюсь этим), то почти все среды и языки имеют кучу своих консольных тулз (99% экосистемы). Консольные тулзы можно как и просто использовать в консоли, так и интегрировать с редактором (5к плагинов под атом под все возможные и невозможные фичи).
Зачем для этого всего нужна какая-то левая IDE от непонятного разработчика, когда у меня есть редактор от гитхаба?
Конкретно, я вижу, что у js-кодеров нет IDE, у них огромнейшая (самая большая уже походу) экосистема и им абсолютно похуй на твои слова.
Официальная от создателей? А я-то думал, она от джета. Да и количеством юзеров я на ней не впечатлен как-то, с учетом того, что у джета единый репозиторий плагинов для всех их поделок, у плагина на скалу за 7 (!) лет в два раза больше загрузок, чем у какой-нибудь миникарты для атома за полтора года.
И это хорошо? Вместо установки нужных плагинов нужно сидеть и убирать ненужные фичи. Именно так я делал с vs в свое время, убирал все, кроме редактора, дерева и консоли, а открывал нужное по необходимости. А потом узнал, что все проще, есть же обычные редакторы кода и терминал, че я парился-то.
В общем, спор ide vs редактор кода можно вести бесконечно, да и сам спор стар как мир. В любом случае я чувствую, что вам не переубедить, а сам я уже для себя выбрал, что мне лучше. В любом случае, наличие ide ничего не решает.
О, кстати, раз вы упомянули Webstorm, я уже скидывал ранее Intellij Go.
>Но почему я не могу использовать ту же экосистему из своего редактора?
О какой именно экосистеме идет речь?
Какую-то можно, какую-то нет.
>Зачем для этого всего нужна какая-то левая IDE от непонятного разработчика, когда у меня есть редактор от гитхаба?
Понятия не имею зачем тебе что-то надо или не надо.
>Конкретно, я вижу, что у js-кодеров нет IDE, у них огромнейшая (самая большая уже походу) экосистема
Не представляю себе что ты под "жс кодерами" подразумеваешь.
>и им абсолютно похуй на твои слова
Хорошо хорошо, только не плачь пожалуйста.
> О какой именно экосистеме идет речь
ээ, нуу, сборка, тестирование, профайлинг, анализирование кода, упаковка, управление зависимостями, сами зависимости
Хочется посраться с анонами - пиздуй в б, там этого дерьма навалом.
Мне казалось, что го-тред уже стал представительством /би в /зк. Захожу иногда лишь для того, чтобы посрать
У тебя проблемы?
Тебя обижают в школе/вузe/на работе.
И об тебя вытирают ноги все в округе?
Не беда! Го-тред!
Именно здесь ты сможешь спроецировать свои проблемы через ненависть к новому языку! Теперь тебе не надо блуждать по языковым тредам и слушать какой ты неосилятор! Освой язык Го за пару дней и ты сможешь компенсировать все свои проблемы прямо здесь и сейчас.
Го-тред, помогаем больным уебанам с 2012 года
Клиника имени Святого Роба Пайка.
Ваш язык хуйня ебаная! Обколются своими корутинами и колбэчат друг друга в треды!
Фух, полегчало... Прямо почувствовал себя значимым и важным. Даже привстал немного
>Ваш язык хуйня ебаная! Обколются своими корутинами и колбэчат друг друга в треды!
>Фух, полегчало... Прямо почувствовал себя значимым и важным. Даже привстал немного
Главный Семён треда детектирует Семёнов.
Думаю обмазаться вторым кококо нода не серверный язык бек енд языком, и встал выбор между сисярпом и голенгом.
Фрустрация от того, что кто-то самовольно на этом пишет и ему нравится.
Запустить — можно. Что-то вменяемое написать — нельзя. Нет, не надо.
ты реально хочешь получить технический ответ в треде в котором одни тролли и при этом не загуглив?
ты нам всех психов разогнал
Предлагаю написать обёртку над cgroups и bsd-jails, придумать няшное название и продавать усатым хипстерам.
Для хипстеров надо на js писать))
http://p.umputun.com/2016/05/03/go-ili-nie-go/
зацепите потом в шапку
https://github.com/golang/go/wiki/IDEsAndTextEditorPlugins
И назовём её dvacker
>С Go все это заметно проще и, что немаловажно, он не особо нагружает мозг.
>он не особо нагружает мозг
Всё ясно
Толсто.
Лучше позаносить туда их регулярные цитаты про го и негегеничность которые проскакивают почти в каждом выпуске радио-т.
Как отличить настоящего программиста, который активно пишет код, от диванов? Очень просто, для настоящего программиста чем легче решается сложная задача с тем же результатом, тем лучше.
Настоящий программист всегда отметит, что читать и сопровождать код, не менее важно чем писать.
То есть, у того хуя из уст звучат вполне реальные вещи и потребности. И ебаться с кодом целый день или же вместо это потратить всего пару часов - это реальная фича для настоящего программиста. А мнимая тяга к сложности и запутанности, это скорее попытка самоутвердиться для дивана.
Аналогия, есть мешок 80кг, его надо поднять на 9 этаж.
Есть выбор - лестница или лифт.
Настоящий программист выберет лифт, ибо нерационально.
А настоящий диван выберет лестницу, так как он сможет показать какой он "мощный".
Поэтому эти бараны и дрочат на всякие ФП или Расты. Чем более ты не такой как все тем лучше.
Личный психолог Го-треда
> тяга к сложности и запутанности, это скорее попытка самоутвердиться для дивана
Дело не в самоутверждении, а в самовыражении и саморазвлечении. Это разные ценности и кардинально разное мироощущение.
Людям неприкладного склада ума просто надо сьёбывать из программирования как можно скорее.
Всё правильно, только это Го предлагает писать простыни бойлерплейта, да ещё и без сахарка, вместо использования мощных абстракций (лестница вместо лифта).
Го по сравнению с ноджс - да, но не по сравнению со всякими растами и хаскелями, где такие-то мощные абстракции, но решать ту же задачу будешь в 100 раз дольше и дороже чем на го.
Не переводи тему, го и нельзя сравнивать с растами и хаскеллями потому что их корректно сравнивать только с сишками и окамлами, потому что его область - нода и питон.
Тут и думать нечего. Плагин для вебшторма покрывает все потребности.
Ты так говоришь нравится дебилам будто это что-то плохое.
Это наоборот хорошее, и гугл это очень понимает.
Ну в этом-то ты прав, понравиться десяткам дебилов живущих и срущих в хлевах легче, чем одному программисту с развитой культурой.
Язык выглядеть как компромисс между статически и динамически типизированными языками (я думаю поэтому не сунули дженерики).
И это круто на самом деле, быстрый питон с типами - был просто необходим.
>>864419
Гугл срал на дебилов (сегмент быдлокодинга ему не интересен), но смысл был правильный - завести быстрый-питон.
На краях рынка джавы давно "весел" лишний слой разработки, для которой требуется джава, но при этом не требовалась ее псевдо-академическая избыточность.
Именно поэтому анон кричал, что Го оттолкнет джаву к миру КОБОЛа.
>>864428
>>864434
Высококультурный слой из других языков, лол.
>Гугл срал на дебилов
Все верно, прямо /go/вном и срал прямо на тебя.
>сегмент быдлокодинга ему не интересен
>сегмент
>не интересен
Ох уж эти проекции. Вот потому-то ты и есть всего лишь генетически нищая пидораха.
А в чём компромисс-то? В том, что статически типизированный язык заставляет кастить всё к хуй пойми чему вместо гарантии типобезопасности?
>этот возгоревшийся slaveянин
Ну вот, а то - хипстеры, технологии, прогресс.
А по сути все вы одинаковые.
использовать возможности рутин и компиляции, но писть на более приятном языке
не нужно скрипткиди ломать голову над дженериками, я видел они правда туго вкатываются в статик языки, так как все структуры для них гетерогенны
при релизе Kotlin что-то пукнули на хабре на тему поддержки, но вероятно не осилили.
Ну конечно, ты не дебил, ты просто ОСОБЕННЫЙ, только не плачь)
>Конкретно, я вижу, что у js-кодеров нет IDE, у них огромнейшая (самая большая уже походу) экосистема и им абсолютно похуй на твои слова.
PHPStorm, есс-но, без него рефакторинг проекта на TypeScript делать очень проблематично.
Обосрались или нет — лет через 5 видно будет, язык только релизнулся. Со скалы все бегут как крысы с тонущего корабля.
На ллвм хуяскель, плюсы, раст, окамл, юля, поня, идрис, кристал и все остальные новые языки работающие нативно. Ииии... чо?
На хабре о чём только не пукают, особенно учитывая что там давно уже даже не инвайтная система регистрации. Всё равно что написать что говно завтра в раст компилироваться начнет для отлова рейс кондишенов.
> Со скалы все бегут как крысы с тонущего корабля.
Как подобные фантазии вообще появились в твоём воспаленном сознании?
>многопоточный язык программирования
Это не язык, это рантайм. Язык лишь формализация. Многогринопоточным может быть лишь рантайм. Go как язык это говнище типа крестов. Даже в сишечке можно сделать dlopen и получить таким образом великолепную рефлективность на глобальном уровне.
вкинь лучше годноту какую по Го, которую нарыл за последнее время
Тут услышал, что гитхаб переписывают на Го.
сорян, опечатка, не гитхаб, а дропбокс.
Повторяем в сотый раз:
-язык родом из 80х;
-нихуя нет: ни ооп, ни фп, ни какого-либа сахара;
-за то есть: указатели, goto, но при этом со сборкой мусора;
-нравится только даунам (вчерашним "программистам 1с-битрикс" и прочим).
Так почему его тогда используют все больше и больше? И разве то, что он поддерживает конкуренси из коробки не дает ему преимуществ?
По существу у вас только претензия к отсутствию ооп и фп, хотя в го все просто немного по-другому - тут структуры и интерфейсы.
И что плохого в указателях? И сборке мусора? И гото?
Писать на нем легко, код получается быстрый. Собирается в один файл - деплоить проще простого.
Аргументы в стиле "нравится даунам" немного странные. Питон вообще почти всем нравится, и даунам в том числе. Но это его плохим не делает
Организациям нужен легко поддерживаемый код, который сможет писать первая попавшаяся макака.
Уже лень всё разжевывать, почитай предыдущие треды. Ты на верном пути, главное почаще себя убеждай, что здесь всё просто немного по-другому.
че же тогда по статистике на го переходят не новички, а специалисты с десятилетним стажем?
Знаешь, я не пытаюсь не убедить себя, а просто разобраться, за что так гонят на го.
Пока что аргументы больше эмоций содержат, чем фактов. А чем эмоции вызваны, мне непонятно.
По поводу легко поддерживаемого кода - не вижу в этом никакой проблемы, это же огромный плюс.
Притензия именно что к вообще отсутствию всего что нужно.
>И что плохого в указателях?
В том что это как и весь язык неконсистентная хуйня. Вот смотри: у тебя есть указатели, ты можешь вроде как работать именно с адрессом данных, но при этом нет контроля над выделением памяти в куче/стеке и адрессной арифметики, а язык намертво привязан к сборщику - вот и нахуя они? Почему опять же не оставить компилятору решение копировать или передавать по ссылке, что помогло бы нюфагам, или хотя бы не заменить более современными ссылками? Почему в 21-м веке нельзя было к этим указателям с nil-ами прикрутить обычный Optional, который позволял бы сокращать код буквально в 3 раза?
>И сборке мусора?
В области го с ней вроде как всё хорошо - но у тебя опять же язык с указателями, без дефрагментации кучи и прочего - вроде высокоуровенный язык, а если нужно обработать большоё объём даных к примеру нужно уже писать руками свои пулы как в сишечке.
>И гото?
Просто лол. Вместо паттернматчинга с адт которые опять же переложили бы это всё на компилятор, тебе предлагают ебашить кривые фсм на гото и стрелять себе по ногам.
С питоном он и близко не стоял. Кстати, знаю пару питонистов которых заставляют на работе писать на го - это его хейтят похлеще местных.
иди нахуй, не мешай отрабатывать бюджет
зарепортил
Next, what does each of the sample programs do if the environment variable isn’t set? The program should abort with an error message when it tries to read the environment variable.
Go (1)
Getenv returns the empty string and continues. Then Go somehow manages to parse the empty string as an empty JSON list and still continues. Then it tries to interpret the first of the user arguments to the program as the path of the program to run and execs that instead! Utter failure.
Всё, что надо знать о goвне вы узнали. Тред можно закрывать, goвно не нужно.
так почему же, если у него всего этого нет, на нём продолжают пилить годные проекты?
Может, все это и не нужно языку, чтобы он был "хорошим" ?
на пхп тоже пилили и пилят
А что на нём сделали такого-то? желательно из списка того, куда не пролез бы питон
Илюша, съеби.
Потому что Go для web как С для приложений низкоуровневых. Просто, быстро и не все могут осилить. Слишком привыкли ко всякому сахару из динамических языков и жалуются, что язык их по рукам бъёт
Или что?
Окай, а теперь в студию высокоуровневый статически типизированный язык без виртуальной машины.
D не предлагать.
>-язык родом из 80х;
Улучшенная Сишочка, что может быть прекрасней.
>нихуя нет: ни ооп, ни фп
Просто синтаксис, простые решения.
Не джун не хипстер с высоким ЧСВ не натворят овер-запутанный код, который потом тебе разбирать.
ООП:
Взяли лучшее решения, убрали лишнее, что запутывает сопровождение кода.
ФП:
ФП должен оставаться в ФП, в чистом императивном языке ФП парадигма это боль (так же и обратно). Нужен Хаскель, возьми Хаскель.
>-за то есть: указатели, goto, но при этом со сборкой мусора;
Указатели - что тут плохого?
Goto - работает в приделах той же функции, это те же метки в других языках. Даже в джаве можно прыгнуть на любой блок в пределах метода:
метка: {
}
Но откуда тебе такое знать, глупый диванщик.
Сборка мусора - эм, как-будто что-то плохое, или ты готов в голове держать лайфтаймы и ебаться с ними как в расте? Удачи.
>нравится только даунам
Сомнительное утверждение, код на нем пишется одинаково удобно. Не нравится лишь диванным баранам, которые вместо программирования дрочат на синтаксический сахар других языков и даже не в курсе о работе меток или goto в других языках.
>-язык родом из 80х;
Улучшенная Сишочка, что может быть прекрасней.
>нихуя нет: ни ооп, ни фп
Просто синтаксис, простые решения.
Не джун не хипстер с высоким ЧСВ не натворят овер-запутанный код, который потом тебе разбирать.
ООП:
Взяли лучшее решения, убрали лишнее, что запутывает сопровождение кода.
ФП:
ФП должен оставаться в ФП, в чистом императивном языке ФП парадигма это боль (так же и обратно). Нужен Хаскель, возьми Хаскель.
>-за то есть: указатели, goto, но при этом со сборкой мусора;
Указатели - что тут плохого?
Goto - работает в приделах той же функции, это те же метки в других языках. Даже в джаве можно прыгнуть на любой блок в пределах метода:
метка: {
}
Но откуда тебе такое знать, глупый диванщик.
Сборка мусора - эм, как-будто что-то плохое, или ты готов в голове держать лайфтаймы и ебаться с ними как в расте? Удачи.
>нравится только даунам
Сомнительное утверждение, код на нем пишется одинаково удобно. Не нравится лишь диванным баранам, которые вместо программирования дрочат на синтаксический сахар других языков и даже не в курсе о работе меток или goto в других языках.
Все жявы с дотнетами имеют АОТ-компиляторы (в случае дотнета почти что из коробки). Вопрос правда чем же она так помешала если от неё одни удобства - но да, если тебе нужно хуякхуяк и в продакшен а-ля пхп, то го непревзойдён наверно.
подтверждаю, причина проста - сеньоры/тимлиды думает практичностью, а не высокими идеалами.
Илюша, просто посмотри на себя в зеркало - ты же дебил и выродок.
И модные хайпы не помогут - бедшь жрать говно за копейки.
Всю жизнь.
прокрутил у себя диалог в голове, согласился сам собой, победил
Я вижу следы раста-дивана, это вин, лол
>Go ни разу не моден
Ну вот самообмана этого не надо только.
Не хипстеронодопараша, конечно - но вполне хайп. Платный, за бабки гугла.
двачую, го уже в топ языках и в том же гитхабе если сортировать по мин. 1000 звезд.
Но из-за легаси кода, чаще в вакансиях идет как в плюс как дополнительный язык. Питонщикам знать его стоит уже как минимум.
нашел. Не знаю, где напоролся на эту ссылку, но инфа по го меня сильно удивила. Средний возраст там тоже ~30, что показывает, что язык не очень популярен среди молодежи (ну да, им важно ООП, ФП, генерики, еще какие-нибудь не нужные им фичи вместо быстрого решения задачи и нормального читабельного кода)
https://dou.ua/lenta/articles/language-rating-jan-2016/
И нет, я не против фп или ооп, я одновременно с go пишу на clojure и ruby, сейчас смотрю в сторону elixir, но в go точно не нужны генерики и прочая поебень.
Ну и нет, бороды или красной рубахи у меня нет.
Десять раз уже написали, что там не так. И тебе в том числе. Просто ты не понимаешь, почему отсутствие этого всего - это плохо. Потому что ты обычный blub programmer, и го для тебя - вершина технической мысли, а все эти странные вещи типа строгой типизации, паттерн-матчинга и прочих замыканий - это что-то такое далёкое и абстрактное. "Да и биз них всё прикрасна пишеца! Ишь, напридумывали тут морфизмов-хуизмов". Ну а хули, диды-то вообще, вон, на кубейсике ебошили, и ничего. Многие даже в здравом рассудке остались.
>Ocaml мертвее D сейчас, разве нет?
Лол, нет, всё ровно наоборот.
>Лол, Go ни разу не моден
А есть ещё какие-то причины резкой популяризации? Вообще, моду, как и в мире одежды, диктуют крупные бренды.
>>866335
>>866339
Ахуительная история.
Йильюш, как там новый язык?
Твой юный студенческий мозг не воспринимает существование практичных программисты, которые не дрочат на синтаксис, а дрочат на решения (и это как раз те разработчики за ближе к 30)
Один малоизвестный хер писал, что чтение кода, к примеру, джавы на гитхабе не возможен (из-за тонны пустых абстракций и перескокам по этим пустотам, то есть читать это с трудом можно только через IDE). А вот код на Го спокойно читается прям с гитхаба, даже в сложных фреймворках.
И это разве не овер-фишка языка?
Умпутун тоже это подчеркивал, ты без проблем вкатишься в код.
Именно за это люди и выбирают Го, так как сопровождение кода важнее написания и все блять прекрасно знают про сахар в других язык, у людей тонна опыта, им просто срать, так как технология дает другие, более важные решения.
Уже бесит обилие хелло-ворд-программистов, не понимающие практики многолетней разработки, но поклоняющиеся языкам как идолам.
Чтобы отсеять этих диванных разработчиков предлагаю форсить термин хеллоу-кидди (сочетании скрипт-кидди и старого термина из лурка http://lurkmore.to/Хеллоуворлдщик)
До меня кстати дошло - люди с таким опытом редко сами пишут код, в основном это всё тимлиды с архитектрами - для них отличный язык, действительно. Самому копаться в говне не нужно, а приучить новую макаку всегда просто.
>Умпутун тоже это подчеркивал, ты без проблем вкатишься в код
А ещё он с бобуком каждый выпуск рт где проскакивает тема про программирование поливает говно говном, вот уж хороший пример.
это его работа все поливать, но он покаялся
http://p.umputun.com/2016/05/03/go-ili-nie-go/
у меня тоже бомбило, но ключевые фишки сподвигли его попробовать и в целом меня он устраивает
>у меня есть один язык, в котором есть всё, что нужно, а чего нет - то нинужно
>все языки такие же, только в них ещё нинужный сахар
>абстракции - это фабрики фабрик и поэтому плохо и нинужно
>как хорошо, что мой язык не даёт делать абстракции
>типичный blub programmer
Ну, что и ожидалось.
Ну вот, теперь в заговоры полезли.
Выпей лекарства и пойми одну фишку, ты можешь реально залезть в опенсорс проект и понять в нем код (а не охуеть, как обычно это бывает).
Го делает опенсорс чище
пошли уже маневры, некрасиво, ты же не хеллоу-киди и прекрасно понимаешь ту фичу с доступными сорцами без лишней мозгопляски.
Какая работа поливать говном, что ты несёшь? Послушай рт за последние пол года хотя бы, в бложике как раз только впечатления от знакомства, а не опыт работы.
>без лишней мозгопляски.
А ещё математика не нужна, как и алгоритмы. Программист не хочет думать - это как макака не хочет банан.
маневры, маня
>без лишней мозгопляски.
>А ещё математика не нужна, как и алгоритмы
подмена понятий, утрирование - детектер
я так хочу оказаться правым, что приведу аналогию на основе авторитетной математики, вот тут я выиграю!
>ты же не хеллоу-киди
я ошибался
да хуй на него как и на всях жующих сопли онлайн (в том числе голангшоу, с бестолково-слащавой манерой диалога), главное в статье он покаялся и в принципе, донес те же мысли что несут программисты с большим стажем
Во-первых, я не тот анон. Понимаю, что тебе, шизику, все на одно лицо, но всё же.
Во-вторых, подмена понятий только с твоей стороны. Убогий язык, сделанный для вчерашних дворников - это не практичный язык, а просто убогий язык, игнорирующий прогресс.
>Во-первых, я не тот анон
И это отмазка на анонимной борде в 2016 году...
Какая в этом разница если я по твоим маневрам ответил, а не по его??
>Убогий язык, сделанный для вчерашних дворников - это не практичный язык, а просто убогий язык, игнорирующий прогресс.
Хеллоу-киди верят, что чем больше сахара в языке тем он для более крутых программистов.
Маня, тебе язык нужен чтобы самоутверждаться или решать задачи?
Мне "сахар" а ты это этот термин явно не по назначению всюду суёшь нужен чтобы продуктивнее их решать.
>>866420
Сторона есть у пропаганды, к которой эта подмена относится, логик блять.
>язык нужен чтобы
Кстати, интересный вопрос.
То есть сам вопрос неинтересный - интересно как на него реагируют дети.
Впрочем, очевидно что большинство кодеров клепают параши уровня read a; read b; print a+b; максимум на тысячу строк - и это нормально
>Сторона есть у пропаганды, к которой эта подмена относится, логик блять.
То есть, ты сейчас тезис из спора (из демагогии)
сходу смешал с термином политической пропаганды и тут же мне о логике напомнил?
Ты или шизофреник или тупой, я думаю последнее.
У пропаганды нет сторон, есть факты и есть искажения, но это не стороны (то есть искажение фактов и есть пропаганда, а не какая либо сторона. Подмена понятий тоже не есть политическая пропаганда, но она использует этот метод в совокупности с другими для достижении пропаганды).
Вероятно, чем тупее программист (простите - хеллоу-киди), тем насыщенней сахаром должен быть для него язык.
Проблема тут в том, что их ставят вровень с программистами.
Это как если бы инженера самолета Боинг сопоставляли с модельщиком который дома клепает самолетики.
Понятно, что последнему нужны готовые детали (и синтаксический сахар) чтобы было максимально просто, ведь это же игра-хобби и он не решает технических задач
>их ставят вровень с программистами.
Все правильно делают. Ганс, конечно, поехавший пидорас и пишет в основном про себя прямо по Фрейду но "програмистишки" - правильное слово, достойное вас.
>инженера самолета Боинг
Посмотрите кто говорит, хаха.
Скромнее будь.
>Подмена понятий тоже не есть политическая пропаганда
Типичный патриот Российской Федерации типичен.
на входе: двумерный массив, где внутренний массив -- линия, первое число -- точка ноды 1, второе - точка ноды 2, третье -- дистанция между ними; данные о начальной и конечной ноде.
на выходе: ответ, сколько времени займет путь и массив с нодами, через которые надо пройти.
я УЖЕ ЗАЕБАЛСЯ БЛЯТЬ придумывать, как это граммотно реализовать. спасибо.
Отлезь, гнида.
> сопровождение кода важнее написания
Двачую.
Кто объяснит, попробуйте например понять во flask в исходниках, как их LocalProxy рабоатет для параметров реквеста типа json там или cookie
Самый настоящий пиздос
Разработчик flask'а итт? Там без поллитра не разберешься.
Гораздо приятнее go читать, чем в этом разбираться. Это тот случай, когда даже с документацией все становится понятно не с первого раза. Джанго блядь в разы логичнее даже.
>без поллитра не разберешься.
>приятнее go читать
>даже с документацией все становится понятно не с первого раза.
Вот и очередная иллюстрация - на какую аудиторию рассчитано /го/вно.
Так как же связаны динамикопроблемы и легкочитаемость говна? Любой статический язык без нагромождения хуиты как в плюсах или скале читается не сильно хуже.
Долбоёб? Я ковырялся и модифицировал исходники Джанги под себя, там все логично хотя бы.
Во фласке же внутренности веркцойга представляют собой скопление сраной магии, которое не каждый осилит. А уж проекты, злоупотребляющие декораторами это вообще пиздос.
Это не динамикопроблемы, это говнокодеропроблемы.
В go очень сложно написать непонятное дерьмо. Тот же gin или gorilla просты в понимании, да даже gorm, где много работы с рефлексией иобобщенным interface{}, можно распарсить и понять как оно работает не напрягаясь.
В питоне есть три правила, но их почему то многие игнорируют
Явное лучше, чем неявное.
Простое лучше, чем сложное.
Сложное лучше, чем запутанное.
создателей, что часто приводит к включению в язык программирования их реакции
на слабости и недостатки более ранних языков. Go не является исключением. Проект Go родился из разочарования в Google несколькими программными системами, страдающими от “взрыва сложности” (эта проблема отнюдь не уникальна для Google).
Как заметил Роб Пайк (Rob Pike), “сложность мультипликативна”: устранение
проблемы путем усложнения одной части системы медленно, но верно добавляет
сложность в другие части. Постоянное требование внесения новых функций, настро-
ек и конфигураций очень быстро заставляет отказаться от простоты, несмотря на то
что в долгосрочной перспективе простота является ключом к хорошему программно-
му обеспечению.
Простота требует большего количества работы в начале проекта по определению
самой сути идеи и большей дисциплины во время жизненного цикла проекта, которая
поможет отличать хорошие изменения от плохих. При достаточных усилиях хорошие
изменения, в отличие от плохих, могут быть приняты без ущерба для того, что Фред
Брукс (Fred Brooks) назвал “концептуальной целостностью” проекта. Плохие же из-
менения всего лишь разменивают простоту на удобство. Только с помощью простоты
дизайна система может в процессе роста оставаться устойчивой, безопасной и после-
довательной."
То есть, для совсем баранов - та простата в языке, это реально такая задумка.
бля ну объясните лол
Это проект именно Пайка, а не гугла. И судя по его предыдущим работам — у него взрыв сложности с начала карьеры произошёл.
Это уже маняфантазии тех "оналитиков" из сети, которые пытаются найти смысл "а почему они так сделали".
Аналогия как с аборигеном и трансформатором. Абореген обходит трансформатор и делает вывод, что эта штука создана чтобы жужжать (так же и те аналитики, насмотревшись на новые языки облепленными сахаром, вдруг видят противоположный язык и делают вывод, что язык сделан "жужжать", то есть не осилили, не хотели осиливать, или для менеджеров чтобы обучать быстро макак, а не потому что так задумывался).
Гугл слишком крупная компания, чтобы позволять ставить свое имя с проектом, который не был согласован у них.
Даже если и были там у них свои наработки, все равно был процесс бюрократии, показывающий "что и зачем" и почему мы должны платить команде фуллтайм.
А так да, любой проект делают живые люди и всегда стоят какие-то имена.
Да точно такая же никому не нужная посредственность, просто тут сработал стихийный эффект докера — и язык выстрелил, попав в современные тренды столько попыток спустя.
>>866728
Диван, плез. У него было 20% времени — он пилил очередной язык — он начал форсится и гугл его поддержал. Были ж где-то рассказики как он просто на доске писал псевдокодом и потом сделал для него компилятор.
А проекты гугла — тот же дарт, ради которого собиралась команда, был супер громкий анонс первого же "стандарта" и тд правда вендоры браузеров придушили его так же громко, лол
И да, проблема превращение проекта (системы) в нехилую тучу говна - существует.
Решает ли Го эту проблему, пока точно не ясно.
Но если решает, то язык легко войдет в топ, а взрывы пуканов будут видно на Плутоне.
Самое веселое, пока юный мир (в том числе студенты и народ до 25-30) кудахтает от ненужности Го, на обратной стороне сидят тимлиды и менеджера, которые уже сейчас решают их судьбу и думают о внедрение языка.
тебе еще раз говорят, что в гугле не стоит супер-компьютер который создает проекты.
За любым проектом стоят люди, ты накатываешь "искиз" и потом пытаешься его преподнести, можешь с тру-стори об яблоке упавшем на голову.
Сейчас будем пилить новый проект, коллективно решили, что Го использовать не будем.
Проигрываю с конторок (или скорее с фантазеров), в которых решается вопрос не тимлидами, тех.начальством, не даже тестированием, а просто коллективно макаками.
Почему я тебя приравнял к макакам? Да все просто, если бы ты был из круга тимлидов или архитекторов, то знал, что среднестатистических макаку разводят в мире ИТ похлеще чем блондинок в магазинах и там нереальная каша в головах.
лол, такие смачные проекции лареного раба у которого как начальство сказало так и будет.
в нормальных коллективах техникал-проджект-менеджер будет обсуждать с коллективом такие ньюансы как ЯП в продакшене, внезапно, даа
*галерного
>лол, такие смачные проекции лареного раба у которого как начальство сказало так и будет.
Бедняга, ты не уловил мысль, что я и есть это начальство. Опыт показывает, что макака за годы устает и готова прыгнуть даже на самый дерьмовый язык, чтобы вкусить разнообразия.
Как можно тут объективно доверить выбор?
Про галеры ты точно подметил.
Ты реально веришь, что мидам, джунам доверят бизнес-риски и части бизнес-плана с новой технологией?
Конечно слово дадут, вдруг реально нахейтеришь пропущенный риск, но в целом решение уже принято до вас.
>Ты реально веришь, что мидам, джунам доверят бизнес-риски и части бизнес-плана с новой технологией?
Отмечу, что есть исключения, когда дают такую волю на заведомо стороннем проекте, который от бизнеса далеко. Можно даже специально это сделать, чтобы потом местный евангелист попиарил наш бренд на каких-то конференциях, митапах (реклама на халяву же).
Круто же написать кода на 1000 строк и где-то на хабре пульнуть статью, типа вот мы "с вами" ребята и получить лояльность тучи макак нового языка.
>>867172
В общем я к тому, что галерный раб нихера не понимает всех движух там, слишком много хайпа вокруг профессии программиста, не забывай что ты простой офисный работник и повезло если как-то можешь повлиять на бизнес (т.е. твое мнение кому-то там важно)
И вопрос о Го как раз решается не тобой.
>>867168
Ты ебаного айти перечитал и по-такому принципу и работаешь что ли, начальство? К твоему сожалению, существуют нормальные конторы, а не построенные по-принципу "Я начальник, ты-дурак".
> существуют нормальные конторы
Где на тех.процесс может повлиять каждый офисный работник. Ну да, серьезные конторы.
>слишком много хайпа вокруг профессии программиста, не забывай что ты простой офисный работник
Двачую, хз откуда этот хайп идет, наверно с курсов и книг за 21 день, а теперь эти клоуны по галерам мотаются с завышенным ЧСВ.
Такая же шляпа была с админами лет 10 назад, подняли себе чсв за счет мемов в сети, ходили задрав головы, хотя чаще были тупо стукачками для начальства (от которых воняло и они еще гордились этим, ппц).
мимо бывший программист
Друзья, мы запилили небольшой чатик, дабы вместе учиться и программировать на GO. Добро пожаловать.
https://telegram.me/go_language
>>867172
>>867168
я же говорю рабская логика во все поля. будь ты хоть погонщик рабов, хоть стучащий в барабан, хоть рядовой гребец - ты размысляешь в рамках "начальник-подчинённый". ты не поверишь, но бывают рабочие коллективы с более горизонтальными отношениями внутри. и ответственность по принятию решений разделяется между всеми одинаково, т.к. каждое решение влиет на каждую часть проекта. тех-лид должен быть в скоупе всего проекта, а значит физически не может быть в курсе всех ньюансов каждой части и для правильных решений ему необходимо советоваться со специалистами проекта.
тоесть либо ты пиздишь что НАЧАЛЬНИК, либо ты реально манагер в какой-то конторе полной студентов-джунов и соракалетних мидлов, что ещё хуже чем если бы ты пиздел.
ещё и рефлексируешь на рандомный пост анона. кроме того что он мог фанатазировать, есть ещё вероятность что он просто решил потроллить гоферов ИТТ, ну или просто они решили отказаться от гоу
На доске чаты по языкам в основном в Телеграме. Иособляди, жабаскрипт, етц. Никто не размазывает. Если удобно, пиши в телеграм, нет - не пиши.
>тех-лид должен быть в скоупе всего проекта
Что ты за хуйню несешь, конечно начальник в курсе всего того что твориться у него, он для этого и нужен. И более того его картина будет куда более полной, чем у его подчиненных.
Быть в курсе своего проекта не как не коррелирует с тем о чем мы спорим, а именно, что рабы влияют на выбор стека технологий (ниже поясню).
>и ответственность по принятию решений разделяется между всеми одинаково
Нахер тогда тимлиды нужны? Конечно все отвечают за свою работу, но в строгой иерархии.
Естественно ебать будут весь отдел, через проекцию ебания тимлида. Или с показательной поркой.
Кстати, задача тимлида сделать вашу группу дружественней, сплоченнее. Он может советоваться или делать вид, что советуется, но все равно ответственность по решению будет за ним всегда.
Скорее всего на работе ты не чувствуешь себя рабом лишь потому, что начальник хороший и умеет грамотно управлять.
Или скорее в малых задачах скидывает на вас свою работу, от чего галерный раб считает себя важным (а в критичных важный вопросах раб даже не участвует и не знает)
>ты размысляешь в рамках "начальник-подчинённый"
Чем ты отличаешься от обычного офисного рабочего?
Вокруг профессии много хайпа и конечно круто если ты там дорос до кого важного, но в 95% ты тупо офисный работник (серьезно, не я тебя унижаю этим, тебя унизил тот кто заставил думать обратное).
>ещё и рефлексируешь на рандомный пост анона
Ну я сказал что он хуй, по очевидным диванным признакам. А вот ты непонятно зачем за него заступаешься.
Продолжаем круг унижения.
Вкатился.
Я же сказал на примере. Самое простое - шифрование. Одна итерация шифрует 32 бита, к примеру. Процесс легко распараллелить размапив строку на блоки заранее и запустив шифрование в рутинах. Только вот не знаю как лаконично сделать сборку конечного зашифрованного текста.
>разработчик
>не станет выбирать этот язык
Шел 2016 год и разработчик верил, что его выбор на что-то влияет.
Малыш,
есть маркетологи-евангелисты, которые впаривают тебе что-то типа нод.жс (один разработчик на фронтент и бэкенд за одну зарплату)
и есть вакансии.
Больше ничто не влияет, даже самые сильные твои фантазии и мечты.
А вот и начальство подъехало. Что будешь делать, когда в твою команду на позицию Го-разработчиков будут приходить одни дебилы, как с ПХП в своё время произошло?
У тебя ограниченный взгляд.
Количество баранов прямо пропорционально популярности языка.
Скажем, на 1000 пхп и жс программистов дебилов будет больше, чем на 10 питонистов или рубистов.
Но в целом их процент будет одинаковый (как бы себя не тешили последние).
Из-за конкуренции около-топовые программисты пхп и жс языков, обычно качественней, чем те же программисты непопулярных языков (они менее высокомерны, более ответственные и ввиду конкуренции - развиваются).
Поэтому первая группа выгодна как для работодателя, так и для карьеры самого программиста.
Что плохого быть топовым разработчиком на популярном языке, тем более топовые языки и так всегда хейтерять??
Го очень быстрый по сравнению со динамическими языками, но такой же простой - он выгоден для бизнеса, который не мыслит догмами.
Он и удобен для сопровождения кода, а значит для программиста.
Естественно он займет топовые позиции, и тут вопрос больше - останешься ли ты снова на обочине со своими прицепами или же откусишь вкусный кусок рынка.
Язык программирования - это инструмент, а не вера.
Факты давай, начальник. Пока все программисты на ПХП, которых я видел-дебилы, и код говно, соответственно. Только не начинай мантры про фейсбук на пхп и т.д.
Я пока вообще не говнокода не видел.
в цикле открываешь n горутин, после цикла ждешь завершения через sync.WaitGroup, все.
P.S.: я пробовал делать не n горутин, а 4 скажем, которые типа воркеры и получают инфу в цикле по каналам. Но это оказалось медленнее, чем n горутин
> sync.WaitGroup
Спасибо, надо глянуть. Воркеры пилить на go не надо. Там есть свои внутри, которые уже исполняют горутины в нативных системных потоках как я понял.
ну вот я типа набрасал, на go пишу мало, так что может можно было написать лучше
https://play.golang.org/p/aCTSJsQ93j
Боюсь тебя разочаровать, но твое распараллеливание будет только выглядеть как распараллеливание
>Готовые к исполнению горутины выполняются в порядке очереди, то есть FIFO (First In, First Out). Исполнение горутины прерывается только тогда, когда она уже не может выполняться: то есть из-за системного вызова или использования синхронизирующих объектов (операции с каналами, мьютексами и т.п.). Не существует никаких квантов времени на работу горутины, после выполнения которых она бы заново возвращалась в очередь. Чтобы позволить планировщику сделать это, нужно самостоятельно вызвать runtime.Gosched().
Ну либо я прослуопочил и это уже пофиксили, и планировщик Gо таки научился выплонять переключение конекста в произвольный момент времени
насколько я понимаю, на 4-ех ядерном проце параллельно будут работать четыре активных горутины. Если одна из них чего-то ждет, то ее просто заменит другая.
// другой анон
FIFO оно идёт как раз на те воркеры, число которых устанавливается gomaxprocs. Т.е. из 1000 горутин будут активны 4, например, как только они закончили пошли следующие 4. По этому не рекомендуется делать горутины с долгими вычислениями, т.к. шедулер не сможет её переключить. Вот для нагляднсти https://habrahabr.ru/post/141853/
>на 4-ех ядерном проце параллельно будут работать четыре активных горутины.
Это так. Вот только квоту CPU планирощик Go отдает другой горутине только если в выполняемой горутине происходит вызов системной функции. Если в теле горутины нет ни одной системной фунцкии, то на одном CPU только она и выполняется, отстальные горутины лежат в очереди и ждут ее завершения. Хуй значет как там сделано, одна очередь на все CPU либо на каждый CPU по очереди - не суть важно.
>Факты давай, начальник
Как ты представляешь эти факты?
Поверь, был бы питон или руби так же популярен, точно такое же говно ты бы встречал и в них (и так же бы хейтерили), это справедливо потому, что работает правило нормального распределения (ну и человеческий фактор).
То есть, твоя святая война за лучшие языки проиграна изначально, так как нагадить могут везде (и будут гадить с ростом популярности, от распределения Гаусса тут не деться)
Но что касается Го, в нем если быдлан срёт (если того пропустили до кодинга), то этот код хотя бы можно разобрать (с болью, но не такой).
Правда это все на уровне "кажется", пока что-то крупное не довелось прощупать.
С php, насколько помню, с 2011 года не работаем, но все кто у нас был по пхп, были норм специалисты.
Ну да, ну да. Короче любая функция, в который подразумевается передача управления планирощику Go. Ну буду вам тут срать, но имхо как-то сомнительно эти горутины выглядят. Создай количество потоков по количеству CPU, напихай в них 100500 функций через QueueUserAPC - и та-дам "Ололо, я зделал свой планировщик, он поддерживает 100500 Anonoroutine!!111". Может и ошибаюсь конечно.
Ну да, никакой магии нет. По сути что в других языках приходится костылить, тут из коробки.
Как только горутина блокируется, планировщик переключает на другую. То есть пока, скажем происходит запрос в БД, поток не стоит, а занимается чем-то еще.
Это как раз фишка асинхронного программирования, только тут все происходит не через калбеки, а вообще прозрачно.
Количество же ОС-потоков можно настроить, но обычно Го дает по одной штуке на ядро (может кто помнит, так же рекомендуют nginx настраивать).
Почему хайп вокруг всего этого? Просто потому, что это дает утилизировать 100% процессорного времени.
Так же на отдельное ядро Го может повесить сборщик мусора. Но они там сейчас активно пилят ГЦ, и вроде какую-то мощную штуку запилят скоро.
> Так же на отдельное ядро Го может повесить сборщик мусора.
Это от остановки приложения не спасает? Вроде же можно реализовать сборку мусора параллельно работе приложения.
> То есть пока, скажем происходит запрос в БД, поток не стоит, а занимается чем-то еще.
Это все правильно, вот только такая реализация накладывает ограничения в виде
>По этому не рекомендуется делать горутины с долгими вычислениями
Если сделаешь долгий цикл в горутине, и планировщик распределит эти горутины с этим циклом по всем CPU... Ну ты понял.
>>867944
>По сути что в других языках приходится костылить, тут из коробки.
Ну это ты зря так. То что я описал с QueueUserAPC, есть вообще из коробки оперционной системы, и от языка вообще не зависит.
Нельзя. Можно вынести паралельно пометку ненужного, но не сборку.
>Если сделаешь долгий цикл в горутине, и планировщик распределит эти горутины с этим циклом по всем CP
Как тот Говноед и сказал — планировщик дропнет нахуй. Горутины не для числодробилок делались.
>>867945
>Так же на отдельное ядро Го может повесить сборщик мусора. Но они там сейчас активно пилят ГЦ, и вроде какую-то мощную штуку запилят скоро.
Да нескоро, они решили поиграть в эрланг судя по пейперу (transactional gc), который до рабочего состояния не так давно допилили (особо сильны математики могут зайти на вики и посчитать сколько лет).
>Если сделаешь долгий цикл в горутине, и планировщик распределит эти горутины с этим циклом по всем CPU
вроде завозили защиту от этого, но вообще нужно умудриться сделать вычисление без прыжка в какую-то функцию (что является блокировкой для шедулера)
>>867958
от "stop the word" ничего не спасет, но другие операции не требующие приостановки - пожалуйста
В голандшоу, в последнем выпуске что-то жевали на эту тему, но не каждый вытерпит слушать тех слащавых гомиков.
> Горутины не для числодробилок делались.
Не считать то можно, но не надо всё сразу в одной горутине и тормозить очередь. Нагрузить проц таким способом можно на любом языке.
Пейперу уже вроде пол года, хз что они там жевали. его овердавно разжевали в дезвене
>>867980
Видишь ли, "считать" как раз и означает блокировку потока вычислениями не зря всякие нейронки давно на гпу считаются, а делать это на языке не оптимизирующием и не векторизирующем расчёты на цпу, при этом ещё терять время на шедулинг чего-то там — заведомо хуёвая идея.
> не шедулер для реализации "своей многопоточности" аля Эрланг
с чего такие выводы?
Из коробки всевозможные каналы, хуйналы, не надо думать о байтопроблемах, красиво встроены в язык, библиотеки изначально пишутся под них и прекрасно масштабируются без модификации и тд и тп. — короче простота и всё. Это, собственно, главное и единственное достоинство Говна. Хз что ещё надо.
Мы ще выше обсудили. В Эрланге планировщик считает количество редукций, выполненных процессом, если количество достигает заданного значения, планировщик приостанавливает его исполнение помещает в очередь и берет из очереди на исполнение следующий процесс. Для переключения контекста между горутинами надо сделать вызов системной функции или runtime.Gosched(), то есть принудительно вернуть управление планировщику. Поэтому в Эрланге я могу себе позволить кучу процессов с длительным циклом и все они будут выполняться типо параллельно, а как только горутины с циклами займут все CPU, все остальные горутины будут тупо лежать в очереди. Чуешь?
>>867996
>Из коробки всевозможные каналы, хуйналы
Ага, ну понятно, ок. Я вообще спрашивал о конкретно преимуещствах горутин например перед kqueue, ну да ладно, добра тебе.
Просто в эрланге вытесняющая мнонозадачность, в го нет. Вот и всё.
> при этом ещё терять время на шедулинг
Какой планировщик в числодробилке?
Если ты осознанно вещаешь на все ядра 100% нагрузку, то ты блин и в простом языке уведешь систему в "зависон".
В го нет фичи спасающих от кретинизма :)
Хотя для наших хейтеров нужно.
насколько я помню, для вызова планировщика достаточен вызов функции/метода (это тоже для него блокирующая операция) или выход из нее
Ты хоть понял на что отвечал? Средство от критинизма тебе точно не помешало бы.
Можете объяснить сакральный смысл указателей в языке, почему нельзя было все сделать передачей по ссылке (и решилась бы туча путаниц из-за указателей и скрытых преобразований)
Это как спросить про ООП. Сейчас польётся поток стандартных аутотренингов, адекватного ответа не жди.
Как проверить у интерфейса, что у меня не nil (ссылка имеет реальный объект)
Проверка на nil дает false. В книге так и не понял.
```
var a fmt.Stringer = (St)(nil) // Некая структура реализующая fmt.Stringer
fmt.Printf("%T\n", a) // main.St
fmt.Println(a == nil) // false
a.String() // panic: runtime error: invalid memory address or nil pointer dereference
```
пиздец
http://ru.stackoverflow.com/a/468913
пойду я в свою джаву...
Главный пиздец тут в том, что у парня, который задает вопрос, реально правильное решение (функция isNil()):
http://stackoverflow.com/questions/13476349/check-for-nil-and-nil-interface-in-go
сахар приписать, если такое нужно, но вообще нахера не скалярные типы по значению передавать, чтобы занять чем-то процессор?
мимо-джава-господин
сука, я прям не могу, чтобы узнать не NULL, тебе надо еще поймать панику
почему они это не исправляют?
Поясните по-хардкору почему решили сделать так что срезы являются ссылками на массивы и изменение среза влияет на массив пока мы не переполним вместимость(sic!) среза. Но как только мы её переполним, срез как бы создаёт копию массива на который ссылался, но вдвое больше по объёму. Почему нет безразмерных веторов? Или срез длиной 1 и есть привычный вектор? Что-то не верится. Как-то странно что срезы это не просто ссылки, а что-то больше похожее на коллекции из динамических языков. Или они под капотом оптимизируются и не копируют себя повторно в память?
Правда хочу разобраться.
срезы бесконечные "массивы", просто под капотом массив который копируется и расширяется если кончается (тут они не обосрались)
Но суть какая в срезах то? Почему не сделали просто массивы неизменяемой длины и изменяемой. Зачем делать такое странное поведение при котором срез сначала ссылается на массив, а потом в процессе мутаций сам становится самостоятельным массивом? Зачем удваивать размер среза при переполнении? Если уже делать такую хрень, то логичнее было бы сделать срезы которые всегда ссылались бы на массив, а при переполнении новые элементы выделяли бы в хипе.
Суть среза дать тебе бесконечный массив, просто скорее всего ты читаешь ту книгу, где автор насовал столько технической воды (вероятно из спеки), которая постоянно вводит в заблуждение читателя.
эта
http://ozon-st.cdn.ngenix.net/multimedia/1013604520.jpg
Как всегда умелые люди делают деньги на хайпе.
Эту книгу хорошо читать, если ты уже знаком с го))
Я не до конца въезжаю, но тут либо постоянно дергать через рефлексию+recover (ту функцию isNil)
Или программировать от интерфейсов просто не возможно??
Конечно, можно сказать, зачем проверять если упадет с паникой и так, но если дальше по логике операция с побочным эффектом, а мы нормально даже проверить не можем (рефлексия это как бы не совсем нормально :) )
Бинарное дерево, блядь.
f, ok := res.(http.Flusher)
Бля, ты хотя бы вводный курс пройди, сука.
гугли Type assertion
Зачем, быдло и так сожрёт
Backend
В первую очередь хочу сказать, что код читается не так легко, об этом подробнее ниже:
-Иногда из-за преобразования Type(OtherType) непонятно это вызов функции или преобразование (по привычки мозг воспринимает вообще как конструктор, лол).
Если в строку вставлено более сложное выражение, становиться очень больновато это понимать
-Непонятно передается ли поле структуры или функция-тип (нужно идти смотреть сигнатуру функции).
-Как бы джаву не хаяли, но автовывод типа в переменную читается сложнее (нужно лесть в сигнатуру функции) или иметь норм IDE и постоянно наводить мышку + Ctrl.
-В файл могут загрузить тонны структур, функций, методов и еще интерфейсов - все это читается как каша и нехера все не так просто.
Даже в джаве, если несколько классов в файле, то все равно проще воспринять.
-Визуальная путаница между Struct.Value и Struct.Value() - из-за соглашения не использовать префикс GetValue можно иногда проебаться глазами.
Но не так страшно, страшно когда в название будет слово, которое будет имеет глагольную форму и тут ты реально запутаешься.
-Смешанная идеология структур и аксессоров (геттеров и сеттеров)
ООП подход позволяет сделать пакет модульным через интерфейсы где наружу торчит только API, со структурами ты привязан намертво к структуре (к пакету), в общем будут клепать структуры-клоны-адаптеры и весело рефакторить все функции, которые были привязаны к структуре.
-По той же причине запутанность - кто возвращает изолированные модули с геттерами, кто структуры, кто вперемешку. Это ппц.
Веселье будет когда нужно будет перевести структуру в аксессоры (мега рефакторинг на неделю с регулярными выражениями)
-Интерфейсы без привязки к типу - бред. А оправдание того, что ты сможешь сделать интерфейс к чужому коду, это пиздец, так как интерфейс это в первую очередь контракт-API поставщика и ирония в том, что ты можешь привязаться к ненастоящему API которое может поменяться (потому что владелец кода и не знал что ты привязался к нему, лол)
-По той же причине в сложных объектах может быть сложное поведение и утиная нотациями может наказать (узнаешь что обосрался только где-то в далеком рантайме и зачем нам тогда компиляция?)
-Ошибки не должны быть строками и они должны иметь какие-то типы и иерархию типов. Мне теперь у быдланов-сеньоров строки парсить, чтобы понять какой тип имеет ошибка??
В общем, объект типа NullPointerException может сказать больше, чем текст в нем (который еще может быть динамичен, то есть с форматированием, быдланы могут)
-Отсутствие возможности проверить интерфейс на nil - это просто героический пиздец.
-Возвращение нескольких значений (кортежи) - круто, проверка на ошибки нет.
Как-то давно уже наступали на эти грабри, когда быдланы-сеньоры начинали игнорить if (кстати есть уже тулза, которая парсит код и проверяет эти проверки, лол)
-Почему для составных типов не сделали передачу по ссылке? Это бы решило овер-100500 запутанности в языке. Но нет же, они сделали авто-преобразования *T и &T, а вот для соответствия с интерфейсом такого преобразования нет и ты не узнаешь об этом, так как нет привязки интерфейса к типу (конечно узнаешь когда в рантайме все завалится, за то мы компилируемся)
В общем опять эти скрытые подводные камни, о которых надо знать (как в PHP, как в JS, и опят же где ошибки всплывают только в рантайме).
-Да и вообще указатели в языке с ГЦ без арифметики, зачем? (хочется заплакать тут)
-Инкапсуляция на уровне пакетов. Я уже вижу код, где установка в пакете Struct1.Set(var) будет меняет состояние какого нибудь объекта Struct2 того же пакета. Это будет, ждите (...и древний ужас с глобальными переменными покажется вам сказкой)
-Нет возможности скомпилировать код если есть лишний импорт или не использованная переменная.
Я такой боли при изучение языка еще не испытывал никогда (только в расте, но это БДСМ язык, ему с его анализатором можно)
Go с виду кажется простым, но он чем-то напоминает PHP и javascript - с виду прост, а на деле имеется тонна подводных камней. Другая проблема в том, что это все-таки компилируемый язык, но при этом немалая часть ошибок проявляется только во время рантайма (как в интерпретируемых языках). И это мега-проблема
Тут анон кричал что код более читаем. Код скорее проще, но со временем этот симбиоз из структур и ООП превратиться в ад. Ну и отсутствие набора дефолтных коллекций приведет к веселью, которые не переживали даже С++ разработчики.
В первую очередь хочу сказать, что код читается не так легко, об этом подробнее ниже:
-Иногда из-за преобразования Type(OtherType) непонятно это вызов функции или преобразование (по привычки мозг воспринимает вообще как конструктор, лол).
Если в строку вставлено более сложное выражение, становиться очень больновато это понимать
-Непонятно передается ли поле структуры или функция-тип (нужно идти смотреть сигнатуру функции).
-Как бы джаву не хаяли, но автовывод типа в переменную читается сложнее (нужно лесть в сигнатуру функции) или иметь норм IDE и постоянно наводить мышку + Ctrl.
-В файл могут загрузить тонны структур, функций, методов и еще интерфейсов - все это читается как каша и нехера все не так просто.
Даже в джаве, если несколько классов в файле, то все равно проще воспринять.
-Визуальная путаница между Struct.Value и Struct.Value() - из-за соглашения не использовать префикс GetValue можно иногда проебаться глазами.
Но не так страшно, страшно когда в название будет слово, которое будет имеет глагольную форму и тут ты реально запутаешься.
-Смешанная идеология структур и аксессоров (геттеров и сеттеров)
ООП подход позволяет сделать пакет модульным через интерфейсы где наружу торчит только API, со структурами ты привязан намертво к структуре (к пакету), в общем будут клепать структуры-клоны-адаптеры и весело рефакторить все функции, которые были привязаны к структуре.
-По той же причине запутанность - кто возвращает изолированные модули с геттерами, кто структуры, кто вперемешку. Это ппц.
Веселье будет когда нужно будет перевести структуру в аксессоры (мега рефакторинг на неделю с регулярными выражениями)
-Интерфейсы без привязки к типу - бред. А оправдание того, что ты сможешь сделать интерфейс к чужому коду, это пиздец, так как интерфейс это в первую очередь контракт-API поставщика и ирония в том, что ты можешь привязаться к ненастоящему API которое может поменяться (потому что владелец кода и не знал что ты привязался к нему, лол)
-По той же причине в сложных объектах может быть сложное поведение и утиная нотациями может наказать (узнаешь что обосрался только где-то в далеком рантайме и зачем нам тогда компиляция?)
-Ошибки не должны быть строками и они должны иметь какие-то типы и иерархию типов. Мне теперь у быдланов-сеньоров строки парсить, чтобы понять какой тип имеет ошибка??
В общем, объект типа NullPointerException может сказать больше, чем текст в нем (который еще может быть динамичен, то есть с форматированием, быдланы могут)
-Отсутствие возможности проверить интерфейс на nil - это просто героический пиздец.
-Возвращение нескольких значений (кортежи) - круто, проверка на ошибки нет.
Как-то давно уже наступали на эти грабри, когда быдланы-сеньоры начинали игнорить if (кстати есть уже тулза, которая парсит код и проверяет эти проверки, лол)
-Почему для составных типов не сделали передачу по ссылке? Это бы решило овер-100500 запутанности в языке. Но нет же, они сделали авто-преобразования *T и &T, а вот для соответствия с интерфейсом такого преобразования нет и ты не узнаешь об этом, так как нет привязки интерфейса к типу (конечно узнаешь когда в рантайме все завалится, за то мы компилируемся)
В общем опять эти скрытые подводные камни, о которых надо знать (как в PHP, как в JS, и опят же где ошибки всплывают только в рантайме).
-Да и вообще указатели в языке с ГЦ без арифметики, зачем? (хочется заплакать тут)
-Инкапсуляция на уровне пакетов. Я уже вижу код, где установка в пакете Struct1.Set(var) будет меняет состояние какого нибудь объекта Struct2 того же пакета. Это будет, ждите (...и древний ужас с глобальными переменными покажется вам сказкой)
-Нет возможности скомпилировать код если есть лишний импорт или не использованная переменная.
Я такой боли при изучение языка еще не испытывал никогда (только в расте, но это БДСМ язык, ему с его анализатором можно)
Go с виду кажется простым, но он чем-то напоминает PHP и javascript - с виду прост, а на деле имеется тонна подводных камней. Другая проблема в том, что это все-таки компилируемый язык, но при этом немалая часть ошибок проявляется только во время рантайма (как в интерпретируемых языках). И это мега-проблема
Тут анон кричал что код более читаем. Код скорее проще, но со временем этот симбиоз из структур и ООП превратиться в ад. Ну и отсутствие набора дефолтных коллекций приведет к веселью, которые не переживали даже С++ разработчики.
Хеллоуворлды, а одноклассникам говорю про Backend и Microservices, чтобы не как лох
>GoLang
Если нет зависимых типов - нахуй не нужон.
В той фирме где буду работать пишут веб.
> интерфейс это в первую очередь контракт-API поставщика
У тебя ООП головного мозга
Стену не читал.
это что еще за лол тут
Не юзать интерфейсы или не проверять на nil?
Годно, присоединяюсь.
нет у тебя здесь друзей
>Явное лучше, чем неявное.
Нет, это они про то, что ты как баран должен в методы self постоянно передавать.
И это норма (а если напишешь вместо self что-то другое, то тебя обсосут)
как-то так
/thread
Это try/catch-то портянка?
Мне кажется, пора напомнить про best-practice Го по замене женериков:
v := reflect.ValueOf(x)
switch v.Kind() {
case reflect.Bool:
fmt.Printf("bool: %v\n", v.Bool())
case reflect.Int, reflect.Int8, reflect.Int32, reflect.Int64:
fmt.Printf("int: %v\n", v.Int())
case reflect.Uint, reflect.Uint8, reflect.Uint32, reflect.Uint64:
fmt.Printf("int: %v\n", v.Uint())
case reflect.Float32, reflect.Float64:
fmt.Printf("float: %v\n", v.Float())
case reflect.String:
fmt.Printf("string: %v\n", v.String())
case reflect.Slice:
fmt.Printf("slice: len=%d, %v\n", v.Len(), v.Interface())
case reflect.Map:
fmt.Printf("map: %v\n", v.Interface())
case reflect.Chan:
fmt.Printf("chan %v\n", v.Interface())
default:
fmt.Println(x)
}
Цц паттерн матчинг. Го це ФЯ.
Но вместо этого можно просто определить свои типы под задачу, прописать к ним нужные функции, сделать интерфейс, использовать его...
Ни разу в реальном коде не использовал рефлексию + выбираю среди библиотек то, где меньше reflect (скажем, в gin рефлексии заметно меньше, чем в martini)
Проверяй за щекой.
Что-то в голос с этого. Какой ахуенный тред всё таки.
java-макаки боятся за свои рабочие места и что go-господа решат их задачи быстрее и эффективнее, чем AbstractFactoryObserverInterface.
Компилируемый язык, в котором большая часть ошибок ловиться не во время компиляции, а как у скриптов в рантайме (причем нет нормального инструментария по перехвату и проверки типов ошибок, нет дебаггера, легкость заглушки ошибок) - заменит технически грамотный ООП язык проверенный временем?
Конечно, в самых влажных мечтах.
Иди лучше "A Tour of Go" переведи, а то как всегда ленивое ру-комьюнити много шумит, но нифига ничего не делает.
Ваши же скрипт-киди из пхп и жс не могут из-за этого перекатиться нормально.
PS в джаве много где серут, но в основном в ынтерпрайзе, где срать на все и надо слоем за слоем наклепать рабочий софт.
Сам же Го никаких защит от подобного не имеет (Боже, там даже геттеры и сеттеры активно юзают), но из-за бестолковой архитектуры нагадить там можно будет сильнее (особенно когда начнут упарываться сокращениями как в сишном Windows API и многомиллионный код станет тупо не читаем).
В хороших же руках джава удобным инструмент, хоть местами и с устаревшим синтаксисом, но забавно она тем, что она лучше продумана чем сверхсовременный Го.
PS2.0 я уже видел как в Го начинают писать в стиле джавы и в целом мы получаем какую-то кашу из структур, полу-структур-классов и полноценных классов с геттерами и сеттерами.
Когда в джаве только приемлем один вариант (но кстати возможно писать и "структурами", но ввиду опыта отказались от чистых полей)
> Иди лучше "A Tour of Go" переведи
Зачем? У меня нет проблем с английским языком и подобные затеи не одобряю.
А пока тут срешь только ты тем, что не осилил правила хорошего кода, которые есть в сообществах у всех языков.
Потому что это хороший показатель бестолковости ИТ комьюнити в условиях развивающегося языка программирования.
Особенно позорно выглядит когда перевод есть на каталанском и узбекском языке. С учетом, что русский второй по распространенности язык в интернете.
А отмазка "я же знаю английский, значит у меня все хорошо" выглядит еще смешнее.
> У меня нет проблем с английским языком
Ну раз нет проблем у тебя, тогда все норм, ленивые лолы...
В сети где-то лежали потуги из одной двух глав перевода. В общем как всегда.
Заметно лучше сообщество у раста, там перевели всю доку, вроде.
У Пхп не было перевода до 2010 или 2012, но все же смогли, правда к его закату, хотя прикольно было смотреть, что есть даже бразильский-португальский язык, а русского нет.
Но это все херня, знаете за что мне еще нравится в го?
Обосравшись с обработкой ошибок, они сейчас пишут такие методы с префиксом Must... (например MustExex), это так символично. Так и хочется крикнуть старое доброе "маздай!"
>A tour of Go
>Русского нет
>Зато есть украинский
>Ласкаво просимо до туру з мови програмування Go!
Вместо с го выучил основы украинского. Львовские хипстеры, в этот раз вы победили.
Может ты ещё обучение программированию начал по англоязычным материалам, маня?
"Программировать" я и не учился. Была алгоритмизация, формальные грамматики рассматривали, пролог, лисп. А потом все само пошло.
какие же они тупые, он еще ответил на это)))
Почему после программирования на Go, я чувствую себя грязной??
>А что там было?
Торвальдс выбирал маскота себе для линукса. Долго думал, а потом ему кто-то предложил пингвина. Он подумал и согласился, потому что очень подходит - вроде и птица, а не летает и выглядит как говно.
> А что там было?
> Чуваки, цените что народ нарисовал
> О, нихуя, пингвин заебись
> Ну го его ёбанём, хули
http://lkml.iu.edu/hypermail/linux/kernel/9605/0855.html
Я искренне офигеваю от наглой тупости го. Это язык, где тупость и очевидность ценится, возводится на пьедестал и является объектом поклонения (если вы думали что это питон, то го превосходит его на десятичный порядок как минимум).
Ну то есть, для начала:
1) Там нет generics. Но есть указатели (со сборкой мусора, не волнуйтесь), и есть возможность, соответственно, передавать by value (c копированием) и by reference (что позволяет не выделять место на куче для каждой фигни — крайне нетривиальный вопрос в джаве).
2) Очень тупое ООП, напоминающее таковое в раннем перле (если кто застал). Ссылка на this передаётся первым аргументом в функции (выделяется отдельными скобками, чтоб никто не перепутал).
3) Нет и не будет map, reduce и filter. Роб Пайк сказал, что они не нужны. Вася, не выпендривайся и слушай песню про валенки циклом for, как в прошлом веке. Чтобы ни у кого не было соблазна написать их самому (что несложно), Роб превентивно сделал это сам, выложил на гитхаб и сказал, что использование вот такого функционального гейства discouraged. Мужик!
4) Да, кстати, ровно два вида коллекций в стандартной библиотеке — массив с неизменным размером (и немного синтаксического сахара для копирования данных в новый массив, если прежний стал слишком мал), и map. Should be enough for everyone, не так ли? Впрочем, Lua вообще обходится одной коллекцией, ничо, живут.
5) Иммутабельности тоже, разумеется, нет. Кто-то таки сделал персистентные структуры данных и выложил их на гитхаб. Правда, не вполне понятно зачем они нужны в отсутствие простейших функциональных примитивов. Разве что тренироваться в рекурсии, почитывая SICP.
При этом нельзя сказать, что это быдлоязык навроде PHP (хотя с первого взгляда может так показаться). В быдлоязыках (это не только PHP, хотя не будем показывать пальцем) помимо простоты хуже воровства существует ещё множество неочевидных corner cases, про которые нужно знать и обходить стороной. Тут такого нет — всё брутально просто и вырублено топором, оставлено только самое нужное (concurrency-примитивы входят в число самого нужного). Это внушает уважение. Вообще, Роб Пайк дал нам целый Plan9, и быдлокодером его считать нельзя.
В общем, рекомендую, особенно для душевного отдыха и зализывания ран после скалы.
Я искренне офигеваю от наглой тупости го. Это язык, где тупость и очевидность ценится, возводится на пьедестал и является объектом поклонения (если вы думали что это питон, то го превосходит его на десятичный порядок как минимум).
Ну то есть, для начала:
1) Там нет generics. Но есть указатели (со сборкой мусора, не волнуйтесь), и есть возможность, соответственно, передавать by value (c копированием) и by reference (что позволяет не выделять место на куче для каждой фигни — крайне нетривиальный вопрос в джаве).
2) Очень тупое ООП, напоминающее таковое в раннем перле (если кто застал). Ссылка на this передаётся первым аргументом в функции (выделяется отдельными скобками, чтоб никто не перепутал).
3) Нет и не будет map, reduce и filter. Роб Пайк сказал, что они не нужны. Вася, не выпендривайся и слушай песню про валенки циклом for, как в прошлом веке. Чтобы ни у кого не было соблазна написать их самому (что несложно), Роб превентивно сделал это сам, выложил на гитхаб и сказал, что использование вот такого функционального гейства discouraged. Мужик!
4) Да, кстати, ровно два вида коллекций в стандартной библиотеке — массив с неизменным размером (и немного синтаксического сахара для копирования данных в новый массив, если прежний стал слишком мал), и map. Should be enough for everyone, не так ли? Впрочем, Lua вообще обходится одной коллекцией, ничо, живут.
5) Иммутабельности тоже, разумеется, нет. Кто-то таки сделал персистентные структуры данных и выложил их на гитхаб. Правда, не вполне понятно зачем они нужны в отсутствие простейших функциональных примитивов. Разве что тренироваться в рекурсии, почитывая SICP.
При этом нельзя сказать, что это быдлоязык навроде PHP (хотя с первого взгляда может так показаться). В быдлоязыках (это не только PHP, хотя не будем показывать пальцем) помимо простоты хуже воровства существует ещё множество неочевидных corner cases, про которые нужно знать и обходить стороной. Тут такого нет — всё брутально просто и вырублено топором, оставлено только самое нужное (concurrency-примитивы входят в число самого нужного). Это внушает уважение. Вообще, Роб Пайк дал нам целый Plan9, и быдлокодером его считать нельзя.
В общем, рекомендую, особенно для душевного отдыха и зализывания ран после скалы.
Ещё одна гомартышка порвалась.
>1) Там нет generics
Не самое страшное чего там нет, поэтому срать.
Просто такой стиль и хуй с ним. Я лично ебал объявления MoiHuiFactoryManagerFactory<Vaselin<Anus, HerNegra>>
Даебон к генирикам показатель тупости, или неосиляторства, так как там реально есть проблемнее вещи
2) Нет там ООП и видимо не хотели вообще, но пришлось завозить, так как интерфейсы это полезная плюшка.
>Ссылка на this передаётся первым аргументом
Как ты еще отделишь обычную функцию от метода, по запаху? Как ты отделишь в каком формате передается по указателю или значению? Иди нахуй просто нубас.
Добавлять в скоуп (в {} ) структуры тоже смысла нет, так как можно грамотно разбросать методы по файлам сгруппировав их по логике (например в одном файле аксессоры структуры, в другом вспомогательная логика), но откуда тебе "утёнку" видеть такие перспективы?
3) ФП уже вышло из моды. А те уебаны которые завезли себе это в синтаксис, весело будут поддерживать 1% используемого кода, через такую обратно-совместимую-синтаксическую боль...
Даже джаву развели, такого матерого консерватора.
Никогда хипстеры еще не гадили так сильно в "айти".
4) Мапа и лист (динамические) и структура и массив (статические) этого всего достаточно (в стандартной либе еще завезли линованную херь, вроде, чтоб уж вообще упороться можно было) и все это на встроенном уровне, что плохого? Еще скажи что сравнивать строки по equals() это круто?
Но согласен, что в мире Го скоро появиться 100500 очередей, линкед-мап и прочей хуйни. Поэтому тут обосрамс только на половину.
>5) Иммутабельности тоже, разумеется, нет.
Надолго вам этот хайп в голову завезли.
То что язык странный это несомненно, то что нужна версия 2.0 - безусловно, уже вроде шумят.
Но блять этот язык несет такой вагон технологический киллер фич, что ради этого его можно простить.
Так что, на то что не получилась "джава" или "питон" - похуй, то что получилась улучшенная сишка - это мега плюс.
Наконец-то бараны начнут писать структурно-модульный код, а не творить не сопровождаемое ООП-ынтерпрайз говнише (умудряясь наоверхедеть даже в самых простых вещах).
Язык обязательный, поэтому вкатывайся и выруби синдром утенка. Или на сишке попиши, чтобы понял плюсы.
PS про то что язык выстрелил и уже вливают тучу бабла на оптимизации и перформанс вопросов уже не должно быть
>1) Там нет generics
Не самое страшное чего там нет, поэтому срать.
Просто такой стиль и хуй с ним. Я лично ебал объявления MoiHuiFactoryManagerFactory<Vaselin<Anus, HerNegra>>
Даебон к генирикам показатель тупости, или неосиляторства, так как там реально есть проблемнее вещи
2) Нет там ООП и видимо не хотели вообще, но пришлось завозить, так как интерфейсы это полезная плюшка.
>Ссылка на this передаётся первым аргументом
Как ты еще отделишь обычную функцию от метода, по запаху? Как ты отделишь в каком формате передается по указателю или значению? Иди нахуй просто нубас.
Добавлять в скоуп (в {} ) структуры тоже смысла нет, так как можно грамотно разбросать методы по файлам сгруппировав их по логике (например в одном файле аксессоры структуры, в другом вспомогательная логика), но откуда тебе "утёнку" видеть такие перспективы?
3) ФП уже вышло из моды. А те уебаны которые завезли себе это в синтаксис, весело будут поддерживать 1% используемого кода, через такую обратно-совместимую-синтаксическую боль...
Даже джаву развели, такого матерого консерватора.
Никогда хипстеры еще не гадили так сильно в "айти".
4) Мапа и лист (динамические) и структура и массив (статические) этого всего достаточно (в стандартной либе еще завезли линованную херь, вроде, чтоб уж вообще упороться можно было) и все это на встроенном уровне, что плохого? Еще скажи что сравнивать строки по equals() это круто?
Но согласен, что в мире Го скоро появиться 100500 очередей, линкед-мап и прочей хуйни. Поэтому тут обосрамс только на половину.
>5) Иммутабельности тоже, разумеется, нет.
Надолго вам этот хайп в голову завезли.
То что язык странный это несомненно, то что нужна версия 2.0 - безусловно, уже вроде шумят.
Но блять этот язык несет такой вагон технологический киллер фич, что ради этого его можно простить.
Так что, на то что не получилась "джава" или "питон" - похуй, то что получилась улучшенная сишка - это мега плюс.
Наконец-то бараны начнут писать структурно-модульный код, а не творить не сопровождаемое ООП-ынтерпрайз говнише (умудряясь наоверхедеть даже в самых простых вещах).
Язык обязательный, поэтому вкатывайся и выруби синдром утенка. Или на сишке попиши, чтобы понял плюсы.
PS про то что язык выстрелил и уже вливают тучу бабла на оптимизации и перформанс вопросов уже не должно быть
>Или на сишке попиши, чтобы понял плюсы.
Я обычно рекомендую людям на расте пописать, чтобы потом стал нравится го (так как от чистого си можно неосторожно зафанатеть)
> Просто такой стиль
> Как ты еще отделишь обычную функцию от метода, по запаху?
> 3) ФП уже вышло из моды.
> Надолго вам этот хайп в голову завезли.
Волшебный долбоёб просто, сразу видно что человеческих языков в глаза не видел.
> Но блять этот язык несет такой вагон технологический киллер фич, что ради этого его можно простить.
... пиздец. Хоть одну назови.
> накидаю я бессмысленно цитат, а то пукан бомбит, мозгов ответить по факту не хватает.
>Как ты еще отделишь обычную функцию от метода, по запаху?
И как? Даже в скоуп нельзя (так как всегда на структуре завязаны два типа - Type и *Type и указатель не привяжется на "func (t Type) Huy()", по сути, глазами джава макаки это декларация двух классов)
То есть ты настолько баран, что думаешь что можно сделать так:
Class {
method
}
И получить свой влажный this на халяву?
Тебе барану дали не только возможность оперировать по значению или по указателю, но еще и размещать методы как твоей душе угодно (делая удобно-сгруппированный, точнее структурированный даже самый сложный модуль).
Хотя я сомневаюсь, что ты можешь это осознать даже.
Поэтому пшел вон, синтаксический говноед.
Начитаются книг по хеллоувордам разных языков и потом с программистами начинают спорить.
Воу, пошли картинки вход.
Наверно это так же серьезно и эпично, как если бы начать капсом писать, да?
> И как?
Действительно, и как же это сделано во всех языках программирования для умственно полноценных людей? Давайте поможем гомартышке обучиться.
> хипстеры
> ФП уже вышло из моды
Попизди мне тут, чистая функциональщина и не была модной никогда. А некоторые её части везде и всегда использовались.
Очередной поток оправданий. Повторяй перед сном, чтобы ещё больше верить.
>>872649
>>872644
Я гляжу новое обострение хеллоу-киди, каникулы что ли?
>Действительно, и как же это сделано во всех языках программирования.
Тебе уже объяснили долбаебу почему в таких условиях такая модель самая нормальная (чтобы оставить структуры структурами), но разве ты вообще можешь понимать что либо в архитектуре?
>чистая функциональщина и не была модной никогда.
С прибытием, если в 2010 тебя волновали только прыщи на лице и твоя ЕОТ с ерохиным, это не значит что в мире не было ФП хайпа.
> не было ФП хайпа
Он и сейчас есть. Любой борщехлёб наровит прибежать в рандомный тред и бахвалится как у него факториал считается.
Уебаны, которые используют ФП для самоутверждения будут всегда, главное что ИТ тусовка наелась
>дали не только возможность оперировать по значению или по указателю
а теперь быстро-решительно привёл мне кейс в котором оправданно передавать по значению в языке с GC, зойчем эти атавизмы из си?
Глупое хеллоу-киди.
Очевидно же, чтобы разгрузить ГЦ, чтобы была возможность поместить значения в стек и потом тупо дробнуть без напряга весь стек (что может быть практичнее чем остановка ГЦ и вообще чем его грузить, особенно если много мелкими данных)
Даже если указатель никуда не перемещать (и создать в той же функции) - компилятор поместит его в стек, а не в хип, как в нубо-джаве.
Возьми защеку в два потока
Ещё один неосилятор. Сначала прочитай откуда он начинается и вообще базовый принцип.
Иначе скоро такими темпами элемент в массиве искать будем.
Дебил не зная термина, пошел гуглить и наткнулся на стек (тип данных), начитался херни о совсем другом и теперь топит что он прав.
Вся суть хеллоу-киди, юношеский максимализм не дает осознать, что что-то не то и почему над ним все ржут
>гомамакус так и не осилил даже страничку в вики за пол часа
>пошёл дальше толстить
Напиши ещё что GC не сканирует стёк, покажи уровень развития гоферов.
https://habrahabr.ru/company/mailru/blog/314804/
У мэйлу бомбану, что они решили перевести этот ад?
В языке нет иммутабельности. Если не хочешь искать какая же хуйня наебнула структуру по указателю, передавай по значению.
Слушал голанг шоу, даже там они как-то язвительно все время подшучивают и иногда выдавая такие фразы, после которых задумываешься о Го (и куда смотрят главные "спонсоры"?)
Такое ощущение, что сами евангелисты устали от Го, даже проскакивала фраза что-то типа "ну хоть что-то в го работает нормально".
А это история со статьями divana (символичный ник), который умудрился слить Го на хабре, после чего "ушел" (уволили?) с поста евангелиста (да еще с такой драмой).
А эти безграмотные и похожие друг на друга конференции...
Илюша.... мы еще помним.
Зря анон лениться, такие вины надо было куда-нибудь в лурк заносить, это же история.
В общем к чему я... у меня вопрос к анону, который писал что Го выстрелил? Где?
Где он там выстрелил, когда язык надо просто брать и перелопачивать до ума (вероятно выгнав предыдущих архитекторов)?
"Сканирует", и само собой "нагружается". Ты как бы обосрался в посте выше, и после пошли маневры, типа "Ну пацаны, смотрите, я хоть что-то понимаю, типа стек есть, а еще куча и корочи сборщик их сканирует".
больше похоже на "бомбануло", просто в культурной форме вбросили на вентиляторы.
Он от того говном быть не перестаёт к сожалению. А вообще люди любят говно: пхп, жс, жява, коммунизм, трамп...
>>873224
Где обосрался-то? Там где какой-то анон сумел услышать про структуру данных? Ну это не мой обосрамс к сожалению.
>"Сканирует", и само собой "нагружается"
Мань. Весь оверхед консервативного сборщика — это сканирование и пометка лишнего. Хотя ты один хуй не поймёшь и начнёшь брызгать слюной
Общаться в готреде — это как писать на хачкеле. Даже если написал всё правильно и всё ахуенно работает — долбоёбы вокруг даже не попытаются понять.
>>873189
При чём здесь костыли системы типов плюсов вообще?
Я тут кстати поднимал выше хуй знает сколько времени назад вопрос — нахуя именно указатели, если ни арифметики со всеми выткеающими вроде битмасок без оверхеда, ни передачи массивов по указателю и прочего нет? Настолько впадлу хотя бы ссылки как в плюсах запилить про типобезопасность уже молчу?
Есть ли на javа веб-сервер подобный веб-серверу на golang (такой же простой, но гибкий)?
http://byrd.im
>As the time went by, I had started looking into web backend stacks: Python, Node.js
Даже илюша начал с говном подзавязывать. Мне кажется это знак: с говном долго проработать могут только тупые, регулярно аутотренирующиеся фанатики.
Сутя по инфе там же, он сейчас обитает на реддите — диван обещал съебать но венрулся, а илюша просто съебал и не вернулся, лол.
Вот уж кого действительно потеряли — единственный гофер который мог отписать по теме, а не стандартный аутотренинг/хуйню "гс не сканерует стак ета ваще структура данных ахах лолка абасрался".
Ну конечно порвался. Хочешь поговорить с человеком — а тебе отвечает тупое животное, которое ржёт со своей же тупости, и на попытки образумить его продолжает.
>>873295
Ну простыми-то они могут быть в разных областях: на говняшных-то написать и запустить хэловорд несомненно легче, но вот дальнейшая скорость и простота разработки будут за джявными монолитными уберфрецмворками на все случаи жизни.
Простой-то какой нибудь наверняка есть и даже не одна тыща. Сходи до гитхаба, мне кажется именно простых в смысле нихуя не умеющих го-стайл серверов ты там найдёшь предостаточно.
В стандартной библиотеке есть.
И делают делать ещё одну джаву или скалу, но нахуя?
>обязательно хорошее знание PHP, Mysql (без этого никак)
>желательно не бояться bitrix и laravel
>плюсом умение или желание писать на Golang
>bitrix
>Golang
Что и требовалось доказать.
Бля. "Стэк нагружает GC" вполне претендует на мемчик. И твои рассуждения про "консервативный GC тоже". Так же хочу поздравить гоферов с днем рождения языка, 7 лет! Это больше чем стаж пограммирования любого хейтера Go
>Даже илюша начал с говном подзавязывать. Мне кажется это знак: с говном долго проработать могут только тупые, регулярно аутотренирующиеся фанатики. Сутя по инфе там же, он сейчас обитает на реддите — диван обещал съебать но венрулся, а илюша просто съебал и не вернулся, лол.
Картина маслом: "Илюша лижет себе яйца"
Ты пойми в чем тут детектед - кроме самого Илюши, всем срать на его деятельность, тем более в таких подробностях.
Ты кстати стал тупеть, но зато теперь у тебя стек не нагружает ГЦ! (или нагружает?)
Ничего против не имею Го, но меня смущает то, почему его не пытаются допилить до конца.
Пришлось вынести спорные функции отдельно просто потому, что "где-то" там, в начале, дернуло мою чистую-функцию (теперь я понял почему компилятор ругаеться за импорт, если не следить, все пойдет по пизде за более чем короткое время)
Даже в говно-си завезли #IFDEF и в php есть include_once, тут то что им мешало сделать проверку...
https://habrahabr.ru/company/mailru/blog/314834/
Максим
> — Хочешь ли ты писать на С? — спросил Витя.
> — Не очень, — честно ответил я.
> — А почему?
> — В нём много букафф.
Александр
>а opensource-проекты пока что не хватает желания. :(
Роман
>Так что это Go выбрал меня, но я доволен
Еще бы ты тут недоволен Рома был. Кстати обратите внимания, люди приходили на другие языки совсем.
Ну и цитатка от Романа о плюсах:
>простое, но продуманное окружение
Цинично, Рома, цинично
Особенно после 50 оттенков Го.
Цитаты хабр элиты!
>Выбирал, имея уже 15 лет опыта в программировании.
Рассказывает про как плохо "много писать", называет джаву - явой и она кушает много памяти (его памяти или о серверах заказчика непонятно) и вообще статическая типизация вещь!
Прям умничка.
>Похожая ситуация, остальные приколы понимаешь со временем. :)
Прикольные у них там 15-летние стажеры
>В Go привлекла богатая стандартная библиотека
Интересно чем богатая, тем что большую часть писать самому?
>Когда вам нужно будет за полгода написать 30 000 строк кода и не сгореть, то Go очень подходит.
Джава - если хочешь больше символов в строке, Го если хочешь больше строчек кода по высоте! Спасибо, поняли.
>gofmt запускать вовсе не обязательно. это настоятельно рекомендуется — и только.
Свобода выбора по языку Го.
>Так что я себе решил: ну её, эту хипстерскую приблуду.
Тут не понятно автор послал гошников или их приблуду, но плюсы ставят все равно
https://habrahabr.ru/company/mailru/blog/314834/
Максим
> — Хочешь ли ты писать на С? — спросил Витя.
> — Не очень, — честно ответил я.
> — А почему?
> — В нём много букафф.
Александр
>а opensource-проекты пока что не хватает желания. :(
Роман
>Так что это Go выбрал меня, но я доволен
Еще бы ты тут недоволен Рома был. Кстати обратите внимания, люди приходили на другие языки совсем.
Ну и цитатка от Романа о плюсах:
>простое, но продуманное окружение
Цинично, Рома, цинично
Особенно после 50 оттенков Го.
Цитаты хабр элиты!
>Выбирал, имея уже 15 лет опыта в программировании.
Рассказывает про как плохо "много писать", называет джаву - явой и она кушает много памяти (его памяти или о серверах заказчика непонятно) и вообще статическая типизация вещь!
Прям умничка.
>Похожая ситуация, остальные приколы понимаешь со временем. :)
Прикольные у них там 15-летние стажеры
>В Go привлекла богатая стандартная библиотека
Интересно чем богатая, тем что большую часть писать самому?
>Когда вам нужно будет за полгода написать 30 000 строк кода и не сгореть, то Go очень подходит.
Джава - если хочешь больше символов в строке, Го если хочешь больше строчек кода по высоте! Спасибо, поняли.
>gofmt запускать вовсе не обязательно. это настоятельно рекомендуется — и только.
Свобода выбора по языку Го.
>Так что я себе решил: ну её, эту хипстерскую приблуду.
Тут не понятно автор послал гошников или их приблуду, но плюсы ставят все равно
Ну че вы, как вы, котики? Держетесь, превозмогаете?
ОП ты отстой
тебе не сравниться со мной.
йоу я читаю рэп
и это даже не трэп
потому что я илюша
а это — мой готрэд
Ты говнюша,
Не илюша.
И твой реп...
Говном он пахнет.
Хуй, говно, давалка —
Всё это гоферская свалка.
Горутина, пайка мамка —
Та же... мусорная свалка.
Стёк не грузит наш гц,
Потому что ссылок нету в мове.
Все стендап, бичи
Хуй илюша итт.
Он пришёл, что утренний петух,
Вскукарекнул, встрепенулся,
Клюв прочистил поутру
И говно пошёл он нюхать.
мимо новый оп крестотреда
РАУНД!
У меня от твоих школьных-маневров испанский стыд из-за тебя.
Иди чини стек, чтобы ГЦ не тормозил
Не сижу на закече, но уверен
В крестреде — дичь
Пишу на плюсах каждый день
Меня не ебет твой спич
Пишу на голанге летом
Не вижу ничего плохого в этом
Зеленые потоки завезли — не то что вам
Константные выражения и хуй
Стэк в голанге охуенный
Копирую, перемещаю, профилирую
Уборщик мусора так сука пиздат
Бей в набат, шпинат щербет цукат
Пайк. Роб Пайк. Пайк. Роб Пайк.
У твоей мамы течка — ставлю лайк.
Пайк. Роб Пайк. Пайк. Роб Пайк.
Посрал тебе на голову — выбил страйк.
>накосячил с знаниями.
>начал позорно маневрировать
>задетектил себя в контексте обсуждения Илюши
>неожиданное совпадение! В этот же момент Илюша выходит из занавеса! (да просто король-маневров!)
>тут же сливает в батле плюсовику, ибо бездарная бестолочь.
Ну и конечно:
>сейчас попытается затопить тред, чтобы побыстрее снять позорный форс стека с ГЦ. Но легион все видит!
Ну здраствуй...
Только недавно выше было.
Один анон попутал влияние глубины стека вызовов на перформанс сборщика с простым использованием стековой памяти, второй начал говорить что это вообще структура данных, а у третьего GC стёк оказывается не сканирует — корни видимо сами по себе в воздухе ищутся. собственно всё как обычно
>>873804
Стэк в голанге —
Он абстрактный, ахуенный,
Беспредельник и мудак;
Что ашот с насваем
От сборщика сбегает.
Он от бабушки ушёл,
И от пайка он ушёл.
По теплотрассе в украину
Через ато и майдан.
Так попал к илюше в батл.
Основав бюро
По защите кадров стека,
От бездарных уебанов.
Чувак, поменьше сиди на сосаче. У тебя в голове каие-то схемы пизданутые. Мне корешок напомнил про зк сегодня утром, я зашел, а тут готред, который я, можно сказать, своими силами поднимал-поднимал все 10 или сколько там тредов в свое время.
>за полгода написать 30 000 строк кода
Это по 5000 строк кода в месяц. Около 1200 строк в неделю. Чуть больше, чем по 150 строк в день. Это много, что ли?
>Чуть больше, чем по 150 строк в день
Ты не учел сколько часов тратиться на поездку в коворкинг центр, перерывы на смузи, митапы, обсуждения новых трендов на гитхабе, хакатоны... это же непоколебимый труд для команды хипстер разработчиков
А что не так-то? Илюша вон буквально музыкой занялся, по-моему очень эпично.
Крошки от митбола из бороды вытряхни, выебщик.
Куча девопс хуиты, которой нужно работать быстро и при этом пердолиться на более низком уровне нежели это может дать python. Ну и конечно же Docker(самая большая хуита, которую написали на нём) и куча проектов, которые используют его или помогают упростить жизнь работая с ним. Навскидку: consul и большое количество технологий hashicorp'а работают на Go), registrator и весь стек CoreOS. Как тут говорили: язык подходить новому поколению для которых Сишечка блевотная, но при этом хочется писать быстро быстроработающий софт.
>но при этом хочется писать быстро быстроработающий софт.
Тормозит так же как джава, но в последней годный тулинг и туча качественных библиотек, экономящие тысячи часов работ
>быстроработающий софт
реально быстро работающий софт (и особенно игры) с ГЦ не бывает (забудь это слово)
Лол, завезут реалтайм-ГЦ??? Какие же просадки по производительности будут??
>задержки GC сократили до 5 мкс.
Задержки у твоей девушки, а 5мкс это приятное подергивание во время игры.
>Куча девопс хуиты, которой нужно работать быстро
>пердолиться на более низком уровне нежели это может дать python
Ты хоть понимаешь какие задачи у девопс-софта? Или по-твоему у подобного софта ботлнек когда-то возникает в процессоре, а не при I/O особенно на жёсткие диски
>Docker(самая большая хуита, которую написали на нём)
Докер — это именно что и есть "девповский набор скриптиков", упирающийся в жд и сеть. Там кстати добрая треть проекта вообще на окамле написана, такой-то контраст с го, лол.
>consul
А вот тут даже не просто I/O в кубе, тут всё хуже — тормоз в самом алгоритме. Эрланг который тормозит похлеще питона хорошо показывает, насколько похуй на перформанс отдельной единицы в распределёнке.
>весь стек CoreOS
Весь стек там заканчивается на докере и пару демонов которые... работают с распределёнкой. Бинго!
Итого в сухом остатке: какой смысл писать эти проекты на го, кроме хайпа, лел? Или ты серьёзно считаешь что обвязка вокруг LXC или распределённая key-value хуитка, которая будет по пол часа тратить только на то, чтобы достучаться до всех нод, потом ещё столько же синхронизировать требует почти низкоуровенного языка?
PR ресурсы гугла сделали своё дело.
Для любого сборщика можно подобрать оптимальные условия при которых он будет просто рвать и ебать, посмотрим когда выйдет. Правда если всё действительно так радужно — будет очень круто хотя вангую что это благодаря реализации того пейпера, и теперь просто после завершения горутины всё будет просто выкидываться нахуй, и для геймдева язык так и останется непригодным, зато хоть порадует веб-макак на локалхосте
>Задержки у твоей девушки, а 5мкс это приятное подергивание во время игры.
Ты сечешь вообще что такое 5мкс? Это пять умножить на одну миллионную секунды, блять. Ты данные с периферии будешь дольше считывать, манька.
Элементарную арифметику не знает, но зато пиздит в тредах на дваче.
>Ты хоть понимаешь какие задачи у девопс-софта? Или по-твоему у подобного софта ботлнек когда-то возникает в процессоре, а не при I/O особенно на жёсткие диски
Он немного дурак. Фишка Go не в том, что он быстрый и поэтому на него рвутся опсы, а потому что он, внезапно, умеет такую вещь как КРОСС-КОМПИЛЯЦИЯ, быстрая и уверенная кросс-компиляция. Это раз. Во-вторых, Go настолько тупой, что его проще поддерживать в больших кодбазах, чем что-либо другое.
Проблема маней с двача в том, что в нормальных больших компаниях они не работали, про опс слышали только с хакерньюса и не представлют себе, какая анархия там начинает твориться уже через несколько итераций. Go не спасает, конечно, но очень-очень помогает. Почему помогает, спросишь ты? Потому что очень просто работать с сетью, RPC, алгоритмами сжатия, кодировками и трансформациями, криптографией.
И вы догадываетесь, о чем я говорю.
Вообще, ты таки прав — на го написать что-то непонятное сложнее чем даже на питоне, админам вообще понравится.
А с русской православной церковью, сжатием и прочим в других языках вообще тоже хватает библиотек.
>>874369
Илюш, ты там хоть примерный концепт своей манямовы набросал уже? за пол года-то
Конечно я прав, ебать, я специалист в том, чтобы быть правым. Что касается языка, пока нет... Ты охуеешь, но это безумно сложно. У меня было примерно 3-4 версии простоспецификации, в манере питона, в манере Go, в манере окамля, но прямо везде мимо. Там такой фокус, что без интеропа с существующим кодом на Go это все совершенно бесполезно, а это накладывает свои ограничения. Макросы можно сделать крутые, но у меня мало опыта в разработке языков с макросами, поэтому я хз как не переборщить. Что касается дженериков, я в принципе придумал, как решить проблему (мы против динамик диспатча если чо), но не придумал пока вообще как ее реализовать. Но вообще у меня есть видение того, что должно быть в языке, чего не должно быть. Спойлер: пайпы папйы пайпы. Осталось только придумать как линковать обобщенный код, как сделать чистый интероп и можно делать спецификацию.
> Go настолько тупой, что его проще поддерживать в больших кодбазах
> писать быстро быстроработающий софт.
Это и имел ввиду.
Тихо, тихо я вообще не фанбой Го, если ты об этом. Тут просто попросили привести пример софта, который написан на Го. По поводу "горлышка" на I/O согласен(это узкое место в производительности докера, когда работаешь с жд), но тут ещё вопрос стоит в том, как быстро ты напишешь вещь, которая бы ебошила в норм асинк и к тому же имела простой синтаксис. Правда, даже не смотря на простоту, учить мне его так и не захотелось, хотя была задача пофиксить и добавить фичу в одну опенсурс штуковину.
> Докер — это именно что и есть "девповский набор скриптиков"
Не соглашусь ибо, networking, работа с aufs и очень много других экосистемных штук это не "девповский набор скриптиков" или "просто тупая обёртка над LXC".
Можно было бы и написать на другом языке, но парни выбрали то, что хотели. Если это работает и делает это достаточно быстро, то к чему хейт то.
Перегрыз тебе за щеку, проверяй.
Потому и на плаву. Людям нравится сраться.
Вот представь если завтра весь мир перестал бы ругаться — скучно же было бы.
Так можно утверждать и то, что ты считаешь срачи чем-то плохим как абсолютное большинство людишек => быдло ты.
>
Ты блять в шутеры по сети играл? Где блять отклик кристала 8мкс выглядит бесячей размазанной хуйней для глаза и мозга.
Или задержка в 16мкс в виртуальных шлемах вызывает головокружение (так как мозг сообщает что он уже повернул, а глаза говорят об обратном. Так что иди нахуй со своими познаниями в нейрофизиологии)
Ты хоть знаешь, зачем это писалось? На го эти объёмы переписывать никому не всралось - слишком дорого. И язык тут не причем.
мимо-питон-школьник
Ну ясен хуй что да, а что у тебя такую реакцию вызывает-то?
>>874638
Там много других причин — начиная от технических (вроде хуёвого оптимизатора и отсутствия библиотек заканчивая неприспособленностью работы го с большим нестатичным хипом — гу без компрессии и дефграгментации и отсутствием ооп — такие гиганты быстро превратятся в c-like парашу, об которую IDE ломаются) до субъективных — нужны студенты пишущие и реализующие алгоритмы датасайенса, которые не захотят как унылые сорокалетние админы с девопсами сидеть и писать на этом скучном говне.
иди нахуй уебан, когда парень говорит о ГЦ в 5 МИКРОсекунд, ненароком подумаешь что он объебался с мкс и мс (и я так же подумал)
>>874860
собственно что и говорит, правда между 5 и 100 (очень похожие цифры).
Но суть не в этом, это говорит о каком-то реалтайм сборщике, цену за которого вы заплати своим процессором (и кошельком, если вы не диван с локалхостом)
В джаве тоже есть реалтайм ГЦ с гарантом времени (10мс вроде), но его по понятным причинам в микросервисах юзать себе дороже.
Посмотрим...
И в чем лол, это сразу же проявится в тех нубо тестах (когда сравнивают работу языка с ГЦ и без, и типа языки с ГЦ ничуть не уступают).
Удвою этого.
Тем временем стек не грузит GC, точнее сборщику на него настолько похуй что это он останавливает мир.
>Re-scanning the stacks can take 10's to 100's of milliseconds in an application with a large number of active goroutines.
Внезапно, тут скорее всего имеются ввиду приложения на сотни тысяч горутин.
Внезапно, вообще насрать - местные дегенераты истекали говном хуй знает сколько времени, не осилив даже прочитать на отечественной®, блять, вики, как определяется достижимость объекта. Сборщик никак не касается стека и все. Самое время сделать мемасик на эту тему по мотивам najtiElementVMassive.
Сколько именно там горутин имеется ввиду неизвестно - под большим количеством можно понимать от десятка до миллионов.
Но чтобы быть функциональным языком достаточно всего лишь иметь лямбды. И, по-моему, даже замыкания не нужны - контекст можно руками таскать. Всё остальное - это всего лишь перделки поверх или следствие.
ты сейчас унизил всех ФП-господ
пехепе - функциональный язык еее))
>достаточно всего лишь иметь лямбды
О — ещё одно заявление уровня "стек gc не грузит" от типичного индивида в готреде.
Где читота и иммутабельность из коробки? Где хоть какая-то ленивость и функции высшего порядка? Где хотя бы оптимизация хвостовой рекурсии? Где хоть сколь-то вменяемая система типов? Правильно, нинужна.
Го — исключительно императивный язык, лямбды в котором используются просто для того чтобы в роутеры писать легче было.
В чем хайп иммутабельности?? Ну не меняй переменную, есть же сотни конвенций в языках.
Или нужно явное ограничение от компилятора, потому что в природе нравится ощущать унижения (тебе понравится Раст)?
Хуй знает при чём тут раст видимо при твоей культурной ограниченности, но она есть много где. И у неё дохуя преимуществ — от потокобезопасности до спокойного рефакторинга.
И хуй знает почему ты вообще открыл свою дырку по поводу хайпа — я просто пытался перечислить местным обезьянам отличительные концепции фп.
>Хуй знает при чём тут раст
Потому что он наказывает грязный мальчиков.
Дальше не читал, игнорирую животных, которые скрывают текст (вроде взрослый человек, а внимание к себе пытаешься привлечь как школьница-блондинка)
>Сборщик никак не касается стека и все.
Ты пизданутый?
>Сколько именно там горутин имеется ввиду неизвестно - под большим количеством можно понимать от десятка до миллионов.
У меня на tip крутится в проде микросервис (100-200 rps), я профилировал по задержке (прямо в проде, я ебанутый), буквально несколько пиков в 100 мс, все остальное время ниже 5-10 мс. На пиках больше всего времени в syscall, мб система. В среднем минимум 50 горутин вертится, но было и такое что в районе 2000 одновременно (на задержку не повлияло).
>>876992
>>876997
Наличие лямбда исчисления — единственное конструктивное требование к языку программированию, чтобы называть его функциональным. Все остальное вызвано "экспертным мнением специалистов" по так называемым "функциональным" языкам.
>>876999
Иммутабельность не имеет ничего общего с "чистотой", даун ебаный ты такой. Иммутабельность это просто способ избежать состояния гонки. Современные функциональные креаклы (вроде тебя, еблан) очень гордятся тем, что не могут менять собственные переменные, хотя даже не знают НАХУЯ оно надо.
>>877012
Пошел нахуй. Когда начнешь хоть что-то понимать в кампуктер саенс, можешь вернуться.
Ты понимаешь, что это всё перделки? ФП - это лямбда исчисление. Лямбда-исчисление - это функции. Если у тебя есть первоклассные функции, то ты на них делаешь переменные, пары, списки-хуиски, конбенаторы-мандадки етц. Уже отсюда появляется иммутабельность, просто как следствие. Ленивость, опять же, тоже просто следствие. ТСО разве что нужно, если хочешь быть более-менее практичным языком, но и оно не обязательно. Алсо, система типов - тоже перделка. Лиспы всякие - вполне себе функциональщина, и ничего, живут без типов. Да и сами типы Чёрч придумал сильно позже.
>>877002
>я просто пытался перечислить местным обезьянам отличительные концепции фп
>отличительные концепции фп
А чтобы быть императивным языком, нужно обязательно иметь компилятор, функции для работы с файлами, классы с интерфейсами и возможность создавать треды. Ну, а что? Я просто перечислил отличительные концепции императивных языков.
>ТСО разве что нужно, если хочешь быть более-менее практичным языком
Можно все трамполином разгонять. Но обычно нинада, потому что большинство рекурсий не хвостовые нихуя (если только ты не пытаешься изобрести for).
Можно переделать в хвостовую, передавая дальше функцию. Просто этим никто не занимается, ибо сложно и нинужно.
Обычно ещё орут как выше: оно на самом деле есть, просто вы все криворукие и нихуя не понимаете вообще.
>>877204
Посмотри как он императивный код от декларативного различает, какие могут вообще быть вопросы?
Может потому что ЯП не обязан быть общего назначения, а как правило решает определенные четко проблемы? Внезапно спроси какого-то хаскелиста почему у него в стандартной библиотеке нет хттп сервера и что он тебе скажет? НИНУЖНА. Спроси у рубиста, почему у него в стандартной библиотке нет HMAC. Что он тебе скажет? НИНУЖНА.
Так абсолютно везде.
Так ты сейчас вообще про библиотеки, а не возможности/концепции языка.
Я к примеру пишу на нескольких ЯП на работе и на досуге, сам знаю, чего в них не хватает, +/- и с пеной у рта не доказываю, что они самые лучшие.
Нет, конечно. Лямбда - буква греческого алфавита. А вот лямбда-функция - это функция. Да, я тоже сначала не верил, а оно вон как оказалось.
>>877208
Ну, во-первых, я не "различал императивный код от декларативного" (что бы это не значило), а просто привёл отличительные особенности императивных языков программирования. Точно так же, как кто-то выше (ты?) привел их же для функциональных языков. И у меня получилось не хуже.
Если спросить Пайка, ему вообще ничего не нужно. Как он женился - загадка.
Не понимаю немного. Ты хочешь доказать, что функционального программирования не существует, или что в лямбда-исчислении можно форматировать диск? Или, может быть, ты хочешь услышать от меня доводы о том, что сисечка - чистый язык? Просто надо прояснить перед тем, как я смогу ответить.
Тогда у него всё как-то совсем плохо с логикой и восприятием постов.
Вообще все функциональные фичи типо лямбд, монад, функторов не являются чистой математикой, а просто math-inspired концепциями
И что? Пиши так, чтобы были чистыми. Есть чистые первоклассные функции - можнасделать лямбда-исчисление. То, что можно функции делать и не чистыми - это просто расширение. Так же, как, например, типы или ленивость.
Да и тут смотря с какой стороны посмотреть. Лямбда везде - это кусок памяти, в котором есть некий энвайрмент (эдакий маппинг ключ->значение) и ссылка на функцию. То есть, их можно назвать сахарком к классам/объектам с одним полем и одним методом. Всё зависит от того, как глубоко в кроличью нору ты хочешь залезть.
Расскажи, как в твоем понимании работает стек? Ты просто не можешь взять и пометить элемент в стеке свободным, тк в этой области памяти аллокация и деаллокация проходит по своим правилам. Для твоего более лучшего понимания своей неправоты: Есть С, в котором ты не можешь взять и освободить память в стеке(кроме как сделать return), как ты делаешь это с помощью free() для кучи, и язык как-то живет без сборки мусора дольше твоего бати, пожалуй. А вообще, не прогуливай пары.
>Есть чистые первоклассные функции - можнасделать лямбда-исчисление.
Вот именно что можносделать. С таким подходим любой язык - функциональный. Если это то что ты хочешь сказать, спешу сообщить что классификация по которой к какому-то подмножеству можно отнести все элементы множества не является полезной, поскольку не позволяет делать каких-либо выводов. Это тоже самое что говорить что любой язык объекто-ориентированный потому что в любом языке можно писать в ОО-стиле.
>То, что можно функции делать и не чистыми - это просто расширение.
Это расширение которое полностью ломает парадигму.
>Пиши так, чтобы были чистыми.
Кроме тебя есть еще тысячи разработчиков и миллионы строк кода. Их тоже чистыми сделаешь?
>Лямбда везде - это кусок памяти, в котором есть некий энвайрмент (эдакий маппинг ключ->значение) и ссылка на функцию
В функциональных языках тебе еще гарантирована ссылочная прозрачность. Собственно это и есть их основное отличие.
>То есть, их можно назвать сахарком к классам/объектам с одним полем и одним методом. Всё зависит от того, как глубоко в кроличью нору ты хочешь залезть.
Кончай говорить банальности с умным видом. Ты явно не понимаешь о чем говоришь.
>>877414
Функциональные языки позволяют применять equational reasoning.
>Вот именно что можносделать.
Продолжаешь непонимать. Наличие ламбд (ну, окей, замыканий) уже делает язык функциональным. Можнасделать тут лишь пары, списки и прочее говно - то есть, стандартную библиотеку. А как ты, наверное, догадываешься, чтобы быть языком программирования (любым вообще) наличие стандартной библиотеки необязательно.
>классификация блаблабла
Не хочешь ли ты сказать, что лямбда-исчисление не является функциональным программированием? Потому что я не помню там ни типов (которые появились-таки, но немного позже), ни сборщика мусора, ни мандадок. А к чему приводит твоя классификация по методу "выдернем немного хуйни из более-менее известных языков" ты можешь посмотреть вот здесь >>877099 в конце.
>Это расширение которое полностью ломает парадигму.
Нет, не ломает.
>Кроме тебя есть еще тысячи разработчиков и миллионы строк кода
А я могу сделать функцию на сишке и обернуть её в хаскель. И будет эта функция портить хаскилевскую память или просто форматировать диск с шансом в процентов 30. Хаскиль теперь не функциональный язык, я правильно тебя понял? Ты же не контролируешь весь код.
>Кончай говорить банальности с умным видом. Ты явно не понимаешь о чем говоришь.
Ну, во-первых, в данном случае это взаимоисключающие вещи, поэтому ты определись, либо не понимаю, либо банальности. Во-вторых, такое говорят, когда больше сказать нечего.
>Наличие ламбд (ну, окей, замыканий) уже делает язык функциональным
Напиши функцию curry на go, например. Какое функциональное программирование без каррирования?
Еще раз убеждаюсь, что функциональное программирование чаще используют для поднятия самооценки.
Кончайте цирк.
>>877861
Напиши функцию curry на хаскеле, например. У тебя не получится. Хинт: можно только curry2, curry3 и так далее. Хаскиль не позволяет писать функциональный код - вот же говно, а не язык :(.
>Напиши функцию curry на хаскеле, например
Она уже есть в Prelude. Хаскель - функциональный язык. Го - паскаль с сахарком.
http://ideone.com/Rb9D4e
Не работает :(. Баг, наверное. Пойду репортну. Вот же беда, вроде бы только нашли функциональный язык, а он дырявый, как решето.
>Gо позволяет писать функциональный код. С++ позволяет писать функциональный код.
Не примазывайся к нормальным языкам. Пока в C++ есть templates, который порой считают вообще отдельным функциональным языком, в Go проверяют interface{} на соответствие каждому типу.
Ну так у curry тип ( (a,b) -> c ) -> a -> b -> c, естественно оно не работает. Лучше на го пиши, хаскель для тебя слишком сложный.
А, так тебе именно такой curry нужен, а не как в джаваскрипте. А в чём тогда проблема написать эту функцию в языке, в котором есть замыкания? Или, неужели го для тебя слишком сложный?
Вот, например, можно как-то так сделать, только надо типы проставить (я не знаю, как у них там полиморфизм делается и как функциональные типы пишутся, сделал на глаз):
func curry(f FUNTYPE) FUNTYPE2 {
return func(x interface{}) FUNTYPE3 {
return func(y interface{}) FUNTYPE4 {
return f(x, y);
}
}
}
>А в чём тогда проблема написать эту функцию в языке, в котором есть замыкания?
Ну напиши, попробуй.
>неужели го для тебя слишком сложный?
Так и есть.
>в Go проверяют interface{} на соответствие каждому типу
Ни разу это не делал за последние полгода наверное.
>лямбда-исчисление не является функциональным программированием
Такая постановка вопроса вообще-то некорректна, но я понял о чем ты. Нет, я не хочу этого говорить.
>не помню там ни типов (которые появились-таки, но немного позже), ни сборщика мусора, ни мандадок
Лябмды в лямбда-исчислении ссылочно прозрачны в отличии от анонимных процедур (более корректное название "лямбд") в ЯП.
>А я могу сделать функцию на сишке и обернуть её в хаскель
>Хаскиль теперь не функциональный язык, я правильно тебя понял?
Строго говоря, хаскель с FFI - не ФЯП. Если бы он заставлял внешние функции всегда возвращать IO a вместо a, то был бы. Здесь есть баланс между чистотой и практичностью. Но я не уверен что FFI можно или нужно считать частью языка.
>Продолжаешь непонимать.
Понимаю. Твоя точка зрения не верна и даже вредна потому что ты все языки в которых можно параметризировать код кодом валишь в одну кучу. Это то же самое что говорить что все тьюринг-полные языки одинаковы.
>во-первых, в данном случае это взаимоисключающие вещи, поэтому ты определись, либо не понимаю, либо банальности.
Наверное немного спутанно написал. Банальности - это про сахар для объектов, непонимание - про ФП в общем.
>877810
Я не проповедую ФП. Просто не нужно делать вид что C, Go, Scala и Haskell в одной категории относительно "функциональности".
>Нет, я не хочу этого говорить.
Это хорошо, что ты понял, потому что сформулировать это корректно довольно сложно. Но тогда тебе придётся ответить, почему же пердолинг на чистом лямбда-исчислении является функциональным программированием, а тот же пердолинг на, например, жабаскрипте, на котором можно сделать всё то же самое, с различием лишь в синтаксисе, им не является. Так же этот пердолинг можно повторить на любом другом языке с замыканиями (хотя вот этот парень >>877889 намекает, что в го нельзя, потому что типы прописать не получится, но тут надо ждать го-вноедов, которые прояснят) с тем же результатом. Так почему?
>Лябмды в лямбда-исчислении ссылочно прозрачны
Ещё раз. Что тебе мешает не пользоваться расширением и делать ссылочно-прозрачные лямбды?
>всегда возвращать IO a
Строго говоря, хаскиль с IO - не ФЯП, потому что IO - огромный хак, и если так размышлять, то сишка будет чистым языком (всё в мандадке, оператор ";" "за сценой" передаёт RealWorld в функции и так далее). Похоже, из функциональных языков у нас осталась одна unlambda.
>все тьюринг-полные языки одинаковы
В зависимости от того, что ты вкладываешь в слово "одинаковые". При некоторых значениях так оно и есть.
>что в го нельзя, потому что типы прописать не получится
Получится, через рефлекшн. Хотя типизация теряется.
http://ideone.com/WyepZU
Редко такое пустое видео увидишь.
"Я хуй с горы, вот список недостатков го, но он всё равно норм) Не агритесь плз)"
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/878490.html (М)
Что заслужили как говорится.
> (100-200 rps)
> пиков в 100 мс, все остальное время ниже 5-10 мс.
Мм реалтайм хайлоад подъехал.
Это копия, сохраненная 8 декабря 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.