Это копия, сохраненная 18 января 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Что это за язык?
Компилируемый язык со статической 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:>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
-уязвимость дефолтного сервера и отсутствие норм решения (тупо рвать весь коннект и похер если ты файл отдаешь)
-Глючность возникающая в Prepare (в sql) при хайлоад нагрузках
какие еще вины были?
Или как в моей netty (в божественной java/kotlin) - таймаутом на последнюю активность, на медленность запроса, исключая по mime-type крупные файлы, но ограничивая такие соединения числом по IP
>>882639
>>882665
Я в прошлом треде приложил этот скриншот из документации. Как видите, эти таймауты не на всё соединение, а на каждый запрос-ответ в контексте соединения.
С моей стороны были пруфы, код и объяснение причин неверного поведения кода анона. С твоей — беспруфные кукареки. Ты вот сейчас при всех обосрался, но признавать этого не будешь. Молодец, так держать.
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.
>Все эти системы со сборщиком мусора - говно.
inb4 95% софта в мире так или иначе крутится на системах со сборщиком мусора и ничего, живы-здоровы. иди кукарекай в другой притон
Побитовые сдвиги посдвигал уже?
>растом
лол, это говно тормозит как языки с GC и жрет память как джава из-за нубаского аллокатора (даже тут тесты кидали, что раст жрал больше го).
При этом ты еще будешь думать о времени жизни переменных и бороться со стираным правилами компилятора.
И за все это, ты получишь тормоза на уровне скриптовых языков (тесты http серверов и фреймворков)
https://www.techempower.com/benchmarks/#section=data-r13&hw=ph&test=plaintext
А тем временем на горе-патриота, который хотел свернуть сабреддит го наехали, и он пошёл на попятную.
Отпразднуем победу охлократии!
> хотел свернуть сабреддит го наехали, и он пошёл на попятную
Зеленые просто боялись, что их чатик сломают и негде будет больше свой говнокод показывать. Я солидарен с этим патриотом.
хуй соси мать твою ебал
>горе-патриота, который хотел свернуть сабреддит го наехали, и он пошёл на попятную
Что за кулстори вкратце?
Послушай последний радио-т, там всё по хронологии рассказали.
В двух словах: в каком-то зог-сабреддите обсуждали хуйню, его закрыли, и выходцы оттуда начали массово поливать говном сео реддита. Тот обиделся и сказал видимо поправить оскорбления ему на оскорбления самим себе.
От этого началась истерия и один из мочераторов этого сабреддита хотел закрыть его из-за этого нахуй.
Чому ещё не запилили форк без всякий идеологически-правильной хуеты?
>Язык настолько убог и топорен, но при этом захайпован что подрывает жопы всех - от закоренелых бородачей до молодых студентов, но очень любим хипстерами и манагерами - первыми за то, что хайп, вторыми за то, что можно сделать из программиста безликую макаку, которую заменить как в два пальца пососать.
>Так же его фанаты работают "на конференции" - любят понасрать и переписать какой нибудь микросервис на го, потом еще пол года катаясь по конфочкам и рассказывая басни крылова.
>
>Собственно, пытается маняврировать между высокоуровенными и низкоуровенными языками - но делает сасай у обоих, не дотягивая по удобству и средствам до высокоуровенных и сасая по перформансу у низкоуровенных.
Ну и нахуй он нужен?
>2к16 модно делать новые языки
Помнится, в универе один одногрупник такой хуйней страдал в 2007-ом, тоже вместо предложенных тем курсача напишет свой язык, взялся писать и в итоге соснул хуйца. Не то чтобы я против, просто это напоминает тех ребят которые пилят свою борду, когда макак очередную хуйню вытворяет, а в итоге получают мертворожденный продукт, о котором в курсе полтора анона и те съебывают с нее.
>дизайн не допилил
Да что там пилить то? Вынести хероту типа ошибок компиляции при неиспользуемых модуляъ/переменных в опциональщину, подключаемую флагами компилера, и заебись. А дженериков и подождать можно.
Да их-то всегда было овердохуя, просто раньше не было прям моды на это у больших и средних компаний, сейчас гугл пилит го, мозила пилит раст, фб пилит ризон (вроде как закончили с хаком), эпл пилит свифт, крэй пилит чапель, у майкрософта с интелом их буквально с десяток, у жетбраинса котлин.
Ну, он хочет сразу комплексно продумать все от языка до интеропа чтобы выпустить и все сразу было заебись. Знаем мы таких, лул
Только это не го получится, а очередной никому не нужный велосипед.
Решил тут вспомнить Go, мне тут как раз давали тестовое задание, которое я сделал за 3 часа вместе с тестами на божественном руби. Ну алгоритм действий я знаю, но язык не особо, наверно уйдет чуть больше времени.
Антош, это пиздец, сделать get и распарсить xml на этом языке какой то ад. На божественном руби я сделал это 2 строками за 15 секунд. Тут же нужно блять создать 2 ебанных структуры чтобы распарсить xml, две структуры, КАРЛ! В самом коде еще нужно делать преобразования типов и желательно обработку ошибок, а не просто _. Просто пиздец, к основной части задания даже не смог приступить от нахлынувшей безысходности.
Кстати, почему у Го такая ебанутая обработка ошибок? Спиздили бы try и catch из C++ и дело с концом. Да еще и в принудительном порядке обработка ошибок зачастую.
Нахуя ты динамический язык со статически типизированным сравниваешь, даун, да еще и с процедурным?
я все понимаю, Антош, но ничего не могу с собой поделать
> сделал 2 строками за 15 секунд
Создав при этом промежуточный объект с результатом парсинга XML в памяти, потратив на это лишнее вычислительное время и, собственно, лишнюю память. Анмаршалеры в Go пишут всё напрямую в структуры. Эта мелочь не всегда критична, но мне приходилось переписывать на Go сервера, которые инициализировали на каждого клиента огромные JSON-объекты, и с Go это всё удалось ускорить в ~100 раз, по памяти выигрыш был 4-5 раз.
Вообще, то, что ты хочешь структурированный XML парсить без определения структуры, уже многое о тебе говорит. Это ОК, если ты хочешь один раз что-то на коленке быстро написать, но если пишешь что-то серьёзное, то размазывать по всему проекту не работу с нативными объектами, а эти doc.xpath(...).first.attr(...) — не ОК. Кстати, для Go есть готовые либы с таким подходом (например, https://github.com/beevik/etree), но нормальный человек, почувствовав нужду в таком подходе, возьмет Python/Ruby и накидает скрипт на коленке.
> В самом коде еще нужно делать преобразования типов и желательно обработку ошибок
Если твой XML составлял не ПТУшник, то таких проблем не возникает. Из-за криворуких документов иногда приходится использовать промежуточные структуры с кастомными анмаршалерами, да.
Почему это ебанутая? Не надо вводить новую концепцию обработки ошибок, достаточно стандартного if-else
>нормальный человек, почувствовав нужду в таком подходе, возьмет Python/Ruby и накидает скрипт на коленке.
Я вот всю жизнь так делаю (я не бэкэнд разраб, а жалкий админ), но все больше ops тулов пишут на этом языке. Недавно столкнулся с компанией, где все новые тулы golang only.
Если их инструменты достаточно сложные, то почему бы и нет?
>>886617
Стандартного if-else достаточно тогда, когда ошибки не возникают. Когда же они возникают, начинается отладка. Стоит упомянуть лишь то, что стектрейс говорит, где был panic, но где был иницализирован error — нет, это уже твоя задача. Я тоже считаю, что подход к обработке ошибок в Go не так уж плох до определённого момента.
Программист - ленивая скотина, которую нужно быть по рукам. Программист никогда не будет делать то, что он может не делать. Чтобы игнорировать ошибки в какой-нибудь жабе нужно делать так: "try { func(); } catch e {}", если ты этого не сделаешь, то при первой же возможности рантайм выскажет всё, что он о тебе думает. Чтобы добиться подобного поведения в го нужно делать ничего. Буквально, ничего. Ты просто не пишешь код, и все ошибки игнорируются так же, как это делается с вышеприведённым кодом в жабе. После первой же ошибки состояние программы становиться некорректным, и её поведение в крестостандарте описывалось бы как "undefined behaviour". И вот же что забавно - ты знать не можешь, когда, где и какой мудак поленился написать этот "if else"; то есть потенциально после любого вызова любой не твоей функции состояние программы может быть некорректно, и ты об этом даже никак не узнаешь.
Такой вот охуенный язык, такой вот замечательный подход к обработке ошибок. Зато на концепциях сэкономили.
Твои аргументы — говно. Даже в самых хуевых либах не видел игнорирования ошибок. Если какие-то дауны теоретически могут что-то там игнорировать, то они сделают это независимо от того, сложно им это игнорировать или легко. Это никак не оправдывает странного подхода Пайка к вопросу, но я не первый раз вижу людей, которые несут хуйню вроде той, что ты несешь.
>>886624-кун
Мимо шёл, но за мой елдак ртом зацепился.
вот решил глянуть, чё там черви-пидоры нонче обсуждают и лол, - ничего не изменилось за пол года
чао лахи-девопсики
Ошибки не всегда специально игнорируются. В ноде была такая же проблема до недавнего времени. Я охуел от количества варнингов о неотловленных экзепшонов на своем проекте, когда нода начала о них писать.
Хотя я считаю себя довольно внимательным погромистом, который не делает хуяк-хуяк
Его-то везде достаточно, и проблема не столько в игнорировании ошибок, сколько в том, что обрабатываются они абсолютно одинаково. Вот возникла у тебя ошибка в функции которую не ты писал, но что-то да возвращает причём не факт что этот кусок кода вообще задокументирован - ты же просто в лучшем случае залоггируешь/кинешь панику/сам вернёшь вернёшь ошибку раскрутив руками стек. Вообще всё это можно было сделать просто блоком try...catch в точке входа, но вместо этого у тебя код будет состоять в лучшем случае на половину из if err != nil { panic("sukablyad") } - к этому основная притензия.
Тем временем, хвалёный РИАЛТАЙМ ГЦ го всасывает у... барабанная дробь... ОКАМЛА БЛЯДЬ! У самого медленно развивающегося куска верблюда, причём не самой новой версии. Оправдывайтесь, говноеды.
Сокрушительная победа илюши и языка го.
>>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
спасибо. нет
>OCaml uses for the old generation.
>Если бы тест получился сложнее (с чуть более долгоживущим мусором)
Вся суть итт треда.
Хоть кричать я начал ещё на "оптимизации гц".
Что хаскель — язык для развлечения не секрет, тот же окамл юзается в продакшене куда шире (хотя с хаскелляхайпа легко решить наоборот).
О джяве там в комментах отписали, она в тесте без прогрева (он со 160 до 50 роняет) и не тюненый (вообще, как и все остальные – их в отличие от гошного внезапно можно тюнить).
>когда на дворе Go 1.8-beta1
Люди в продакшене на 1.5.x только переезжают, ты о чём.
У нас в клаудфлейр обкатывают 1.8 на 10% продакшн серверов.
>>884295
У эппла и МС всегда был языки, заточенные под их инфрастуктуру, так исторически сложилось и от этого никуда не деться.
Котлин тащемта годнота, джетбрейнс решает проблемы, которые их в яве изрядно заебали.
У фейсбука вообще тонны бабла и огромнейшая инфрастуктура. Они деньги вкладывают вообще в весь опенсурс и разработки, которые им упростят поддержку. Уверен там во внутренней кухне разработок еще больше, которые никому не показывают.
Но я так, с дивана.
>>886659
В либах из стандартной библиотеки ошибки не игнорируются. Если у вас кто-то пишет не по гайдлайнам его проблемы.
Я работал как-то над проектом, где нельзя было запушить код в репозиторий, если были варнинги от pep8 и pylint, только допустимая длина строк была 120, ибо мониторы кошерные.
Но один хуй, если высирать код, придерживаясь каких-то правил, это сократит и тебе время и другим людям.
Я вот зуб даю, что через год ты взглянешь на свой же говнокод и охуеешь от осознания того факто, что его писал ты.
>>888582
Когда у меня жрет 10гб сервак мускула на одной ноде, 40 редис, а приложение всего 1, то как-то похуй на гц. С задачами быстро справляется и похуй.
Энивей окамл не менее нишевый, чем го, со своими недостатками и преимуществами.
>сервак мускула на одной ноде
Тогда у тебя всё очень плохо.
>Энивей окамл не менее нишевый, чем го
И в чём же это заключается? Ну кроме яскозал.
>ошибки не игнорируются
>>886847
>У эппла и МС всегда был языки, заточенные под их инфрастуктур
Да насрать на них, сейчас языки клепать начали вообще все — от производителей железа (крей, интел) до совсем среднячковых компаний (жидбраинс).
Релиз 1.8 запланирован только на январь, пиши им в багтреккер лучше чтобы пофиксили.
>Если бы тест получился сложнее (с чуть более долгоживущим мусором), Go его обошел бы
Если бы Иван Грозный сына не убил, мы бы сейчас на марсе жили. Ты сделай, а потом посмотрим и сравним. Еслибовать можно долго и безрезультатно.
>чувак гонял на Go 1.7.3, когда на дворе Go 1.8-beta1
Илюш, он в статье же и говорит, что в 1.8 марк фазу оптимизировали, а она боттленеком не была. Хочешь доказать превосходство - перепиши бенчмарк под 1.8 и покажи им всем, а пока будь добр сосать молча.
>любимый публикой Haskell полощется в районе 60 мс
>А вот у вас там в европах в жопы ебуцца! Плевать, что мы в говне по уши, зато у нас пидоров нету!
>>888859
Хороший вопрос, как раз для го-треда. В жыр32 размер файла хранится в DWORD'е.
>потому что он юзает оптимизацию гц.
Ахуеть блять, что ещё за оптимизация GC? Он использует какие-то хаки? Настраивает сборщик для конкретной конфигурации железа?
Нет блять. У него просто лучше алгоритм GC. Какой из этого вывод?
Лучше я ему скобочек куплю.
Так же делаю, находя баги.
Го-маня-мир должен нормально так наткнуться на "айсберг-реальности" и научиться трижды думать, чтобы вестись на маркетинговый хайп (а последние должны научиться делать качественный продукт)
У тебя gocomplete отвалился, а не gocode. И вообще это бета, тебе никто не гарантировал, что 3rd party tooling будет с ней идеально играть.
>нормальных инструментов
Сам пользуется атомом ахахахх
> Го-маня-мир должен нормально так наткнуться на "айсберг-реальности" и научиться трижды думать
Шта
шта хде куда
сам себе лизнул?
Нету. Потому что НИНУЖНА.
Единственный вариант — вендорить все депенденси руками к себе в проект.
ЗАБИЛ НА ПРОЕКТ НА ПАРУ НЕДЕЛЬ
@
ПОНАДОБИЛОСЬ ИСПРАВИТЬ 1 СТРОЧКУ И ПЕРЕСОБРАТЬ
@
ВСЁ РАСПИДОРАСИЛО НАХУЙ И НЕ СОБЕРАЕТСЯ
@
ПЕРЕПИСЫВАЕШЬ ВСЁ С НОВЫМИ БИБЛИОТЕКАМИ
> Они деньги вкладывают вообще в весь опенсурс и разработки
кому нужна ето жс говно, а даун)
ОТКРЫЛ ДЖАВА ПРОЕКТ 4 ЛЕТНЕЙ ДАВНОСТИ
@
ЗАМЕНИЛ СЕРВИС ПО ИНТЕРФЕЙСУ
@
СОБРАЛ, ЗАПУСТИЛ, ПРОГНАЛ ТЕСТЫ, ЗАРЕЛИЗИЛ
@
ВСЕ РАБОТАЕТ КАК ЧАСЫ, ХОТЯ УЖЕ НЕ ПОМНИШЬ КАК ТАМ ЧТО РАБОТАЕТ ВООБЩЕ
то чувство, когда завидуешь, что чьи-то круды не сыпяться как в говно-js спустя неделю
Ну да http i/o, в бд еще блокировка есть. И все?
Да и сам дефолтный http сервер тормазнутый какой-то (есть тесты).
При этом же планеровщик дергается же при каждых вызовах функции?
https://blog.golang.org/laws-of-reflection
Блять, хорошо ход не курсивом написали.
Так эти хипстеры же недавно вообще свой шрифт запилили, лол.
Собственный обфускатор кода для чайников. 2012 года, автор Пайк Роб
Да ебет тебя, сука, нахуя? Хочется мне, блядь, так!
Он боиться что его говнокод кто-то украдет.
Каждый быдлан у нас же невьебаться непризнаный гений
А вот и тонкие реквесты ничего не знающего дауа подъехали...
Но вот смотрите, пацаны. Одна из главных заявленных фич Го - эффективные зелёные треды. С одной стороны, это звучит так заманчиво, что ради этого можно потерпеть даже дебильную систему типов. Но с другой стороны... так ли эти зелёные треды фундаментальны? Ведь по большому счёту это фича рантайма. Вон, в Rust'е отказались от зелёных тредов, чтобы избавиться от рантайма (теперь они едят кактус futures). Но даже на Rust'е, даже на Си, у большинства приложений уже есть рантайм - ядро ОС. И оно уже реализует вытесняющую конкурентность - обычные треды. Да, они дороже, чем горутины, потому что переключают больше контекста. Но, во-первых, настолько ли дороже, чтобы было критично на масштабах обычных смертных (не Гугла)? А во-вторых, так ли эта дороговизна фундаментальна?
Иными словами, если сейчас я куплюсь на хайп вокруг горутин, не случится ли так, что завтра в Линуксе сделают какие-то супер-легковесные треды вроде Виндовых fiber'ов, с ними подружится компилятор того же Rust'а, и ржавобоги получат сильно конкурентный в/в на нормальном языке, а мне в числе гофербыдла останется подбирать за ними объедки?
>Виндовых fiber'ов
Я тебе больше скажу: в той же os x и bsd-ях есть GCD, который и есть этот самый рантайм, но с куда большей гибкостью.
В Го вся суть именно в том, что можно делать хуяк-хуяк, от которых компилятор раста или утечки в сях тебе этот хуй оторвут. Работать будет не так быстро, но очень кошерно по сравнению с другими хуяк-хуяк языками.
> Я тебе больше скажу: в той же os x и bsd-ях есть GCD, который и есть этот самый рантайм, но с куда большей гибкостью.
Во, кстати, да. Я что-то слышал про GCD, но забыл. Спасибо.
> В Го вся суть именно в том, что можно делать хуяк-хуяк, от которых компилятор раста или утечки в сях тебе этот хуй оторвут. Работать будет не так быстро, но очень кошерно по сравнению с другими хуяк-хуяк языками.
Прости, не осилил разобрать. Это довод за Го или против? Можешь ещё разок, без слов на ху-?
Хуй. Это не довод (хуитка) за или против, это просто такая хуйня которая кому-то нужна. Вот такая вот хуйня.
именно так, да и сейчас они нахер не нужны, завезли уже асинхронный веб и i/o вообще с DirectMemory, завезли асинхронную работу БД, и собственно - больше асинхронить то нечего, только избыточная нагрузка на планировщик по каждому чиху (хотя это задача ОСи, которая кстати лучше справляется).
А всякие 100500 миллионов в секунду это развод, так как холостые запросы нахер никому не нужны, натяни бизнес логику и все просядет и нужно будет распределять так и так.
Еба, я гоню. UPDATE же.
Какую кашу нужно иметь, чтобы разменять питоны, руби, даже js, и даже php на го? На эти костыли времен семидесятых годов?
Имхо лучше докупить планочку ОЗУ, чем блять страдать в такой параше, с хорошо натаскаными лемингами-евангелистами и их подрожателями
> асинхронный веб и i/o вообще с DirectMemory
Это кто? Нагуглил https://directmemory.apache.org/ но не понимаю, каким боком оно к асинхронному в/в.
>>892707
> Какую кашу нужно иметь, чтобы разменять питоны, руби, даже js, и даже php на го? На эти костыли времен семидесятых годов?
Вот я и хочу понять: горутины - это костыль или неебись достижение прогресса. На костыли менять не хочется. Всё же Питон хоть и говно в известной степени, но работа на нём есть и не самая плохая.
>но работа на нём есть и не самая плохая.
Очевидно что фрилансерам нет смысла перекатываться. Для тех, кто мутит модный стартапчик, кого заставляют писать на Go, кто делает какие-то свои прожекты (как я). А такому как ты, ремесленнику, оно не надо, не забивай себе голову.
> асинхронный веб и i/o вообще с DirectMemory
Общая память-буфер между сетевой/файловой хуйней ввода/вывода, минуя 100500 промежуточных буферов, для мгновенного обмена данными, при этом не аллоцируя лишний раз в хип (java)
Асинхронщина в контексте веба нужна только для http запрос-ответа и бд - и все, поэтому завезли всякие тулзовины для других языков (фьючеры, async/await), и будут всегда для них пилить подобные фичи в API операционки (потому что все языки важнее, а го там и сам справится, наверно).
И 100500 миллионов горутин нахуй не нужны так как ты всегда ограничен своими ядрами на проце (если конечно у тебя там не ЦОД соразмерный с деревню).
Мое ИМХО - на Го нереально писать большой и сложный проект, он по-моему создавался для скрипто-тулзовин
Чё-то ты не то прочитал в моём посте. Я как раз о том, что перекатываться хочу не за едой (еда пока есть), а за ПРОФЕССИОНАЛЬНЫМ РАЗВИТИЕМ. Поэтому я присматриваюсь, а не клюю сразу на удочку гугла. И наличие успеха прямо сейчас (а Го, несомненно, уже успешный язык) - веский, но не доминирующий фактор. да, Хаскель уже освоил
И да, бойтесь этого языка, писать на нем большой код боль, а евангелисты там хорошо раскручивают его, дойдет и до ваших начальников и будут вас, под якобы-экономию железа, переводить на го-проекты (хотя потом заплатят за это другую цену, но это будет потом)
Профессиональное развитие - там где серьезное бабло и серьезные масштабы. Тут без вариантов - джава.
На Го он развиваться решил, ппц.
> Асинхронщина в контексте веба нужна только для http запрос-ответа и бд - и все
Асинхронищина нужна для запрос-ответа клиента, БД, кэшей, очереди задач и ещё дохуиллиона сторонних сервисов, в которые ты ходишь по сети. То есть, для всего сетевого ввода/вывода (а при большой нагрузке - и для дискового тоже).
А нужна она потому, что блокирующий в/в на тред-пуле - это минное поле, которое взрывается, как только любой из этих сторонних сервисов начинает тормозить по любой причине (например, порвался канал). Таймауты не помогут, их невозможно так подобрать.
Альтернатива - отводить тред на каждый запрос (или хотя бы уметь это делать при исчерпании пула). Но говорят, что это гроб гроб тормоза контекст-свитчинг. Я вот и пытаюсь понять, где тут правда.
> Профессиональное развитие - там где серьезное бабло
Вовсе нет.
> и серьезные масштабы.
Теплее.
> Тут без вариантов - джава.
Лол. Похоже, ты не видел ни серьёзного бабла, ни серьёзных масштабов.
Это как раз от тебя несёт каким-то маней-мечтателем, который от хипстерских технологий возбуждается так, что стены ебать готов.
>Но говорят, что это гроб гроб тормоза контекст-свитчинг
Для того и делают гринтреды с шедулерами. Го, собственно, отличается тем что позволяет делать хуяк-хуяк-канкаренси, что ты ищещь-то?
А какие варианты яве-то? Го, у которого кучи багов в каждом новом релизе? У которого не то что даже гц нельзя настроить, а проект нельзя создать где хочешь — потому что НИНУЖНА?
Это игрушка для утилиток вроде докера (ну, докер — это их сборник). Не больше.
Я ищу понимания, насколько это уникальная фича Го. Если это невротъебенная космическая технология, то возможно ради неё стоит запрыгнуть на hype train. А если завтра то же самое может появиться в $another_server_language или прямо в Линуксе, то я подожду.
> А какие варианты яве-то?
Множество масштабных и серьёзных систем пишется на C++. На Python, к сожалению, тоже дофига. Бывают на Эрланге и даже на C. Это даже если вместе с Явой исключить всю её экосистему (Scala) и .NET заодно (C#).
Ну так оно уже много где есть уже есть в системах изкаробки >>892663 >>892675
Тут тебе 200 раз написали — аналогов для хуякхуяк нет, даже в питоне сложнее. Если для тебя это прям киллерфича — стоит.
>>892771
Не прыгай из области в область, мы сейчас говорили про сурьёзный бизнес в целом и конкретно нишу явы, а не про гугл и фейсбук.
> Тут тебе 200 раз написали — аналогов для хуякхуяк нет
Блять, ты можешь по-русски написать? У тебя табу какое-то или что? Слово рвётся из груди, но не как не может вырваться! Выпусти же его, скажи, какая идея сокрыта за словом "хуякхуяк"!
> Не прыгай из области в область, мы сейчас говорили про сурьёзный бизнес в целом и конкретно нишу явы, а не про гугл и фейсбук.
Лол что. Мы говорили о профессиональном развитии. Про бизнес и яву >>892744 стал заливать.
На всякий случай уточню: профессиональное развитие - это "клепать менее говно", а не "получать больше денег за больше говна".
Я ищу понимания, насколько это уникальная фича Го
Настолько уникальная, что от зеленых тредов в джаве отказались еще в версии 1.2
То было в 1998. Тогда не было высоко конкурентного веба и даже C10k. Нещитово.
Сейчас вроде такие долбаебы на node.js тусят? Пиздуй туда и уноси свой Го.
Вот сделаешь мне 10К на одном ядре с бизнес логикой, вот тогда поговорим, а пока иди нахуй с холостыми i/o (и да, уже тренд 100к и даже 1М).
Настолько уникальная, что супербыстрый го в бенчмрках веб фреймворков от techempower всасывает сочной хуятины у явы и прочих?
>>892778
Ахуеть порвало маню-фанатика. Стандартные оправдания хипстеров, придумай что нибудь новое.
Ладно, ребята, нормальных ответов от вас хуй получишь, да я и сам хорош, придираюсь ко всему подряд, пойду читать про GCD лучше.
я как бы и сказал что зеленные треды хуйня, только для узких мест, в остальном только просадку даст (из-за того что планировщик на каждый вызов функции дергается).
> с хорошо натаскаными лемингами-евангелистами и их подрожателями
Это ты сейчас про джавадебилов? Только они тут зачем-то пытаются доказать что го сосет и ненужен.
>аналогов для хуякхуяк нет
В винде есть фиберы, в ЛИНАКСЕ тоже что-то такое есть, как выше сказали,- напиши свой планировщик, и будет тебе хуякхуяк в любом языке.
>напиши свой планировщик
Вот именно это и делает го языком пригодным для хуякхуяк. В других языках пердолить системный апи/писать свою библиотеку и тд — в то время как в го накатил компилятор и пилишь говнокод.
Тем что позволяют пердолить более—менее эффективный код на одной машине. У эрланга всё наоборот.
Пишется один раз, а потом используется из других языков. Там, где макросы есть, можно даже сахарок поверх напердолить, чтобы почти как в го было. И без всяких привкусов. А так получается, что го - для неосиляторов.
джава-господам срать, даже шарп отсосал у джавы по рынку, а вы этоу помойку противопоставляете, вы вероятно путаете с андройд-уебками, но это же бывшие скрипт-киди.
Так куда переходить-то? На нём только хипстеры и пишут. Тут вон уже отпиысывали - дырявые беты в проде накатывают, что как бы намекает на аудиторию. Пока ничего нового и хайпового не запилят - будут кушать что есть.
Но это не точно.
В моём наполовину продуктовом бодишопе запилили продукт на go бывшие пхпшники. Говорят что из-за того что менторы рекомендуют не юзать фреймворки, а обходиться только стандартной либой - приходиться писать свои велосипеды на каждый чих. Не понимаю то им мешает забить на менторов и заюзать какой нибудь revel/iris/etc, но из-за велосипедострония решили в будущем отказаться на новых проектах.
> из-за того что менторы рекомендуют не юзать фреймворки, а обходиться только стандартной либой - приходиться писать свои велосипеды на каждый чих
Вся суть.
Недавно разговаривал с командой, которая делает на Го очень нехилый продуктовый комплекс. Они мне тоже: только стдлиб, только хардкор. Почему? Ну тип чтоб не было как в JS с left-pad)))
Поражает их неспособность отличить востребованный опенсорс, у которого есть комьюнити и оно поддерживает код, от васянских поделок, которые были написаны из-за необходимости костыля и выложены в общий доступ что бы потешить ЧСВ. Вдвойне поражает что это их решение, а не навязанное кем-то сверху, начальством или заказчиком. Тут прямо напрашиваются шутки про пхп и go, лол.
Да это не их решение, это называется "пайк скозал что нинужна значет нинужна". Так же как и со всем остальным.
Дополнительный лулз что на фронтенде там angular2, т.к. модно стильно молодёжно. А это в отличие от топорного go, напротив - переусложнённый фреймворк с неебическим оверхедом (~3МБ для hello world это вам не шутки) и отсутствием вообще какого то "тру" пути. От чего приходиться вместо написания кода - постоянно бороться с наркоманскими идеями разрабов сего чуда.
лол, любая либа или фрейм это экономия 100-1000 человеко часов, видимо заказчики очень жирные и готовы оплачивать велосипедные костыли
>Расскажите про юнит тестирование Go демонов
>Мне немного стыдно, но у нас для Go практически нет юнит тестов
Пиздец.
Я параноик, или реально в компаниях для игр накатывают го, чтобы потом пропиарить/разрекламить себя?
У меня еще паранойя, судя по тому, что на хабре давно стухла вся аудитория и яркое общение редкость, не кажется ли тебе, дотошный анон, что большая часть вопросов там от сотрудников и они сами же себя наплюсовывают?
А ты быстр и сообразителен, счастливый владелец сорок седьмой хромосомы.
Не прошло и года как ты НАЧАЛ ПОДОЗРЕВАТЬ
Начать надо с того, что в целом использовать Го для бэка сайтиков - так себе решение, из пушки по воробьям, что называется.
Они же написали, что тестов почти нет и что переписывали на go сишники, где юнит-тестирование и какое-нибудь tdd не самое веселое занятие.
И да, тесты в большинстве случаев нахуй не нужны.
>>893918
> модно стильно молодёжно
Нет, просто ангулар решает задачи. Только и всего, а ты и дальше продолжай думать, что это тяжело и вообще не нужно. Вторая версия заоптимизирвоана с накинутой поверх типизацией в виде тайпскрипта.
Практически единственный хороший подход в вебе, если не учитывать слегка сырой elm.
>ангулар решает задачи
Да, но делает это через ненужный оверхед. React, например, решает те же задачи и намного элегантнее. Да это не фреймворк, но у реакта есть своя экосистема в которой есть всё что необходимо.
мимо котлин господин
>Idiomatic way to remove duplicates in a slice
https://www.reddit.com/r/golang/comments/5ia523/idiomatic_way_to_remove_duplicates_in_a_slice/
Скорее от создателей append(a[:i], append([]int{x}, a[i:]...)...)
if err!=nil {
}
Это че, мне после каждого вызова надо будет описывать блок обработки ошибки вместо самой логики. То есть логику придется размазывать по коду между блоками обработки ошибки?
В общем, да. Обычно делают обёртку для этого дела.
func handleErr(error err) {
// обработка
}
res, err := shit(a, b)
handleErr(err)
В чём вин-то? Это просто плагин для идеи вынесенный отдельно.
ну то есть проверку на err!=nil вынес в handleErr. Но handleErr получается тоже должна возвращать типо ошибка/не ошибка, и ее результат также получается нужно проверять и либо продолжать выполнение логики либо возврать из функции делать? Ну дак в обертке-то еще и контекст потерян, и если мне там кучу ресов надо освобождать например, это мне придется в handleErr все хендлы (или что там в Go) передавать?
лично у меня фрустрация не от обработки ошибок, а от отсутствия нормального паттерн-матчинга и алгебраических типов. всю хуйню простил бы за эти две вещи, а так да, goрит
кстати, раз такая уже публика, то почему никто ещё не запилил язык компилируемый в go?
Ну ты уж загнул. Создатели даже map/filter/reduce отказались делать. Обоснование этому в классическом go-way: НИНУЖНО.
их можно просто реализовать как методы, эта вся хуйня уже проходилась в прошлом с js. в сравнении с nodejs го выглядит няшнее в перфомансе, но деревянный синтаксис так и просится навернуть сверху какой нибудь сахар
не могу нагуглить, Один гугл воспринимает либо как транслитерацию русского "один"(одна штука) либо как либо для документации. с have всё ещё более плачевно. ясен пень что golang have something
*либу
>Но handleErr получается тоже должна возвращать типо ошибка/не ошибка, и ее результат также получается нужно проверять и либо продолжать выполнение логики либо возврать из функции делать
Нет, зачем так? Есть три варианта:
1) игноришь ошибку
2)обрабатываешь её здесь и сейчас и забиваешь на нее
3) делаешь в данном месте возврат в вышестоящую функцию
лол, увидели популярный плагин, форкнули и теперь будут бабло гребсти с сусликов.
У опенсорсных макак от этого не бомбит?
Нет, я готов платить за гарантированную поддержку и фичи.
Самое смешное, что оригинальный плагин собираются ограничить ультимейт версией идеи и др. её платными ответвлениями. Опенсорс, он такой.
Хотя у кого там бомбить-то будет — поищи вон на реддите обсуждения iris-а. Это такой веб-фреймворк, автор которого отклонял все коммиты и коммитил от своего лица. И этим до сих пор кто-то пользуется.
А как еще можно организовать?
Как оформить платформу, напрямую не приносящую доход, но позволяющую на себе разместить то, что доход приносит?
Если сделать публично - своруют, если приватно - заебет все контролировать.
Пока дошел до стратегии: отдать публичную часть корки попенсорцу, под утехи и забавы, а приватную анально контролировать, чтоб не утекло.
И аффтору хорошо: пилит только свое.
И попенсорцу: на платформе можно много чего козырного запилить, да и если аффтор-мудаг забьет хуй и полностью удалит приватный сервис с платформы, попенсорц сможет запилить более бледный, но вполне функциональный аналог, тем самым продолжив свое трудное, полное боли, попенсорц-существование.
Такой вот праздник швабодки.
Годно?
Сколько можно повторять, конченные блять. Язык это нечто большее чем система типов и набор грамматик. Язык это еще рантайм, язык это еще тулинг, язык это еще деплой и т.д. и т.д. Мне Go дает быстрые программы, широкую экосистему (пакетов много, легко прикрутить), простой деплой с кросс-компиляцией и хардверную конкуррентность. Это очень охуенный инструмент если ты знаешь что с ним делать.
То есть заставили.
Пишу я на %ЯП-нейм% и мне всё в нем нравится, мне не нужно себя через силу заставлять использовать его, при этом он мощный и на нём можно писать как всякие мелочи так и серьёзные приложения. Порой даже думаю, как хорошо, что я выбрал именно его в своё время.
Довольно часто можно слышать фразу, особенно здесь, что язык-лишь средство, а не объект поклонения. Я согласен, но приятно же, когда язык одновременно прагматичен и написание кода на нём доставляет удовольствие?
>>894889
заставили, начальство как лохи купились на выигрыш производительности, а теперь логти грызут и на нас орут, что скорость разработке просела к хуям (у уже молчу про качество, так как наши велосипеды глючные, что сторонние, да блять сам язык глючный)
мими питон макака
Лол, вспомнил сразу детство и пхп, там тоже вечно строки парсили, чтобы тот или иной тип узнать
> паттерн-матчинга и алгебраических типов
Проиграл, нахуй это в полностью императивном языке?
Горят в основном javaдауны, типо тебя, которые приходят срать в тред. Потому что ничего кроме Huita<DrugayaHuitaInterface> huita = new Huita<DrugayaHuitaInterface>>(); не можете распарсить.
Нравится. Джава оверхед для моих задач, нода говно, на пайтоне, временами рубях, пишу на работе. Функциональные идеи не нравятся, а лисп, точнее slime emacs'a, не осилил.
https://habrahabr.ru/company/ecwid/blog/315228/
Гоферы, почему вы такие глупые сектанты? Это же жесть))
Почему ты называешь гофером человека, который не знает Go? Человек из твоей цитаты не гофер и не джавер, а просто обычный еблан. Гоферы и Go тут не при чём.
Это толстый троллинг, зря ведешься.
Таким даунятам как ты котлин завизли (и скалу), а ты все порашу семедесятых готов жрешь, без обработок ошибок, без нормальных регулярок, без пропертей (лол голые структуры) и глючнее чем пхп и js (хотя те были стандартом де-факто)
> порашу семедесятых
Идеи Оберона, и они хороши. Не нравится парадигма языка - не используй его, все просто.
> без обработок ошибок
Я года 4 писал на сишке и не знаю, что это такое. А тут даже defer и recovery есть.
> без нормальных регулярок
Там, где мне нужны серьёзные регулярки, лучше perl скрипт накидаю. Простые регулярки в го хороши.
Потому что ты глупый суслик и не видишь тут очередной вкидон месседжа о том, "вот я возьму Го за пару дней и стану про-программистом на нем". Просто он сказал это в таком блядь идиотском контексте, что вызывает только тупое умиление от маркетинговых стереотипов.
>Я года 4 писал на сишке и не знаю, что это такое
Посмотри в окно, мир за 44 года изменился.
>лучше perl скрипт накидаю
Там где нужно стандартное де-фактор решение - "я запилю свои костыли", ага. Да ты просто мастер проектного дела.
скорее всего он писал круды на сишке, такие долбаебы тоже есть и для них го действительно очень крутой язык (как это было бы в 1970 годах)
Просто понравился язык. Такой же простой, но с куда большим набором фич.
Для эрроров можно типы задавать.
Так что ничего парсить не надо, стандартные case
Но это если эррор написан нормально
Конечно, в нормальных языках исключения имеют дерево наследования, скажем ты можешь прописать IOException вместо всех ошибок данного типа.
В говне тебе придется ручками все ловить, лол
А так же не забываем, что в будущем придется еще ручками стектрейс прописывать, так как рантайм ошибка "йоба-фукнции" не о чем не говорит, если вызывается тысяча раз из тысячи разных мест.
И да, будут тысячи либ улучшающие работу с ошибками, как и с логгерами сейчас и будет сотня тысяч несовместимостей.
Запомни уже Анош, Го не подходит для реального приложения, только хуяк-хуяк-скрипты.
а нахуй тогда в императивном языке возможность передавать функции аргументом в другие функции?
окей, а какие противоречия у паттерн матчинга, который по-сути switch? тут даже мб и switch хватило бы, если бы завезли хотя бы union типы
а вообще то что ты говоришь нихуя не аргумент, а больше похоже на троллинг или просто тупость
Нету, как и всего остального, потому что клали болт на синтаксис вообще. Но радует не это, радует то, что маркетологи + евангелисты настолько качественно выполнили свою работу, что суслики даже отстаивают многие решения (точнее отсутствие вообще каких-то решений).
> отсылка к "авторитетам"
ретроград? ретроград же!
в си не было http сервера из коробки, откуда в гоу, нахуй СЕРВЕР? что за хуйня!?
То что некую (я бы сказал большую, но не всю) аудиторию программистов постоянно разводят - это давно не секрет, но больше лулзов приносит сочетание этой тупости с их высокомерием.
Не является ли маскот-дебил - этакой скрытой шуткой над ними?
Есть тут ZOG эксперты, которые забыли принять таблетку?
омг. ещё один адепт Exception Driven Development. хочу прочитать файл на диске, а его нет - нужно что бы случилось выпадение ошибки которое непременно нужно ловить, иначе вся приложуха упадёт. вот где-то здесь ахуеть можно. а если нужно записать в файл но не хватает прав? конечно нужно снова что бы случилось выпадение ошибки. однажды ошибка выпадет когда ты будешь ехать в карете и её будет наматывать на колесо, пока у тебя глаза не втянуться в череп, как у улитки.
если смотреть по тестам, то это самый медленный асинхронный сервер, так что считай его там нет
> маняврирование в сторону снижения значимости факта
сноб? сноб же!
в си не было корутин и каналов из коробки, откуда в гоу, нахуй КОРУТИНЫ И КАНАЛЫ? что за хуйня!?
Я не то анон, я просто хотел обосрать сервер.
Но соглашусь, только крайне поверхностно можно сравнить го с си, но не забывай что сусклики совсем не интеллектуалы.
зачем вообще сравнивать гоу с си и оправдывать отсутствие фичи Х в гоу тем что её не было в си? я такую хуйню если кому расскажу - мне же не поверят!
у тебя нет друзей и тебе никто не верит. Ты же на двачах и в го-треде, кого ты пытаешься обмануть здесь
лол. друзей нет, но есть сотрудники на работе, с которыми мы иногда ржем с найденных нами странностей в той или иной сфере айти. вот гоу достаточно богатый источник лулзов
Я фанбой и еще здесь. Мне пичот только от ошибок и немного от отсутствия женериков, но женерики таки ненужны их слишком сложно понимать потом, а у меня айкью и так около 80, а ошибки я просто ИГНОРИРУЮ.
> в си не было корутин и каналов из коробки
> в си не было http сервера из коробки
И тут Остапа понесло.
1. Когда пилили С, то идеи асинхронного программирования были только в теории. А go лепили чтобы избавиться от костылей в специфичных нуждах компании.
2. В С из библиотек вообще нихуя нет из коробки кроме libc.
> А go лепили чтобы избавиться от костылей в специфичных нуждах компании.
По сути go повторил путь эрланга.
И так, сегодняшний пациент утверждает почему дебаггер не нужен.
Го не только лучший язык тысячелетия (того тысячелетия), так взяв его, вы перестанете писать баги! Именно поэтому дебаггер это атавизм старых глупых языков.
Он слишком узкоспециализированный и начал набирать актуальность только в последние 5 лет про то, что его допилили до вменяемого состояния (когда можно просто взять и заюзать а не фиксить баги в нём самом и допиливать под свои нужды) как раз в последние несколько лет промолчим, лол.
>>895991
Да нет.
Эрланг - из тех инструментов, что медленно но верно набирают обороты по большому счёту потому, что немного обогнал своё время, и имеет потенциал только расти (потому что аналоги тупо не поспевают за упущенным временем и все говно).
Го же - дельфи1 в 1. Простой язык, киллерфича которого в текущий промежуток времени является мейнстримовой. Но суют и сувать будут везде. Собственно, на этом всё, дальше сами знаете.
Так то же самое несут хачкель-сектанты, мол, отладчик нинужин. Что как бы намекает что они ничего и не пишут, лол.
А вообще, сервер отдающий статику конечно так трудно написать. Суслики даже не пытаются скрывать своё умственное развитие.
Про типизацию и обработку ошибок порадовало (а под злым компилятором он что имеет в виду - запрещение компилировать если есть лишний импорт?)
лол, горутины киллер фича?
ну серьезно для чего ты стал их использовать?? Про асинхронный пиздеж не надо, он нужен только в блокирующий i/o,а это редкое явление по процессорному времени, а вот дергать планировщик каждый вызов функции это нормально (причем ОС тоже делает это)?
Не поверишь, но я не писал никогда на пхп, вообще никогда, даже гостевух. И мимо веб-параши на го тоже прошел. Веб - для педиков.
Да, это киллер фича позволяющая утилизировать все лишние ядра безо всякого пердолинга. Как и в дэльфи в своё время с гуем - может и будет притормаживать, зато легко и просто.
Еще раз, выигрыш будет только во время блокирующий операций (которые уже юзают реже), а в остальном твой поток и так в максимум отработает (но не в ГО, так как там будет шедулер на каждый вызов функции дергаться, представь какая просадка)
Вероятно это про функцию которая переводить строку в int - Atoi() - охуенная функция, а то блять ParseInt() пиздец какое длинное и запутанное имя.
ASCII to INT, что не так?
>>896041
Да похуй на шедулер и тормоза, можно сделать быстро и модно загрузить ядра.
Имеется ввиду что его готовят педики. Ты еще скажи что макак не играется на заднем дворе у себя.
Вообще чат там нормальный был раньше, пока ебанутая Леночка не забанила 255-го. Я и сам съебал оттуда после его бана, пусть варятся в своих стартапах сами, дауны.
>Сокращение по первой букве в 2016 году
>Что не так?
Все отлично, продолжайте.
>Да похуй на шедулер и тормоза
>и модно загрузить ядра.
чтобы этот монстр тормозил уже на всех ядрах, лул
У мясной дырки https://twitter.com/webdeva пригорело. Вот и вся стори. Да похуй на этих чертей.
её по-моему завезли, когда упрекнули что голанд-шоу как сосисочная вечеринка, а все норм подкасты пищалку имеют.
Но все равно от нее толку ноль, она там почти молчит всегда.
Правда помню подкаст, она проговорилась про отчет (она ляпнула типа "как было бы удобно если бы ты сделал так, было бы удобно отчет составлять").
У меня сразу же включился ZOG - отчет кому??? Некой доброй компании?
что касается чатика, так там иногда такую херню несут, и так слащаво себя ведут, что по ощущениям как минимум 95% участников там даже не программисты, а как бы просто играются в Го и либы (есть такие полудурки)
>Некой доброй компании?
Ну так у них же есть спонсоры. И вангую не только диджитал оушен. Платят так или иначе за популяризацию.
Да не был он нормальным ещё задолго до неё. Вспомните как там забанили илюшу за "говно" и устраивали охоту на ведьм (если кто найдёт на архиваче/в гугле стори будет) или как там дивана0 заставили расплакаться и убежать.
Это изначально сборник пхпдебилов традающих регулярными истериями.
Там именно сказала в контексте отчета о темах подкаста. Это было сентябре или октябре (в край в августе).
Но вообще явление платных евангелистов это не секрет даже, поэтому думаю срать.
Они закрыли чат и теперь никто не мешает им чувствовать себя важными разработчиками, утопая в оргиях само-лизания.
Ну хз, я там туда пришел за помощью по го, встретил 255-го, остался ради общения. Человек, который не только в го шарит, но и вообще, и в общем. А я как раз пилил одну вундервафлю, а у него как раз был интерес в такой вундервафле. Должно было срастись, но эта тупая пиздень взяла и дропнула его. Я не долго думая самодропнулся. Так что я не очень в курсе как там было пару лет назад. Но что меня взбесило с самого начала, тоже мод, щас не вспомню ник, с самого начала доебался мол хуль я не самосдеанонился на входе? Я охуел от такого и показал ему фейкоакк в вконтаче. И это, кстати, потом не только ко мне такие предъявы были. Я пытался возмущаться, это же интернет, ебана! Но там набегали из близких к моче и затыкали рот, мол здесь такой положняк. При том что там сидит Акулович, разраб вконтача, то есть сдеанонить например меня, не составит проблем. Короче, я оттуда съебал и на то были причины. Сидеть ли там вам - решайте сами.
>отладчик нинужин
Но во всяких хаскилях/окамлах он и правда не нужен. Система типов поймает кучу ошибок, а те, которые не поймает, можно вручную найти через ручную редукцию функций. Вот автоматический редуцилятор бы не помешал, а отладчик нинужен.
Приходишь такой в сообщество, в обычное техническое сообщество, а тебя к стенке ставят и разъясняют что ты хуй и ты нам должен... (может еще ксерокопию паспорта?)
Я бы прихуел от такого гостеприимства.
Пиздец они больные уебаны.
А еще желательно не называться никнеймами и на аватарку фоточку свою ставить. Реально там не так все просто, вот выше параноик-кун тоже заметил. Но я не выкупаю в чем суть, а в ZOG не верю.
Го от этого лучше не стал, просто фанатики съебнули, это же не чатик, тут наплакаться и забанить нельзя
И вот в статье рассказывает какой го-шикарный и понятный язык, типа открыл код и сразу все прочел и вспомнил.
Я через полгода открыл го-код я охуел от процедурного мусора.
а ведь его слушают дети, продажный он хуй)
Гуглозог ему на клык лапу дал, не иначе.
Я прямо предвижу, как через несколько лет все вдруг прозреют и будут переписывать свою веб-парашу на новый модный язык, а Го будут хаять. Как с руби, примерно, произошло.
Язык уже в стагнации, ему же около семи лет?
Большого бума на рынке вакансий не произошло, тру-стори по переходу с языка X на язык Go были настолько наивными и поверхностными, что вызывали только бурление говн и отвращения. Тем более специальные холиварные сравнения языков и того что го лучше их, вызывали больше ненависти, чем попытку черного пиара.
Сейчас статьи выходят намного реже по сравнению с 2015 годом (неожиданно так). Сам язык по дизайну не развивается, хотя я и знакомые ожидали, что его доведут до вменяемого состояния, с обратной совместимостью (раз заморозили релиз).
Да и вообще он выглядел как некий фундамент, а потом типа посыпят сахарком.
Но вероятно написать статью о "ненужно" проще, чем добавить что-то в код.
Библиотеки (субъективно) выглядят как обгрызки и вообще тысячи их и все равно придется писать свое и порой в короткое время, с ужасным дизайном.
Что касается хуяк-хуяк веба, то тут важнее готовые решения и динамические языки - в общем чтобы быстро написалось и проверенно работало. Го ничего не дает, кроме экономии на железке, но разработка и время до сих пор в разы дороже железок.
Горутины, ну не так круты и нужны как казалось. Да и по перформансу мы и не увидели чуда, серьезно, стандартный го-сервер один из самых медленных асинхронных серверов.
Мое большое имхо в том, что язык просто пытаются вытянуть, подняли до какого уровня и все, он повис.
Еще я думаю, что внутри компании много кода написано и им не очень как бы хочется вносить новый синтаксис, то есть все устаревает (алиасы вот только хотели, но хомяки что-то в стойку встали), поэтому гораздо проще евангелистов заставить проехаться по ушам хомякам, что мол так и надо, так и правильно (я уверен обработают и по алиасам так же, через несколько месяцев суслики уже будут топить что это норма и вообще не портит сопровождение кода).
ндижнкс же, причём всегда если у тебя только что-то на сам апач завязано. тогда апач тоже за нждниском поставить. странные у тебя вопросы какие-то
что тут
> result, err := db.Query("SELECT anon FROM sosach where pinus_len=?", "10")
или лучше обмазываться мидлварями?
Алсо, я прогнал роуты sqlmap'ом, вроде безопасно. Но эти русские хакеры, они же везде(((
проигрываю с этого долбаеба, боиться каких-то хакеров, потратил время на прогон запросов, потратил время чтобы написать сюда, но блять не может прочитать доку где этот момент обговорен.
Ты откуда такой способный? Впрочем вы там все такие.
лол. а что если это всё некая теория заговора? все эти абсурдные советы менторским тоном, идиотский синтаксис и прочее. что если это всё создано что бы отсеять адекватных людей способных мыслить самостоятельно и вывести особую касту гоферов?
предлагаю среди таких ньюфагов форсить идею что если прочитать исходники компилятора гоу, то можно найти флаг который переключает его в режим которым пользуется сам пайк. но подробно не говорить что это даст
Хз.
не слушай тех анонов. nginx в реальных проектах чаще всего не просто проксирует, а разруливает ещё много чего. просто так ставить его конечно нахуй не нужно. это в принципе касается вообще всего - не делай чего-то, если ты не понимаешь зачем ты это делаешь. вот зачем ты на go пишешь?
А там женерики, ООП, функциональное программирование!
>>896739
Мозги промыли, зачем ещё. Вменяемый человек, кто что-то кроме пхп/жс трогал не будет на этом писать.
а ещё консоль как в питоне!
кому нам, лол? я недавно вкатился в тред, почитал и сделал такой вывод.
дарт не выстрелил так как на практике не даёт ничего что не дал typescript, в то же время имеет неебовый оверхед и рантайм с блекджеком и шлюхами. веб разработчики просто продолжили дрочить свои трансплитеры
За то как много надавал нам го:
>самая лучшая поддержка строк из всех
>на деле просто поток необработанных байт
>ошибки это значения!
>на деле лень было реализовывать что-то удобное в рантайме и оставили как есть (то есть - ничего)
>дженерики ненужны
>но чтобы совсем не наглеть сделали типизацию хотя бы в слайсах и мапах (тут оказались нужны)
>язык легко читается и очень прост
>без явной подсветки хер поймешь в коде что ты сейчас передаешь в функцию пакет.переменная, пакет.функция, переменная.поле_структуры...
>компилируемый язык, статическая типизация
>большая часть ошибок увидишь только в рантайме и если повезет (которые можно было еще на момент компиляции отловить)
>быстрая компиляция, почти как в скриптовых языках.
>в мечтах (примечание, говорят было шустро в 1.0, в общем верните мне мой 2012...)
>код элегантен.
> 3 строчки вызова API и тут же 9 строк if err != nil
> interface{} проверить на nil? так никто не делает! НЕНУЖНО!
> правильно, пускай где-то завалиться в коде, когда ты выполнишь побочные действия над данными.
За то как много надавал нам го:
>самая лучшая поддержка строк из всех
>на деле просто поток необработанных байт
>ошибки это значения!
>на деле лень было реализовывать что-то удобное в рантайме и оставили как есть (то есть - ничего)
>дженерики ненужны
>но чтобы совсем не наглеть сделали типизацию хотя бы в слайсах и мапах (тут оказались нужны)
>язык легко читается и очень прост
>без явной подсветки хер поймешь в коде что ты сейчас передаешь в функцию пакет.переменная, пакет.функция, переменная.поле_структуры...
>компилируемый язык, статическая типизация
>большая часть ошибок увидишь только в рантайме и если повезет (которые можно было еще на момент компиляции отловить)
>быстрая компиляция, почти как в скриптовых языках.
>в мечтах (примечание, говорят было шустро в 1.0, в общем верните мне мой 2012...)
>код элегантен.
> 3 строчки вызова API и тут же 9 строк if err != nil
> interface{} проверить на nil? так никто не делает! НЕНУЖНО!
> правильно, пускай где-то завалиться в коде, когда ты выполнишь побочные действия над данными.
лол, хули ты ко мне приебался, я сам могу тебе ещё больше расписать о goвне, приправив фрустрациями с поля боя. просто на дарте докер не написали в своё время, а хули ты хотел? дарт не нужен, а гоу менеджеры друг другу продают забивая хуй на касту взаимозаменяемых гоферов
но я готов умереть за твой манямир о школьниках, ведь это твоё право быть дебилом и детектить в мимокрокодилах школьников
нет, не я, а тот анон уоторому ты писал, я другой анон, не путай, с этого всё и начинается
Ок
Да нет же, в main() сразу хуяришь в подгузник всю приложуху, и похуй на ошибки. Подумаешь, файлик открыл, а его нет - это ошибка разве? Прав на запись не хватило? ДАЛААААДНО, ПИЗДИШЬ ВЕДЬ, ПАЛЮБАС!!! Короче, я хуярю дальше, а ты там сам права ищи, пидор ебаный. Мне лучше знать, есть тут права или файлик, или нет.
Так и надо писать, это залог успеха.
Тут подробно расказывают как открывать Go сервисы наружу.
>println('xyu')
Я считаю это адовым пиздецом и переусложненным ненужно. Потому что приходится постоянно тянуть мизинец к шифту, что не есть удобство.
> одинарная кавычка переусложненное ненужно
> статический язык
Вы там совсем уже зажрались со своей динамикопарашей.
Илюша, please.
Аргументируй, диванный.
Я использую правый шифт, потому-что левый размером с литеральную клавишу. Бэктики дальше шифта, да еще и слева. Но это да, вопросы к клавиатуре. Но все равно, сделойте чтоб одинарная и двойная кавычка были равносильны.
Выше вкидывали уже. Но это мёртворождённые языки. Проще взять ЯП, который точно будет развиваться и поддерживаться, чем брать вторичное да ещё и от вторичного языка.
В кавычках суть в том, что одни — символ, вторые — строка. Это же типа строгий статический язык у которого всё кастуется к и из интерфейсов, и юнит тесты в самом компиляторе из коробки — лол.
Там из дальнейшего контекста понятно, что я как раз не Го имел в виду.
ретроговно на котором привык писать анон, который рассуждает о "нормальности".
как сказал анон выше про интерфейсы, а ещё забыл упомянуть про то что строки в golang в utf8 и смысл отличия одинарной кавычки от двойной пропадает вообще. но лично меня эта особенность уже не так напрягала после паблик экспортов с имён только с Большой буквы. это пиздец, зачем!?
В гошном коде
> base_url = "https://localhost:5000/btc"
> resp, err := http.Get(base_url)
...
И, собственно, сам сервис, который написан на питоне. Дебаг в консольке на скрине. Если что, там третий питон.
Я бы сказал zaGLOt
Дебил, чтоле? У текстового сервиса крипту спрашиваешь, убери из схемы урла секуре-признак и попробуй снова. Если будет саем шиит, обязательно орну вместе с тобой
я другой анон, но разве http.Get имеет различное поведение в зависимости от протокол-части урла?
ребята, кто нить пытался править исходники или переписывать их?
Хочешь что-то переписать, что ли?
ты бы дал ссылочку, где и что накопал.
Не удивлюсь, если Пайк насыпал сахар внутрь, а снаружи сахар позапрещал, тот еще хмырь.
Да, где-то была отсылка к его словам, что многое уже готово в том или ином виде, но из-за обратной совместимости никто не знает как это запилить до версии 2.0, поэтому они просто не показывают этот функционал. Но если пересобрать компилятор go в gogcc с какими-то там флаги, то можно увидеть go-next и даже писать на нём.
>-rw-rw-r--
хуиту в integer?
Столкнулся с этим в первый день работы Го, был конечно удивлен, так как объясняли что зависимость определяется на уровне одного файла (а не стектрейса где-то в глубине, лол).
Как решение.
Надо просто поток исполнение (еще называет статичные контекст) отделить от библиотечного контекста (то что вызываемо, многоразовое).
Но тут две проблемы. Ты не можешь группировать пакеты по предметной области (что ввергает в шок вменяемых программистов). Вторая, в идеале (чтобы в проекте с миллионом функций не попасть впросак), вызывающий функции пакет, никогда не должен иметь ниже по уровню вызываемые из вне функции. Иначе рано или поздно произойдет цикличный импорт на уровне пакетов (именно пакетов, а не зацикливание функций. Этакая рекурсия пакетов, глазами гоферов).
Что касается комьюните, они или не пишут больших проектов или рефлексируют помещая все и вся в один пакет. Я даже не стал спрашивать, они то в ответах на конкретный дизайн отвечают как ебанутые фанатики, а в вопросах дизайна проектах и абстракций вообще будут хуйню нести (ну то есть они проблемы даже не обсуждают, это закрытая тема в секте).
Ладно, педрила, уговорил. Вот код
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!")
}}
Так штоли? Я бы тебе еблет разбил, если бы увидел что ты такое в продакшон толкаешь, говноед.
>switch err{
>case "Not paid":println("Goni bablo, ueba!")
>case "Unknown error": println("Che tvorish, pizdets!")
Все правильно сделал, так и надо.
Ты все правильно написал, только добавь побольше кейсов.
Так ловить ошибки - это просто пиздец. ПИЗДЕЦ, браты!
switch err.Error() {
case "Not paid":
fmt.Println("KUUUUUUUUUUUUPIIIIIIII")
case "Unknown error":
fmt.Println("HZ")
}
Все верно написано, как и задумано.
Ебанашка, если следовать как ты говоришь, то код на примерно на 85% будет состоять из обработки возможных ошибок. Это не наш путь хотя бы потому, что что в каждую батарейку придется зарываться. Ты, для начала, попробуй case'нуть все ошибки из стандартной библиотеки, потом уже будешь толстить на сосачике, умник хуев.
В смысле, у гопников принято ИГНОРИРОВАТЬ ошибки, потому что "этого не может быть"?
>то код на примерно на 85% будет состоять из обработки возможных ошибок
Все верно, так и должно быть.
что не так?
Если функция пакета А вызывает функцию пакета B, та вызывает функцию пакета С, в которой идет вызов чистой функции из A - это будет ошибкой.
Это (если в контексте с++ или джава) вы бы вызвали статическую функцию вышестоящего класса и вас бы за это отругал компилятор.
>>898123
>вы бы вызвали статическую функцию вышестоящего класса и вас бы за это отругал компилятор.
поправка - вышестоящий класс (пакет) но вызов метода даже другого класса/объекта
Это стоит записать в еще одни вины дизайна ГО.
...
var1 = callSomeApi1()
var2 = callSomeApi2()
var3 = callSomeApi3()
...
Как выглядит функция курильщика
...
var1, err = callSomeApi1()
if err !=nill {
return nil
}
var2, err = callSomeApi2()
if err !=nill {
return nil
}
var3, err = callSomeApi3()
if err !=nill {
return nil
}
...
И тут же мне они говорят, что го-код читается легко!
...
var1 = callSomeApi1()
var2 = callSomeApi2()
var3 = callSomeApi3()
...
Как выглядит функция курильщика
...
var1, err = callSomeApi1()
if err !=nill {
return nil
}
var2, err = callSomeApi2()
if err !=nill {
return nil
}
var3, err = callSomeApi3()
if err !=nill {
return nil
}
...
И тут же мне они говорят, что го-код читается легко!
>var1, err = callSomeApi1()
>if err !=nill {
>return nil
>}
>
>var2, err = callSomeApi2()
>if err !=nill {
>return nil
>}
>
>var3, err = callSomeApi3()
>if err !=nill {
>return nil
>}
Охуенно.
спасибо, порыгал
> Если функция пакета А вызывает функцию пакета B, та вызывает функцию пакета С, в которой идет вызов чистой функции из A - это будет ошибкой.
Естественно, ошибкой говнокодера.
В каком месте?
Я придумал для это термин - пакетная рекурсия говна
Ведь компилятор го - не может исключить пакет которые уже загружен в цепочке пакетов, даже у php макак есть include_once.
Я тебе больше скажу: даже сишникам завезли #pragma once и простые межмодульные экспорты.
Я тут поясню, а то мало ли тут какие специалисты.
Нет бы добавить один 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
}
>Ты уж определись, хочешь ли ты ловить ошибки или нет.
Они и ловятся (уровнем выше, в общем это unchecked исключения, скажем в kotlin, java, в шарпах, плюсах... во всех других языках), просто в нормальном мире программирования - обработка ошибок не является частью контекста исполнения и обрабатывается отдельно (скажем в catch блоках и не обязательно в том же месте). И причина проста, наличие ошибки уже говорит об "другом" поведении для текущего модуля и в большинстве случаев работу модуля нужно прервать (и скорее всего решается это где-то уровнем выше в логике программы).
Да и в том примере проще в catch прописать какой-то общий IOException один раз, чем три раза дергать if != nill
То есть, ошибок либо нет (и это нормальное поведение), либо они есть и это исключительная ситуация, которая обрабатывается отдельно (и именно поэтому, вместо розового пони мира ошбики это значения мы видим реальное if != nil).
...и да, ошибки должны быть типизированы уже на уровне стандартной библиотеки и вообще предоставлять что-то кроме как обычную строку.
Текущая модель ошибок подходить чтобы записать в логер и все, хотя ошибки это у нас значения (правда какие непонятно).
Вообще если по честноку, вам вообще никакое API для ошибок не завезли и отъебались только статьей (и евангелистами)
чёт проиграл. я так то вообще node-js разраб, который вообще вкатился из web фронтенда, но как-то да, go за гранью добра и зла
я не гофер, но ты тоже мудак. идите нахуй со своими эксепшенами. стек вываливать наружу нужно только в пиздец каких ситуациях, которые и предвидеть то особо не возможно. пока у тебя есть эксепшены - у тебя есть тормоза и оверхед, не говоря о том что это явные признаки плохого кода. код должен быть однозначен, даже таком имеративном goвне. ветвления в коде из-за внешних факторов - это шизофрения
> стек вываливать наружу нужно только в пиздец каких ситуациях
ПИШЕШЬ ЙОБА-ФУНКЦИЮ
@
ЙОБА-ФУНКЦИИ ВЫЗЫВАЕТСЯ ТЫСЯЧУ РАЗ В РАЗНЫХ МЕСТАХ ПРОГРАММЫ
@
ПРИЛОЖЕНИЕ РАБОТАЕТ И ВДРУГ ПАДАЕТ.
@
МЫ ВИДИМ ОШИБКУ ЙОБА-ФУНКЦИИ, ОНА СКАЗАЛА ЧТО ДЕЛИТЬ НА НОЛЬ НЕ ХОРОШО
@
ТЫ ПРИХОДИШЬ В НЕОПИСУЕМЫЙ ВОСТОРГ ОТ ДЕТАЛЬНОСТИ ОШИБКИ, ТАК КАК В ДУШЕ НЕ ЕБЕШЬ ГДЕ ИМЕННО ИЗ 1000 ВЫЗОВОВ ЭТО ПРОИЗОШЛО - ВЕДЬ ДАУН С ДВАЧА СКАЗАЛ ЧТО СТЕКТРЕЙС НЕНУЖЕН.
Кстати сектанские долбаебы с го-чата говорили такую же хуйню.
Поэтому просто съебись нахуй, глупое животное.
>хороший тому пример к тому же проверенный временем - это erlang
В твоем мире бегают розовые пони?
На тебе хуету:
Ты у мамки молодец
@
Написал кучу проверок
@
Код работал 3 суток
@
На четвертые криво настроенный периодик удалил файл ровно сразу после твоей проверки его существования
@
А ты уже его открываешь
@
Это же не ошибка, мам, должно открываться!!! Скажи им
Просто иди нахуй, дебил, не всегда есть возможность избежать гонки с внешними для твоего кода подсистемами. Эти гонки надо уметь предусмотреть и обработать. Но у тебя же боязнь трейса, трейс очень медленно работает раз в 5 лет, но даже тут НЕДОПУСТИМО. Ты действительно фанатик, как Пайк прям, ведь ВСТАВКА В МАССИВ - ЭТО УЖАС УЖАС ДОРОГО НЕ ДЕЛАЙ ТАК.
А в чем он не прав-то? Или у тебя есть другие способы узнать где что упало без стектрейса от эксепшена?
>>898515
Пиздец долбоёб. Тормозов там столько же, как и от го-стиля, пока это исключение не произойдёт (причём если оно типизированное — и там тормозов не будет).
Про ветвления извне вообще кекич. Интересно где же суслики набирают таких довнов.
Да, это так.
Го - это язык, где говнокодеры могут побыть дебилами - ужасными, бесчувственными, безразличными дебилами, которыми они на самом деле и являются.
> Я придумал для это термин - пакетная рекурсия говна
В пайтоне есть такая же пакетная рекурсия. Говорю же - это проблемы хуёвых кодеров, не умеющих правильно по пакетам функционал раскидать, не оправдывай свой хуёвый скилл проблемами языка.
Зачем нужен го, если есть хаскел? Software transactional memory есть, дохуллиард зеленых тредов наплодить можно, есть и исключения, и в Maybe/Either завернуть можно. Хватит выебываться, вкатывайтесь уже.
В питоне можно импорт в тело функции упихать в крайнем случае
>>898665
Булшит евангелистов имеет некий порог вхождения, опытный специалист удивиться тому что ему пытаются впарить, а вот бестолковые будут есть это и еще радоваться.
Именно поэтому все сообщество напоминает невменяемых фанатиков, там вот таким странным отбором сконцентрировались "лучшие умы человечества".
а кто сказал что пайтон не кусок переоцененного говна?
> Именно поэтому все сообщество напоминает невменяемых фанатиков
Имплаинг, что большинство джаво-, питоно- %langname%- даунов не такие же фанатики. Яркий пример срущие в го тредах хейтеры, которые сбежали из своих протухших хаскелезагонов.
в го не обязательно проверять файл на существование, если какая-то операция не может выполниться, она вернет ошибку, вот и всё
В чем и суть. Сколько бы эти евангелисты каноничного ООП и мимовкатывальщики не срали кирпичами, Go как простой язык общего назначения уже взлетел.
а чтобы узнать что именно произошло (нет файла) или ошибка ввода-вывода или доступа, нужна парсить строку ошибки?
Что пугающего в
if ( ! fileExist()) {
// создаем файл
}
только в мире розового пони, хотя теперь из перечня вакансий, аля:
php, js, brainfuck, haskel, sql
и правда иногда встречается go, но это скорее какой-то хипстер им там наговнокодил на нем (а менегеры поздно поняли откуда вонь).
Столько там языку лет? Все взлетает?
лол, свинособака не понимает что какой-нибудь пыхарь или пистонист может взять и переписать на goвне узкое место в своём проекте и довольны все и заказчик приобщился к модным технологиям и манагер всем теперь продаёт "мегакодера" и кодер на линкедине ещё один скилз добавил. на фоне всего этого 47 хроммосомного пати, бегающие вокруг с порваным пердаком джависты и подобные им - единственное что доставляет
так можно и в го
Можно делать проверку отдельно, можно не делать.
И парсить ошибку как текст не надо, в го у ошибок тоже могут быть типы
Вот пример
file, err = os.Create(filename)
if e, ok := err.(*os.PathError); ok {
.//error
}
>какой-нибудь пыхарь или пистонист может взять и переписать на goвне узкое
узкое местное переписывают на си, ты не забывай что го такая же медленная херня как джава, да еще и с ГЦ (что делает ее еще более бестолковой для расширений).
Другой момент, что пыхари и питонщики на хую вертели недоразвитый го после своих божественных динамических языков с готовыми фреймворками.
Ты чем там порадовать скрипщиков решил? Что для парсинга json иногда можно упороться в 50 строк кода? Ты серьезно? Иди катайся на розовом пони.
иди нахуй, дабл, лол
в говнах конкарентность с полпинка и всё для неё есть из коробки. решения на пхп/пистоне кривые, а js бекендщики люто хейтят, похлеще местных ватоголовых что хейтят говно. конечно они недоумевают, но балдеют, пушо в их основных языках так они не могут.
>узкое местное переписывают на си
проиграл
ты видел как пыхари код пишут? у них всегда открыта вкладка с докой по стандартной либе, лол. какой нахуй си?
иди туши пукан в другом месте, а то у него на пхп ели пишут, на сях не могут, а блять на тормознутом языке с ГЦ - запросто, сказочник
ты самый бестолковый фанбой из го которого я встречал, естественный отбор в го дает хорошие плоды (или каникулы)
уёбок, перечитай мои посты, я хуесосил гоферов, только ты настолько туп что продолжал несколько раз отвечать мне как "фанбою". гугл уже в ольгино ботов нанимает для пиара?
ты долбаёб, напиши асинхронный производительный сервер на си. а если написал, то какого хуя ты делаешь в пыхе/пистоне? если ты можешь написать на си, то можешь и на пыхе/пистоне ибо не особо сложно, но геморно и сами языки не сроектированны для этого. goвно с деревянным синтаксисом - как раз уровень этих давнов + даёт плюшки недоступные им.
>перечитай мои посты
>в анонимной борде
Сука, где вас таких тупых производят?
Это не десант с закрытого го-чата?
>асинхронный производительный сервер
>пистон
>сами языки не сроектированны для этого
Телл ми моар
>напиши асинхронный производительный сервер на си
сделал, но не понял нахуя мне асинхроность кроме i/o операций.
>то какого хуя ты делаешь в пыхе/пистоне?
Продуктивнее писать бизнес-логику, на си много бойлерплейта.
Ты же не долбаеб писать круды на сях? Хотя, ты же спрашиваешь...
В среднем одна неделя на пхп, это месяц работ на сях (два с отладкой).
То есть, дешевле написать расширение на реально узких местах, чем все приложение. Ты бы это знал, если бы был программистом.
>goвно с деревянным синтаксисом
> как раз уровень этих давнов
Надо быть долбаебом или мазахистом чтобы с нуля писать веб на этом.
Для малых и средних проектов, ничего удобней и приятней скрипок нет, для мега-сложных проектов с кучей абстракций - была и будут jvm языки, в край шарп, или может свифт пульнет.
Го не влез не туда и не сюда. Писать скриптные проекты на нём - уродливо и очень муторно (так как отсутствие сахара это тонна того же бойлерплейта).
Производительность - я посмотрю как твой язык будет жрать проц, без поколений в ГЦ (каждый раз пережевывая гигабайты одного и того же). Просядит как скриптовые языки.
Асинхронность - лол, ну завезли уже асинхронные i/o и БД, а твое говное как дергало планировщик каждый вызов функции, так и будет.
Компиляция - нет не дженериков, даже interface на nil хер проверишь, большая часть ошибок будет рантайме - и нахер нам тогда компиляция.
Это кстати очень похоже на байт от гугла: они выпускают язык, пиарят его, мол, позволяет экономить на железе, а сами реализовывают идеи быстрее чем модные стартаперы с го и имеют с этого хороший профит.
Зато у тебя продукты охуенные и мы ими все мечтаем пользоваться. Только где они?
джва на гуглплэй и три на соурсфордже
> у гуглапараши все продукты говно
> миллиарды пользователей по всему миру
Ну-ну, запилишь годноту - приходи.
Единственный их хороший продукт — поиск. Остальное выезжает на его горбу за счёт агрессивного маркетинга.
Внезапно удваиваю. Больше всего проигрываю с гугл групп - на моем core i7 этот высер загружает простой текст по 5 секунд. Просто стыдоба.
>Единственный их хороший продукт — поиск.
сейчас это лютейшее говно вываливающее кучу нерелевантного проплаченого контента
Добавь еще google analytics
Нет, его тут разрушали когда целый тред пытались объяснить го-довнам что Гц и правда сканирует стек. Осталось ещё объяснить зачем же он это делает, или например почему сусликовый гц грузит цпу похлеще жявного — можно будет наблюдать суицид сусликов в прямом эфире.
>пишет в гаф тред
>упоминает в одном предложении Гц и стек
>ожидает адекватной реакции
хорошая попытка
Что такое вась, тебе ещё разок скинуть ссылку на ишью на гитхабе говна? Или послать почитать как гц работают?
Типичный гафер сгарел.
лол, я как раз знаю что и как в гойе, а вот ты принёс тупейший развод расчитаный на совсем уже дыбилов. ты понижаешь градус адекватности, я кормлю тебя говном. баланс придумал не я, может боги, может прохожие бомжи в песни спели
Высокоуровенные статические языки на гау и жяве заканчиваются? что за истерия массовая — на лоре все веб уже на си и расте пишут, тут какие-то дураки загуглить языки программирования которые им нужны не могут.
так ты тут поплакал но не ответил.
Надеюсь ты сейчас не про perl делфи и всякие шарпы начнешь лечить?
Что тебе ответить-то довен? В 2к17 даже в лиспе запилили возможность писать с полноценной статикой, чо тебе надо-то мразиш?
https://habrahabr.ru/company/scorocode/blog/317450/#comment_9979114
лол, я даже не буду пытаться понять ты один семён или вас туту набежало, но лулз в том что вы пишете на уровне будто не осилили гав и теперь у тебя припеканус
Что за маневры начались, я тебе спросил, на чем писать нормальный статик-типизированый веб в 2017, если го-говно, а джава избыточная что пиздец (и никому ненужный шарп туда же).
Ты блин еще бы мне кобол сюда принес, лисподолбоёб
если джава и го:
-у го нет поколений в ГЦ - чем больше хип, тем тормознутие.
-но есть стек и value type - что немного поможет (нет конечно).
-джава оптимизирует код лучше, за счет jvm может оптимизировать даже моменты которые сишный O3 не может
-за счет jvm есть спекулятивная оптимизация.
-для джавы пилят бинарник graal вроде 9.0 будет (так что и стартовать будет быстро, хотя мы все сервера пишем же, нам срать).
-jvm не могут создавать новые версии которые будут тормознутие старых. На го похер (помним просадки в 1.6 и 1.8 за счет оптимизации ГЦ, платой проца).
Так как ГЦ это узкое место производительности, продолжем:
-есть выбор разных ГЦ у джавы
хочет раз в 5 минут собирайся потратив 100мс (что срать для веба), хочешь каждый 10мс, но заплатив просадкой 20% проца за реалтайм, лол.
-есть возможность тюнить ГЦ и реально выжить в сложных местах что-то. В го? В го маскот думает за тебя что тебе лучше
>>900058
Тебя спросили, как протестить, а не твои рассуждения на тему "я хейчу го, поэтому вот причины, по которым джава, наверное, будет лучше"
>>899997
Вот какой-то тест
https://benchmarksgame.alioth.debian.org/u64q/compare.php?lang=go&lang2=java
>рассуждения на тему "я хейчу го, поэтому вот причины, по которым джава, наверное, будет лучше"
Это называется "правда глаз режет". Если бы было что ответить — парировал бы.
>Вот какой-то тест
Ты поехавший? При чем тут бенчмарк?
>>899997
А нахуя тебе это в самом языке/его тулките? Это функционал любой системы из коробки. (h)top на никсах и диспечер на шинде.
Если нужно прямо измерять сколько тактов и кб уходит в каждой функции — есть из коробки гуглевский pprof.
Нет. Я их воспитывал - прописывал пиздюлИн.
Они на удивление быстро усвоили правила приличия - за какой-нибудь год. В отличии от тебя - ты и после 20 лет нихуя не понял.
Так что они как минимум в 20 раз умнее тебя.
Нет, но обычно редактор такое умеет.
Ты долбоеб, у нас таких в АТО отправляют. Расскажи мне, даун, как ты замеры делаешь? Го - бинарь, жвм - виртуалка и говно в байткоде. Даже так считай, считать с диска джва метра гошного бинаря и 80 метров всяких говноскриптов на баше в перемешку с сишными бинарями, всю эту мешанину ты и называешь ЖВМ. Еще раз, ты отвечаешь как полный даун, который не может в контекст, во-вторых, пошел на хуй, жавадаун.
Ты новичок?
Замеры кода делают так: опрашивают аппаратный счетчик процессора, запускают код, еще раз опрашивают счетчик. Дельта счетчика и есть время исполнения.
Как видишь никакой зависимости от размера кода на диске нет - только время исполнения.
Для явы еще прогрев кода устраивают - вызывают код тысяч 100 раз перед замером, чтобы все оптимизации прошли.
Я конечно понимаю что ты еще зеленый и даже такие основы вызывают у тебя проблемы, но в следующий раз не пались так - пацаны за такие глупые вопросы тебя с ходу обоссут, и поделом.
А пока я добрый - мотай на ус. Может даже за умного сойдешь, если будешь рот поменьше раскрывать.
Лолд. Ты рсскажи юзеру что твоя параша не тормозить, а если тормозит, то надо 100к раз запустить что сработали все оптимизации. И пусть еще гигов 60 памяти докупит, а то чет медленно прогревается. Какой же ты тупой, пиздец.
Очередной нытик?
Ты не знал как замерять - тебе любезно рассказали.
Чего тебе еще надо, собака?
это долбаеб пытается задеть чувства самого быстрого ГЦ и лучшего jit компилятора?
Иди лучше сделай своему го вменяемую скорость хеш-мапы до уровня джавы и потом мы еще попробуем сравнить это говно
эти бараны в выдачу хеш-мапы поставили рандомайзер, чтобы не казалось что мапа сортированная - пиздец
Порванный фанбой это скучно, ты лучше расскажи,
каково ощущать, что тебя считают таким дебилом, что добавили рандомайзер?
а вообще го весьма удачный эксперимент, мы теперь игнорируем людей у которых есть приписка Го в резюме
У меня возникла теория.
Го - как единица психической аномалии в программировании.
Если человек так легко выкидывает из головы все эволюционные решения принятые в программировании, то либо у него их совсем не было (в голове), либо он настолько хуевый специалист, что готов жертвовать инструментом в пользу моды/понтов/авторитетства.
Недаром они такие неадекватные.
>-джава оптимизирует код лучше, за счет jvm может оптимизировать даже моменты которые сишный O3 не может
>-за счет jvm есть спекулятивная оптимизация.
Это все компенсации убогости языка (из за боксинга, виртуальных методов, стирания джинериков и тд)
В итоге + на - дает ~0 преймущест по сравнению с другими рантайми (типа .NET или GO)
-для джавы пилят бинарник graal вроде 9.0 будет
> (c) В основном работа идёт с java.base, но в JDK 9 даже он официально поддерживаться не будет, вся фича экспериментальная. А Graal тоже тестируем.
>стартовать будет быстро
> (c) В случае с холодным стартом проблема медленного запуска может с AOT не решаться, а усугубляться: теперь надо ещё больше грузить данных с диска, потому что нативный код в общем случае ещё больше, чем байткод
Oracle планирует использовать его в AOT только для компилирования одного модуля из стандартной библиотеки Java
И да же он один превращается в бинарник на 265MB (у конкурентов 30MB)
Да и поддерживается только Linux x64
Подробности http://jug.ru/2016/12/aot-hotspot/
мимо джавист
>мимо джавист
мимо долбаеб ты.
>виртуальных методов
jvm и это оптимизирует и даже половину методов инлайнит или выбрасывает нахуй (если это геттеры и сеттеры)
>стирания джинериков
что за ересь?? в байткоде нет денериков, долбаеб
>В итоге + на - дает ~0
нехуя ты фантазер, то что ты маня не вкурсе как там под капотом и что боксинг дает тебе на ноль всю оптимизации SIMD (и прочие радости, которые даже -O3 не может) это лишь хороший показать что ты гофер
Бинарник нужен для клиентского ПО, для быстрого старта и все, но джава чаще крутиться на серверах, поэтому мне срать (и другим 99%), мне jit важнее (так как он будет мощнее оптимизировать чем компиляция, в том числе разворачивать циклы с динамическим счетчиком и использовать спекулятивную оптимизацию).
Мой диагноз твоих пониманий и знаний в ИТ - уровень гофер
>jvm и это оптимизирует
Во первых не всегда, а только когда есть одна известная имлементация.
Девиртуализация есть и в том C# + там по умолчанию методы не виртуальные
>и даже половину методов инлайнит или выбрасывает нахуй (если это геттеры и сеттеры)
и в этом нет ничего уникального, другие компиляторы (C#/GO/C++) делаю тоже самое
>что за ересь?? в байткоде нет денериков
Дубик, я и имел в виду type erasure в дженериках ( https://docs.oracle.com/javase/tutorial/java/generics/genMethods.html )
>мне jit важнее
да похуй мне что тебе важнее, просто выше кто-то вскукарекнул про AOT в java
мимо джавист
Ты такой упоротый дебил, что реально думаешь что вам всем завидуют? Ты воспринимаешь язык как привилегию, мол ты можешь пользоваться, а мы нет и поэтому завидуем и хейтим? Ты реально дебил?
У меня кстати знакомый питонщик ушел с работы, когда их стали "насильно-добровольно" переводить на эту парашу. Я бы сделал так же, какая зависть тут? Люди бояться языка для даунов, ты только на маскот посмотри. Го - язык для ^бедных^ глупых
>Во первых не всегда, а только когда есть одна известная имлементация.
В чем проблема? Хотспот не глуп и в отличие от -O3 не покрашит код в говно (а в случае чего и откатить может)
Твои виртуальные методы это хуйня по сравнению со всякими AVX и прочими плюшками, которые делаются все за тебя (в си бы ты ебался вручную).
Шарп говно которое уже никому не нужно, да там плюх больше, но это в большом бизнесе не решает (и кстати шарп тормознутие джавы, лол).
>https://docs.oracle.com/javase/tutorial/java/generics/genMethods.html
ты просто сказочный долбаеб, ты походу не знал как устроены дженерики, что это обертка-каст вокруг Object?
>мимо джавист
уровня Го, лол
Gmail/Inbox хороший почтовый клиент. Скорее всего даже лучший в принципе.
Calendar очень хороший органайзер, альтернатив считай нет.
Maps/Earth очень качественный софт. Жаль прекратили поддерживать бесплатный Earth. Ну это, что говорится, fair enough, потому что бесплатный Earth мало кому стал нужен после того, как Maps стали такими удобными в браузере (где-то после 2008 года).
Docs — идеальна хуйня. Коллаб с задержками до полусекунды буквально. Кстати, кому интересно, гуглите Paxos.
И это основные. Еще не забывай про Blogger, который был просто лютовой годнотой в нулевые и даже сейчас позволяет даже домохозяйкам вести блог.
знаю что покормил
Вот кстати да. Тоже при анализе виртуалок пришел к одному открытию для себя: виртуалка имеет полный контроль над исполнением кода, а значит имеет возможность обрабатывать все исключительные ситуации с кодом внутри себя, чего код без виртуалки не может сделать.
Потому обернув код виртуалкой довольно просто можно добиться того, что код вообще не будет падать, даже при разрушении физической памяти машины (применительно к космозондам например) - виртуалка может взять вообще всю заботу о коде на себя, даже гарантируя корректность разрушающейся памяти, если потребуется.
А код без виртуалки будет падать всегда. Он не имеет никаких шансов что-либо предпринять. Любая мелочь, которую виртуалка может отследить и исправить на лету, вызывает падение кода вне виртуалки.
В общем виртуалка позволяет контролировать код приложения, т.к. не зависит ни от чего - этакая твоя личная микроось в большой ОСи, которую ты полностью контролируешь, не спрашивая разрешения у большой ОСи на манипуляции с кодом.
Также виртуалка открывает и другие интересные возможности, в частности для защиты. Так например жава легко позволяет строить сети из недоверенных узлов, обладающие абсолютной защитой от перехвата и проникновения, в которых MITM невозможен теоретически.
Как можно нести настолько складную ахинею и не краснеть? Расскажи свой секрет. Скажи честно, сам искренне веришь в свой бред?
Гофер, иди нахуй.
GOF, очевидно.
Няш, у нас свободное общение, если он дискутирует по существу, то он в своем праве.
>код вообще не будет падать
Программы на Java спокойно падают с сегфолтами:
- Реальные баги в виртуальной машине (те уровней отказа у тебя теперь 2: твоя программа + JVM)
- Ошибки в C++ вставках (JNI)
- Ошибки при использование Unsafe (или коде библиотек использующих его).
Ну вот смотри. Ломается у тебя физическая память, и уносит страницу, в которой был код твоей виртуальной машины - восстанавливайся. Или уносит половину байткода. Или уносит данные, над которыми байткод производит действия. В последних двух, максимум, что ты можешь - мирно убить приложение. А вот если глюканёт один бит и поменяет, например, dec на inc, то к тому моменту, как ты это просто заметишь, половину рабочих за твоим станком уже намотает на вал.
мимо
Рот закрой, гнида.
>Программы на Java спокойно падают с сегфолтами
И?
У виртуалок есть возможность управления кодом на лету, у самого кода такой возможности нет. В этом и разница.
Виртуалка - это "внешняя" сущность для кода, но сущность, которую удобно менять. Фактически код для исполнения кода.
Виртуалка может выбрать какую версию кода исполнять в том или ином случае, проконтролировать корректность результата, откатить версию кода на более стабильную если что-то пойдет не так - и это только начало.
Реальные возможности гораздо шире, вплоть до обеспечения работоспособности кода в любых условиях, вплоть до горячего автоисправления кода, если виртуалку этому научить - вся умная логика работает в фоне, уровень анализа ничем не ограничен, данные для анализа напрямую из рантайма.
И при всем этом код работает без разрывов потока исполнения - он просто не подозревает, что его фактически отлаживают на лету.
Плюс к тому виртуалка дает новый стиль программирования - код можно разделять на уровни исполнения: код может исполняться на уровне программы, на уровне виртуалки (инструкции управления ВМ, в т.ч. динамического управления) и на уровне железа (расширения ВМ, тоже в т.ч. динамического расширения - состав виртуалки можно менять на лету, не перезапуская код).
Виртуалка - это фактически программный процессор.
Современные процессоры довольно умные, на низком уровне они делают довольно много манипуляций с кодом, тусуя команды, распараллеливая код, разрезая его на блоки. В процессорах зашит почти полноценный компилятор, который на лету оптимизирует код.
Программный процессор может быть еще умнее - его править проще, у него возможностей больше, к нему можно прикрутить намного более умную логику, его структура может меняться во время работы.
А что касается зондов - думал на тему архитектуры космического железа и отказоустойчивости. Самый реалистичный сценарий - именно виртуалка, которая абстрагирует код от ненадежного железа, берет на себя все заботы о железе, управление, проверку и распределение памяти, обеспечивает избыточность - направляет код на физические кластеры, контролирует корректность результата, осуществляет выборы, и т.п.
Виртуалка на самом деле не увеличивает количество уровней отказа, а напротив, снижает: она концентрирует весь важный код в одном месте.
В случае нативного кода нужно корректно писать каждый модуль, коих может быть тысячи и тысячи. Ведь ошибка в любом модуле "выключает" весь кластер.
В случае виртуалки корректно написать нужно только виртуалку, ошибка в модуле отключает только один этот модуль, но это не страшно - виртуалка может его перезапустить, попытаться исправить, или выбрать на замену другой модуль.
Один из принципов такого отказоустойчивого железа - каждая задача должна решаться несколькими способами, чтобы можно было проверить корректность не только железа, но и алгоритмов решения задач: два способа решения выдают один результат, а третий другой.
Т.е. у виртуалки вполне конкретная задача: служить интерфейсом (прослойкой) между кодом и железом, беря на себя все заботы об этом интерфейсе: поставляя корректное (виртуальное) "железо" для кода (программы), и поставляя корректный (правленный) "код" для (физического) железа.
Нативный код лишен такого интерфейса, поэтому падает - нет гарантии корректности кода для железа и корректности железа для кода.
Программист вынужден все необходимые костыли вставлять сам, для каждого приложения.
Компиляторы и HAL тоже вносят свою лепту в интерфейс, но в отличии от виртуалки они статические - это как общение с иностранцем не через живого переводчика, учитывающего все особенности обеих сторон, вплоть до воспитания, образования, характера и настроения собеседников, исправляющего косяки, осуществляющего литературный перевод где необходимо, а через школьный словарик, коверкая смысл и недопонимая друг друга.
Грубо говоря компилятор ссыт оптимизировать что-либо, если твердо не уверен в безопасности оптимизации, и для большинства ситуаций он не может знать, что многое можно было соптимизировать намного лучше. Виртуалка знает что безопасно, а что нет, и имеет возможность менять код на лету, так что не задумывается над оптимизациями - смело оптимизирует все, что может, гарантируя безопасность своими внутренними проверками. И, в отличии от компилятора, с помощью расширений ее можно заставить не только оптимизировать, но и модифицировать код как угодно, пользуясь данными рантайма.
>Программы на Java спокойно падают с сегфолтами
И?
У виртуалок есть возможность управления кодом на лету, у самого кода такой возможности нет. В этом и разница.
Виртуалка - это "внешняя" сущность для кода, но сущность, которую удобно менять. Фактически код для исполнения кода.
Виртуалка может выбрать какую версию кода исполнять в том или ином случае, проконтролировать корректность результата, откатить версию кода на более стабильную если что-то пойдет не так - и это только начало.
Реальные возможности гораздо шире, вплоть до обеспечения работоспособности кода в любых условиях, вплоть до горячего автоисправления кода, если виртуалку этому научить - вся умная логика работает в фоне, уровень анализа ничем не ограничен, данные для анализа напрямую из рантайма.
И при всем этом код работает без разрывов потока исполнения - он просто не подозревает, что его фактически отлаживают на лету.
Плюс к тому виртуалка дает новый стиль программирования - код можно разделять на уровни исполнения: код может исполняться на уровне программы, на уровне виртуалки (инструкции управления ВМ, в т.ч. динамического управления) и на уровне железа (расширения ВМ, тоже в т.ч. динамического расширения - состав виртуалки можно менять на лету, не перезапуская код).
Виртуалка - это фактически программный процессор.
Современные процессоры довольно умные, на низком уровне они делают довольно много манипуляций с кодом, тусуя команды, распараллеливая код, разрезая его на блоки. В процессорах зашит почти полноценный компилятор, который на лету оптимизирует код.
Программный процессор может быть еще умнее - его править проще, у него возможностей больше, к нему можно прикрутить намного более умную логику, его структура может меняться во время работы.
А что касается зондов - думал на тему архитектуры космического железа и отказоустойчивости. Самый реалистичный сценарий - именно виртуалка, которая абстрагирует код от ненадежного железа, берет на себя все заботы о железе, управление, проверку и распределение памяти, обеспечивает избыточность - направляет код на физические кластеры, контролирует корректность результата, осуществляет выборы, и т.п.
Виртуалка на самом деле не увеличивает количество уровней отказа, а напротив, снижает: она концентрирует весь важный код в одном месте.
В случае нативного кода нужно корректно писать каждый модуль, коих может быть тысячи и тысячи. Ведь ошибка в любом модуле "выключает" весь кластер.
В случае виртуалки корректно написать нужно только виртуалку, ошибка в модуле отключает только один этот модуль, но это не страшно - виртуалка может его перезапустить, попытаться исправить, или выбрать на замену другой модуль.
Один из принципов такого отказоустойчивого железа - каждая задача должна решаться несколькими способами, чтобы можно было проверить корректность не только железа, но и алгоритмов решения задач: два способа решения выдают один результат, а третий другой.
Т.е. у виртуалки вполне конкретная задача: служить интерфейсом (прослойкой) между кодом и железом, беря на себя все заботы об этом интерфейсе: поставляя корректное (виртуальное) "железо" для кода (программы), и поставляя корректный (правленный) "код" для (физического) железа.
Нативный код лишен такого интерфейса, поэтому падает - нет гарантии корректности кода для железа и корректности железа для кода.
Программист вынужден все необходимые костыли вставлять сам, для каждого приложения.
Компиляторы и HAL тоже вносят свою лепту в интерфейс, но в отличии от виртуалки они статические - это как общение с иностранцем не через живого переводчика, учитывающего все особенности обеих сторон, вплоть до воспитания, образования, характера и настроения собеседников, исправляющего косяки, осуществляющего литературный перевод где необходимо, а через школьный словарик, коверкая смысл и недопонимая друг друга.
Грубо говоря компилятор ссыт оптимизировать что-либо, если твердо не уверен в безопасности оптимизации, и для большинства ситуаций он не может знать, что многое можно было соптимизировать намного лучше. Виртуалка знает что безопасно, а что нет, и имеет возможность менять код на лету, так что не задумывается над оптимизациями - смело оптимизирует все, что может, гарантируя безопасность своими внутренними проверками. И, в отличии от компилятора, с помощью расширений ее можно заставить не только оптимизировать, но и модифицировать код как угодно, пользуясь данными рантайма.
А еще эти пидеры выпилили отличнейший рсс клиент.
>Ну вот смотри. Ломается у тебя физическая память, и уносит страницу, в которой был код твоей виртуальной машины - восстанавливайся.
Ну и восстановимся.
То железо, где нужны такие выкрутасы, оно немного другое - там аппаратное дублирование всех систем.
Т.е. у тебя не один массив памяти, а например четыре. И на каждом кластере копия виртуалки. И все они общаются друг с другом.
Т.е. в данном случае даже ничего особо делать не нужно - просто запросить страничку с другого кластера.
Но я думал и над системами с одним массивом памяти. Даже для них можно обеспечить корректность работы, просто расширив виртуалку несколькими модулями, которые абстрагируют физическую память от остальной части виртуалки, обеспечивая избыточное хранение информации, фоновый анализ, исправление и учет разрушенных ячеек вплоть до битовой точности (часто вылетает один бит, остальные вполне пригодны для хранения информации) - этакая фс с избыточностью, но для оперативки.
Т.е. в таком случае виртуалка сама обернута в микровиртуалку, задача которой - только корректность памяти.
>то к тому моменту, как ты это просто заметишь
Предполагается сканирование памяти раз в n секунд? Банально.
Нет, и это тоже необходимо, но в данном случае это просто как периодическая проверка индексов ФС - все ли верно, ничего ли не потеряли?
Не обязательная, но желательная процедура.
ИРЛ, для случая одного массива памяти, абстрагировании более жесткое - виртуалка не имеет доступа к физической памяти, она видит корректную виртуальную память, которую ей подсовывает слой абстракций памяти.
А вот тот слой абстракций уже работает с физической памятью - записывает данные с избыточностью, проверяет корректность при считывании, восстанавливает данные при ошибке, генерируя новую копию избыточных данных, отправляя сбойную ячейку на обслуживание, генерит для сбойных ячеек специальный код доступа, т.к. сбойные ячейки не полные, и напрямую их читать нельзя.
Ведет фоновое сканирование всего массива памяти, обновляет и перетасовывает информацию (тренирует накопители), отжигает блоки памяти с вышедшим ресурсом, следит за целостностью и количеством своих обработчиков - кусков кода, рассеяных по памяти, часть из которых работает параллельно, и гарантирует защиту от сбоев самого этого слоя абстракций.
Для земного железа, при отсутствии такого слоя абстракций, остается только периодическая проверка памяти, да.
Но и там с виртуалкой не сложно извернуться - можно верифицировать каждый исполненный кусок кода.
Исполнили сколько-то кода, в фоне прошла проверка, весь исполненный код от начала одной проверки до начала другой верифицирован - отдаем его результат вовне.
Нашли ошибку - либо сбросили последний буфер, либо локализовали ошибку и поправили буфер.
Т.е. вносим небольшой лаг в работу кода, во время которого верифицируем результат. В таком случае если будет ошибка - она не успеет уйти на исполнительные устройства, а если не будет - рабочий этого не заметит, т.к. лаг в микросекунды, и константный.
Цена в любом случае - замедление работы. Но если корректность важна - оно того стоит.
>Ну вот смотри. Ломается у тебя физическая память, и уносит страницу, в которой был код твоей виртуальной машины - восстанавливайся.
Ну и восстановимся.
То железо, где нужны такие выкрутасы, оно немного другое - там аппаратное дублирование всех систем.
Т.е. у тебя не один массив памяти, а например четыре. И на каждом кластере копия виртуалки. И все они общаются друг с другом.
Т.е. в данном случае даже ничего особо делать не нужно - просто запросить страничку с другого кластера.
Но я думал и над системами с одним массивом памяти. Даже для них можно обеспечить корректность работы, просто расширив виртуалку несколькими модулями, которые абстрагируют физическую память от остальной части виртуалки, обеспечивая избыточное хранение информации, фоновый анализ, исправление и учет разрушенных ячеек вплоть до битовой точности (часто вылетает один бит, остальные вполне пригодны для хранения информации) - этакая фс с избыточностью, но для оперативки.
Т.е. в таком случае виртуалка сама обернута в микровиртуалку, задача которой - только корректность памяти.
>то к тому моменту, как ты это просто заметишь
Предполагается сканирование памяти раз в n секунд? Банально.
Нет, и это тоже необходимо, но в данном случае это просто как периодическая проверка индексов ФС - все ли верно, ничего ли не потеряли?
Не обязательная, но желательная процедура.
ИРЛ, для случая одного массива памяти, абстрагировании более жесткое - виртуалка не имеет доступа к физической памяти, она видит корректную виртуальную память, которую ей подсовывает слой абстракций памяти.
А вот тот слой абстракций уже работает с физической памятью - записывает данные с избыточностью, проверяет корректность при считывании, восстанавливает данные при ошибке, генерируя новую копию избыточных данных, отправляя сбойную ячейку на обслуживание, генерит для сбойных ячеек специальный код доступа, т.к. сбойные ячейки не полные, и напрямую их читать нельзя.
Ведет фоновое сканирование всего массива памяти, обновляет и перетасовывает информацию (тренирует накопители), отжигает блоки памяти с вышедшим ресурсом, следит за целостностью и количеством своих обработчиков - кусков кода, рассеяных по памяти, часть из которых работает параллельно, и гарантирует защиту от сбоев самого этого слоя абстракций.
Для земного железа, при отсутствии такого слоя абстракций, остается только периодическая проверка памяти, да.
Но и там с виртуалкой не сложно извернуться - можно верифицировать каждый исполненный кусок кода.
Исполнили сколько-то кода, в фоне прошла проверка, весь исполненный код от начала одной проверки до начала другой верифицирован - отдаем его результат вовне.
Нашли ошибку - либо сбросили последний буфер, либо локализовали ошибку и поправили буфер.
Т.е. вносим небольшой лаг в работу кода, во время которого верифицируем результат. В таком случае если будет ошибка - она не успеет уйти на исполнительные устройства, а если не будет - рабочий этого не заметит, т.к. лаг в микросекунды, и константный.
Цена в любом случае - замедление работы. Но если корректность важна - оно того стоит.
>>900784
Перекат, берите свои цитатки и уебывайте туда
ПЕРЕКОТ https://2ch.hk/pr/res/900789.html (М)
Это копия, сохраненная 18 января 2017 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.