Продолжаем сраться и попутна кастуем призыв илюши.
Что это за язык? Компилируемый язык со статической pascal-like shit вместо типизации, с встроенный в язык CSP, разработанный компанией Google.
Какие у него сильные стороны? Быстрая компиляция, простота, богатая стандартная библиотека, псевдоуниверсальность, кросскомпиляция.
Какие у него слабые стороны? Еще развивается (хотя внушительными темпами, смотрите ниже раздел "Перспективы"). Малое количество вакансий, отсутствие такого количества готовых решений, который имеют языки с более долгой историей. В основном сейчас знания языка приветствуется (особенно для коллег с питона).
На какие языки он похож? C, PHP, JS, 1C.
Какая у него основная сфера применения? Бюджетный веб (так как не жрет ресурсы как скрипты или джава), девопс-утилитки и прочие мидлевел сетевые утилитки.
Какая у него основная сфера применения в будущем (вполне вероятном будущем) Разработка на новых квантовых процессорах тупо будет недоступна - язык чисто императивный, что как бы намекает нормально векторизовать и распаралелить код на архитектуре без синхронизации да даже на текущих x86 не может возможным не представляется.
Холивар Язык настолько убог и топорен, но при этом захайпован что подрывает жопы всех - от закоренелых бородачей до молодых студентов, но очень любим хипстерами и манагерами - первыми за то, что хайп, вторыми за то, что можно сделать из программиста безликую макаку, которую заменить как в два пальца пососать. Так же его фанаты работают "на конференции" - любят понасрать и переписать какой нибудь микросервис на го, потом еще пол года катаясь по конфочкам и рассказывая басни крылова.
Собственно, пытается маняврировать между высокоуровенными и низкоуровенными языками - но делает сасай у обоих, не дотягивая по удобству и средствам до высокоуровенных и сасая по перформансу у низкоуровенных.
В этом ИТТ треде >>882510-маня пояснит, как в 2016 рвут Keep-Alive-сессии, не просто закрывая сокеты, а как-то сложно и по-современному. Ждем всем тредом.
не забываем вины -уязвимость дефолтного сервера и отсутствие норм решения (тупо рвать весь коннект и похер если ты файл отдаешь) -Глючность возникающая в Prepare (в sql) при хайлоад нагрузках
>>882639 Или как в моей netty (в божественной java/kotlin) - таймаутом на последнюю активность, на медленность запроса, исключая по mime-type крупные файлы, но ограничивая такие соединения числом по IP
>>882641 >>882639 >>882665 Я в прошлом треде приложил этот скриншот из документации. Как видите, эти таймауты не на всё соединение, а на каждый запрос-ответ в контексте соединения.
С моей стороны были пруфы, код и объяснение причин неверного поведения кода анона. С твоей — беспруфные кукареки. Ты вот сейчас при всех обосрался, но признавать этого не будешь. Молодец, так держать.
It'd be nice if bradfitz could just remove himself from here. That guy quite often insights the desire for me to split his lip. What a whiner. So the CEO modified the posts of some Trumpians. Who gives a fuck. /r/golang has nothing to do with any of that. Our corner of reddit is so far removed from any of that as to be it's own completely separate thing. This subreddit is perfectly fine. I have no idea where the contempt is coming from. All I see is on-topic discussion and project releases. Nice people answering questions, helping, and giving feedback; a little snarky but harmless conversation here and there; and the usability of reddit far exceeds that of anything Google has to offer. Google is just simply awful at anything social: G+ is a joke, YouTube (talk about being anti free spech!) comments are completely undiscoverable and mostly toxic; their own forums are something out of 2007, and similarly unusable. I just think the mods that have an issue should just leave and let some people who aren't reactionary whiners trying to personally involve themselves in drama needlessly step up and take the reins. I don't see any reason to change anything about this subreddit. There hasn't been widespread concern here in /r/golang, and if there has... I'd be hard pressed to find it.
Все эти системы со сборщиком мусора - говно. Как только памяти начинает отжираться больше чем половина имеющейся, начинаются тормоза. Если хотите навернуть говнеца, то уж лучше растом обмазыватсья, там хотя бы есть ради чего.
>>883117 >Все эти системы со сборщиком мусора - говно. inb4 95% софта в мире так или иначе крутится на системах со сборщиком мусора и ничего, живы-здоровы. иди кукарекай в другой притон
>>883117 >растом лол, это говно тормозит как языки с GC и жрет память как джава из-за нубаского аллокатора (даже тут тесты кидали, что раст жрал больше го). При этом ты еще будешь думать о времени жизни переменных и бороться со стираным правилами компилятора.
>>883966 > хотел свернуть сабреддит го наехали, и он пошёл на попятную Зеленые просто боялись, что их чатик сломают и негде будет больше свой говнокод показывать. Я солидарен с этим патриотом.
>>884121 Послушай последний радио-т, там всё по хронологии рассказали.
В двух словах: в каком-то зог-сабреддите обсуждали хуйню, его закрыли, и выходцы оттуда начали массово поливать говном сео реддита. Тот обиделся и сказал видимо поправить оскорбления ему на оскорбления самим себе. От этого началась истерия и один из мочераторов этого сабреддита хотел закрыть его из-за этого нахуй.
>>882625 (OP) >Язык настолько убог и топорен, но при этом захайпован что подрывает жопы всех - от закоренелых бородачей до молодых студентов, но очень любим хипстерами и манагерами - первыми за то, что хайп, вторыми за то, что можно сделать из программиста безликую макаку, которую заменить как в два пальца пососать. >Так же его фанаты работают "на конференции" - любят понасрать и переписать какой нибудь микросервис на го, потом еще пол года катаясь по конфочкам и рассказывая басни крылова. > >Собственно, пытается маняврировать между высокоуровенными и низкоуровенными языками - но делает сасай у обоих, не дотягивая по удобству и средствам до высокоуровенных и сасая по перформансу у низкоуровенных.
>>884286 >2к16 модно делать новые языки Помнится, в универе один одногрупник такой хуйней страдал в 2007-ом, тоже вместо предложенных тем курсача напишет свой язык, взялся писать и в итоге соснул хуйца. Не то чтобы я против, просто это напоминает тех ребят которые пилят свою борду, когда макак очередную хуйню вытворяет, а в итоге получают мертворожденный продукт, о котором в курсе полтора анона и те съебывают с нее.
>>884286 >дизайн не допилил Да что там пилить то? Вынести хероту типа ошибок компиляции при неиспользуемых модуляъ/переменных в опциональщину, подключаемую флагами компилера, и заебись. А дженериков и подождать можно.
>>884288 Да их-то всегда было овердохуя, просто раньше не было прям моды на это у больших и средних компаний, сейчас гугл пилит го, мозила пилит раст, фб пилит ризон (вроде как закончили с хаком), эпл пилит свифт, крэй пилит чапель, у майкрософта с интелом их буквально с десяток, у жетбраинса котлин.
>>882625 (OP) Решил тут вспомнить Go, мне тут как раз давали тестовое задание, которое я сделал за 3 часа вместе с тестами на божественном руби. Ну алгоритм действий я знаю, но язык не особо, наверно уйдет чуть больше времени.
Антош, это пиздец, сделать get и распарсить xml на этом языке какой то ад. На божественном руби я сделал это 2 строками за 15 секунд. Тут же нужно блять создать 2 ебанных структуры чтобы распарсить xml, две структуры, КАРЛ! В самом коде еще нужно делать преобразования типов и желательно обработку ошибок, а не просто _. Просто пиздец, к основной части задания даже не смог приступить от нахлынувшей безысходности.
>>885988 Кстати, почему у Го такая ебанутая обработка ошибок? Спиздили бы try и catch из C++ и дело с концом. Да еще и в принудительном порядке обработка ошибок зачастую.
>>886494 > сделал 2 строками за 15 секунд Создав при этом промежуточный объект с результатом парсинга XML в памяти, потратив на это лишнее вычислительное время и, собственно, лишнюю память. Анмаршалеры в Go пишут всё напрямую в структуры. Эта мелочь не всегда критична, но мне приходилось переписывать на Go сервера, которые инициализировали на каждого клиента огромные JSON-объекты, и с Go это всё удалось ускорить в ~100 раз, по памяти выигрыш был 4-5 раз.
Вообще, то, что ты хочешь структурированный XML парсить без определения структуры, уже многое о тебе говорит. Это ОК, если ты хочешь один раз что-то на коленке быстро написать, но если пишешь что-то серьёзное, то размазывать по всему проекту не работу с нативными объектами, а эти doc.xpath(...).first.attr(...) — не ОК. Кстати, для Go есть готовые либы с таким подходом (например, https://github.com/beevik/etree), но нормальный человек, почувствовав нужду в таком подходе, возьмет Python/Ruby и накидает скрипт на коленке.
> В самом коде еще нужно делать преобразования типов и желательно обработку ошибок Если твой XML составлял не ПТУшник, то таких проблем не возникает. Из-за криворуких документов иногда приходится использовать промежуточные структуры с кастомными анмаршалерами, да.
>>886552 >нормальный человек, почувствовав нужду в таком подходе, возьмет Python/Ruby и накидает скрипт на коленке.
Я вот всю жизнь так делаю (я не бэкэнд разраб, а жалкий админ), но все больше ops тулов пишут на этом языке. Недавно столкнулся с компанией, где все новые тулы golang only.
>>886621 Если их инструменты достаточно сложные, то почему бы и нет?
>>886617 Стандартного if-else достаточно тогда, когда ошибки не возникают. Когда же они возникают, начинается отладка. Стоит упомянуть лишь то, что стектрейс говорит, где был panic, но где был иницализирован error — нет, это уже твоя задача. Я тоже считаю, что подход к обработке ошибок в Go не так уж плох до определённого момента.
>>886617 Программист - ленивая скотина, которую нужно быть по рукам. Программист никогда не будет делать то, что он может не делать. Чтобы игнорировать ошибки в какой-нибудь жабе нужно делать так: "try { func(); } catch e {}", если ты этого не сделаешь, то при первой же возможности рантайм выскажет всё, что он о тебе думает. Чтобы добиться подобного поведения в го нужно делать ничего. Буквально, ничего. Ты просто не пишешь код, и все ошибки игнорируются так же, как это делается с вышеприведённым кодом в жабе. После первой же ошибки состояние программы становиться некорректным, и её поведение в крестостандарте описывалось бы как "undefined behaviour". И вот же что забавно - ты знать не можешь, когда, где и какой мудак поленился написать этот "if else"; то есть потенциально после любого вызова любой не твоей функции состояние программы может быть некорректно, и ты об этом даже никак не узнаешь. Такой вот охуенный язык, такой вот замечательный подход к обработке ошибок. Зато на концепциях сэкономили.
>>886659 Твои аргументы — говно. Даже в самых хуевых либах не видел игнорирования ошибок. Если какие-то дауны теоретически могут что-то там игнорировать, то они сделают это независимо от того, сложно им это игнорировать или легко. Это никак не оправдывает странного подхода Пайка к вопросу, но я не первый раз вижу людей, которые несут хуйню вроде той, что ты несешь.
>>886668 Ошибки не всегда специально игнорируются. В ноде была такая же проблема до недавнего времени. Я охуел от количества варнингов о неотловленных экзепшонов на своем проекте, когда нода начала о них писать. Хотя я считаю себя довольно внимательным погромистом, который не делает хуяк-хуяк
>>886624 Его-то везде достаточно, и проблема не столько в игнорировании ошибок, сколько в том, что обрабатываются они абсолютно одинаково. Вот возникла у тебя ошибка в функции которую не ты писал, но что-то да возвращает причём не факт что этот кусок кода вообще задокументирован - ты же просто в лучшем случае залоггируешь/кинешь панику/сам вернёшь вернёшь ошибку раскрутив руками стек. Вообще всё это можно было сделать просто блоком try...catch в точке входа, но вместо этого у тебя код будет состоять в лучшем случае на половину из if err != nil { panic("sukablyad") } - к этому основная притензия.
>>888582 >>888836 >The ~3ms pause times for OCaml are due to the incremental GC algorithm that OCaml uses for the old generation. (Our main reason for not choosing OCaml was its poor support for multicore parallelism.) Лол, ну так все понятно. Конкретно этот (тривиальный) бенчмарк лучше получился у окамля, потому что он юзает оптимизацию гц. Если бы тест получился сложнее (с чуть более долгоживущим мусором), Go его обошел бы. Это во-первых. А во-вторых, во-вторых, чувак гонял на Go 1.7.3, когда на дворе Go 1.8-beta1, в который завезли новый сборщик, который работает за sub-millisecond время.
Ты бы лучше посмеялся с того, как любимый публикой Haskell полощется в районе 60 мс :D Или джава с ее жалкими >100 мс задержками.
ребята кто знает в чем дело? создал раздел на 8300мб на и отформатировал его в fat32 Хочу задать файл подкачки. Задаю 8192мб Перезагружаю комп а там стоит файл подкачки 4.15гб Пробывал уже по разному. В настройках стоит 8300 но показывает что на диске занято всего 4.15
>>888848 >OCaml uses for the old generation. >Если бы тест получился сложнее (с чуть более долгоживущим мусором) Вся суть итт треда. Хоть кричать я начал ещё на "оптимизации гц".
Что хаскель — язык для развлечения не секрет, тот же окамл юзается в продакшене куда шире (хотя с хаскелляхайпа легко решить наоборот).
О джяве там в комментах отписали, она в тесте без прогрева (он со 160 до 50 роняет) и не тюненый (вообще, как и все остальные – их в отличие от гошного внезапно можно тюнить). >когда на дворе Go 1.8-beta1 Люди в продакшене на 1.5.x только переезжают, ты о чём.
>>884295 У эппла и МС всегда был языки, заточенные под их инфрастуктуру, так исторически сложилось и от этого никуда не деться. Котлин тащемта годнота, джетбрейнс решает проблемы, которые их в яве изрядно заебали. У фейсбука вообще тонны бабла и огромнейшая инфрастуктура. Они деньги вкладывают вообще в весь опенсурс и разработки, которые им упростят поддержку. Уверен там во внутренней кухне разработок еще больше, которые никому не показывают. Но я так, с дивана. >>886659 В либах из стандартной библиотеки ошибки не игнорируются. Если у вас кто-то пишет не по гайдлайнам его проблемы. Я работал как-то над проектом, где нельзя было запушить код в репозиторий, если были варнинги от pep8 и pylint, только допустимая длина строк была 120, ибо мониторы кошерные. Но один хуй, если высирать код, придерживаясь каких-то правил, это сократит и тебе время и другим людям. Я вот зуб даю, что через год ты взглянешь на свой же говнокод и охуеешь от осознания того факто, что его писал ты. >>888582 Когда у меня жрет 10гб сервак мускула на одной ноде, 40 редис, а приложение всего 1, то как-то похуй на гц. С задачами быстро справляется и похуй. Энивей окамл не менее нишевый, чем го, со своими недостатками и преимуществами.
>>888994 >сервак мускула на одной ноде Тогда у тебя всё очень плохо. >Энивей окамл не менее нишевый, чем го И в чём же это заключается? Ну кроме яскозал. >ошибки не игнорируются >>886847 >У эппла и МС всегда был языки, заточенные под их инфрастуктур Да насрать на них, сейчас языки клепать начали вообще все — от производителей железа (крей, интел) до совсем среднячковых компаний (жидбраинс).
>>888848 >Если бы тест получился сложнее (с чуть более долгоживущим мусором), Go его обошел бы Если бы Иван Грозный сына не убил, мы бы сейчас на марсе жили. Ты сделай, а потом посмотрим и сравним. Еслибовать можно долго и безрезультатно. >чувак гонял на Go 1.7.3, когда на дворе Go 1.8-beta1 Илюш, он в статье же и говорит, что в 1.8 марк фазу оптимизировали, а она боттленеком не была. Хочешь доказать превосходство - перепиши бенчмарк под 1.8 и покажи им всем, а пока будь добр сосать молча. >любимый публикой Haskell полощется в районе 60 мс >А вот у вас там в европах в жопы ебуцца! Плевать, что мы в говне по уши, зато у нас пидоров нету! >>888859 Хороший вопрос, как раз для го-треда. В жыр32 размер файла хранится в DWORD'е.
>>888848 >потому что он юзает оптимизацию гц. Ахуеть блять, что ещё за оптимизация GC? Он использует какие-то хаки? Настраивает сборщик для конкретной конфигурации железа?
Нет блять. У него просто лучше алгоритм GC. Какой из этого вывод?
>>889103 Так же делаю, находя баги. Го-маня-мир должен нормально так наткнуться на "айсберг-реальности" и научиться трижды думать, чтобы вестись на маркетинговый хайп (а последние должны научиться делать качественный продукт)
Анон, есть какое-то решение, которое позволяет обходиться без импортов вида "github.com/vasyan1488/yoba-microservice", т.е. без полных путей относительно GOPATH? Очень раздражающая хуйня почему-то.
>>890478 ЗАБИЛ НА ПРОЕКТ НА ПАРУ НЕДЕЛЬ @ ПОНАДОБИЛОСЬ ИСПРАВИТЬ 1 СТРОЧКУ И ПЕРЕСОБРАТЬ @ ВСЁ РАСПИДОРАСИЛО НАХУЙ И НЕ СОБЕРАЕТСЯ @ ПЕРЕПИСЫВАЕШЬ ВСЁ С НОВЫМИ БИБЛИОТЕКАМИ
>>890606 ОТКРЫЛ ДЖАВА ПРОЕКТ 4 ЛЕТНЕЙ ДАВНОСТИ @ ЗАМЕНИЛ СЕРВИС ПО ИНТЕРФЕЙСУ @ СОБРАЛ, ЗАПУСТИЛ, ПРОГНАЛ ТЕСТЫ, ЗАРЕЛИЗИЛ @ ВСЕ РАБОТАЕТ КАК ЧАСЫ, ХОТЯ УЖЕ НЕ ПОМНИШЬ КАК ТАМ ЧТО РАБОТАЕТ ВООБЩЕ
что дает эта асинхроность в го для микросервисов? Ну да http i/o, в бд еще блокировка есть. И все? Да и сам дефолтный http сервер тормазнутый какой-то (есть тесты). При этом же планеровщик дергается же при каждых вызовах функции?
Подумываю, куда перекатиться со сраного Пузона. Гляжу в сторону Го.
Но вот смотрите, пацаны. Одна из главных заявленных фич Го - эффективные зелёные треды. С одной стороны, это звучит так заманчиво, что ради этого можно потерпеть даже дебильную систему типов. Но с другой стороны... так ли эти зелёные треды фундаментальны? Ведь по большому счёту это фича рантайма. Вон, в Rust'е отказались от зелёных тредов, чтобы избавиться от рантайма (теперь они едят кактус futures). Но даже на Rust'е, даже на Си, у большинства приложений уже есть рантайм - ядро ОС. И оно уже реализует вытесняющую конкурентность - обычные треды. Да, они дороже, чем горутины, потому что переключают больше контекста. Но, во-первых, настолько ли дороже, чтобы было критично на масштабах обычных смертных (не Гугла)? А во-вторых, так ли эта дороговизна фундаментальна?
Иными словами, если сейчас я куплюсь на хайп вокруг горутин, не случится ли так, что завтра в Линуксе сделают какие-то супер-легковесные треды вроде Виндовых fiber'ов, с ними подружится компилятор того же Rust'а, и ржавобоги получат сильно конкурентный в/в на нормальном языке, а мне в числе гофербыдла останется подбирать за ними объедки?
>>892663 >Виндовых fiber'ов Я тебе больше скажу: в той же os x и bsd-ях есть GCD, который и есть этот самый рантайм, но с куда большей гибкостью.
В Го вся суть именно в том, что можно делать хуяк-хуяк, от которых компилятор раста или утечки в сях тебе этот хуй оторвут. Работать будет не так быстро, но очень кошерно по сравнению с другими хуяк-хуяк языками.
>>892675 > Я тебе больше скажу: в той же os x и bsd-ях есть GCD, который и есть этот самый рантайм, но с куда большей гибкостью. Во, кстати, да. Я что-то слышал про GCD, но забыл. Спасибо.
> В Го вся суть именно в том, что можно делать хуяк-хуяк, от которых компилятор раста или утечки в сях тебе этот хуй оторвут. Работать будет не так быстро, но очень кошерно по сравнению с другими хуяк-хуяк языками. Прости, не осилил разобрать. Это довод за Го или против? Можешь ещё разок, без слов на ху-?
>>892663 именно так, да и сейчас они нахер не нужны, завезли уже асинхронный веб и i/o вообще с DirectMemory, завезли асинхронную работу БД, и собственно - больше асинхронить то нечего, только избыточная нагрузка на планировщик по каждому чиху (хотя это задача ОСи, которая кстати лучше справляется).
А всякие 100500 миллионов в секунду это развод, так как холостые запросы нахер никому не нужны, натяни бизнес логику и все просядет и нужно будет распределять так и так.
>>892663 Какую кашу нужно иметь, чтобы разменять питоны, руби, даже js, и даже php на го? На эти костыли времен семидесятых годов? Имхо лучше докупить планочку ОЗУ, чем блять страдать в такой параше, с хорошо натаскаными лемингами-евангелистами и их подрожателями
>>892707 > Какую кашу нужно иметь, чтобы разменять питоны, руби, даже js, и даже php на го? На эти костыли времен семидесятых годов? Вот я и хочу понять: горутины - это костыль или неебись достижение прогресса. На костыли менять не хочется. Всё же Питон хоть и говно в известной степени, но работа на нём есть и не самая плохая.
>>892725 >но работа на нём есть и не самая плохая. Очевидно что фрилансерам нет смысла перекатываться. Для тех, кто мутит модный стартапчик, кого заставляют писать на Go, кто делает какие-то свои прожекты (как я). А такому как ты, ремесленнику, оно не надо, не забивай себе голову.
>>892725 > асинхронный веб и i/o вообще с DirectMemory Общая память-буфер между сетевой/файловой хуйней ввода/вывода, минуя 100500 промежуточных буферов, для мгновенного обмена данными, при этом не аллоцируя лишний раз в хип (java)
Асинхронщина в контексте веба нужна только для http запрос-ответа и бд - и все, поэтому завезли всякие тулзовины для других языков (фьючеры, async/await), и будут всегда для них пилить подобные фичи в API операционки (потому что все языки важнее, а го там и сам справится, наверно). И 100500 миллионов горутин нахуй не нужны так как ты всегда ограничен своими ядрами на проце (если конечно у тебя там не ЦОД соразмерный с деревню).
Мое ИМХО - на Го нереально писать большой и сложный проект, он по-моему создавался для скрипто-тулзовин
>>892730 Чё-то ты не то прочитал в моём посте. Я как раз о том, что перекатываться хочу не за едой (еда пока есть), а за ПРОФЕССИОНАЛЬНЫМ РАЗВИТИЕМ. Поэтому я присматриваюсь, а не клюю сразу на удочку гугла. И наличие успеха прямо сейчас (а Го, несомненно, уже успешный язык) - веский, но не доминирующий фактор. да, Хаскель уже освоил
>>892741 И да, бойтесь этого языка, писать на нем большой код боль, а евангелисты там хорошо раскручивают его, дойдет и до ваших начальников и будут вас, под якобы-экономию железа, переводить на го-проекты (хотя потом заплатят за это другую цену, но это будет потом)
>>892741 > Асинхронщина в контексте веба нужна только для http запрос-ответа и бд - и все Асинхронищина нужна для запрос-ответа клиента, БД, кэшей, очереди задач и ещё дохуиллиона сторонних сервисов, в которые ты ходишь по сети. То есть, для всего сетевого ввода/вывода (а при большой нагрузке - и для дискового тоже).
А нужна она потому, что блокирующий в/в на тред-пуле - это минное поле, которое взрывается, как только любой из этих сторонних сервисов начинает тормозить по любой причине (например, порвался канал). Таймауты не помогут, их невозможно так подобрать.
Альтернатива - отводить тред на каждый запрос (или хотя бы уметь это делать при исчерпании пула). Но говорят, что это гроб гроб тормоза контекст-свитчинг. Я вот и пытаюсь понять, где тут правда.
>>892751 >Но говорят, что это гроб гроб тормоза контекст-свитчинг Для того и делают гринтреды с шедулерами. Го, собственно, отличается тем что позволяет делать хуяк-хуяк-канкаренси, что ты ищещь-то?
>>892754 А какие варианты яве-то? Го, у которого кучи багов в каждом новом релизе? У которого не то что даже гц нельзя настроить, а проект нельзя создать где хочешь — потому что НИНУЖНА?
Это игрушка для утилиток вроде докера (ну, докер — это их сборник). Не больше.
>>892758 Я ищу понимания, насколько это уникальная фича Го. Если это невротъебенная космическая технология, то возможно ради неё стоит запрыгнуть на hype train. А если завтра то же самое может появиться в $another_server_language или прямо в Линуксе, то я подожду.
>>892761 > А какие варианты яве-то? Множество масштабных и серьёзных систем пишется на C++. На Python, к сожалению, тоже дофига. Бывают на Эрланге и даже на C. Это даже если вместе с Явой исключить всю её экосистему (Scala) и .NET заодно (C#).
>>892774 > Тут тебе 200 раз написали — аналогов для хуякхуяк нет Блять, ты можешь по-русски написать? У тебя табу какое-то или что? Слово рвётся из груди, но не как не может вырваться! Выпусти же его, скажи, какая идея сокрыта за словом "хуякхуяк"!
> Не прыгай из области в область, мы сейчас говорили про сурьёзный бизнес в целом и конкретно нишу явы, а не про гугл и фейсбук. Лол что. Мы говорили о профессиональном развитии. Про бизнес и яву >>892744 стал заливать.
На всякий случай уточню: профессиональное развитие - это "клепать менее говно", а не "получать больше денег за больше говна".
>>892781 Настолько уникальная, что супербыстрый го в бенчмрках веб фреймворков от techempower всасывает сочной хуятины у явы и прочих? >>892778 Ахуеть порвало маню-фанатика. Стандартные оправдания хипстеров, придумай что нибудь новое.
>>892788 я как бы и сказал что зеленные треды хуйня, только для узких мест, в остальном только просадку даст (из-за того что планировщик на каждый вызов функции дергается).
>>892707 > с хорошо натаскаными лемингами-евангелистами и их подрожателями Это ты сейчас про джавадебилов? Только они тут зачем-то пытаются доказать что го сосет и ненужен.
>>892774 >аналогов для хуякхуяк нет В винде есть фиберы, в ЛИНАКСЕ тоже что-то такое есть, как выше сказали,- напиши свой планировщик, и будет тебе хуякхуяк в любом языке.
>>892910 >напиши свой планировщик Вот именно это и делает го языком пригодным для хуякхуяк. В других языках пердолить системный апи/писать свою библиотеку и тд — в то время как в го накатил компилятор и пилишь говнокод.
>>892928 Пишется один раз, а потом используется из других языков. Там, где макросы есть, можно даже сахарок поверх напердолить, чтобы почти как в го было. И без всяких привкусов. А так получается, что го - для неосиляторов.
>>892898 джава-господам срать, даже шарп отсосал у джавы по рынку, а вы этоу помойку противопоставляете, вы вероятно путаете с андройд-уебками, но это же бывшие скрипт-киди.
>>893581 Так куда переходить-то? На нём только хипстеры и пишут. Тут вон уже отпиысывали - дырявые беты в проде накатывают, что как бы намекает на аудиторию. Пока ничего нового и хайпового не запилят - будут кушать что есть.
>>893581 В моём наполовину продуктовом бодишопе запилили продукт на go бывшие пхпшники. Говорят что из-за того что менторы рекомендуют не юзать фреймворки, а обходиться только стандартной либой - приходиться писать свои велосипеды на каждый чих. Не понимаю то им мешает забить на менторов и заюзать какой нибудь revel/iris/etc, но из-за велосипедострония решили в будущем отказаться на новых проектах.
>>893774 > из-за того что менторы рекомендуют не юзать фреймворки, а обходиться только стандартной либой - приходиться писать свои велосипеды на каждый чих
Вся суть.
Недавно разговаривал с командой, которая делает на Го очень нехилый продуктовый комплекс. Они мне тоже: только стдлиб, только хардкор. Почему? Ну тип чтоб не было как в JS с left-pad)))
>>893901 Поражает их неспособность отличить востребованный опенсорс, у которого есть комьюнити и оно поддерживает код, от васянских поделок, которые были написаны из-за необходимости костыля и выложены в общий доступ что бы потешить ЧСВ. Вдвойне поражает что это их решение, а не навязанное кем-то сверху, начальством или заказчиком. Тут прямо напрашиваются шутки про пхп и go, лол.
>>893913 Дополнительный лулз что на фронтенде там angular2, т.к. модно стильно молодёжно. А это в отличие от топорного go, напротив - переусложнённый фреймворк с неебическим оверхедом (~3МБ для hello world это вам не шутки) и отсутствием вообще какого то "тру" пути. От чего приходиться вместо написания кода - постоянно бороться с наркоманскими идеями разрабов сего чуда.
>>893987 У меня еще паранойя, судя по тому, что на хабре давно стухла вся аудитория и яркое общение редкость, не кажется ли тебе, дотошный анон, что большая часть вопросов там от сотрудников и они сами же себя наплюсовывают?
>>894042 Они же написали, что тестов почти нет и что переписывали на go сишники, где юнит-тестирование и какое-нибудь tdd не самое веселое занятие. И да, тесты в большинстве случаев нахуй не нужны. >>893918 > модно стильно молодёжно Нет, просто ангулар решает задачи. Только и всего, а ты и дальше продолжай думать, что это тяжело и вообще не нужно. Вторая версия заоптимизирвоана с накинутой поверх типизацией в виде тайпскрипта. Практически единственный хороший подход в вебе, если не учитывать слегка сырой elm.
>>894076 >ангулар решает задачи Да, но делает это через ненужный оверхед. React, например, решает те же задачи и намного элегантнее. Да это не фреймворк, но у реакта есть своя экосистема в которой есть всё что необходимо.
Я знаю почему не пишут фреймворки, го настолько бестолковый и неуклюжий, что если писать какую-то архитектуру, придется писать на псевдо-ООП ( еще и с геттерами и сеттерами) и суслики бояться что получиться очередная недо-джава (как и в случае с пхп)
Объясните за if err!=nil { } Это че, мне после каждого вызова надо будет описывать блок обработки ошибки вместо самой логики. То есть логику придется размазывать по коду между блоками обработки ошибки?
>>894862 ну то есть проверку на err!=nil вынес в handleErr. Но handleErr получается тоже должна возвращать типо ошибка/не ошибка, и ее результат также получается нужно проверять и либо продолжать выполнение логики либо возврать из функции делать? Ну дак в обертке-то еще и контекст потерян, и если мне там кучу ресов надо освобождать например, это мне придется в handleErr все хендлы (или что там в Go) передавать?
>>894915 лично у меня фрустрация не от обработки ошибок, а от отсутствия нормального паттерн-матчинга и алгебраических типов. всю хуйню простил бы за эти две вещи, а так да, goрит
кстати, раз такая уже публика, то почему никто ещё не запилил язык компилируемый в go?
>>894923 их можно просто реализовать как методы, эта вся хуйня уже проходилась в прошлом с js. в сравнении с nodejs го выглядит няшнее в перфомансе, но деревянный синтаксис так и просится навернуть сверху какой нибудь сахар
>>894922 не могу нагуглить, Один гугл воспринимает либо как транслитерацию русского "один"(одна штука) либо как либо для документации. с have всё ещё более плачевно. ясен пень что golang have something
>>894889 >Но handleErr получается тоже должна возвращать типо ошибка/не ошибка, и ее результат также получается нужно проверять и либо продолжать выполнение логики либо возврать из функции делать
Нет, зачем так? Есть три варианта: 1) игноришь ошибку 2)обрабатываешь её здесь и сейчас и забиваешь на нее 3) делаешь в данном месте возврат в вышестоящую функцию
>>895032 Самое смешное, что оригинальный плагин собираются ограничить ультимейт версией идеи и др. её платными ответвлениями. Опенсорс, он такой.
Хотя у кого там бомбить-то будет — поищи вон на реддите обсуждения iris-а. Это такой веб-фреймворк, автор которого отклонял все коммиты и коммитил от своего лица. И этим до сих пор кто-то пользуется.
Как оформить платформу, напрямую не приносящую доход, но позволяющую на себе разместить то, что доход приносит? Если сделать публично - своруют, если приватно - заебет все контролировать.
Пока дошел до стратегии: отдать публичную часть корки попенсорцу, под утехи и забавы, а приватную анально контролировать, чтоб не утекло. И аффтору хорошо: пилит только свое. И попенсорцу: на платформе можно много чего козырного запилить, да и если аффтор-мудаг забьет хуй и полностью удалит приватный сервис с платформы, попенсорц сможет запилить более бледный, но вполне функциональный аналог, тем самым продолжив свое трудное, полное боли, попенсорц-существование. Такой вот праздник швабодки. Годно?
>>895156 Сколько можно повторять, конченные блять. Язык это нечто большее чем система типов и набор грамматик. Язык это еще рантайм, язык это еще тулинг, язык это еще деплой и т.д. и т.д. Мне Go дает быстрые программы, широкую экосистему (пакетов много, легко прикрутить), простой деплой с кросс-компиляцией и хардверную конкуррентность. Это очень охуенный инструмент если ты знаешь что с ним делать.
>>895162 Пишу я на %ЯП-нейм% и мне всё в нем нравится, мне не нужно себя через силу заставлять использовать его, при этом он мощный и на нём можно писать как всякие мелочи так и серьёзные приложения. Порой даже думаю, как хорошо, что я выбрал именно его в своё время. Довольно часто можно слышать фразу, особенно здесь, что язык-лишь средство, а не объект поклонения. Я согласен, но приятно же, когда язык одновременно прагматичен и написание кода на нём доставляет удовольствие?
>>895156 заставили, начальство как лохи купились на выигрыш производительности, а теперь логти грызут и на нас орут, что скорость разработке просела к хуям (у уже молчу про качество, так как наши велосипеды глючные, что сторонние, да блять сам язык глючный)
>>895021 Горят в основном javaдауны, типо тебя, которые приходят срать в тред. Потому что ничего кроме Huita<DrugayaHuitaInterface> huita = new Huita<DrugayaHuitaInterface>>(); не можете распарсить.
>>895156 Нравится. Джава оверхед для моих задач, нода говно, на пайтоне, временами рубях, пишу на работе. Функциональные идеи не нравятся, а лисп, точнее slime emacs'a, не осилил.
Замечательный кандидат, сказавший, что Java он не знает и можно ли сделать задание на Go? Я сказал в том смысле что «хрен с ним, давайте на Go», на что получил ответ — «отлично, Go я тоже не знаю, вот выучу и сделаю»! Скажу честно — я горжусь знакомством (пусть и шапочным) с таким упорным человеком. https://habrahabr.ru/company/ecwid/blog/315228/
Гоферы, почему вы такие глупые сектанты? Это же жесть))
>>895289 Почему ты называешь гофером человека, который не знает Go? Человек из твоей цитаты не гофер и не джавер, а просто обычный еблан. Гоферы и Go тут не при чём.
>>895275 Таким даунятам как ты котлин завизли (и скалу), а ты все порашу семедесятых готов жрешь, без обработок ошибок, без нормальных регулярок, без пропертей (лол голые структуры) и глючнее чем пхп и js (хотя те были стандартом де-факто)
>>895295 > порашу семедесятых Идеи Оберона, и они хороши. Не нравится парадигма языка - не используй его, все просто.
> без обработок ошибок Я года 4 писал на сишке и не знаю, что это такое. А тут даже defer и recovery есть. > без нормальных регулярок Там, где мне нужны серьёзные регулярки, лучше perl скрипт накидаю. Простые регулярки в го хороши.
>>895292 Потому что ты глупый суслик и не видишь тут очередной вкидон месседжа о том, "вот я возьму Го за пару дней и стану про-программистом на нем". Просто он сказал это в таком блядь идиотском контексте, что вызывает только тупое умиление от маркетинговых стереотипов.
Обратите внимание, как го-сектанты выравнивали или пытались выравнивать "ненужные" комменты (вероятно кооперируясь в их закрытом сектанском чатике на слаке)
>>895523 Конечно, в нормальных языках исключения имеют дерево наследования, скажем ты можешь прописать IOException вместо всех ошибок данного типа. В говне тебе придется ручками все ловить, лол
А так же не забываем, что в будущем придется еще ручками стектрейс прописывать, так как рантайм ошибка "йоба-фукнции" не о чем не говорит, если вызывается тысяча раз из тысячи разных мест.
И да, будут тысячи либ улучшающие работу с ошибками, как и с логгерами сейчас и будет сотня тысяч несовместимостей.
Запомни уже Анош, Го не подходит для реального приложения, только хуяк-хуяк-скрипты.
>>895688 Нету, как и всего остального, потому что клали болт на синтаксис вообще. Но радует не это, радует то, что маркетологи + евангелисты настолько качественно выполнили свою работу, что суслики даже отстаивают многие решения (точнее отсутствие вообще каких-то решений).
>>895692 То что некую (я бы сказал большую, но не всю) аудиторию программистов постоянно разводят - это давно не секрет, но больше лулзов приносит сочетание этой тупости с их высокомерием. Не является ли маскот-дебил - этакой скрытой шуткой над ними? Есть тут ZOG эксперты, которые забыли принять таблетку?
>>895536 омг. ещё один адепт Exception Driven Development. хочу прочитать файл на диске, а его нет - нужно что бы случилось выпадение ошибки которое непременно нужно ловить, иначе вся приложуха упадёт. вот где-то здесь ахуеть можно. а если нужно записать в файл но не хватает прав? конечно нужно снова что бы случилось выпадение ошибки. однажды ошибка выпадет когда ты будешь ехать в карете и её будет наматывать на колесо, пока у тебя глаза не втянуться в череп, как у улитки.
>>895703 Я не то анон, я просто хотел обосрать сервер. Но соглашусь, только крайне поверхностно можно сравнить го с си, но не забывай что сусклики совсем не интеллектуалы.
>>895705 зачем вообще сравнивать гоу с си и оправдывать отсутствие фичи Х в гоу тем что её не было в си? я такую хуйню если кому расскажу - мне же не поверят!
>>895839 лол. друзей нет, но есть сотрудники на работе, с которыми мы иногда ржем с найденных нами странностей в той или иной сфере айти. вот гоу достаточно богатый источник лулзов
>>895912 Я фанбой и еще здесь. Мне пичот только от ошибок и немного от отсутствия женериков, но женерики таки ненужны их слишком сложно понимать потом, а у меня айкью и так около 80, а ошибки я просто ИГНОРИРУЮ.
>>895703 > в си не было корутин и каналов из коробки > в си не было http сервера из коробки И тут Остапа понесло. 1. Когда пилили С, то идеи асинхронного программирования были только в теории. А go лепили чтобы избавиться от костылей в специфичных нуждах компании. 2. В С из библиотек вообще нихуя нет из коробки кроме libc.
Вспомнил что у меня есть аккаунт в сектантский чате (теперь уже почему-то закрытом чате, лол), буду по мере лени кидать лулзы сусликов.
И так, сегодняшний пациент утверждает почему дебаггер не нужен. Го не только лучший язык тысячелетия (того тысячелетия), так взяв его, вы перестанете писать баги! Именно поэтому дебаггер это атавизм старых глупых языков.
>>896001 Он слишком узкоспециализированный и начал набирать актуальность только в последние 5 лет про то, что его допилили до вменяемого состояния (когда можно просто взять и заюзать а не фиксить баги в нём самом и допиливать под свои нужды) как раз в последние несколько лет промолчим, лол. >>895991 Да нет.
Эрланг - из тех инструментов, что медленно но верно набирают обороты по большому счёту потому, что немного обогнал своё время, и имеет потенциал только расти (потому что аналоги тупо не поспевают за упущенным временем и все говно).
Го же - дельфи1 в 1. Простой язык, киллерфича которого в текущий промежуток времени является мейнстримовой. Но суют и сувать будут везде. Собственно, на этом всё, дальше сами знаете.
>>896023 лол, горутины киллер фича? ну серьезно для чего ты стал их использовать?? Про асинхронный пиздеж не надо, он нужен только в блокирующий i/o,а это редкое явление по процессорному времени, а вот дергать планировщик каждый вызов функции это нормально (причем ОС тоже делает это)?
>>896027 Да, это киллер фича позволяющая утилизировать все лишние ядра безо всякого пердолинга. Как и в дэльфи в своё время с гуем - может и будет притормаживать, зато легко и просто.
Еще один пациентАноним17/12/16 Суб 19:28:54#245№896038
>>896033 Еще раз, выигрыш будет только во время блокирующий операций (которые уже юзают реже), а в остальном твой поток и так в максимум отработает (но не в ГО, так как там будет шедулер на каждый вызов функции дергаться, представь какая просадка)
>>896038 Вероятно это про функцию которая переводить строку в int - Atoi() - охуенная функция, а то блять ParseInt() пиздец какое длинное и запутанное имя.
>>896038 Вообще чат там нормальный был раньше, пока ебанутая Леночка не забанила 255-го. Я и сам съебал оттуда после его бана, пусть варятся в своих стартапах сами, дауны.
>>896078 её по-моему завезли, когда упрекнули что голанд-шоу как сосисочная вечеринка, а все норм подкасты пищалку имеют. Но все равно от нее толку ноль, она там почти молчит всегда. Правда помню подкаст, она проговорилась про отчет (она ляпнула типа "как было бы удобно если бы ты сделал так, было бы удобно отчет составлять").
У меня сразу же включился ZOG - отчет кому??? Некой доброй компании?
>>896081 что касается чатика, так там иногда такую херню несут, и так слащаво себя ведут, что по ощущениям как минимум 95% участников там даже не программисты, а как бы просто играются в Го и либы (есть такие полудурки)
>>896067 Да не был он нормальным ещё задолго до неё. Вспомните как там забанили илюшу за "говно" и устраивали охоту на ведьм (если кто найдёт на архиваче/в гугле стори будет) или как там дивана0 заставили расплакаться и убежать.
Это изначально сборник пхпдебилов традающих регулярными истериями.
>>896090 Ну хз, я там туда пришел за помощью по го, встретил 255-го, остался ради общения. Человек, который не только в го шарит, но и вообще, и в общем. А я как раз пилил одну вундервафлю, а у него как раз был интерес в такой вундервафле. Должно было срастись, но эта тупая пиздень взяла и дропнула его. Я не долго думая самодропнулся. Так что я не очень в курсе как там было пару лет назад. Но что меня взбесило с самого начала, тоже мод, щас не вспомню ник, с самого начала доебался мол хуль я не самосдеанонился на входе? Я охуел от такого и показал ему фейкоакк в вконтаче. И это, кстати, потом не только ко мне такие предъявы были. Я пытался возмущаться, это же интернет, ебана! Но там набегали из близких к моче и затыкали рот, мол здесь такой положняк. При том что там сидит Акулович, разраб вконтача, то есть сдеанонить например меня, не составит проблем. Короче, я оттуда съебал и на то были причины. Сидеть ли там вам - решайте сами.
>>896026 >отладчик нинужин Но во всяких хаскилях/окамлах он и правда не нужен. Система типов поймает кучу ошибок, а те, которые не поймает, можно вручную найти через ручную редукцию функций. Вот автоматический редуцилятор бы не помешал, а отладчик нинужен.
>>896102 Приходишь такой в сообщество, в обычное техническое сообщество, а тебя к стенке ставят и разъясняют что ты хуй и ты нам должен... (может еще ксерокопию паспорта?) Я бы прихуел от такого гостеприимства. Пиздец они больные уебаны.
>>896109 А еще желательно не называться никнеймами и на аватарку фоточку свою ставить. Реально там не так все просто, вот выше параноик-кун тоже заметил. Но я не выкупаю в чем суть, а в ZOG не верю.
а этот хуй с радио-т, как он поносом поливал го и стебался, а потом вдруг резко прозрел, даже какую-то статью написал и по-моему начал активно го в новости включать.
И вот в статье рассказывает какой го-шикарный и понятный язык, типа открыл код и сразу все прочел и вспомнил. Я через полгода открыл го-код я охуел от процедурного мусора.
>>896221 Гуглозог ему на клык лапу дал, не иначе. Я прямо предвижу, как через несколько лет все вдруг прозреют и будут переписывать свою веб-парашу на новый модный язык, а Го будут хаять. Как с руби, примерно, произошло.
>>896258 Язык уже в стагнации, ему же около семи лет? Большого бума на рынке вакансий не произошло, тру-стори по переходу с языка X на язык Go были настолько наивными и поверхностными, что вызывали только бурление говн и отвращения. Тем более специальные холиварные сравнения языков и того что го лучше их, вызывали больше ненависти, чем попытку черного пиара.
Сейчас статьи выходят намного реже по сравнению с 2015 годом (неожиданно так). Сам язык по дизайну не развивается, хотя я и знакомые ожидали, что его доведут до вменяемого состояния, с обратной совместимостью (раз заморозили релиз). Да и вообще он выглядел как некий фундамент, а потом типа посыпят сахарком. Но вероятно написать статью о "ненужно" проще, чем добавить что-то в код.
Библиотеки (субъективно) выглядят как обгрызки и вообще тысячи их и все равно придется писать свое и порой в короткое время, с ужасным дизайном.
Что касается хуяк-хуяк веба, то тут важнее готовые решения и динамические языки - в общем чтобы быстро написалось и проверенно работало. Го ничего не дает, кроме экономии на железке, но разработка и время до сих пор в разы дороже железок.
Горутины, ну не так круты и нужны как казалось. Да и по перформансу мы и не увидели чуда, серьезно, стандартный го-сервер один из самых медленных асинхронных серверов.
Мое большое имхо в том, что язык просто пытаются вытянуть, подняли до какого уровня и все, он повис.
Еще я думаю, что внутри компании много кода написано и им не очень как бы хочется вносить новый синтаксис, то есть все устаревает (алиасы вот только хотели, но хомяки что-то в стойку встали), поэтому гораздо проще евангелистов заставить проехаться по ушам хомякам, что мол так и надо, так и правильно (я уверен обработают и по алиасам так же, через несколько месяцев суслики уже будут топить что это норма и вообще не портит сопровождение кода).
Посоны, а вы ставите перед гошным сервером апач или нгинкс? Вот у меня есть сервис на го, он должен крутится в торе. Запускать от рута мне чет не хочется, впрочем как и ебаться с конфигами апача. Как сделать лучше?
>>896396 ндижнкс же, причём всегда если у тебя только что-то на сам апач завязано. тогда апач тоже за нждниском поставить. странные у тебя вопросы какие-то
>>896603 проигрываю с этого долбаеба, боиться каких-то хакеров, потратил время на прогон запросов, потратил время чтобы написать сюда, но блять не может прочитать доку где этот момент обговорен.
Ты откуда такой способный? Впрочем вы там все такие.
>>896606 лол. а что если это всё некая теория заговора? все эти абсурдные советы менторским тоном, идиотский синтаксис и прочее. что если это всё создано что бы отсеять адекватных людей способных мыслить самостоятельно и вывести особую касту гоферов?
предлагаю среди таких ньюфагов форсить идею что если прочитать исходники компилятора гоу, то можно найти флаг который переключает его в режим которым пользуется сам пайк. но подробно не говорить что это даст
>>896716 не слушай тех анонов. nginx в реальных проектах чаще всего не просто проксирует, а разруливает ещё много чего. просто так ставить его конечно нахуй не нужно. это в принципе касается вообще всего - не делай чего-то, если ты не понимаешь зачем ты это делаешь. вот зачем ты на go пишешь?
>>896778 кому нам, лол? я недавно вкатился в тред, почитал и сделал такой вывод. дарт не выстрелил так как на практике не даёт ничего что не дал typescript, в то же время имеет неебовый оверхед и рантайм с блекджеком и шлюхами. веб разработчики просто продолжили дрочить свои трансплитеры
>самая лучшая поддержка строк из всех >на деле просто поток необработанных байт
>ошибки это значения! >на деле лень было реализовывать что-то удобное в рантайме и оставили как есть (то есть - ничего)
>дженерики ненужны >но чтобы совсем не наглеть сделали типизацию хотя бы в слайсах и мапах (тут оказались нужны)
>язык легко читается и очень прост >без явной подсветки хер поймешь в коде что ты сейчас передаешь в функцию пакет.переменная, пакет.функция, переменная.поле_структуры...
>компилируемый язык, статическая типизация >большая часть ошибок увидишь только в рантайме и если повезет (которые можно было еще на момент компиляции отловить)
>быстрая компиляция, почти как в скриптовых языках. >в мечтах (примечание, говорят было шустро в 1.0, в общем верните мне мой 2012...)
>код элегантен. > 3 строчки вызова API и тут же 9 строк if err != nil
> interface{} проверить на nil? так никто не делает! НЕНУЖНО! > правильно, пускай где-то завалиться в коде, когда ты выполнишь побочные действия над данными.
>>896798 лол, хули ты ко мне приебался, я сам могу тебе ещё больше расписать о goвне, приправив фрустрациями с поля боя. просто на дарте докер не написали в своё время, а хули ты хотел? дарт не нужен, а гоу менеджеры друг другу продают забивая хуй на касту взаимозаменяемых гоферов
Анон был прав, уже написали пару статей о том, почему алиасы это нужно и почему ты обязан в них верить. В общем осталось за малым, за евангелистами, и суслик будет покладист в этом вопросе.
>>895699 Да нет же, в main() сразу хуяришь в подгузник всю приложуху, и похуй на ошибки. Подумаешь, файлик открыл, а его нет - это ошибка разве? Прав на запись не хватило? ДАЛААААДНО, ПИЗДИШЬ ВЕДЬ, ПАЛЮБАС!!! Короче, я хуярю дальше, а ты там сам права ищи, пидор ебаный. Мне лучше знать, есть тут права или файлик, или нет.
А почему никто не ноет что компилятор агрится на одинарную кавычку >println('xyu') Я считаю это адовым пиздецом и переусложненным ненужно. Потому что приходится постоянно тянуть мизинец к шифту, что не есть удобство.
>>897417 Я использую правый шифт, потому-что левый размером с литеральную клавишу. Бэктики дальше шифта, да еще и слева. Но это да, вопросы к клавиатуре. Но все равно, сделойте чтоб одинарная и двойная кавычка были равносильны.
А вот кстати да, может кто-то задумывался форкнуть и сделать свой конпилятор, с генериками и нормальными кавычками? И очень ли там все сложно устроено?
>>897462 Выше вкидывали уже. Но это мёртворождённые языки. Проще взять ЯП, который точно будет развиваться и поддерживаться, чем брать вторичное да ещё и от вторичного языка.
>>897462 В кавычках суть в том, что одни — символ, вторые — строка. Это же типа строгий статический язык у которого всё кастуется к и из интерфейсов, и юнит тесты в самом компиляторе из коробки — лол.
>>897736 ретроговно на котором привык писать анон, который рассуждает о "нормальности".
как сказал анон выше про интерфейсы, а ещё забыл упомянуть про то что строки в golang в utf8 и смысл отличия одинарной кавычки от двойной пропадает вообще. но лично меня эта особенность уже не так напрягала после паблик экспортов с имён только с Большой буквы. это пиздец, зачем!?
Ебать-копать, я щас орнул. В гошном коде > base_url = "https://localhost:5000/btc" > resp, err := http.Get(base_url) ... И, собственно, сам сервис, который написан на питоне. Дебаг в консольке на скрине. Если что, там третий питон.
>>897739 Дебил, чтоле? У текстового сервиса крипту спрашиваешь, убери из схемы урла секуре-признак и попробуй снова. Если будет саем шиит, обязательно орну вместе с тобой
>>897772 Да, где-то была отсылка к его словам, что многое уже готово в том или ином виде, но из-за обратной совместимости никто не знает как это запилить до версии 2.0, поэтому они просто не показывают этот функционал. Но если пересобрать компилятор go в gogcc с какими-то там флаги, то можно увидеть go-next и даже писать на нём.
Ребята, а зачем пакаджи завязаны на фолдерах? Я до сих пор не могу определиться, как правильно структурировать код, я привык обычно feature first подход, но это иногда приводит к конфликтам импортов и борода получается. Я так смотрю многие люди вообще не заморачиваются и хуячат в корень сотку файлов в мейн пак. Наверное оно и удобно, особенно учитывая что перемещаешься по проекту через поиск файлов в ИДЕ, но мне как-то непривычно без фолдеров, сабфолдеров, сабсабфолдеров.
>>898045 Столкнулся с этим в первый день работы Го, был конечно удивлен, так как объясняли что зависимость определяется на уровне одного файла (а не стектрейса где-то в глубине, лол).
Как решение. Надо просто поток исполнение (еще называет статичные контекст) отделить от библиотечного контекста (то что вызываемо, многоразовое).
Но тут две проблемы. Ты не можешь группировать пакеты по предметной области (что ввергает в шок вменяемых программистов). Вторая, в идеале (чтобы в проекте с миллионом функций не попасть впросак), вызывающий функции пакет, никогда не должен иметь ниже по уровню вызываемые из вне функции. Иначе рано или поздно произойдет цикличный импорт на уровне пакетов (именно пакетов, а не зацикливание функций. Этакая рекурсия пакетов, глазами гоферов).
Что касается комьюните, они или не пишут больших проектов или рефлексируют помещая все и вся в один пакет. Я даже не стал спрашивать, они то в ответах на конкретный дизайн отвечают как ебанутые фанатики, а в вопросах дизайна проектах и абстракций вообще будут хуйню нести (ну то есть они проблемы даже не обсуждают, это закрытая тема в секте).
>>895523 Ладно, педрила, уговорил. Вот код func qwe (...string) ([]byte, error){ switch { case string(body) == "Not paid":return nil, errors.New("Not paid") case len(string(body)) == 32: return body, nil default:return nil, errors.New("Unknown error") } }
Теперь ты мне предлагаешь делать типа такого
zalupa, err := qwe("asd") if err != nil { switch err{ case "Not paid":println("Goni bablo, ueba!") case "Unknown error": println("Che tvorish, pizdets!") }} Так штоли? Я бы тебе еблет разбил, если бы увидел что ты такое в продакшон толкаешь, говноед.
>>898084 switch err.Error() { case "Not paid": fmt.Println("KUUUUUUUUUUUUPIIIIIIII") case "Unknown error": fmt.Println("HZ") } Все верно написано, как и задумано.
>>898102 Ебанашка, если следовать как ты говоришь, то код на примерно на 85% будет состоять из обработки возможных ошибок. Это не наш путь хотя бы потому, что что в каждую батарейку придется зарываться. Ты, для начала, попробуй case'нуть все ошибки из стандартной библиотеки, потом уже будешь толстить на сосачике, умник хуев.
>>898061 что не так? Если функция пакета А вызывает функцию пакета B, та вызывает функцию пакета С, в которой идет вызов чистой функции из A - это будет ошибкой.
Это (если в контексте с++ или джава) вы бы вызвали статическую функцию вышестоящего класса и вас бы за это отругал компилятор.
>>898121 >>898123 >вы бы вызвали статическую функцию вышестоящего класса и вас бы за это отругал компилятор. поправка - вышестоящий класс (пакет) но вызов метода даже другого класса/объекта
>>898121 > Если функция пакета А вызывает функцию пакета B, та вызывает функцию пакета С, в которой идет вызов чистой функции из A - это будет ошибкой. Естественно, ошибкой говнокодера.
сводки из закрытой сектыАноним21/12/16 Срд 19:38:59#377№898301
>>898294 В каком месте? Я придумал для это термин - пакетная рекурсия говна Ведь компилятор го - не может исключить пакет которые уже загружен в цепочке пакетов, даже у php макак есть include_once.
сводки из закрытой сектыАноним21/12/16 Срд 19:55:17#379№898318
>>898318 Я тут поясню, а то мало ли тут какие специалисты. Нет бы добавить один if с проверкой на существование файла (и последующей передаче управлению FileServer или взамен ответу 403) - гофер, берет и натягивает целый сервер к своему серверу!
Блять, ну что за скрипто-пхп-бараны, взять язык который из коробки дает все что нужно и все равно натягивать стороннее ПО, еще блять мемкэш возьмите, вы же можете.
Вот так и живем, с одной стороны фанатики, у которых мозгов хватает только найти либу на гите, с другой скрипачи, которые только что слезли со своих банановых деревьев.
Ты уж определись, хочешь ли ты ловить ошибки или нет. >>898068 вот как работают с ошибками в Го type MyError struct { msg string } func (e MyError) Error() string { return e.msg }
func DoStuff() error { ... return MyError{"Whoops"} } This allows you to check error types:
if _, ok := err.(MyError); ok { // Handle MyError } else { // Handle all other error types }
>>898442 >Ты уж определись, хочешь ли ты ловить ошибки или нет. Они и ловятся (уровнем выше, в общем это unchecked исключения, скажем в kotlin, java, в шарпах, плюсах... во всех других языках), просто в нормальном мире программирования - обработка ошибок не является частью контекста исполнения и обрабатывается отдельно (скажем в catch блоках и не обязательно в том же месте). И причина проста, наличие ошибки уже говорит об "другом" поведении для текущего модуля и в большинстве случаев работу модуля нужно прервать (и скорее всего решается это где-то уровнем выше в логике программы).
Да и в том примере проще в catch прописать какой-то общий IOException один раз, чем три раза дергать if != nill
То есть, ошибок либо нет (и это нормальное поведение), либо они есть и это исключительная ситуация, которая обрабатывается отдельно (и именно поэтому, вместо розового пони мира ошбики это значения мы видим реальное if != nil).
>>898509 ...и да, ошибки должны быть типизированы уже на уровне стандартной библиотеки и вообще предоставлять что-то кроме как обычную строку. Текущая модель ошибок подходить чтобы записать в логер и все, хотя ошибки это у нас значения (правда какие непонятно).
Вообще если по честноку, вам вообще никакое API для ошибок не завезли и отъебались только статьей (и евангелистами)
>>898510 я не гофер, но ты тоже мудак. идите нахуй со своими эксепшенами. стек вываливать наружу нужно только в пиздец каких ситуациях, которые и предвидеть то особо не возможно. пока у тебя есть эксепшены - у тебя есть тормоза и оверхед, не говоря о том что это явные признаки плохого кода. код должен быть однозначен, даже таком имеративном goвне. ветвления в коде из-за внешних факторов - это шизофрения
>>898515 > стек вываливать наружу нужно только в пиздец каких ситуациях
ПИШЕШЬ ЙОБА-ФУНКЦИЮ @ ЙОБА-ФУНКЦИИ ВЫЗЫВАЕТСЯ ТЫСЯЧУ РАЗ В РАЗНЫХ МЕСТАХ ПРОГРАММЫ @ ПРИЛОЖЕНИЕ РАБОТАЕТ И ВДРУГ ПАДАЕТ. @ МЫ ВИДИМ ОШИБКУ ЙОБА-ФУНКЦИИ, ОНА СКАЗАЛА ЧТО ДЕЛИТЬ НА НОЛЬ НЕ ХОРОШО @ ТЫ ПРИХОДИШЬ В НЕОПИСУЕМЫЙ ВОСТОРГ ОТ ДЕТАЛЬНОСТИ ОШИБКИ, ТАК КАК В ДУШЕ НЕ ЕБЕШЬ ГДЕ ИМЕННО ИЗ 1000 ВЫЗОВОВ ЭТО ПРОИЗОШЛО - ВЕДЬ ДАУН С ДВАЧА СКАЗАЛ ЧТО СТЕКТРЕЙС НЕНУЖЕН.
Кстати сектанские долбаебы с го-чата говорили такую же хуйню. Поэтому просто съебись нахуй, глупое животное.
>>898528 На тебе хуету: Ты у мамки молодец @ Написал кучу проверок @ Код работал 3 суток @ На четвертые криво настроенный периодик удалил файл ровно сразу после твоей проверки его существования @ А ты уже его открываешь @ Это же не ошибка, мам, должно открываться!!! Скажи им
Просто иди нахуй, дебил, не всегда есть возможность избежать гонки с внешними для твоего кода подсистемами. Эти гонки надо уметь предусмотреть и обработать. Но у тебя же боязнь трейса, трейс очень медленно работает раз в 5 лет, но даже тут НЕДОПУСТИМО. Ты действительно фанатик, как Пайк прям, ведь ВСТАВКА В МАССИВ - ЭТО УЖАС УЖАС ДОРОГО НЕ ДЕЛАЙ ТАК.
>>898528 А в чем он не прав-то? Или у тебя есть другие способы узнать где что упало без стектрейса от эксепшена? >>898515 Пиздец долбоёб. Тормозов там столько же, как и от го-стиля, пока это исключение не произойдёт (причём если оно типизированное — и там тормозов не будет). Про ветвления извне вообще кекич. Интересно где же суслики набирают таких довнов.
>>898661 Да, это так. Го - это язык, где говнокодеры могут побыть дебилами - ужасными, бесчувственными, безразличными дебилами, которыми они на самом деле и являются.
>>898307 > Я придумал для это термин - пакетная рекурсия говна В пайтоне есть такая же пакетная рекурсия. Говорю же - это проблемы хуёвых кодеров, не умеющих правильно по пакетам функционал раскидать, не оправдывай свой хуёвый скилл проблемами языка.
>>882625 (OP) Зачем нужен го, если есть хаскел? Software transactional memory есть, дохуллиард зеленых тредов наплодить можно, есть и исключения, и в Maybe/Either завернуть можно. Хватит выебываться, вкатывайтесь уже.
>>898648 >>898665 Булшит евангелистов имеет некий порог вхождения, опытный специалист удивиться тому что ему пытаются впарить, а вот бестолковые будут есть это и еще радоваться.
Именно поэтому все сообщество напоминает невменяемых фанатиков, там вот таким странным отбором сконцентрировались "лучшие умы человечества".
>>898767 > Именно поэтому все сообщество напоминает невменяемых фанатиков Имплаинг, что большинство джаво-, питоно- %langname%- даунов не такие же фанатики. Яркий пример срущие в го тредах хейтеры, которые сбежали из своих протухших хаскелезагонов.
>>899017 В чем и суть. Сколько бы эти евангелисты каноничного ООП и мимовкатывальщики не срали кирпичами, Go как простой язык общего назначения уже взлетел.
>>899020 только в мире розового пони, хотя теперь из перечня вакансий, аля: php, js, brainfuck, haskel, sql и правда иногда встречается go, но это скорее какой-то хипстер им там наговнокодил на нем (а менегеры поздно поняли откуда вонь).
>>899060 лол, свинособака не понимает что какой-нибудь пыхарь или пистонист может взять и переписать на goвне узкое место в своём проекте и довольны все и заказчик приобщился к модным технологиям и манагер всем теперь продаёт "мегакодера" и кодер на линкедине ещё один скилз добавил. на фоне всего этого 47 хроммосомного пати, бегающие вокруг с порваным пердаком джависты и подобные им - единственное что доставляет
>>899074 >какой-нибудь пыхарь или пистонист может взять и переписать на goвне узкое узкое местное переписывают на си, ты не забывай что го такая же медленная херня как джава, да еще и с ГЦ (что делает ее еще более бестолковой для расширений).
Другой момент, что пыхари и питонщики на хую вертели недоразвитый го после своих божественных динамических языков с готовыми фреймворками. Ты чем там порадовать скрипщиков решил? Что для парсинга json иногда можно упороться в 50 строк кода? Ты серьезно? Иди катайся на розовом пони.
в говнах конкарентность с полпинка и всё для неё есть из коробки. решения на пхп/пистоне кривые, а js бекендщики люто хейтят, похлеще местных ватоголовых что хейтят говно. конечно они недоумевают, но балдеют, пушо в их основных языках так они не могут.
>узкое местное переписывают на си проиграл ты видел как пыхари код пишут? у них всегда открыта вкладка с докой по стандартной либе, лол. какой нахуй си?
>>899177 уёбок, перечитай мои посты, я хуесосил гоферов, только ты настолько туп что продолжал несколько раз отвечать мне как "фанбою". гугл уже в ольгино ботов нанимает для пиара?
>>899177 ты долбаёб, напиши асинхронный производительный сервер на си. а если написал, то какого хуя ты делаешь в пыхе/пистоне? если ты можешь написать на си, то можешь и на пыхе/пистоне ибо не особо сложно, но геморно и сами языки не сроектированны для этого. goвно с деревянным синтаксисом - как раз уровень этих давнов + даёт плюшки недоступные им.
>>899215 >напиши асинхронный производительный сервер на си сделал, но не понял нахуя мне асинхроность кроме i/o операций.
>то какого хуя ты делаешь в пыхе/пистоне? Продуктивнее писать бизнес-логику, на си много бойлерплейта. Ты же не долбаеб писать круды на сях? Хотя, ты же спрашиваешь... В среднем одна неделя на пхп, это месяц работ на сях (два с отладкой). То есть, дешевле написать расширение на реально узких местах, чем все приложение. Ты бы это знал, если бы был программистом.
>goвно с деревянным синтаксисом > как раз уровень этих давнов Надо быть долбаебом или мазахистом чтобы с нуля писать веб на этом. Для малых и средних проектов, ничего удобней и приятней скрипок нет, для мега-сложных проектов с кучей абстракций - была и будут jvm языки, в край шарп, или может свифт пульнет.
Го не влез не туда и не сюда. Писать скриптные проекты на нём - уродливо и очень муторно (так как отсутствие сахара это тонна того же бойлерплейта). Производительность - я посмотрю как твой язык будет жрать проц, без поколений в ГЦ (каждый раз пережевывая гигабайты одного и того же). Просядит как скриптовые языки. Асинхронность - лол, ну завезли уже асинхронные i/o и БД, а твое говное как дергало планировщик каждый вызов функции, так и будет. Компиляция - нет не дженериков, даже interface на nil хер проверишь, большая часть ошибок будет рантайме - и нахер нам тогда компиляция.
Производительность, хм, тут надо сначала проект хотя бы до 30К хостов довести и уже там думать, а писаться поначалу будет много и времени на бойлерплейт нет. Тем более нет времени на борьбу багов, в том числе полуглупых либ.
>>899294 Это кстати очень похоже на байт от гугла: они выпускают язык, пиарят его, мол, позволяет экономить на железе, а сами реализовывают идеи быстрее чем модные стартаперы с го и имеют с этого хороший профит.
>>899384 >>899392 Учетверяю, а еще этот дизайн 90х, якобы минимализм, а в действительности уродство школьника-дизайнера на белом фоне. Они сначала и гугл+ таким сделали, но сейчас до ума немного довели, поняв что их виденье вкуса мир вертел (хотя, опять же, на гугл+ всем все равно срать).
>>899719 Нет, его тут разрушали когда целый тред пытались объяснить го-довнам что Гц и правда сканирует стек. Осталось ещё объяснить зачем же он это делает, или например почему сусликовый гц грузит цпу похлеще жявного — можно будет наблюдать суицид сусликов в прямом эфире.
>>899788 лол, я как раз знаю что и как в гойе, а вот ты принёс тупейший развод расчитаный на совсем уже дыбилов. ты понижаешь градус адекватности, я кормлю тебя говном. баланс придумал не я, может боги, может прохожие бомжи в песни спели
>>899812 Высокоуровенные статические языки на гау и жяве заканчиваются? что за истерия массовая — на лоре все веб уже на си и расте пишут, тут какие-то дураки загуглить языки программирования которые им нужны не могут.
>>899802 лол, я даже не буду пытаться понять ты один семён или вас туту набежало, но лулз в том что вы пишете на уровне будто не осилили гав и теперь у тебя припеканус
>>899843 Что за маневры начались, я тебе спросил, на чем писать нормальный статик-типизированый веб в 2017, если го-говно, а джава избыточная что пиздец (и никому ненужный шарп туда же).
Ты блин еще бы мне кобол сюда принес, лисподолбоёб
Пацаны, а как у вас тут затестить скока памяти отжирает, скока процессорного времени и т.д.? Тока мне самому эти ебучие тесты лениво писать, может есть какие вундервафли?
-у го нет поколений в ГЦ - чем больше хип, тем тормознутие. -но есть стек и value type - что немного поможет (нет конечно). -джава оптимизирует код лучше, за счет jvm может оптимизировать даже моменты которые сишный O3 не может -за счет jvm есть спекулятивная оптимизация. -для джавы пилят бинарник graal вроде 9.0 будет (так что и стартовать будет быстро, хотя мы все сервера пишем же, нам срать). -jvm не могут создавать новые версии которые будут тормознутие старых. На го похер (помним просадки в 1.6 и 1.8 за счет оптимизации ГЦ, платой проца).
>>900054 Так как ГЦ это узкое место производительности, продолжем:
-есть выбор разных ГЦ у джавы хочет раз в 5 минут собирайся потратив 100мс (что срать для веба), хочешь каждый 10мс, но заплатив просадкой 20% проца за реалтайм, лол.
-есть возможность тюнить ГЦ и реально выжить в сложных местах что-то. В го? В го маскот думает за тебя что тебе лучше
>>900054 >>900058 Тебя спросили, как протестить, а не твои рассуждения на тему "я хейчу го, поэтому вот причины, по которым джава, наверное, будет лучше"
>>900066 >рассуждения на тему "я хейчу го, поэтому вот причины, по которым джава, наверное, будет лучше" Это называется "правда глаз режет". Если бы было что ответить — парировал бы. >Вот какой-то тест Ты поехавший? При чем тут бенчмарк? >>899997 А нахуя тебе это в самом языке/его тулките? Это функционал любой системы из коробки. (h)top на никсах и диспечер на шинде.
Если нужно прямо измерять сколько тактов и кб уходит в каждой функции — есть из коробки гуглевский pprof.
>>900229 Нет. Я их воспитывал - прописывал пиздюлИн. Они на удивление быстро усвоили правила приличия - за какой-нибудь год. В отличии от тебя - ты и после 20 лет нихуя не понял. Так что они как минимум в 20 раз умнее тебя.
>>900054 Ты долбоеб, у нас таких в АТО отправляют. Расскажи мне, даун, как ты замеры делаешь? Го - бинарь, жвм - виртуалка и говно в байткоде. Даже так считай, считать с диска джва метра гошного бинаря и 80 метров всяких говноскриптов на баше в перемешку с сишными бинарями, всю эту мешанину ты и называешь ЖВМ. Еще раз, ты отвечаешь как полный даун, который не может в контекст, во-вторых, пошел на хуй, жавадаун.
>>900252 Ты новичок? Замеры кода делают так: опрашивают аппаратный счетчик процессора, запускают код, еще раз опрашивают счетчик. Дельта счетчика и есть время исполнения. Как видишь никакой зависимости от размера кода на диске нет - только время исполнения. Для явы еще прогрев кода устраивают - вызывают код тысяч 100 раз перед замером, чтобы все оптимизации прошли.
Я конечно понимаю что ты еще зеленый и даже такие основы вызывают у тебя проблемы, но в следующий раз не пались так - пацаны за такие глупые вопросы тебя с ходу обоссут, и поделом. А пока я добрый - мотай на ус. Может даже за умного сойдешь, если будешь рот поменьше раскрывать.
>>900266 Лолд. Ты рсскажи юзеру что твоя параша не тормозить, а если тормозит, то надо 100к раз запустить что сработали все оптимизации. И пусть еще гигов 60 памяти докупит, а то чет медленно прогревается. Какой же ты тупой, пиздец.
>>900345 У меня возникла теория. Го - как единица психической аномалии в программировании. Если человек так легко выкидывает из головы все эволюционные решения принятые в программировании, то либо у него их совсем не было (в голове), либо он настолько хуевый специалист, что готов жертвовать инструментом в пользу моды/понтов/авторитетства.
>>900054 >-джава оптимизирует код лучше, за счет jvm может оптимизировать даже моменты которые сишный O3 не может >-за счет jvm есть спекулятивная оптимизация. Это все компенсации убогости языка (из за боксинга, виртуальных методов, стирания джинериков и тд) В итоге + на - дает ~0 преймущест по сравнению с другими рантайми (типа .NET или GO)
-для джавы пилят бинарник graal вроде 9.0 будет > (c) В основном работа идёт с java.base, но в JDK 9 даже он официально поддерживаться не будет, вся фича экспериментальная. А Graal тоже тестируем.
>стартовать будет быстро > (c) В случае с холодным стартом проблема медленного запуска может с AOT не решаться, а усугубляться: теперь надо ещё больше грузить данных с диска, потому что нативный код в общем случае ещё больше, чем байткод
Oracle планирует использовать его в AOT только для компилирования одного модуля из стандартной библиотеки Java И да же он один превращается в бинарник на 265MB (у конкурентов 30MB) Да и поддерживается только Linux x64
>виртуальных методов jvm и это оптимизирует и даже половину методов инлайнит или выбрасывает нахуй (если это геттеры и сеттеры)
>стирания джинериков что за ересь?? в байткоде нет денериков, долбаеб
>В итоге + на - дает ~0 нехуя ты фантазер, то что ты маня не вкурсе как там под капотом и что боксинг дает тебе на ноль всю оптимизации SIMD (и прочие радости, которые даже -O3 не может) это лишь хороший показать что ты гофер
Бинарник нужен для клиентского ПО, для быстрого старта и все, но джава чаще крутиться на серверах, поэтому мне срать (и другим 99%), мне jit важнее (так как он будет мощнее оптимизировать чем компиляция, в том числе разворачивать циклы с динамическим счетчиком и использовать спекулятивную оптимизацию).
Мой диагноз твоих пониманий и знаний в ИТ - уровень гофер
>>900519 >jvm и это оптимизирует Во первых не всегда, а только когда есть одна известная имлементация. Девиртуализация есть и в том C# + там по умолчанию методы не виртуальные >и даже половину методов инлайнит или выбрасывает нахуй (если это геттеры и сеттеры) и в этом нет ничего уникального, другие компиляторы (C#/GO/C++) делаю тоже самое
>>900491 Ты такой упоротый дебил, что реально думаешь что вам всем завидуют? Ты воспринимаешь язык как привилегию, мол ты можешь пользоваться, а мы нет и поэтому завидуем и хейтим? Ты реально дебил?
У меня кстати знакомый питонщик ушел с работы, когда их стали "насильно-добровольно" переводить на эту парашу. Я бы сделал так же, какая зависть тут? Люди бояться языка для даунов, ты только на маскот посмотри. Го - язык для ^бедных^ глупых
>>900523 >Во первых не всегда, а только когда есть одна известная имлементация. В чем проблема? Хотспот не глуп и в отличие от -O3 не покрашит код в говно (а в случае чего и откатить может)
Твои виртуальные методы это хуйня по сравнению со всякими AVX и прочими плюшками, которые делаются все за тебя (в си бы ты ебался вручную).
Шарп говно которое уже никому не нужно, да там плюх больше, но это в большом бизнесе не решает (и кстати шарп тормознутие джавы, лол).
>>899384 Gmail/Inbox хороший почтовый клиент. Скорее всего даже лучший в принципе.
Calendar очень хороший органайзер, альтернатив считай нет.
Maps/Earth очень качественный софт. Жаль прекратили поддерживать бесплатный Earth. Ну это, что говорится, fair enough, потому что бесплатный Earth мало кому стал нужен после того, как Maps стали такими удобными в браузере (где-то после 2008 года).
Docs — идеальна хуйня. Коллаб с задержками до полусекунды буквально. Кстати, кому интересно, гуглите Paxos.
И это основные. Еще не забывай про Blogger, который был просто лютовой годнотой в нулевые и даже сейчас позволяет даже домохозяйкам вести блог.
>>900534 Вот кстати да. Тоже при анализе виртуалок пришел к одному открытию для себя: виртуалка имеет полный контроль над исполнением кода, а значит имеет возможность обрабатывать все исключительные ситуации с кодом внутри себя, чего код без виртуалки не может сделать.
Потому обернув код виртуалкой довольно просто можно добиться того, что код вообще не будет падать, даже при разрушении физической памяти машины (применительно к космозондам например) - виртуалка может взять вообще всю заботу о коде на себя, даже гарантируя корректность разрушающейся памяти, если потребуется.
А код без виртуалки будет падать всегда. Он не имеет никаких шансов что-либо предпринять. Любая мелочь, которую виртуалка может отследить и исправить на лету, вызывает падение кода вне виртуалки.
В общем виртуалка позволяет контролировать код приложения, т.к. не зависит ни от чего - этакая твоя личная микроось в большой ОСи, которую ты полностью контролируешь, не спрашивая разрешения у большой ОСи на манипуляции с кодом.
Также виртуалка открывает и другие интересные возможности, в частности для защиты. Так например жава легко позволяет строить сети из недоверенных узлов, обладающие абсолютной защитой от перехвата и проникновения, в которых MITM невозможен теоретически.
>>900576 >код вообще не будет падать Программы на Java спокойно падают с сегфолтами: - Реальные баги в виртуальной машине (те уровней отказа у тебя теперь 2: твоя программа + JVM) - Ошибки в C++ вставках (JNI) - Ошибки при использование Unsafe (или коде библиотек использующих его).
>>900621 Ну вот смотри. Ломается у тебя физическая память, и уносит страницу, в которой был код твоей виртуальной машины - восстанавливайся. Или уносит половину байткода. Или уносит данные, над которыми байткод производит действия. В последних двух, максимум, что ты можешь - мирно убить приложение. А вот если глюканёт один бит и поменяет, например, dec на inc, то к тому моменту, как ты это просто заметишь, половину рабочих за твоим станком уже намотает на вал. мимо
>>900720 >Программы на Java спокойно падают с сегфолтами И? У виртуалок есть возможность управления кодом на лету, у самого кода такой возможности нет. В этом и разница. Виртуалка - это "внешняя" сущность для кода, но сущность, которую удобно менять. Фактически код для исполнения кода.
Виртуалка может выбрать какую версию кода исполнять в том или ином случае, проконтролировать корректность результата, откатить версию кода на более стабильную если что-то пойдет не так - и это только начало. Реальные возможности гораздо шире, вплоть до обеспечения работоспособности кода в любых условиях, вплоть до горячего автоисправления кода, если виртуалку этому научить - вся умная логика работает в фоне, уровень анализа ничем не ограничен, данные для анализа напрямую из рантайма. И при всем этом код работает без разрывов потока исполнения - он просто не подозревает, что его фактически отлаживают на лету. Плюс к тому виртуалка дает новый стиль программирования - код можно разделять на уровни исполнения: код может исполняться на уровне программы, на уровне виртуалки (инструкции управления ВМ, в т.ч. динамического управления) и на уровне железа (расширения ВМ, тоже в т.ч. динамического расширения - состав виртуалки можно менять на лету, не перезапуская код).
Виртуалка - это фактически программный процессор. Современные процессоры довольно умные, на низком уровне они делают довольно много манипуляций с кодом, тусуя команды, распараллеливая код, разрезая его на блоки. В процессорах зашит почти полноценный компилятор, который на лету оптимизирует код. Программный процессор может быть еще умнее - его править проще, у него возможностей больше, к нему можно прикрутить намного более умную логику, его структура может меняться во время работы.
А что касается зондов - думал на тему архитектуры космического железа и отказоустойчивости. Самый реалистичный сценарий - именно виртуалка, которая абстрагирует код от ненадежного железа, берет на себя все заботы о железе, управление, проверку и распределение памяти, обеспечивает избыточность - направляет код на физические кластеры, контролирует корректность результата, осуществляет выборы, и т.п.
Виртуалка на самом деле не увеличивает количество уровней отказа, а напротив, снижает: она концентрирует весь важный код в одном месте. В случае нативного кода нужно корректно писать каждый модуль, коих может быть тысячи и тысячи. Ведь ошибка в любом модуле "выключает" весь кластер. В случае виртуалки корректно написать нужно только виртуалку, ошибка в модуле отключает только один этот модуль, но это не страшно - виртуалка может его перезапустить, попытаться исправить, или выбрать на замену другой модуль. Один из принципов такого отказоустойчивого железа - каждая задача должна решаться несколькими способами, чтобы можно было проверить корректность не только железа, но и алгоритмов решения задач: два способа решения выдают один результат, а третий другой.
Т.е. у виртуалки вполне конкретная задача: служить интерфейсом (прослойкой) между кодом и железом, беря на себя все заботы об этом интерфейсе: поставляя корректное (виртуальное) "железо" для кода (программы), и поставляя корректный (правленный) "код" для (физического) железа.
Нативный код лишен такого интерфейса, поэтому падает - нет гарантии корректности кода для железа и корректности железа для кода. Программист вынужден все необходимые костыли вставлять сам, для каждого приложения. Компиляторы и HAL тоже вносят свою лепту в интерфейс, но в отличии от виртуалки они статические - это как общение с иностранцем не через живого переводчика, учитывающего все особенности обеих сторон, вплоть до воспитания, образования, характера и настроения собеседников, исправляющего косяки, осуществляющего литературный перевод где необходимо, а через школьный словарик, коверкая смысл и недопонимая друг друга. Грубо говоря компилятор ссыт оптимизировать что-либо, если твердо не уверен в безопасности оптимизации, и для большинства ситуаций он не может знать, что многое можно было соптимизировать намного лучше. Виртуалка знает что безопасно, а что нет, и имеет возможность менять код на лету, так что не задумывается над оптимизациями - смело оптимизирует все, что может, гарантируя безопасность своими внутренними проверками. И, в отличии от компилятора, с помощью расширений ее можно заставить не только оптимизировать, но и модифицировать код как угодно, пользуясь данными рантайма.
>>900721 >Ну вот смотри. Ломается у тебя физическая память, и уносит страницу, в которой был код твоей виртуальной машины - восстанавливайся. Ну и восстановимся. То железо, где нужны такие выкрутасы, оно немного другое - там аппаратное дублирование всех систем. Т.е. у тебя не один массив памяти, а например четыре. И на каждом кластере копия виртуалки. И все они общаются друг с другом. Т.е. в данном случае даже ничего особо делать не нужно - просто запросить страничку с другого кластера.
Но я думал и над системами с одним массивом памяти. Даже для них можно обеспечить корректность работы, просто расширив виртуалку несколькими модулями, которые абстрагируют физическую память от остальной части виртуалки, обеспечивая избыточное хранение информации, фоновый анализ, исправление и учет разрушенных ячеек вплоть до битовой точности (часто вылетает один бит, остальные вполне пригодны для хранения информации) - этакая фс с избыточностью, но для оперативки. Т.е. в таком случае виртуалка сама обернута в микровиртуалку, задача которой - только корректность памяти.
>то к тому моменту, как ты это просто заметишь Предполагается сканирование памяти раз в n секунд? Банально. Нет, и это тоже необходимо, но в данном случае это просто как периодическая проверка индексов ФС - все ли верно, ничего ли не потеряли? Не обязательная, но желательная процедура. ИРЛ, для случая одного массива памяти, абстрагировании более жесткое - виртуалка не имеет доступа к физической памяти, она видит корректную виртуальную память, которую ей подсовывает слой абстракций памяти. А вот тот слой абстракций уже работает с физической памятью - записывает данные с избыточностью, проверяет корректность при считывании, восстанавливает данные при ошибке, генерируя новую копию избыточных данных, отправляя сбойную ячейку на обслуживание, генерит для сбойных ячеек специальный код доступа, т.к. сбойные ячейки не полные, и напрямую их читать нельзя. Ведет фоновое сканирование всего массива памяти, обновляет и перетасовывает информацию (тренирует накопители), отжигает блоки памяти с вышедшим ресурсом, следит за целостностью и количеством своих обработчиков - кусков кода, рассеяных по памяти, часть из которых работает параллельно, и гарантирует защиту от сбоев самого этого слоя абстракций.
Для земного железа, при отсутствии такого слоя абстракций, остается только периодическая проверка памяти, да. Но и там с виртуалкой не сложно извернуться - можно верифицировать каждый исполненный кусок кода. Исполнили сколько-то кода, в фоне прошла проверка, весь исполненный код от начала одной проверки до начала другой верифицирован - отдаем его результат вовне. Нашли ошибку - либо сбросили последний буфер, либо локализовали ошибку и поправили буфер. Т.е. вносим небольшой лаг в работу кода, во время которого верифицируем результат. В таком случае если будет ошибка - она не успеет уйти на исполнительные устройства, а если не будет - рабочий этого не заметит, т.к. лаг в микросекунды, и константный.
Цена в любом случае - замедление работы. Но если корректность важна - оно того стоит.
Что это за язык?
Компилируемый язык со статической pascal-like shit вместо типизации, с встроенный в язык CSP, разработанный компанией Google.
Какие у него сильные стороны?
Быстрая компиляция, простота, богатая стандартная библиотека, псевдоуниверсальность, кросскомпиляция.
Какие у него слабые стороны?
Еще развивается (хотя внушительными темпами, смотрите ниже раздел "Перспективы"). Малое количество вакансий, отсутствие такого количества готовых решений, который имеют языки с более долгой историей.
В основном сейчас знания языка приветствуется (особенно для коллег с питона).
На какие языки он похож?
C, PHP, JS, 1C.
Какая у него основная сфера применения?
Бюджетный веб (так как не жрет ресурсы как скрипты или джава), девопс-утилитки и прочие мидлевел сетевые утилитки.
Какая у него основная сфера применения в будущем (вполне вероятном будущем)
Разработка на новых квантовых процессорах тупо будет недоступна - язык чисто императивный, что как бы намекает нормально векторизовать и распаралелить код на архитектуре без синхронизации да даже на текущих x86 не может возможным не представляется.
Холивар
Язык настолько убог и топорен, но при этом захайпован что подрывает жопы всех - от закоренелых бородачей до молодых студентов, но очень любим хипстерами и манагерами - первыми за то, что хайп, вторыми за то, что можно сделать из программиста безликую макаку, которую заменить как в два пальца пососать.
Так же его фанаты работают "на конференции" - любят понасрать и переписать какой нибудь микросервис на го, потом еще пол года катаясь по конфочкам и рассказывая басни крылова.
Собственно, пытается маняврировать между высокоуровенными и низкоуровенными языками - но делает сасай у обоих, не дотягивая по удобству и средствам до высокоуровенных и сасая по перформансу у низкоуровенных.
Производительность
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%3A>1000&type=Repositories&ref=searchresults
Полезное
Для начинающих (годный и развернутый список)
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