Вы видите копию треда, сохраненную 13 декабря 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Компилируемый, многопоточный язык программирования со статической типизацией, разработанный компанией Google.
Какие у него сильные стороны?
Быстрая компиляция и работа, устойчивость к нагрузкам, простота, богатая стандартная библиотека, универсальность.
А так же асинхронность, спрятанная под капотом (100% утилизация железа). Очень легкие зеленные потоки, которых можно запустить по миллиону штук (программисты на многоядерных квантовых компьютерах в восторге).
Какие у него слабые стороны?
Еще развивается (хотя внушительными темпами, смотрите ниже раздел "Перспективы"). Малое количество вакансий, отсутствие такого количества готовых решений, который имеют языки с более долгой историей.
В основном сейчас знания языка приветствуется (особенно для коллег с питона).
На какие языки он похож?
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
Уже на уровне топовых языков
http://sogrady-media.redmonk.com/sogrady/files/2016/07/lang.rank_.Q316.plot-WM.png
Полезное
Для начинающих (годный и развернутый список)
https://goo.gl/NfNfZg
Мануал веба на го с погружением в язык
https://github.com/astaxie/build-web-application-with-golang/blob/master/ru/preface.md
Го в примерах
https://gobyexample.ru/
Ищем пакеты:
https://godoc.org/
Сторонние го либы
https://github.com/golang/go/wiki/Projects
Кто уже юзает го
https://github.com/golang/go/wiki/GoUsers
Видосы (есть на русском, если полистать)
http://4gophers.ru/video
>основная сфера применения
>Бюджетный веб
И сразу вопрос: почему средняя компания/стартап должна выбрать голанг вместо питонов, руби, жс говна и прочего пхп?
статическая типизация, если не знаешь для чего тебе в большом проекте такое, можешь идти лесом
1) Меньше стоят сервера;
2) За отход вправо-влево от идеологии партии - расстрел. Из чего и следует плюс - можно в любой момент выкинуть охуевшую макаку требующую больше 15 т.р. и заменить на новую, причем качество кода не осядет - язык тупо не позволяет нихуя делать.
1) Программисты обойдутся тебе дороже железа, так что рынок школьников с локалхостами тут не в счет.
Да и там ничего нет. Написать нативные алгоритмы, которые просаживают все и вся будет очень легко (когда в скриптовых они уже оптимизированные)
2) Ты частично прав, но качество будет такое, что будет как с историей php (брали с других языков, чтобы потом обучить php, так как вообще не могли вменяемых найти).
>язык тупо не позволяет нихуя делать.
Еще как позволяет, особенно когда пишут процедурно и контроля над структурой размазывается по всему коду.
1) Программисты тут те же самые что пишут и на пхп и прочем - цена та же. А деплой заканчивается на заливе (всегда одного) бинарника по SSH и запуске, что оче поможет сэкономить при почасовых ставках у фрилансеров. Алсо, еще пикрел демонстрирует типичных гоферов - они как правило любят го и писать код, так что поторговаться до хорошего демпинга не сложно.
2) Ну там и не где ошибиться - см. ниже.
>Еще как позволяет, особенно когда пишут процедурно и контроля над структурой размазывается по всему коду.
Ну нету в вебе таких гигантских проектов, у тебя один хуй самое сложное что будет — это запросы в бд и их реддеринг в виде хтмл.
>2) Ты частично прав, но качество будет такое, что будет как с историей php (брали с других языков, чтобы потом обучить php, так как вообще не могли вменяемых найти).
Самое главное что именно заменить действительно ОЧЕНЬ легко - даже на всяких пхп кандидату нужно знать какой-либо фреймворк и все прочее, когда у го нету и того.
И как потом менять макак когда те наговнокодят? Где хайрить котлин-девелоперов гоферов всегда можно откуда угодно переучить.
Так же сервера будут выходить дороже, и расценки у ява-рынка выше.
>Ну нету в вебе таких гигантских проектов, у тебя один хуй самое сложное что будет — это запросы в бд и их реддеринг в виде хтмл.
Твой опыт конечно печалит, но скажу что есть такие проекты.
Но если ты кроме CRUDа не видел ничего, то тебе и всяких питонов с пхп хватит за глаза.
Я прошел через опыт, когда писали процедурно на пхп для веба, даже в мелком проекте-портале это был ад. По началу просто и писать и сопровождать, а потом тупо лапша, "дернешь" в одном месте, неожиданно в другом все засыпалось (причем не всегда поймешь, ибо динамические типы и все ошибки в рантайме).
То есть никакой изоляции модулей и тем более IoC, хотя юзали классы, лол.
Этот ад ждет и Го, потому что
-писать процедурно поначалу проще, чем вьебывать пустые модули с геттерами и сеттерами.
-нет нормального ООП и полиморфизма.
-нет исключений (ошибки проще заглушить, а паники не имеют типов, хер пойми что хочешь поймать)
В том и фишка, что ничего менять не надо. Можно тут же писать на джаве и котлине (да и думаю с радостью перекаться на котлин с джавы ибо просто сахар тупо)
Хипстеры даже свой шрифт запилили, лел.
лойс за пикчи
Я рад что тебе понравилось.
1 - как же я ему завидую
сам бы хотел себе отсосать, только хер маловат, а позвоночник у меня не особо гибкий кагбэ
Вот...
> язык тупо не позволяет нихуя делать.
> указатели
> интерфейсы
> горутины
Я тебе могу так наговнокодить, что и 10 макак не расхлебают
Реально говнокодить из перечисленного тобой помогают только интерфейсы, которые одновременно всё и ничто, у го на редкость ахуительная система типов.
Указатели — с ними нихуя делать нельзя лол, горутины — да это дефолтный го код, где горутины крутстся в горутинах горутин и спамят по каналам горутинам горутин горутин, ничего сложного там тоже нет.
> ничего сложного там тоже нет
> горутины крутстся в горутинах горутин и спамят по каналам горутинам горутин горутин
)))
var xyz = her.New() // her.superStruct;
Но нельзя сделать так (объявив тип):
var xyz her.superStruct = her.New()
В глубоком коде нехера не понятно
foo(xyz.What)
xyz.What:
1. Это пакет и переменная?
2. Это пакет и функция?
3. Это локальная переменная структуры и поле?
4. Это локальная переменная структуры и метод?
А еще видел что в глобальную переменную суют структуры и получает монстр:
package.VarStruct.SomeField
А еще влюбился в короткие сокращения типа
a.MySuperField
ix.MySuperField
Или вот такое:
HFDcon.LeXYZ // и пытайся понять что это блять значит и заучивай что значит, ибо такого говна в коде полно.
Нахуй!
>Го легкий, учиться за 2 дня.
Наверните говна!
https://habrahabr.ru/company/mailru/blog/314804/
подводных камней там похлеще чем в javascript
@
Через полгода все падает, тебя япут.
@
Лезешь в код, через неделю оказывается, в другом файле того же пакета кто-то блять меняет состояние твоего супер модуля, ибо инкапсуляция на весь долбанный пакет.
> подводных камней
> Если вы импортируете пакет и потом не используете какие-либо из его функций, интерфейсов, структур или переменных, то код не скомпилируется.
Если это подводные камни, то иди нахуй
@
Рвешь волосы на жопе, так как отладчик ненужен (с), а ты в душе не знаешь как отладить поведение в 10.000 горутин.
@
Пишешь, работаешь со структурами
@
Местами у полей появляется логика, закрываешь поля, делаешь геттеры и сеттеры.
Визжишь от ручного рефакторинга с регулярками.
@
Половина структуры из полей, половина из геттеров и сеттеров, в душе умирает перфекционист.
@
Опытным путем приходишь к выводу в котором пришли в 90е-2000 годы, что лучше сразу покрыть все геттерами и сеттерами, а поля делать приватными
@
2016 год, на новом современном языке пишешь java-код, но с примитивной и глючной экзосистемой без maven и прочего, начинаешь понимать что тебя где-то наебали.
> закрываешь поля, делаешь геттеры и сеттеры.
Нахуя? На Го нельзя писать, используя ООП подходы.
Попиши на Обероне например, на Аде, некоторое время, потом приходи.
@
Без объявление и согласование корпорация "добра", тупо вводит новый синтаксис - алиасы, убивающий всю вменяемость.
@
Пламя жоп видно даже на плутоне.
@
Пока убрали и поняли, что насухую нельзя, надо постепенно
Так ты данные от логики отделяй, тогда и никаких геттеров/сеттеров не понадобится.
джаваслесарь
>Нахуя?
вот иди подумай нахера.
И прочитай как начальники "заставляют" делать это
https://golang.org/doc/effective_go.html#Getters
@
Пламя жоп видны за плутоном, так как у некоторых цифры поболее вообще.
@
В 1.8 вводят еще более крутой сборщик с цифрами микросекунд, говорят про плату 5%, умельцы говорят, что просело до 20%
@
Жопы уже не горят, а светят чистой плазмой и не понимаешь зачем в вебе реалтайм GC и зачем за него переплачивать так?
Суть в том, что асинхронная параша вообще априори неотлаживаемая. Ты хоть один отладчик такой видел? К говноедов и так достаточно фейлов которыми пользуются хейтеры, мне кажется ещё немного и они не пережили бы, поэтому легче повизжать "нинужна".
>>878606
>maven
Ну хоть gradle бы написал, мавен с его xml — начало 2000-х.
>>878611
Ща, братан, я тебе процедурный код поотделяю.
>>878617
Чтобы хтмл быстро рендерить и запросы в бд не тормозили, ты что, никогда большого веба не писал?!
@
Видя человеческий фактор, которому свойственно игнорить си-подобные ошибки - лучшие умы вводят исключения, чтобы если и приходилось игнорить, то нужно было выполнить как минимум финт ушами (а если не сделал, приложение отругает).
@
Приходит современность, завозят язык в котором можно даже заглушить ошибки, многие устают писать портянку err != nil, которая еще портит читабельность (и кстати не бесплатна по перформансу).
@
Наблюдая проблему, что же делают гоперы? Правильно! Пишут очередную тулзу-костыль (сотни их), которая сканирует и проверяет все ли ошибки были проверены.
>Меня никто не заставляет сеттеры например использовать
Ты еще в программирование не вырос и не понимаешь до конца все кейсы инкапсуляции. Фишка в том, что в других языках есть проперти, но го эволюция обошла.
Вчера только рефакторил монстра, который наполовину был из публичных полей, а другой частью из аксессеров (это "класс" жалобно кричал "...убейте меня")
>Лолблядь, вот ты сейчас серьёзно спрашиваешь?
Сбрызни отсюда, или иди прочитай про приложения реального времени.
В любом случае GC в 100мс за 5 минут это нормально для веба (дергая проц только во время сборки) или же ты хочешь чтобы постоянно дергался GC, в короткое время, оплачивая процентами процессора (или забивая целое ядро на камне).
@
Конвертируешь ее в руну (нехера не бесплатно)
@
В веб приложении большая часть работы - это обработка строк
@
Не нашел линкованой мапы (мапа сохраняющая порядок), не других базовых коллекций.
@
Плачешь, так как придеться писать самому, или вибрать из 100500 в гитхабе
----------------------
SQL Scan() принимает кортеж.
@
Тут же думаешь, что в момент развернешь структуру в кортеж.
@
Хуй тебе, в Го нет кортежа, ебись с со своей структурой и рефлексией сам.
----------------------
Не стал ебаться с рефлекцией, ручками прописал поля.
@
При добавление/удаления поля в базе, весело по всему коду ищешь все свои запросы и прописываешь новшество.
Паттэрн матчинг не завези ЧТО ЛИ?
@
не забываешь конвертировать обратно, так как большая часть работает со string, а не рунами.
@
Каждый символ весит 4 байта вместо двух (которых достаточно для глупого utf-8)
Нельзя было в структуру string добавить сразу ссылку на руну (которая по дефолту nil, но при первом же запросе "собиралась" бы).
Пошел писать собственные эффективные строки...
Зачем вы едите goвно?
Вас хотя бы заставляют?
А ты что ешь?
Мне вот интересно, что творится в голове у таких людей? Чем их не устраивает то, что на Go кто-то пишет? Это же их дело. Хочу - пишу на Go, не хочу - не пишу. Мой код никак не повлияет на жизнь данного индивида.
Почему же тогда Go вызывает боли в нижней части спины у некоторых?
>Чем их не устраивает то, что сладкий хлеб кто-то ест?
>Это же их дело. Хочу - ем сладкий хлеб, не хочу - не ем.
Ты болен, тебе нужна помощь.
Со статической типизацией? Олдфажный ноджс мне на сервере не вперся нахуй.
Так бери современный ноджс с типами.
"Простой" ЯП — это как алфавит из пяти букв. Запомнить-то легко, но пользоваться заебешься.
Лучше приложить силы к чему-то "сложному", что делает решение задач простым.
> сложное
Я на работе на C# пишу, ну нафиг, дома хочется чего-то простого. Go в этом плане хорош, удовлетворяет мои хотелки.
На шарпе можно же писать без линка и прочего добра. Джаваподобный код на шарпе не сложнее говнистого.
Я лично неоднократно высказывался на реддите против алиасов. Но что поделать, сообщество гоферов — секта.
>которая еще портит читабельность (и кстати не бесплатна по перформансу).
По-моему ты обосрался. Исключения всегда будут значительно дороже сишной обработки, потому что они стэк потрошат.
>>878774
Вы че ты тупые блять? Кокрастыке строки в го сделаны пиздато. UTF-8 на уровне языка, с итерацией в коробочке. Ебасосы, как вы собираетесь разобрать UTF-8 строку без разбиения ее на кодпоинты?
интересно как ты собрался делать системы которые должны развиваться с 0 даунтаймом с статической типизацией и зачем вообще нужна статическая типизация? Только без этих тупых отпездок что типа отлавливает ошыпки на этапе компиляции. Ошибки в бизнесс логике тоже отлавливает? Так получается тесты все равно надо писать? :3
ему же писать код надо, а не на конференции доклады делать
ему же не самоутверждаться за счет синтаксиса нужно, а писать программы
ты не понял всей ситуции, это не было обоюдным согласием сообщества, они просто вкинули то, что хотели, потому что хозяева и могут (просто им там понадобилось в кодо-базе и срать на всех).
Спасибо, я в курсе. Но это не отменяет того, что куча сектантов продолжали топить за хозяевов.
Во-первых, нулевого даунтайма не бывает. Для создания системы с шестью девятками требуется литр единорожьей крови в год.
Во-вторых, статическая типизация и горячая замена модулей в едином рантайме вполне совместимы.
В третьих — система на то и система, что можно выключить один из многих ее кусков, обновить и перезапустить. Какие типы прописаны в коде разных кусков не имеет значение, главное соответствие протоколу.
маня, накакал тут ты, так как исключения ничего не стоят (практически), пока не возникнут. А if в коде юзаются всегда, тысячи их!!
>Ебасосы, как вы собираетесь разобрать UTF-8 строку без разбиения ее на кодпоинты?
Сделать строку из код-поинтов сразу!
string // слайз где 16 бит на поинт, которого полностью хватает
и другой вариант:
string32 // для всех хотелок в юникоде (или сделать суррогаты как в джаве)
или сразу из 32 бит, ибо похуй на память
Ты понимаешь, что string == []byte, только иммутабельный. Строка в Go по-дефолту юникодовая, но может в теории содержать любую кодировку. Ты охуеешь, но вместо того чтобы делать 15 разных типов, чуваки просто решили интерполировать все в массив []byte (восьмибитные числа, блять). Это maxxximum компактно, блять. Ты не можешь компактнее.
Уебывай читать https://blog.golang.org/strings
для твоих скриптов нет, но если ты был бы программистом, то понимал что этот маленький оверхед ввиду его частой используемости перерастет в ощутимую просадку для всего приложения.
Если бы такого не было то всякие джавы не тормозили бы в два раза от С++
когда происходит исключительная ситуация, ты гофер идешь сосать хуй, потому что не знаешь в каком состояние твое приложение и что именно обосралось (то что можно подтереть и работать дальше или же все, пиздец)
Ебанные, глупые дети...
>не знаешь в каком состояние твое приложение и что именно обосралось
Да нет, я кокрастыке все знаю, потому что у меня на каждом таком возможном месте есть if. А ты ловишь где попало где попало выпущенный эксепшон, слесарь)
иди нахуй, если ты не понимаешь что любую строку, полученную из вне для посимвольной обработки тебе нужно будет перегнать в руну, а потом обратно, даже если ты ебучий американец с ASCII текстом, то я тебе ничем помочь не могу
>string == []byte
этот дебил думает, что utf-8 строка помещается в байте?
Господа, у нас новый "стек, который тормозит GC"
Ты понимаешь, что такое string и rune? Это алиасы []byte и int32. В чем проблема с тем, как сегодня работают со строками в Go? Итерация по UTF-8 строке гарантированно работает за линейное время.
Этот дебил не слышал про компактную запись? Чувак, быстрее читай пиздать "все, что надо знать программисту о UTF-8" и https://blog.golang.org/strings пока совсем не обосрался.
>Some people think Go strings are always UTF-8, but they are not: only string literals are UTF-8. As we showed in the previous section, string values can contain arbitrary bytes; as we showed in this one, string literals always contain UTF-8 text as long as they have no byte-level escapes.
Ты хером читаешь, дятел глупый? Исключительная ситуация, а не ванильные ошибки.
Причем тут компактная запись уеба, вот тебе с расшифровкой:
Хочу обработать посимвольно строку
@
Трачу O(1) на преобразование в код-поиты (int32[])
@
Потом обратно в string(int8[])
----
В любом другом языке, берешь и сразу обрабатываешь посимвольно строку, ибо строка есть массив.
То есть, если ты неуверен что там ascii текс (а в любых внешних данных ты априори не уверен не в чем) то ты обязан преобразовать поток байт в код-поинты UTF-8!!!!
>Трачу O(1) на преобразование в код-поиты (int32[])
Эээээм никто это не делает. Тебе достаточно только один int32 для итерации, она же последоватльная и за линию гарантированно работает.
потому что по-умолчанию в Го строка это нехера не код-поинты (не руны, не int32), а поток байтов.
>Эээээм никто это не делает
лол, а как ты из "текущего текста" достанешь мне 5 символ(если строка это int8[])?
>кококо в руны никто не конвертирует и похер на затраты на преобразования.
>как ты получишь 5 символ
>Проитерирую до пятой руны
сказачные долбаебы
Да, только тогда все строки будут занимать в два раза больше памяти в среднем, а это нахуй не надо никому.
А в рунах 4 раза больше, но тут почему-то не тявкаешь, лол.
Вообще 16 бит бы хватило, как и писал:
string - это 16 бит массив.
string32 - это аналог "полных" рун в 32 бита, для всех хотелок юникода.
>>879040
>>879042
Нет, ну что же.
Вообще сделать компактную утф8 с константным (или почти) доступом можно.
Но не нужно, ибо ничем хорошим в итоге для вас это не обернется.
Такова селяви.
>А в рунах 4 раза больше, но тут почему-то не тявкаешь, лол.
Поэтому никто и не хранит строки в рунах?
Строка "привет" в питоне займет 86 байт, а в Go — всего лишь 12. Строка "привет0" в Go займет 88 байт, а в Go — 13. Чувствуешь, к чему я веду? Это тоже trade off. Оказывается, рандомно итерировать по строке нужно значительно реже, чем итерировать по ней, например. Поэтому в Go (и не только в Go, кстати), принято решение использовать компактную запись.
но сразу с код-поинтами на символ
А то наслушались Пайка и так и не поняли что их наебали со строками (дали сырой поток байт, лол)
ебанные сектанты
>компактную утф8 с константным (или почти) доступом можно
Поделись способом. Мне ничего кроме вектора оффсетов рядом в голову не приходит.
Ты так говоришь только потому что ты плохой программист, и это не имеет отношения к Go вообще никакого. Go не без изъянов, но строки в нем сделаны очень разумно. За отличную поддержку UTF-8 его и нахваливают, на самом деле.
>Поделись способом.
Вам такие вещи не нужны - для вашего же блага.
Да ты и сам понимаешь - или хотя бы чувствуешь.
строка в го это структура - ссылка на массив байт и количество символов, так что хуй она тебе в сумме 12 весить будет, дитё ты глупое.
Тебе сказали что 16 бит на символ достаточно будет.
А, так ты всерьез хотел получить решение - да еще и бесплатно.
Тяжело тебе такому наивному по жизни, соболезную.
Окей, немного затупил. Еще будет оверхед слайса, но он будет ВЕЗДЕ. В любом языке программирования тебе понадобиться 8/16 байт оверхеда на вектор под массивом (в зависимости от разрядности системы).
>Тебе сказали что 16 бит на символ достаточно будет.
Ну да, только вот в таком случае все строки для которых было бы достаточно ASCII будут занимать в два раза больше памяти :))) И это ты тут про перформанс кукарекаешь.
>>879055
Бамп вопросу.
>>879052
Все понятно, еще один маневрист.
>но он будет ВЕЗДЕ
С точки зрения криворукого дебила - несомненно.
посмотрел на тред
Хотя о чем я вообще, /го/вно же.
>эти приемы "взятия на слабо" уровня 8/бэ
И что, на одноклассниках прокатывает?
Ебать они у тебя дебилы.
>ASCII будут занимать в два раза больше памяти
а если руна то в 4, ебанные сектанты
Короче, смотри. Есть строка "хочу передать привет даунам с двача". На 32-битной системе она займет в конечном счете 73 байта. Пруф: https://play.golang.org/p/JaLqQJaq9-
На моем 64-битном компьютере она занимает 81 байт. В то время как аналогичная строка в твоем любимом питоне, который под капотом держит строки прямо так, как ты говоришь, по 16 бит на строку, занимает на моем компьютере 144 байта. Это почти в два раза больше.
>>879087
Если постараться, то можно и по 640 килобайт на символ выделять, но вопрос в том, какой идиот будет держать строки в []rune? Правильно, никакой, потому что в отличии от тебя все уже давно прочитали blog.golang.org/strings
>ничего не делали, просто поместили сырой поток байт в массив.
>ко-ко-ко в Go самая лучшая поддержка UTF-8, все это отмечают.
ебанные сектанты :)
>просто поместили сырой поток байт в массив.
Гугл все правильно делает - с особым цинизмом срет говном прямо на безмозглое быдло.
Быдло верещит от восторга и просит еще.
Ничего нового.
Лучше чем у Go поддержка юникода разве что у Perl 6. http://training.perl.com/OSCON2011/gbu/gbu.pdf
Как только я захочу получить срез со строки, то твой костыль мало того что сожрет проца на обход и преобразование в код-поинты, так еще и аллоцирует памяти на всю строку где будет 32 бита на символ (в 4 раза больше для ASCII).
А потом снова вернет тебе сырой поток байтов.
Тебе бы экономкой работать
Охуеть просто, внезапно свободный доступ с компактной записью не дружит (а срез строки это на самом деле биекция свободного доступа). Охуеть новость ты только что рассказал!
>сожрет проца на обход и преобразование в код-поинты
Он не будет ничего преобразовать, просто за константную память и линейное время посчитает где начинается и заканчивается определенный кодпоинт.
>аллоцирует памяти на всю строку где будет 32 бита на символ
Нет, никто не будет аллоцировать такую память.
https://play.golang.org/p/ocxQqaXbuc
Пожалуйста, я заговнокодил тебе UTF-8 слайс функцию. Там нет ничего такого, о чем ты говоришь.
Чувак, серьезно, кончай позориться и лучше разберись в способах представления строк.
>кококо, преобразование сырых байтов в код-поинт бесплатен!
>кококо, ничего не аллоцируется, ведь срез с руны не берется из руны![примечание]
примечание
Чтобы получить срез символов (НЕ байт!), тебе по-любому в Го нужно будет перевести строку руны, и будет аллокация и будет преобразование в код-поинты.
Единственно можешь оптимизировать и выйти раньше по циклу (но хз как там работает, может на выход тебе всю руну дают, это же Го)
Ты, к сожалению, не понимаешь, что такое UTF-8, что такое компактная запись, что такое аллокация и что такое асимптотическая сложность. И ты даже не пытаешься разобраться! С тобой бесполезно спорить, я умываю руки.
> в цикле обрабатывает руну
ЧТО ЖЕ ТЫ СУКА ЗА ДАУН?! ЭТО ОДНА РУНА. КОНСТАНТНАЯ ПАМЯТЬ. 4 байта памяти на стэке. Нигде не возникает полного преобразования []int8 в []rune.
>toIndex := len(s)
Аллё! ты берешь длину байт в строке, тупое ты животное!!!
Но Пайк уже сделал тебе костыль utf8.RuneCountInString
Ты умеешь читать код? Причем тут нахуй utf8.RuneCountInString? toIndex это индекс в строке, до которого надо ее порезать (по-дефолту, до последнего). Что тебе не понятно?
>Как только я захочу получить срез со строки, то твой костыль мало того что сожрет проца на обход и преобразование в код-поинты, так еще и аллоцирует памяти на всю строку где будет 32 бита на символ (в 4 раза больше для ASCII). А потом снова вернет тебе сырой поток байтов.
Оказывается, мой костыль действительно сожрет проца на обход (и это плата за компактную запись), но он не аллоциировал вообще ничего (кроме интовых счетчиков на стэке — это константные затраты и их мы можем даже не считать). Опять-таки, "свободный доступ к кодпоинтам в компактной utf8 записи" это биекция задачи о "срезе компактной utf8 записи по кодпоинтам". Несложно доказать, что нельзя реализовать первую лучше, чем за O(n) по времени и за O(1) по памяти, а значит аналогично и последнюю (ее биекцию).
Если хочешь, могу все это доказать. Но ты не хочешь, потому что тебя не интересует истина, а только профанация и обсирание Go на дваче.
> Если я спрячу преобразование в руну в range:
> index, runeValue := range xyz
> как
> i := range s
> значит никакого преобразования нет
ебанные сектанты
Новый мем: строки в го, почти не конвертируются в руну
Я уже тебе объяснил, почему свободный доступ работает за линейное время. Ты всегда выбираешь либо эффективную память, либо быстрый свободный доступ, третьего не надо. Если тебе прямо так часто надо обращаться к юникодовой строке по индексу и O(n) для тебя неприемлимое время, то ничто в Go не мешает тебе хранить строки в []int16 и обращаться сколько влезет. Но обычно это не надо, поэтому в Go было принято решение по-дефолту экономить память на строки.
>Ещё раз. Что тебе мешает не пользоваться расширением и делать ссылочно-прозрачные лямбды?
Существующая экосистема и программисты в команде и вне неё. А еще неизвестно как выражать сайд эффекты, которые есть в любой реальной программе.
>потому что IO - огромный хак
Подробнее про хаки пожалуйста. Желаю полушать очердную диванную теорию.
>В зависимости от того, что ты вкладываешь в слово "одинаковые". При некоторых значениях так оно и есть.
Это словоблудие, ты понял что я хочу сказать. Если нет - другие может поймут. Sapienti sat.
уже легче, мы таки наконец-то признались что это не бесплатно (выздоровление не за горами!)
Пойдем дальше:
>Ты всегда выбираешь либо эффективную память, либо быстрый свободный доступ
И это ты мне сейчас втираешь про эффективную память в контексте кодировки UTF-8???
Никогда мир еще так не экономил...
ебанные сектанты
>мы таки наконец-то признались что это не бесплатно
Я и не говорил, что это бесплатно. Это O(n) по времени и O(1) по памяти, я об этом с самого начала говорю, это ты какую-то хуйню несешь.
>И это ты мне сейчас втираешь про эффективную память в контексте кодировки UTF-8???
Причем тут нахуй UTF-8? Тут выбор между тем, чтобы использовать в два раза больше памяти ради свободного доступа или отказаться от свободного доступа, но сэкономить память. Ты еще про UTF-8 попизди, блять.
>Существующая экосистема и программисты в команде и вне неё.
>как жаль, что из функциональных языков у нас осталась одна unlambda
>Подробнее про хаки пожалуйста.
Тип IO невозможно реализовать без специальной поддержки его компилятором. Значение реалворлда нельзя вытащить из мандадки ни до, ни после, ни во время. Что это, если не хак? Даже сами авторы хаскеля это признают (RealWorld is deeply magical).
>диванную теорию.
Раз уж ты так настойчиво стараешься покидаться говном. Понимаешь, дело в том, что я достиг просветления и прав во всём, а ты нахватался по верхам из постов в интернетике от таких же долбоёбов и теперь лезешь с умным видом в разговор к взрослым дядям.
И ты не ответил на то, что тебе неудобно.
>Это O(n) по времени и O(1) по памяти
А должно быть хотя бы О(ln(n))
Это гуманный вариант, потому что с О(1) у вас вообще все очень плохо.
>Тип IO невозможно реализовать без специальной поддержки его компилятором
Мы говорим о ссылочной прозрачности, а не о реализации компилятора.
>Значение реалворлда нельзя вытащить из мандадки ни до, ни после, ни во время. Что это, если не хак
Что ты несешь, просветленный? Зачем его вытаскивать? Какой хак? Как это относится к изначальной теме?
>я прав во всём
Я заметил. Особенно много опыта работы у тебя с ФЯП.
>А должно быть хотя бы О(ln(n))
Во-первых, правильно говорить O(logn). Во-вторых, чтобы получить логарифмический лукап, тебе придется каким-то образом использовать дерево. Для дерева тебе придется использовать указатели или хэш-таблицу. В конечном итоге ты используешь больше памяти, чем просто используя []int32, как предлагает больной выше.
Опять-таки, я могу формально доказать почему лучше O(n) по времени и O(1) по памяти для компактной записи ты не сможешь ничего написать. Но делать этого я конечно же не стану.
>В конечном итоге ты используешь больше памяти
>ты не сможешь ничего
Омежки, омежки never change.
Всё у вас нельзя и запрещено, все (кроме тебя) у тебя виноваты в твоей глупости и бесполезности.
И это нормально - просто такой ты есть.
Блять, ты еще скажи что можно отсортировать в худшем случае лучше, чем за O(nlogn). Есть определенные задачи, которые просто теоретически нельзя реализовать лучше определенной границы.
и в таком духе.
Получается если ты родился в правильной стране (с ASCII), тебе хорошо, а если не повезло, прыгай как мудак по рунам и пиши свою substring функцию.
Что это, алгоритм "Рабина-Карпа"?
Нет, алгоритм "Хулибина-Осётра"!
ебаные сектанты
Ты еблан? Поиск подстроки и слайсинг это совершенно разные задачи, блять. Слайсинг почти никогда не делают для строк, которые не являются ASCII. А вот поиск подстроки не требует произвольного доступа.
Глупое дитя, substring это получение подстроки по индексу.
> Слайсинг почти никогда не делают для строк, которые не являются ASCII
Конечно, ибо вне ASCII он не работает!!!
А ты умён!
что тут у нас? разврыв гоферского сектанского пердока!
Substring это, в переводе с английского, "подстрока", блять. Получение подстроки по индексам ее вхождения это substring extraction (lookup), а substring search это обратная задача — поиск индексов вхождения подстроки по ее значению, блять. Последняя значительно чаще применяется, и внезапно, не требует произвольного доступа к кодпоинтам.
>Конечно, ибо вне ASCII он не работает!!!
Просто задач нет. Назови мне какие-то реалистичные задачи, для которых может понадобится дробление юникодной подстроки по заданным индексам. Такое только в теории бывает по-моему (или очень редко), обычно со строками совершенно иные вещи делают.
>нинужна
Ну ясн.
А всё снова лишь потому, что нет даже базовой фичи вроде перегрузки операторов.
>лучше, чем за O(nlogn)
Вообще-то это невозможно.
Но если очень надо - то а вот это тебе точно знать совсем не нужно
Типичный представитель goвна, как только сливает или ему неудобно, начинает истерично клацать по кнопке бан.
Только двач это не сектантское говно-параша, малыш.
ДАННЫЙ ГОТРЕД БЫЛ ЗАХВАЧЕН ТРОЛЛЯМИ!!! С ЭТОЙ МИНУТЫ СЧИТАЕТСЯ НЕЛЕГИТИМНЫМ!!!
ИЛЮША ПРИДИ ПОРЯДОК НАВЕДИ!!!
там для тебя деблоида было написано погуглить по этой фразе и там именно народ получает подстроку по индексам, а не твои маня фантазиям, не позорься
зачем, ведь мы будем в конец функции добавлять по букве
хочешь f
хочешь nl
а хочешь мы тебе впереди F поставим??
да залогинься ты уже петухан, мы знаем что это ты так тупо сливаешь
Братан, я даже несколько оригинальных пикчей сделал, и тебе уже не нравится?
правда я про перегрузки функций :)
> Во-вторых, статическая типизация и горячая замена модулей в едином рантайме вполне совместимы.
Давай примеры, как ты опишешь расширение или изменение протокола при статической типизации в рантайме.
>В третьих — система на то и система, что можно выключить один из многих ее кусков, обновить и перезапустить. Какие типы прописаны в коде разных кусков не имеет значение, главное соответствие протоколу.
Получается что статическая типизация у тебя существует только на уровне сервиса а протоколы между сервисами уже динамические?
>Так в чём толстота-то?
Мне просто понравилось про "базовую фичу", которая есть в полутора языках.
>которая есть в полутора языках.
Чота ору. Ты лучше перечисли где её нет кроме жявы и говна с пхп.
>Самое смешное, что обосрались все кто визжал про его неправоту
Илюша, залогинься, палишься снова (но мы ради что сознался, что это был ты)
Купи слона.
В Си, например. В ЖС. В Ирлонге.
Но да, что-то я проебался. Мой манямирок требует обновления.
Их еще зимой разогнали, когда эти бараны на хабре слили Го, а ванюша рыдал на весь твиттер
Илюша вроде и не был, у него бомбила что его коммьюнити не приняло. В общем подростковые обиды.
да загнобили прост
я даже как-то раз видео где тыкал писосиком его фоточку вбрасывал, олдфаги говнотреда помнят :3
илюш:3
>>879306
>>879308
>>879303
Одно и тоже каждый раз. Илюша снова всех обхитрил, малолетний долбаёб
Илюш, никого ты не обыграл, расслабься.
>Давай примеры
http://dcevm.github.io/
В джаве горячая замена модулей в общем-то давно есть, хоть и ущербная. А с появлением jRebel и прочего добра хотсвап стал полноценным.
>Получается что статическая типизация у тебя существует только на уровне сервиса а протоколы между сервисами уже динамические?
Разумеется. Ты не можешь дать каких-либо статических гарантий относительно узлов, которые ты не контролируешь. Даже если у тебя все валидируется/энкодится через protobuf-/json-/xml-схему или даже в ASN.1 описано — взаимодействие все равно осуществляется посредством совершенно динамических пакетов. Сеть — это внешний мир, его в типизированную монадку не засунуть.
Ты что, илюща же гений, у него манямирка быть не может.
>Сеть — это внешний мир, его в типизированную монадку не засунуть.
Скоро будет чебурашка, её - засунуть.
Илюш, ну ты чего, обиделся что ли :3
Зачем ты его обманываешь?
Так илюща оказывается в 20-кублучших программеров мира входит кекус
И чо, из своего свинарника уезжать уже передумал или это просто зазывающее описание? Лень смотреть
ути-пути))
На пхп попиши.
Илюш, кончай пиариться.
Это ильйуша, ты и я.
>http://inter.ua/ru/video/episode/faces_utro/2016/09/13/kovalevskiy
Видел этого пидора на http://ebanoe.it , деревянными гуферами торговал.
Сеть — это внешний мир, его в типизированную монадку не засунуть.
Ну к этому я и вел, что полностью все уместить в типы не получится, тот же эрланг именно по этой причине динамически типизирован. Никакая система типов не защитит тебя от того что ты дебил и делишь на ноль. Я просто пытаюсь уловить ход мыслей чела который пишет ой бля эрланг динамически типизированый фи, почему фи? Для документации можно аннотации писать или спецификации, статический анализ можно проводить по тем же аннотациям.
:3
Илюша не палится.
>As of summer 2016, I’m sort of sitting in between becoming a programmer, entrepreneur or musician. Let me finish the album and we’ll see!
Ухты какой он талантливый! Программист, предприниматель, музыкант. Может он еще и лидер метальной группы?
не маняврируй илюш
>почему фи?
Очевидно же почему: потому что в динамике возникает много тривиальных ошибок, от которых тот чел мог уже устать.
Я от ирлонга и динамики в целом устать еще не успел, но где могу стараюсь посыпать код типами.
Впрочем, тот чел с великой вероятностью даже о диалайзере не слышал, так что "фи ирлонг" могло быть простым кукареком.
Как и лишней хромосомы для го.
>Очевидно же почему: потому что в динамике возникает много тривиальных ошибок, от которых тот чел мог уже устать.
Ошибки те же самые что и при статической типизации, только в случае с статической типизацией ты получаешь фидбек во время компиляции а в динамической ты получаешь фидбек во время прогона тестов. Но статическая типизация не избавит тебя от необходимости писать тесты. Так что для меня, лично, это весьма странный аргумент, деление в рантайме на ноль выкинет систему нахуй в атсрал при любой типизации, тут надо быть просто не долбоебом, обладать кое-каким опытом и покрывать код тестами
З А В И С И М Ы Е_____Т И П Ы
Покупаю твой минет, свинтус
В зависимые типы я еще не погружался так что хуй знает, не шарю
Даже поясню, писать структурный код по началу просто и удобно, минимум загонов. Но потом код становится чрезмерно, что ли, хардкорным.
Может мы не поняли дзена. Но придерживаясь философии го - мы сделали вывод "ненужно" (с) нам это.
Когда ты уже выпилишься?
>ой, да мы вообще не об этом
>ой, да это не важно
>ой, да ты просто тупой и нипонимаеш
>тем временем всё неудобное, с чего разговор и начался, остаётся проигнорированным
Сиськи с супом давай, а потом продолжим.
>в динамической ты получаешь фидбек во время прогона тестов
Или не получаешь. Если так получилось, что какую-то ветку кода протестировать забыл. А потом в рантайме упадёшь из-за того, что буковку о два раза нажал в имени переменной.
>Но статическая типизация не избавит тебя от необходимости писать тесты
Вообще-то, избавит. Не ото всех, конечно, но там, где на питоне тебе надо будет захерачить сорок тестов, на окамле будет достаточно десяти (а то и меньше - в большинстве случаев достаточно лишь граничные значения проверить, потому что если они работают и не написаны в виде if a = 1 then X else compute_shit(), то всё в порядке).
Зачем ты разговариваешь с дебилами, дурачок?
1. Для чего используете, в какой области?
2. Что привлекает в языке/технологии?
3. Что наоборот отталкивает или раздражает?
>Пока малолетний долбаеб-музыкант засерает тред
Кстати подозреваю что это какой-то другой малолетний пиздабол. Там анон выше постил скрин переписки с Илюшей, вроде он реально не при делах. Хотя может быть это все многоходовочка. Мне лично кажется что это кто-то нарошно форсит школьника чтобы утопить тред.
>1. Для чего используете, в какой области?
Фантазировать
>2. Что привлекает в языке/технологии?
Хайп
>3. Что наоборот отталкивает или раздражает?
Тролли в треде
Хорошая попытка, но нет.
А зачем ебать себя в жопу, и месить ГОвно, если можно просто по-человечески писать на хаскелле?
Нет, язык для толчения говна байтов в жепе, для чего-то сложнее паростроничного бложика подхрдит плохо. Возьми более распространенные веб-языки, я сурьезно.
Еще раз: как реализация IO связана с ссылочной прозрачностью? Впрочем, можешь не отвечать, моё изначальное мнение подтверждено - ты нулевой долбоёб который говорит о том чего не понимает.
Поскольку разговор я затеял ради мимокрокодилов, интересующихся ФП, вывел нулевого на чистую воду и дал термины которые нужно гуглить, спешу покинуть этот Goдюшник.
Можешь писать слив засчитан ололо, просветленный знаток ФП.
Нет, подруга, так не пойдёт. Разговор начался с моего утверждения, что чтобы быть функциональным языком, достаточно лишь иметь первоклассные функции. Потом вылезла ты и заявила, что это не так, и что ещё нужны ленивости и мандадки, попутно признав, что в ламбда исчислении этого всего нет, но "функциональным языком" оно является. Это уже говорит о том, что ты не понимаешь и с логикой у тебя не очень. После этого ты уже начала приплетать сюда всю эту хуйню о программистах и их командах, как будто они на что-то влияют, при этом уже третий пост подряд старательно игнорируя мой неудобный вопрос.
>как реализация IO связана с ссылочной прозрачностью?
А вот на это я отвечу. Сайд-эффекты есть - чистоты нет. Сайд-эффектов нет - чистота есть. Согласна? IO делает сайдэффекты. Они не чистые, потому что ты не получаешь "новый мир" в мандадке (получаешь только в теории, а не на практике). Потому что IO - хак. Поэтому код с IO не является ссылочно-прозрачным. Вот так и связана.
>ты нулевой долбоёб который говорит о том чего не понимает.
>вывел нулевого на чистую воду
>Можешь писать слив засчитан ололо, просветленный знаток ФП
Если ты думаешь, что вот такой призыв к эмоциям возвысит тебя в глазах окружающих, то ты сильно ошибаешься.
Лол, ты лошок и не разбираешься в Илюше.
>первоклассные фкнкции
>Сайд-эффекты есть - чистоты нет.
>Сайд-эффектов нет - чистота есть
>Если ты думаешь, что вот такой призыв к эмоциям возвысит тебя в глазах окружающих, то ты сильно ошибаешься.
Илюша так никогда бы не написал...
>Вообще-то, избавит
Да? В типах бизнесс логика содержится? Спешите видеть. Если твоя программка это положить или достать чета в какой-нибудь ебучий список или бд, то да, типизация как в хаскеле лишит тебя необходимости писать тесты. Но в реальных приложениях там дохуя триггеров, гардов, надо еще поддерживать транзакционность. Ты кладешь в одну хуйню еще по дороге должен залупнуться в 5 внешних сервисов и положить чета в другие коллекции а в какие-то может и не должен если то что кладешь в 3-ю больше 10. И как тут помогут типы проверить корректность программы?
> А потом в рантайме упадёшь из-за того, что буковку о два раза нажал в имени переменной.
Серьезно? Ты из динамических языков только джаваскрипт знаешь? Или ты привык писать код в вижыл студии или какой-нибудь идеи где огромный комбайн тебя за ручку водит. Никакие ограничения не защитят тебя от того что ты дебил, я про это уже говорил. Вчера кто-то заговорил про зависимые типы и я посмотрел на идрис, прикольная херня и годится там где ты делаешь критический софт, потом обмажу. Но я например пишу сетевой софт, я не боюсь если какой-то компонент системы ебанется или в системе случится ошибка. Отказы в системах это нормально.
>Ты из динамических языков только джаваскрипт знаешь?
Спалился. Давай, расскажи мне, как какие-нибудь питон или руби в этом плане отличаются.
я не пишу на говне я пишу на эрланге, у меня прямо ща в системе 2 генсервера пишут в лог что они умирают но супервайзер их поднимает и система работает, поправить их сейчас даже не в приоритете лол
>>879574
ну для питона и для руби верняк есть цивильные статические анализаторы, потомушта там сильная типизация. Отличаются собственно тем что там сильная типизация, не?
Сильная типизация не мешает им падать в рантайме из-за опечаток в имени переменной.
Почему сразу хаскелль-то? Это уже прошлый век.
Отдаёт json/xml, собирает статистику, рекламный сервер
Просто поддерживать код, горутины в языке для паралельных запросов s2s упростили многое, например.
Недавно еще искали рубиста, он таки быстро втянулся в работу.
Хотя генериков не хватает конечно, надоело с типизацией ебаться в тех местах, где можно было бы все сделать более красиво и читаемо.
ващета я знаю хаскел и даже люблю, на продакшене ничего на нем не писал, на нем и не попишешь те продакшены что я пишу, он для других целей ващета. А ты наверн крутой спец раз суешь везде свою любимую ебу.
Да.
>что ещё нужны ленивости и мандадки
Я этого не говорил. Вот мой первый пост: >>877204
>>Лямбда-исчисление - это функции
>По твоему, лямбда = функция, долбоёб?
>>879526
>IO делает сайдэффекты
>код с IO не является ссылочно-прозрачным.
Еще одно доказательство того что ты не разбираешься в том о чем говоришь. IO не делает сайдэффектов, оно описывает вычисления имеющие их. Значения IO a ссылочно прозрачны. Дальше сам разбирайся на хаскель вики зайди чтоле, твоим образованием я заниматься не намерен. Ты туп и невежественнен.
На пике напиши "Стесняюсь спросить даже, Владимир Владимирович... А можно... У Вас отсосать?"
Нельзя, чернь блядь. Зубы иди от ГОвна вычисти.
...что то?? Го для высоконагруженных проектов? Ага...
When you prepare a statement, it’s prepared on a connection in the pool.
The Stmt object remembers which connection was used.
When you execute the Stmt, it tries to use the connection. If it’s not available because it’s closed or busy doing something else, it gets another connection from the pool and re-prepares the statement with the database on another connection.
ебанные сектанты
>Я этого не говорил
То-то я смотрю, она помолодела слегка и сажу забыла повесить. Энивей, ты влез в середину разговора взяв себе чужую позицию, тебе и отдуваться.
>Вот мой первый пост
А вот это ты зря. В том посте ты обосрался на стольких уровнях, что это даже не смешно. Я бы вот на твоём месте постыдился об этом упоминать. Можешь помедитировать, например, на то, что ты сейчас процитировал, если ещё не дошло.
>оно описывает вычисления имеющие их
"Его убил не я, а нож". Программа на С описывает вычисления. Абсолютно любая программа описывает вычисления.
>Значения IO a ссылочно прозрачны
Яcно, тебе просто насрали в голову. В теории это, конечно, так. На практике же ты не можешь достать реалворлд и проверить, тот же он там или уже другой. Если ты записал что-то в файл, то ты не можешь достать предыдущую версию файла из прошлой версии IO. Ты не можешь их ни сравнить, ни ещё что-то с ними сделать. При этом если ты каким-нибудь образом запишешь в файл строку "хуй", сохранишь версию реалворлда, запишешь в файл ещё один "хуй", достанешь сохранённую версию реалворлда и прочтёшь файл, то ты получишь ровно два хуя, а не один. Такая-то прозрачность.
>туп и невежественнен
Ты можешь знать больше меня (в чём я сомневаюсь, но чем чёрт не шутит), но вот понимания у тебя нет.
А вопрос так и остался проигнорированным.
1. Играюсь. Хотел взять для веба.
2. Структурное программирование, простота.
3. Конструкции if err !=nil иногда превращают простую логику в простой функции в простыню на пол экрана.
На фоне отсутствия дженериков и их очередной "ненужно", не понимаю, почему язык не сделали с динамической типизацией. Какая-то пародия получилась.
PS личное впечатление: такое ощущение что го писал школьник подросток. Вроде какие-то концепции где-то уловил, но тут же наталкиваешь на очередную тупость. Новые языки почему то глупее старых.
>такое ощущение что го писал школьник подросток
Это потому что Ричи сдох.
Вот был бы Ричи жив, такой хуйны не было бы сейчас.
сочувствую галерным рабам там, их заставили жрать эту пародию на язык и вероятно даже ничего могли сказать против
>вероятно даже ничего могли сказать против
Всегда можно выбить нахуй зубы погонщику и уйти на +500.
>почему язык не сделали с динамической типизацией
Потому что слишком дорого писать крупные проекты без статической типизации
>Новые языки почему то глупее старых.
Не обобщая
>взяв себе чужую позицию, тебе и отдуваться
Написал на дваче - взял чужую позицию. Крутая логика, как раз твоего уровня. Я для кого квочу конкретные утверждения?
>Абсолютно любая программа описывает вычисления.
Вот же тупое животное.
https://wiki.haskell.org/Introduction_to_Haskell_IO/Actions
>Яcно, тебе просто насрали в голову ... сумбурное бормотание дауна ...
Еще раз подтверждаешь незнание элементарных вещей.
>понимания у тебя нет
Нет его у тебя. Ты - типичный пример эффекта даннинга-крюгера.
>Илюша, добрый вечер :3
Под кроватью илюшу поищи
То что разработка на статических языках дешевле это общеизвестный факт.
>>879759
>о да, а с interface{} все еще дешевле
Я говорил про индустрию в целом, не про GO на нем вообще не писал.
так вот мы, блядь, говорим как раз о го и его псевдо-статичности, глупое ты дитя!
Очередное животное, услышало о "статичности-кококо" и давай свое говномнение вне контекста писать.
Вот тебя то разорвало то.
Как и везде есть градации лучше-хуже.
Но любая GOвнястая статическая типизация лучше динамикопараши, ноу дискас
тебе еще раз говорят, иди нахер со своей философией. Полезность нормальной статической типизацией без тебя известна, но в го она такая бестолковая, что больше мешает
Роберт Гризмер и Роб Пайк наверное забыли у сыча из /pr/ мнение спросить когда проектировали систему типов.
убери линейку, сынок, на /зк такими хуями не меряются (пиздуй в свой го чат, или что там у вас у сектантов)
https://www.techempower.com/benchmarks/#section=data-r13&hw=ph&test=plaintext
rust как всегда отсасывает, даже в быстрые хелло-ворды не смогли?
Т.е. ты считаешь что мнение сыча с имиджборды может хоть как-то сравниться с такими авторитетами, как Роберт Гризмер, например?
НЕ знаешь ТОНКОСТИ разработки языков программирования, не пизди. А ты не знаешь
Robert Griesemer, had an early interest in programming languages and ended studying in Switzerland under the creator of Pascal, language which a lot of people will say that had a direct impact on Go. He also had about 15 years of experience working with C++ and his biggest credential in my opinion is that he got recruited by Rob and Ken to join the original Go Team at Google.
Ken Thompson, this guy is out of this world, if Yoda had a brother, Ken would be him. He also worked most of his career for Bell Labs, and he was only responsible for designing and implementing the original Unix operating system. He also invented the B programming language, the direct predecessor to the C programming language, and was one of the creators and early developers of the Plan 9 operating systems. Did you hear that he invented the language that came before C? Ok then.
В вебе белых людей возьмут кластер из машин с 32+гб памяти и намажут на него джяву, и она будет работать в разы лучше чем говноу.
мля, я же кушал!!!
Берешь и пишешь. По сравнению с серверным js, это еще годнота.
Перестаешь слушать петуханов итт и просто, без задней мысли, начинаешь писать на Go.
>если ты каким-нибудь образом запишешь в файл строку "хуй", сохранишь версию реалворлда, запишешь в файл ещё один "хуй", достанешь сохранённую версию реалворлда и прочтёшь файл, то ты получишь ровно два хуя, а не один.
Talk is cheap. Show me the code.
> goвно разве что лёгкое
И так же простое. Ты в расте пытался писать асинхронный код? Мне больно блять на это смотреть, хз как люди такое парсить будут при поддержке какого-нибудь проекта.
Нихуя, линус-хуинус трет освятил.
>>880149
А нахуя ты его с растом сравниваешь-то? Особенно учиытвая что там и нету асинхронщины в языке
Сравнивай с питоном, жсом, шарпом.
>>880063
Ну все остальные почему-то пытаются развивать языки, а один Пайк такой говорит: ребят, вы все пидорасы, а я - дартаньян.
ну это просто потомушто ты байтослесарь и наняли тебя не языки дизайнить а байты ебать, ghc мостли разрабатывался в майкрософте, эрик майерс который запилил линк для сисярпа хаскелист и а про F# ваще молчу.
> Но что-то пока я там работал, НИ РАЗУ не видел функционального кода.
Кто-же кодомакаку к порядочным кодерам сразу пустит? Вам лишь бы посрать на каком-нибудь форуме, а им делами надо заниматься.
Почему никто ещё не запилил форк без всякой идеологически правильной хуйни?
>ghc мостли разрабатывался в майкрософт
Microsoft Research != Microsoft. Рисерч отделение майкрософта — это такие же ботаники как вы, чьи увлечения дяденьки финансируют в надежде, что вы на что-то дельное в процессе своего фантазирования наткнетесь. Ничего общего со взрослым программированием майкрософт рисерч не имеет.
>Кто-же кодомакаку к порядочным кодерам сразу пустит?
Ахахаха функциональный блядок порвался. Посмотрим что запоешь когда через 10 лет поймешь, что инвестировал свое время и силы в тупиковую ветвь развития ЯП.
Да кому ты нахуй надо с объектами своими, никогда не учи функциональные языки, это все от лукавого. Оварквалифицируешься еще на родной джаве станет неприятно писать. Ктоже будет БИЗНЕС ЛОГИКУ писать, уж точно не те кто теоремы умеют доказывать.
>теоремы умеют доказывать
Очко себе докажи ахахахах) Маня-фантазер, ебать. Твой удел монадки в HASKELL компостировать, чмо)
И мой :з
>делить людей на "объектных" и "функциональных"
Вы совсем ебанулись?
>Очко себе докажи ахахахах) Маня-фантазер, ебать. Твой удел монадки в HASKELL компостировать, чмо)
>
ну, сука вот блять хаскелисты петухи блять делают штоа на нипанятном синтаксисе)) во смари чо мы с пацнами нахуярили внатуре
https://github.com/EnterpriseQualityCoding/FizzBuzzEnterpriseEdition/
не то что эти функциональщики там у себя борщи хлебают, зато на джаве работу легко найти
ФП НИНУЖЕН
>нипанятном синтаксисе
Лол, пиздло, кончай себе цену набивать. В синтаксисе хаскеля нет ничего непонятного, дело в том, что язык не дает тебе НИЧЕГО. Корутины? Забудь. Шедулер? Нет. Кросс-компиляция? Ахахахах. Потребление памяти? АХахаххаха. Хаскель придумали такие же маня-фантазеры, как и ты. И используют его, в результате, такие же маня-фантазеры, как ты. Поэтому на Go за 7 лет написали и развернули в проде в 100 раз больше софта, чем за 20 лет на хаскеле.
Ну зато вы впереди планеты всей! Интеллектуальная элита программистишек, охуеть!
>не то что эти функциональщики там у себя борщи хлебают, зато на джаве работу легко найти
пока будешь учить хаскель, илюша уже 3 раза успеет в гугл и фейсбук съездить
>АХахаххаха
>Ахахахах.
вот ты испалился дурачок, все это есть в хаскеле, тока тебе в рот это никто не положил, ты всеравно не прожуешь, подавишься :з Ну а на пхп то и жаваскрипте сколько софта набыдлили, твоему го и не присницца, миллионы мух выбирают правильные инструменты. Хотя если ты делаешь ГОвно то ГО отличный выбор
>миллионы мух выбирают правильные инструменты
Чувак, люди деньги зарабатывают. До тех пор пока джава приносит больше всего денег, она останется лучшим языком программирования в мире. Ценность твоего ЯП ~ сумме денег, которых он приносит в проде во всем мире.
>Хотя если ты делаешь ГОвно
В это время десятки инженеров в гугл пишут шедевральный инфраструктурный код на Go и смеются тебе в ебало сквозь свои конские зарплаты, на которые ОНИ могут позволить СЕБЕ нанять штат таких фантазеров как ты)
>>880358
>Илюша, который сам сидит на эрланг и мловые пайпы
Пруф.
>Пруф.
Если бы ты сидел тут больше полугода — застал бы его хотя он недавно тут был и филосовствовал об эрленке
Можешь поискать там прототипы его маняязычка (он даже в прошлом треде отписывался) и посмотреть что и откуда там.
лол блять так и представил как топовый инженер в гугле с салярой 100к в год месит круды на го.
Ты бля такой тупой что даже не понимаешь что го и джава это технологии не для инженеров, это технологии для воркеров, чтобы клепать круды формы и интеграции с сервисами которые настоящему инженеру делать тупо скучно. И пиарится эта залупа и продвигается для того чтобы ты был более заменимый и дешевый. Карьерный топ для такого инженегра это как можно больше лет провеслать на своей аутсорсинговой конторке чтобы выслужицца до сеньера, изучить весь ужаснейший говнокод и разбираться в этой параше чтобы не быть слишком заменимым и тебя не смогли выкинуть на мороз.
> изучить весь ужаснейший говнокод и разбираться в этой параше
Как что-то плохое. Результат то один - подохну и я, и этот топовый инженер, и наши дети, и их дети. Лет через 200-250 всем будет абсолютно похуй уже на такие мелочи.
Зачем ты сейчас высрал это - яннп.
И правда. Видимо то что для меня не ок, вполне ок для гоферов и джавистов. Пускай пишут, в моих же интересах чтобы шеб интерфейсы и круды были дешевле.
> в моих же интересах чтобы шеб интерфейсы и круды были дешевле
Опять же, как что-то плохое, лол.
Когда я умру - не будет никого, кто бы это опроверг.
> впитывают в себя потихоньку элементы фп
Нихуясебе функции высших порядков каналы в 2016 году, такой катин эдж что ща голову нахуй отрежет, это есть всего лишь во всех скриптах, сисярпе и вообще всех функциональных языках интересно когда же завезут имьютабилити и сингл асайнмент, сделают модули с чистыми функциями и алгебраические типы данных с паттерн матчингом, есть там такой майлстоун? :з
Модулей не будет — очень оверинжиниринг, а вот тайпклассы в том или ином виде есть везде.
Иммутабельность во всех новых языках уже есть, а СА наполовину в таких реализован.
Паттерн матчинг с адт уже есть везде кроме жявы с говном (даже в шарпе пм уже завезли, адт туда запилят в следующем же релизе).
Чистоты по умолчанию как и сейчас кроме хачкеля нигде нет и не будет.
Ой, дибил, просто иди нахуй. Хаскель не для тебя, равно как и размышления о нем. Иди вот с Goвнюками побщайся, аудитория твоего уровня
мимо-другой
Это не пруф. По-моему он говорил только что планирует взять несколько синтаксических фишек из эрланга и окамла.
>>880376
>топовый инженер в гугле с салярой 100к в год месит круды на го
Эээээээм, вообще-то 100к это не такая уж и большая зарплата в гугле. Два годика поработаешь и будешь иметь. Это во-первых. Во-вторых, КАКИЕ НАХУЙ КРУДЫ? Круды на го нет смысла писать, на го здоровые люди пишут сетевуху, блять. но вообще ты прав, топовые инженеры не против пописать на Go.
>И пиарится эта залупа и продвигается для того чтобы ты был более заменимый и дешевый.
Не хочу тебя расстраивать, но я (лично) уже несколько лет не работаю программистом. Я предпочитаю заниматься бизнесом и покупать дешевых проституточек вроде ТЕБЯ!
>>880512
Да, я глупый, 99% программистов в мире дебилы, а хаскеллисты ВСЕ ПОНЯЛИ. Манька, вы в воображаемом мире живете, хорошо хоть RealWorld завезли, а то программы так бы и ничего не делали. Кстати, я слышал что в программах на хаскеле очень редко находят баги... потому что их НИКТО не компилирует нахуй.
>я слышал что в программах на хаскеле очень редко находят баги... потому что их НИКТО не компилирует нахуй
Свежая интеллектуальная подъёбка от успешного %17-летнего% бизнесмена.
>Я предпочитаю заниматься бизнесом
Этого пидора на http://ebanoe.it видел - деревянными хохлами торгует.
Не расстраивайся, я в прошлом тоже был кодерошлюхой. Пройдет время, осознаешь всю ущербность своего положения и поймешь, что нет абсолютно НИКАКОЙ разницы, на чем писать. Ведь главное что от тебя требуется, чтобы Я смог заработать денег.
Как оно по памяти? Не сожрет на вдс с 2 гб оперативки все что найдет? Держу там небольшой сервис на Go под ~500 юзеров в день.
>неужто скала настолько проста?
Спустя 1000 строчек превращается в нерефактабельную кашу. Скала это аки С++ мира JVM: нахваталась кучу всего из кучи разных языков, но никакой общей картинки нет и код очень быстро без анального контроля превращается в адъ.
>Как оно по памяти?
Хуево, но терпимо.
>Не сожрет на вдс с 2 гб оперативки все что найдет?
Сожрет.
>Держу там небольшой сервис на Go под ~500 юзеров в день.
Ты делаешь все правильно.
>Поясните за первый пик, неужто скала настолько проста?
Нет, лол. Она удобна и лаконична, но не проста.
>Как оно по памяти?
Как и жава. В общем — как напишешь так и поедет.
>Не сожрет на вдс с 2 гб оперативки все что найдет?
Понатащишь фреймворков и свистоперделок — сожрёт. Будешь разрабатывать из минималистичных говна и палок а-ля го юникс-вей — всё нормально будет да это ява, там размер хипа регулируется одной строчкой конфигурации, о чём вообще речь
>Держу там небольшой сервис на Go под ~500 юзеров в день.
С таким адским хайлоадом хоть на руби с рельсами (самое тормозное что есть на рынке) перепиши — оно летать будет, тебе явно не стоит парится по поводу производительности.
>Это не пруф. По-моему он говорил только что планирует взять несколько синтаксических фишек из эрланга и окамла.
А по-моему ты всё же долбоёб. Вот блять даже обосновывать не стану.
Ну так от него го и не спасает, это к фаерволу который обычно у хостеров по деофлту настроен дропать подобных личностей — у них трафик тоже не резиновый.
>С таким адским хайлоадом
Ты представляешь себе как быстро эти 500 людей (а это уже неплохо, кстати!) уйдут, если какой-то школопас закажет ддос на недельку и твоя поделка на джаве с "регулируемым хипом" задохнется (можешь зугуглить throughput). inb4 клаудфлара тебе сильно не поможет против половины атак.
Может сразу начать писать на нормальных языках, расчитаных не на быстрое прототипирование, а на взрослых, приспособленных к хайлоаду, языках? Вроде Go, например.
Оказывается, нихуя. Оказывается, спасет. Тут-то и влетает в комнату пиздатый шедулер и стандартные средства стандартной библиотеки Go, заточенные как раз под высоконагруженные сервиса. Крути-не-крути, джава так не сможет.
Вась, для начала разберись в разнице между дудосом и досом.
Единственное к чему приспособлен го — месить говно палками как на той картинке. Пока кто-то будет трахаться с указателем другой уже запилит нужный функционал и пойдет наслаждаться выхлопом.
>>880617
О, ебать поехавший. Шедулер сейчас интернет-канал от спама почистит, подожди. Пока можешь сходить посмотреть как даже fasthttp, в котором высасывают говно из каждого байтика делает смачный минет netty.
>Я смог
>Я
Головка от хуя.
>>880616>>880617
В голос что-то. Давайте закладывать 100500 rps когда реально будет 1 rps, ведь нас могут заддосить. Ой, а в базу же упремся!!! Срочно ищем подходящее no-sql решение!
Закодил на спарке бэкенд, радуешься-раздаешь, хорошее настроение. Ты — довольный джава(scala)-программист. Настроил кэш, сел за клаудфлару. Пришел ддос. Докупаешь память и процессор на digital ocean. Памяти все равно не хватает, потому что как не крути, твое приложение либо будет упираться в хип лимит и проходимость пойдет в пизду, либо придется рестартить его каждые 20 минут и в конечном итоге ты докупишь еще памяти и цпу. Твой сайт тормозит пиздец и ты ничего не можешь с этим сделать, потому что спарк (как и любой другой фреймворк на джаве или скале) хуево скейлится по ядрам и как не крути, под постоянной нагрузкой прогнется. Проходит неделя ддоса и твоя дорогостоящая аналитика пошла по пизде, потому что посещаемость упала до нуля (и вернется нескоро).
Go:
Закодил на gin бэкенд, радуешься-раздаешь, хорошее настроение. Ты — довольный Go-программист. Настроил кэш, сел за клаудфлару. Пришел ддос. Докупаешь совсем немного памяти и пару ядер на digital ocean. Ты написал бэкенд на Go, поэтому рантайм выжмет из твоих ядер все и ты получишь наилучший throughput на рынке. Проходит неделя ддоса и ты почти не пострадал, потому что стоило добавить пару ядер и твой бэкенд на Go расстащил все то, что не смогла убить клаудфлара. Твой бизнес в безопасности.
>Пока кто-то будет трахаться с указателем
:))
>Шедулер сейчас интернет-канал от спама почистит
Манька, если у тебя канал забит, то никакой софт не поможет.
>>880621
>Давайте закладывать 100500 rps когда реально будет 1 rps, ведь нас могут заддосить
Чувак говорил про посещаемость 500 юзеров в день. За нее уже надо бороться. Лучше сразу думать о скейле, чем потом хвататься за голову и терять посетителей.
>Ой, а в базу же упремся!!!
Кто делает кеш в базу не упирается.
Scala: ты сел и написал за пол недели всё как есть на готовых решениях. Всё отлично работает. Надо заскейлить — добавил сервер и не паришься.
===
Go: ты проискал неделю библиотеки, из десятков поделий хипстеров так ни одна и не заработала нормально. Пошёл писать свои.
Пока написал и отладил их прошёл месяц. Код продолжает падать и интерфейсы не равны нилу.
Тем временем требования к обработке данных изменились и ты твой сервер помирает от фрагментации.
Ты берёшь какой нибудь ссаный memcached и прибиваешь ссаными гвоздями. Твой сервер ломают и сливают все данные. Ты проебал половину клиентов и пошёл писать свой менеджер памяти.
Пока писал тебя опять взломали из-за того что где-то не углядел if err != nil. Последние клиенты проёбываются.
Надо заскейлить — и ты идёшь, блять, переписываешь всё подмикросервисную архитектуру, все дела, с модными контейнерами и прочим — один бинарь всё.
Не осилил такой масштабный рефакторинг — в коде хуй разберёшься, это такая сишка с комментариями вместо препроцессора. Всё проёбано, пора выпиливаться.
пробежать по всему массиву и сравнить элементы.
Еще есть https://golang.org/pkg/sort/#Search
такая функция
Как жаль что ты это все про скалу написал... Особенно часть
>в коде хуй разберёшься
и
>Тем временем требования к обработке данных изменились и ты твой сервер помирает от фрагментации.
>Манька, если у тебя канал забит, то никакой софт не поможет.
Ещё немного, и ты даже узнаешь о аппаратных фаерволах.
>>880630
>Лучше сразу думать о скейле, чем потом хвататься за голову и терять посетителей.
Так говно ничего для этого и не предраспологает. Самое сильное — может заскейлится на пару ядер.
Абсолютно несравнимо с какой нибудь аккой.
А самое смешное что даже фастхттп отсасывает у той же нетти — и местные кричат "ниет дудосируют!!".
>Разве есть алгоритмы поиска в несортированных массивах?
Конечно есть.
Только не для /го/внодебилов, разумеется.
Ну скала хоть имеет средства для нормального разделения кода.
Как она может страдать фрагментацией хипа с явовским сборщиком — это что-то из разряда твоей шизы.
Скала как никак дефакто один из главных хайлоад языков, наравне с явой и эрлангом, в отличие от го.
Крупные банковские и интерпрайзнве инфраструктуры или ссаненькие микросервисы — что из этого требует большей стабильности, отказоустойчивости и скорости? Мне кажется очевидно что го — просто игрушка для девопс-утилиток а не хайлоад язык.
>Ещё немного, и ты даже узнаешь о аппаратных фаерволах.
Еще немного и ты узнаешь, что даже самые пиздатые фаерволы, оказывается, не работают.
>Так говно ничего для этого и не предраспологает.
Ты представляешь себе как работает веб-сервер?
>Абсолютно несравнимо с какой нибудь аккой.
Странно, почему тогда одна из самых хайлоадед компаний в мире (CloudFlare) отдала предпочтение Go и использует его практически всюду?
Может потому что акка это оверкил, заточенный под распределенные системы хотя тут уже стоило бы взять эликсир и не выебываться, которые накладывают свои ограничения на гибкость системы и по правде говоря, нужны только трем компаниям в мире?
>Ну скала хоть имеет средства для нормального разделения кода.
>Скала как никак дефакто один из главных хайлоад языков
Конеееечно, конечно-конечно!
>Ты представляешь себе как работает веб-сервер?
Ты представляешь вообще что такоет горизонтальное масштабирование? Или в твоём супирхайлоаде всё на вертикальном заканчивается?
>Странно, почему тогда одна из самых хайлоадед компаний в мире (CloudFlare)
Лол
>отдала предпочтение Go и использует его практически всюду?
Я открываю их гитхаб и... у них не меньше репозиториев на перде и жаваскрипте. Ещё куча lua. Что же это значит?
>нужны только трем компаниям в мире?
А, я таки был прав, у тебя опыт хайлоада — "ща оперативки добавим и всё будет посаны".
>>880648
На го пишут инфраструктуры банков? Нет? Так может это всё же игрушка?
> Вроде Go, например.
На си нахуй. Пиздец тут поехавших, которые про горизонтальное масштабирование и не слышали.
Внезапные нагрузки? Поднял дроп на дигиталоушене, дописал сервер в конфига нжиникса и платишь по центу в час за топовое железо.
Нагрузки прошли? Убрал строчку из конфига, нажал "удалить" на дроплете
Итого: юзеры довольны, а мы сэкономили полгода времени за 2$
> Сожрет
>>880609
> Будешь разрабатывать из минималистичных говна и палок а-ля го юникс-вей — всё нормально будет да это ява, там размер хипа регулируется одной строчкой конфигурации, о чём вообще речь
> тебе явно не стоит парится по поводу производительности.
Да я просто попробовать, мне не хватает сахара в языке, на работе пишу на Python, иногда приходится под iOS еще писать - даже ObjC кажется в этом плане более фичастым языком.
Хз, может из-за сложности как-раз Роб Пайк и решил отказаться от многих идей при реализации.
>>880616
>>880617
>>880620
Ну блядь, я не срача ради спрашивал. Идите уже в Java загон выёбываться.
> перде
Эй, перл охуенный, не надо тут. Моя первая работа была на perl бэк поддерживать и дописывать одной региональной компании. Жаль что хипстеры не понимают его мощь, у них javascript головного мозга.
У сервера Go, по умолчанию нет таймаута на keep-alive соединения.
То есть вы тупо можете забить все коннекты у сервака и все.
PS я вообще не знаю, есть ли у сервака поддержка таймаута на коннект? Если нет, то это будет лютый-вин!
Это неправда. Но там какой-то пиздец с HTTP-запросами точно есть. Из того, что бесит больше всего, могу назвать незакрывающиеся соединения при таймаутах. Если таймаут не указать явно, то быстро в лимит хэндлеров уткнешься. Мне всё лень всерьез разобраться, как это все точно работает, но могу точно сказать, что вы не раз охуеете, когда захотите какой-нибудь йоба-парсер интернетов на Go написать.
Алсо, не используйте surf. Это говно по умолчанию сохраняет историю переходов в самопальный двусвязный список, который по размеру ну никак не ограничен. Автор либы умер, похоже, так что фиксов не ждите тоже. Ещё у Go есть проблемы со всеми XPath-либами, что я пробовал, они полностью не поддерживают всё, что в других языках есть из коробки. Парсер XML падает там, где не падают парсеры из других языков (признаю, что документы , на которых это всё падало, были сделаны какими-то ПТУшниками, но ошибки были мелкие, и, опять же, в проверенных годами языках и либах всё это нормально обрабатывалось. Ой, блядь, короче, серьёзно, не используйте Go для парсинга интернетов пока, а то всё на регулярках делать придётся.
да хер там, ставил как просто коннект, как keep-live - весит сколько угодно.
То есть по дефолту там ничего нет, но хорошо хоть настроить можно (но кто вообще об таком думает? Типа взял сервер, будь добр прочитай про http протокол...)
В смысле, хер там? Открой transport.go и охуеешь, что в конструкторе задается дефолтное значение 90 секунд.
моему телнету видимо похуй или даун ты, перепутав с другим каким-то таймаутом (на уровне TCP, так как телнет TCP то держит нормально)
// IdleConnTimeout is the maximum amount of time an idle
// (keep-alive) connection will remain idle before closing
// itself.
// Zero means no limit.
IdleConnTimeout time.Duration
>>881173
У меня все работает.
хотя есть вероятно возможный вариант, что ты пиздабол, ибо же сектанты
Чувак, я просто поставил слушалку keep-aliveов, открыл на :1313 и потом прямо из хрома накидал соединений, все умирают стабильно через 90 секунд. Мне лень тебе сейчас вот это код копипастить, сравнивать-доказывать. Ищи багу у себя где-то.
Или можешь зафайлить на гитхабе: https://github.com/golang/go/issues/new
Тут какая-то рокировочка произошла. Я спрашивал у того анона, который говорил, что у него соединения не закрываются.
Жизнь KA:
апач - 5 сек (по-моему дефолтная настройка, давно он у меня тут, не помню)
jetty - 30 сек
undertown - хуй
какой-то котлин сервак (не помню уже) - 30 сек
go сервер (дефолтный 1.7.1) - хуй
машина - win7, тестил по мужски через telnet, а не перделками.
Заголовок запроса:
GET / HTTP/1.1
host: localhost
PS тестил громко назвать, просто запускал, отправлял и смотрел кто как ждет
А я подумал, что ты — тот анон, у которого соединения не закрываются. Бывает.
пардон, го 1.7.3 (win7 64)
Не работает у тебя пусть ну и не работает. У всех остальных работает. Show me the code.
да мне тоже срать, это же говно. Пускай обжигаются, меньше будут на хипстерский выпук вестись (развели "конфиренских" дормоедов).
В общем-то, действительно соединение не рвётся. Сейчас проверю не с одним клиентом, а с двумя. Возможно, он коннекты рвёт при появлении новых клиентов.
go version go1.7.3 linux/amd64
Linux ... 4.8.4-pf #1 SMP PREEMPT Sun Oct 30 02:12:50 MSK 2016 x86_64 GNU/Linux
Нет, даже при появлении второго клиента после двух минут ожидания коннект не рвется.
>>881276
Мы долбоёбы. Там IdleConnTimeout, похоже, используется для клиента. У сервера с Keep-Alive всё не очень радужно. Есть ReadTimeout, есть WriteTimeout, есть дедлайны. Per-request таймауты есть, per-connection — вроде как нет, но можно написать самому.
По части сетевой хуйни в Go ещё есть, что дописать/переписать, я считаю.
Ой, нет, ReadTimeout и WriteTimeout, собственно, вполне успешно можно использовать для указания Keep-Alive таймаутов. Что-то я заебался сегодня и туплю уже. Вангую, что по дефолту таймаутов нет или они конские. Для http.ServeMux кастомный Transport задать нельзя, следовательно, IdleConnTimeout действительно можно использовать только для клиента.
как мило,
гоферы пишут свои велосипедики,
воть у гоферов появились маленькие юношеские баги...
осталось дождаться статьи или конференции Роба Пайка, на которой он нам расскажет, что это ненужно
Я >>881150-кун. Считаю, что при всей минималистичности Go в стандартную библиотеку запихали неокторое количество говна, которое нельзя использовать нигде, кроме детских примеров. Когда работаешь с сетью, всегда гарантированно приходится забывать про писечки вроде дефолтного транспорта/клиента и дефолтного же сервера, которые просто хуй клали на всё, включая закрытие соединений в особых случаях.
Код с пика будет работать так, как тебе нужно. Но вот хуй ты его в документации официальной найдешь в качестве примера.
Это таймаут "с последней активности" сокета/канала?
Или же это вообще просто таймаут на весь коннект? (почему спрашиваю, так как есть другая проблема - это атака медленными соединениями,
или же наоборот мы отдаем большой объем данных)
Я понимаю последнее глупо, но это же го.
>Go в стандартную библиотеку запихали неокторое количество говна, которое нельзя использовать нигде, кроме детских примеров.
>>879707
>личное впечатление: такое ощущение что го писал школьник подросток. Вроде какие-то концепции где-то уловил, но тут же наталкиваешь на очередную тупость.
аналогично
почему бы не взять netty (java) гибкая нативная штука и в тоже время не надо на голых сокетах писать (там есть таймаут-хендлер)
Пикрелейтед. Атаки на медленные запросы не пройдут. Но если взять детский пример из документации, то пройдут. Как я люблю это, вы не представляете.
>>881290
А мне нравится язык. Параллельно еще много на чем пишу. В Go мне очень нравится то, как код пляшет вокруг структур данных. Нет правильной структуры — хуй соси, писать будешь через боль. Есть структура — код льется из тебя как Б-жье молочко с небес, ангелы вокруг поют, нутыпонел. В принципе, иногда ощущение создаётся, что пишешь на скриптопараше без всех её минусов.
Просто, как и везде, есть своя атмосфера. От существующих непоняток спасает то, что очень хорошо читаются исходники либ, включая стандартную библиотеку, и что общий тон документации задан хорошо, хотя и не без греха вроде, опять же, уебанских просто примеров. Но это не проблема языка, скажем честно, хотя и не очень понятно, зачем в стандартной библиотеке откровенно опасные хуйни и везде в качестве примеров использование этих опасных хуень.
В данном треде же рекомендую никого не слушать, кроме меня, но я тут почти не появляюсь, потому что здесь все абсолютно отбитые. Потрогайте язык, палкой там потыкайте, и если понравится — используйте, не понравится — хуй с ним. Говорить здесь с кем-то бесполезно, местные школьники на Go пишут хеллоуворлды и всё такое. Плохо, что язык хайпят исключительно неумелые мудаки.
>>881293
> java
Потому что не всем нравится Java, не всем она нужна и не все могут на ней правильно писать.
> нативная
> Java
Choose one.
> в тоже время не надо на голых сокетах писать
В голых сокетах ничего плохого нет. В том же Go с ними всё ок. Есть и более высокоуровневые штуки в Go, с которыми тоже всё ок. Непонятно, к чему ты тут про сокеты начал втирать.
Я считаю это вин.
Находят детскую-уязвимость на уровне школьной лабораторной по сетевым приложениям, потом для решения проблемы, нужно копнуть не документацию, не гугл, а сорцы, найти там эти сорцы, найти описание, в котором информации столько же сколько в название переменной (т.е. нихуя).
Таймаут чего?? Таймаут канала/cокета вообще, таймаут процесса чтения/заиписи (насколько долго процесс идет) или же таймаут с последней активности на канале/сокете?
Смешно, но в таких случаях нужен контроль всех трех состояний, притом в определенных случаях нельзя просто оборвать канал/сокет по таймауту (но при этом нужно определить не атака ли это с медленными соединениями).
>А мне нравится язык. Параллельно еще много на чем пишу. В Go мне очень нравится то, как код пляшет вокруг структур данных. Нет правильной структуры — хуй соси, писать будешь через боль. Есть структура — код льется из тебя как Б-жье
Как же вы ограничены, возьми в джаве класс с публичными полями и ты получишь структуру. При том в отличие от го - твоя структура будет полиморфной (что дает просто дичайшие плюсы и гибкость).
Так кстати реально делают (и на java и на php видел).
Видел деревья таких структур данных (где некоторые поля тоже структуры, а в них еще и списки, это для json была структура).
Го тут не привнес нехера ничего, скорее ограничил, так как полиморфные структуры данных это реально круто.
...но все же добавлю, так как ты сложнее скриптов вероятно не писал, но думаю хочешь вырасти как программист, скажу - работа с голыми структурами удобна по началу, никаких абстракции, пляшешь вокруг данных. Но потом в один прекрасный момент многолетнего проекта это все превращается хрупкий процедурный мусор.
Проходили это уже сотни раз, просто, вероятно, эволюция прошла мимо го-архитекторов.
Поэтому если для тебя джава стара, погляди на котлин, а процедурного программирование оставь дядям из Си или для скриптов.
нет нихуя, не неси хуйни. Данные и есть ванильные сочные центра любой системы а данные эти толкаются функциями. Это только дебилы в джаве оборачивают все в всратые объекты чтобы потом всрато комбинировать объекты, а не по нормальному данные. Идите на хуй со своим котлином и джавой. Уж вот где блять реально говно не такое уж и говно как при сравнении с джавапарашей.
Сотни раз он проходил, а ну пиздуй отседова интерфейсы реализовывать, джавовский подзалупок!
https://groups.google.com/forum/#!msg/golang-nuts/3TY8jX-iRC8/X2hBGSiv4WoJ
Битовые поля не часть языка. Написать так-то велосипед не долго, но опять же непного неприятно.
> При том в отличие от го - твоя структура будет полиморфной (что дает просто дичайшие плюсы и гибкость).
Когда в Java появится что-то похожее на CLOS - приходи.
Когда оно станет кому-то нужно кроме лисподрочеров — будет.
Ну на жвм-то хоть кложура и порт cl есть для таких развлечений, с это говном вообще никак такое не забахать.
Ну и зачем сравнивать чистый ООП язык с императивным?
Почему хейтеры не орут на каждом шагу вах какая Оберон говнина, как мы можете писать на Фортране, это же параша, а к Go столько претензий?
Ты сам-то понял что написал? ООП относится к императивной парадигме, что как бы намекает на состояние твоего мозга.
Оберон и прочие Модулы и так заслуженно подохли. Хотя читал, как на одном из них ПО для российских космических аппаратов пишут, лол.
>на одном из них ПО для российских космических аппаратов пишут, лол.
На оберон еще пишут компилятор в Excelsior Jet (известная альтернативная реализация JVM)
>разрабатываемая c 1997 года компанией Excelsior из Новосибирского Академгородка
Почему-то я не удивлён.
тут походу нужен другой вопрос, для особо одаренных, ты в курсе что такой полиморфизм в ООП?
>>881384
кто пустил это животное, съебись с треда востребованных языков.
как бы не было забавно, но по-востребованней лиспа.
Не передирай. Сорцы читать необходимости нет, но мне по ряду причин иногда удобно такую возможность просто иметь. Уязвимости тоже никакой нет, если писать правильно. Просто хипстота в бложиках и на конференциях не говорит, как правильно писать. У меня такое ощущение, что все, кто говорит о Go, на Go не пишут ничего, кроме твитов и асинхронных хеллоуворлдов.
> Смешно, но в таких случаях нужен контроль всех трех состояний, притом в определенных случаях нельзя просто оборвать канал/сокет по таймауту (но при этом нужно определить не атака ли это с медленными соединениями).
Эту часть совсем не понял. Порвать по таймеру можно что угодно в каком угодно случае. Зачем что-то определять — не совсем тебя понимаю, но если такая необходимость есть, определяй, а так оно и из коробки определится.
>>881307
> Как же вы ограничены
Ограничен, видимо, ты, но мне всё равно, это твоя проблема.
> возьми в джаве класс с публичными полями и ты получишь структуру
Лол, этот особенный ребёнок буквально воспринял мои слова про структуры данных. Извини, бро, в дальнейшей полемике не заинтересован.
>>881313
> так как ты сложнее скриптов вероятно не писал
Сильное заявление.
>
Что за детские маневры?
Ты будешь аргументировать или просто перефразировать мои слова в обратную сторону?
Структурно в джаве писать можно, более того там так и пишут (анемичная модель данных дядюшки Мартина Фаулера, лол)
Так что съебись диван отсюда.
>Уязвимости тоже никакой нет, если писать правильно
Если на сишке писть правильно, то там тоже ни багов, ни уязвимостей не будет.
> хипстота в бложиках и на конференциях не говорит, как правильно писать
лол
как можешь, так и пиши
идти в макдональдс
Я с тобой согласен.
Язык заменяющий си в 80е годы, выпущенный в 2012 году.
Или закрытый эксперимент, доказывающий значимость маркетинга над дизайном языка.
Хейтеры здесь круглые сутки пасутся?
Очень похоже на джаваскрип типо фанк и ещё оператор такой знакомый, из паскаля вроде или пролога
>- РРЯЯЯЯ, ВАШИ МАНАДЫ НЕ МАНАДЫ Я СКАЗАЛ!11
>- Ты не прав тут и вот здесь. Не берись рассуждать о том в чём не понимаешь
>-ХАХ, ТУПЫЕ ХАСКЕЛИСТЫ, НА ВАШЕМ ХАСКЕЛЕ ТО НИКТО И НЕ ПИШЕТ! ПОЭТОМУ Я ПРАВ А ТЫ НЕТ!
У программиста на каком языке нестолько сильно хромают причинно-следственные связи?
Купи слона!
>Proposal to delete the /r/golang subreddit
https://groups.google.com/forum/m/#!msg/golang-nuts/XoOhzUClDPs/jgSWxng7CAAJ
АХАХХАХАХАХАХАХАХХАХАХАХАХАХАХА, ПИЗДЕЦ! ЭЛИТА УРОВНЯ GOOGLE ВЗЪЕБЫВАЕТ ОБЕЗЬЯНОК В СООБЩЕСТВЕ КАК ХОЧЕТ. ЕЩЕ НЕМНОГО И ПРОСТО ВОЗЬМУТ И СОТРУТ САБРЕДДИТ, ПОТОМУ ЧТО НЕ ИСКОННО ВЕРНЫЙ.
выше тебе защеку положили уязвимость, причем единственно предложенные вариант это тупой таймаут на сокет (в 2016 году просто обрывать рабочие коннекты, лол)
>>882260
двачую, лет 6-8 назад хипстота захватила руль пхп и понесло его в ебеня ООП (хотя могли улучшить структурное программирование),
причем ввиду интеллекта php комьюнити, умудрились так убого с пародировать джаву, что пердак у меня горит до сих пор.
Там послевыборная драмма какая-то: мочераторы в каком-то /политота/разделе скрытно редактировали сообщения, от чего у одного из мочераторов говно-доски взорвалась задница и он собрался полностью покинуть реддит, призывая к тому же всех.
Поднажмите уж 6 постов :3
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
ПЕРЕКОТ
https://2ch.hk/pr/res/882625.html (М)
хуй для перфекционистов
Вы видите копию треда, сохраненную 13 декабря 2016 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.