«Плюс к карме»: за что критикуют Stack Overflow и почему многие жалуются на токсичность сообщества

    В сети можно встретить множество публикаций (в том числе в крупных СМИ), авторы которых критикуют Stack Overflow и поведение пользователей ресурса. Рассказываем, что к чему, разбираемся в ситуации, обсуждаем мнения и наиболее распространённые претензии к площадке.


    Фото — Ben Grey — CC BY-SA

    По данным аналитиков из Сингапурского университета, 77% пользователей Stack Overflow задают всего один вопрос. При этом 7,8% отвечают не более, чем на пять вопросов. Это довольно низкие показатели, учитывая, что на площадке зарегистрировано более 11 млн аккаунтов, а в прошлом году число тредов «перевалило» за 10 млн. Среди главных причин низкой активности выделяют два фактора: неудачную систему голосования и нетактичность пользователей ресурса.

    Система голосования неэффективна


    Резиденты Stack Overflow могут проголосовать за хороший вопрос, чтобы поднять его репутацию и продвинуть в поисковой выдаче сайта. Или, наоборот, поставить минус топику, который не удовлетворяет — по их мнению — требованиям площадки. По задумке основателей проекта, такой подход должен регулировать качество контента на сайте. Но система работает неидеально.

    Возникают ситуации, когда топик-стартеру просто ставят минусы и не объясняют причину. В результате тред опускается в выдаче, а человек не понимает в чем была его ошибка (как ему изменить свой вопрос, чтобы наверняка получить ответ). Поэтому он допускает её повторно — вновь неправильно формулирует вопрос. Цикл повторяется до тех пор, пока новичок не решает покинуть площадку.

    В таких условиях у пользователей пропадает желание не только задавать вопросы, но и давать на них ответы. Один резидент Hacker News отметил, что комментирование на SO превратилось в бессмысленную трату времени и сил. Несколько тредов, где он отвечал на вполне справедливые, по его мнению, вопросы, просто закрыли и «заминусовали».

    Хотя существует и другая точка зрения — ряд пользователей говорит, что все было справедливо. На Stack Overflow есть подробное руководство по оформлению вопросов. И закрывают только те топики, которые явно не следуют этим гайдлайнам. Но, судя по всему, не все новоприбывшие резиденты Stack Overflow о них знают, так как на площадке довольно часто появляются треды, в которых новые пользователи просят прояснить ситуацию с «заминусованными» вопросами.

    Токсичное поведение отталкивает новичков


    Помимо частого закрытия тем без объяснений, на площадке встречается и другая крайность — большое количество негативных комментариев. Ситуация беспокоит пользователей уже не первый год. Впервые об этом заговорили еще в 2014 году. Автор блога The Programming Works отмечает, что на SO практически невозможно получить полезный ответ на свой вопрос. Вместо него вы увидите ворох комментариев, утверждающих, что ваш вопрос не соответствует профилю площадки.

    Именно из-за токсичного сообщества, месяц назад площадку покинули три модератора, занимавшие должность как минимум пять лет. Генеральный директор Twitch Эмметт Шир (Emmett Shear) в интервью The Verge заметил, что на модерируемых ресурсах люди охотнее обмениваются мнениями, не боясь грубой критики или троллей. И уход знаковых лиц со Stack Overflow усугубит ситуацию.

    Можно ли исправить положение


    На SO можно встретить большое количество тематических тредов, в которых пользователи предлагают способы улучшить опыт работы на площадке. Одно из часто встречаемых предложений — внедрить выпадающее меню для всех желающих поставить минус. Из списка нужно выбрать причину минуса — так топик-стартеру будет понятно, в чем проблема и что именно он сделал неправильно.


    Фото — Ross Findon — Unsplash

    Еще один вариант — внедрить политику no stupid questions. По аналогии с одноименным тредом на Reddit. Там пользователи могут получить ответ на любой вопрос, не боясь, что его посчитают глупым или неправильным. Это подстегнет пользователей к более живому и ненапряженному общению.

    Но один из резидентов Hacker News отметил, что такой подход, хотя и способен оказать положительное влияние на обстановку в комьюнити, непригоден для Stack Overflow. Треды на Reddit носят исключительно развлекательный характер, поэтому и атмосфера там соответствующая.

    Проблемы с атмосферой на платформе признают и ключевые лица Stack Overflow. В прошлом году исполнительный вице-президент SO Джей Ханлон (Jay Hanlon) подготовил пост, в котором обсудил проблемы сервиса и призвал комьюнити вести более конструктивные дискуссии в комментариях.

    В марте компания запустила Ask Question Wizard — инструмент, который помогает пользователям задавать вопросы и проводит их через ключевые этапы. В августе разработчики даже предложили новый Code of Conduct — его цель, восстановить доброе имя площадки и развивать культуру взаимоуважения и сотрудничества. Остается надеяться, что новые политики приживутся в комьюнити.


    За новостями 1cloud.ru можно следить в специальном разделе на официальном сайте. Публикуем там важную информацию для клиентов, а также обновления и новые функции.

    Больше информации вы найдете в нашем Telegram-канале. Разбираем кейсы, приводим инсайты и говорим о серверных технологиях.

    1cloud.ru
    142,98
    IaaS, VPS, VDS, Частное и публичное облако, SSL
    Поделиться публикацией

    Комментарии 139

      +21
      Должен отметить, что на SO всё таки более адекватное сообщество, чем на многих форумах или том же тостере. Во всяком случае в русском сегменте.
        +24
        В августе разработчики даже предложили новый Code of Conduct — его цель, восстановить доброе имя площадки и развивать культуру взаимоуважения и сотрудничества
        Эм, цель обновления CoC была в том, чтобы уважить LGBT сообщество и поднять репутацию в глазах инвесторов потенциальных в свете предстоящего выхода на новый раунд инвестиций.

        И если посмотреть фидбек сообщества на последнее изменение CoC и всей этой темы с местоимениями, то SE добились совершенно обратного. К примеру, десятки модераторов покинули свои посты.
          +10
          Только хотел написать о том, что при виде словосочетания «Code of Conduct», в первую очередь на ум приходят всякого рода «ущемлённые», а потом уже реальные проблемы сообщества типа троллей и невежд. И, если какие-нибудь «правила форума» хочется изучить и стараться соответствовать им, то «Code of Conduct» вызывает отторжение. Нет, не потому что я интолерантен к каким-то социальным группам, я скорее нейтрален к ним и мне не важны характеристики вроде пола гендера, расы и чего там ещё, но когда мне говорят какие местоимения использовать и какие слова применять… Нет, увольте, я воздержусь от членства в этом сообществе.
          +28

          У меня есть некоторый опыт ревьюирования вопросов на SO и после примерно 600 ревьюшек отпало всякое желание туда лезть снова. Подавляющее большинство вопросов — это либо элементарное нежелание погуглить, либо нежелание пользоваться отладчиком, либо нежелание писать код вообще.


          Получается асимметричная ситуация: как отвечающий я должен пробираться сквозь неформатированный ввод, искать уже написанный ответ, вручную запускать и отлаживать, в конце концов. При этом я не могу написать "иди погугли", не могу написать ртфм, в конце концов, не могу написать что-то саркастичное и едкое, чтобы заставить лентяя на той стороне хоть чуточку пошевелить мозгами, а не отдавать это дело на аутсорс.


          По всем этим коуд-оф-кондакт би-найс инициативам создается впечатление, что владельцы сайта больше пекутся о миллионах i was given homework how do i code it answer asap, чем о тысячах отвечающих.

            +6
            Если вопрос «простой», то варианта действия не только два описанных — разбираться или сарказмировать. Можно переключиться на другой вопрос.

            Кроме того, некоторые «очевидные» вопросы могут быть очень неочевидны для новичков. Хотя там, конечно, очень много вопросов, которые можно задать гуглу.
              +14
              Не можно. Потому что таким образом оказывается, что отвечающему, который явно обладает большей экспертизой в вопросе, вы ласково предлагаете заткнуться к чертовой матери и держать свое токсичное (нет) мнение при себе.

              Хорошо, отвечающий промолчит, и на вопрос «СкакойсСТАраНЫуминяЗАднеца?7» ответят:

              «Глубокоуважаемый вагоноуважатый, ваша задница находится у вас сзади. Хорошего дня, люблю вас нежно». После чего отвечающему будет начислена репутация в размере 25 попугаев.

              Итого получается, что вес репутации больно разный — и за ответ про задницу, и за ответ «как бы мне найти драйвер на принтер 1987 года изготовления, матричный, под Linux 5, чтобы узбекский язык поддерживал из UTF-8 при печати по LPT», начисляется одинаковая репутация, но вопросов про задницу на порядок больше. И какой смысл в присутствии на ресурсе матерых аксакалов?
                +3

                Не все так плохо, как по мне.


                • Да, глупые (прямо очень) вопросы попадаются. Но есть категория low quality posts, где пост можно рекомендовать к удалению. Если у вас хватает репутации вопрос можно просто закрыть.


                • Да, вес репутации разный. Если ваш вопрос узко специализированный, то вы скорее всего еще и не получите дополнительные балы от других участников сообщества. Но сообществу нужны все виды ответов, даже на простые вопросы, и в этом ничего плохого нет, все были и будем в чем то новичками.



                Я бы скорее поднял вопрос о том, что есть категория участников которые пытаются дать как можно более быстрый (и, как следствие, иногда опасный) ответ что бы быстрее получить репутацию. Но как это исправлять не понятно.

                  0
                  Если у вас хватает репутации вопрос можно просто закрыть.

                  Это не так. Во первых, не если хватает репутации, а если есть золотая метка по одному из тегов. Во-вторых, вопрос можно закрыть только как дубликат. Для закрытия по low quality все равно нужен консенсус из трех человек с золотыми метками, или из пятерых простых смертных (с какой-то существующей, но не очень высокой репутацией).

                    0

                    Спасибо за прояснение. У меня не так много репутации — я вижу recommend deletion, и вижу что вопросы закрываются/удаляются.

                  +4

                  По своему опыту могу сказать что всегда сначала лезу в гугл, на Ру, En и если уже совсем все плохо задаю вопрос. Но бывало так, что плохо сформулированный запрос в гугл не давал ответов, а вопрос по сути был до ужаса нубским и мне накидывали минусов. Но в целом СО больше помогает чем вредит.

                    –2

                    Так может нужно научиться правильно задавать вопросы? Ведь правильно заданный вопрос — это уже половина ответа. Ну ок, давайте все вопросы считать хорошими. Что получится? Народ совсем перестанет думать. А зачем? Щас на SO спросим.

                      +3
                      Так может нужно научиться правильно задавать вопросы

                      Вообще, это действительно не всегда возможно — хотя вплотную столкнулся с этим относительно не давно. Бывает так, что даже термины и определения не известны по которым можно нагуглить.

                      Но к слову, это очень редко и 85% вопросов на любых форумах не возникло бы, если бы люди хотя бы гуглили. А в процессе гугла появляются знания не только в одной теме, но и в смежных что ведёт к росту знаний. Люди же зачастую задают в начале один вопрос, потом второй, потом третий. И второй и третий вопрос отпал бы, если бы они попробовали погуглить первый.

                      К сожалению это ведёт к тому, что те кто действительно нуждается в ответе и даже гуглил — могут попасть под незаслуженную раздачу. На самом деле, я очень благодарен тем людям, кто писали мне ещё лет 20 назад в фидошной конференции «rtfm». Тогда, надо сказать это совершенно не казалось токсичным, т.к мне чётко и терпеливо задавали направление поисков но не делали за меня всю работу.
                        0

                        Когда прямо пишут "не понимаю, что гуглить" (их не так много кстати) сразу видно, что человек пытался искать и ему прямо советуют именно введение в область — и это совершенно иной кейс, чем "сделайте за меня". Вопросов к таким людям как правило не возникает, потому как видишь по количеству репутации, что человек достаточно разбирающийся и не подымается рука ставить минус.

                          0
                          Когда я был нубом и не знал с чего начать решать некоторую задачу, я свой вопрос начинал словами «подскажите поисковый запрос» или, как вариант «подскажите ключевые слова для поиска».
                          0
                          На одном форуме, чтобы получить ответ, нужно было сперва рассказать, каким образом пытался решить проблему самостоятельно, и что из этого вышло.
                          Может до сих пор такая практика, не знаю.
                            +1
                            Может до сих пор такая практика, не знаю.

                            За последнее время встречал такое только в ветке планировщика Tasker на 4PDA.
                              0
                              нужно было сперва рассказать, каким образом пытался решить проблему самостоятельно

                              На StackOverflow это напрямую в правилах прописано, вообще-то.

                              0
                              К сожалению это ведёт к тому, что те кто действительно нуждается в ответе и даже гуглил — могут попасть под незаслуженную раздачу. На самом деле, я очень благодарен тем людям, кто писали мне ещё лет 20 назад в фидошной конференции «rtfm». Тогда, надо сказать это совершенно не казалось токсичным, т.к мне чётко и терпеливо задавали направление поисков но не делали за меня всю работу.

                              Мне тоже это не казалось токсичным. Иногда обижался, но понимал, что к разговору со мной снизошли люди, до которых мне еще как до луны пешком. И это мотивировало разобраться в вопросе самостоятельно, прочитать все, что доступно на эту тему.


                              Может быть это менее эффективно, чем когда тебе разжевывают, и в рот кладут, но не думаю. Это приучило самостоятельно разбираться в любом вопросе, надеяться на свои силы, понимать, что у меня есть ресурсы, чтобы решить любой вопрос. Помимо этого, я действительно получил знания из массы смежных областей, которые расширили кругозор, да и до сих пор, нет-нет, да пригождаются.


                              Сейчас вижу очень много людей, которым каждый вопрос разжевываешь, и они привыкают садиться на шею, и ожидать, что ты каждый вопрос за них решишь и каждую задачу сделаешь. Еще обижаются, когда в ответ на 10-й тривиальный вопрос, отправляешь их читать документацию или в поиск.


                              Реально, с каждым днем вижу людей, которые «пишут» на языке программирования X или фреймворке Y, не прочитав даже первые две страницы туториала, не говоря уж о документации (видно, потому что они переизобретают велосипеды для вещей, которые уже есть, и описываются в первых строчках туториалов).

                              0

                              Для того, чтобы правильно задать вопрос, надо знать предметную область и её термины. Гугл не очень хорошо помогает с вопросами типа "вот как бы мне в питоне поменять все буквы с дополнительными значками, ну типа ñ, на аналог без значка"

                                0
                                Ну, логично, что чтобы решить задачу, породившую такой вопрос, нужно немного просветиться в предметной области.
                                  0

                                  Таким образом сформулированные вопросы обычно возникают когда надо решить небольшую подзадачу, никак не связанную с предметной областью основной.

                            +1
                            Есть вполне очевидный вариант — разбить рейтинг (может быть сложность) вопроса и рейтинг ответа, а потом вычислить суммарный вес. Рейтинги пусть проставляют продвинутые пользователи — вот вы видите вопрос о том, где находится задница, отвечать не хотите, но просто ставите ему сложность 0 одним кликом, это просто. А вопросу про драйвер сложность 10. Потом кто-то ответит получит маленькую репутацию, но может ему того и надо.
                            Таким образом для вопроса, который аксакалы отметили как простой, рейтинг будет ниже, а для сложного — выше.
                              +6

                              А потом пользователи начинают ныть про токсичное сообщество, которое ставит "нолики" их вопросам...

                                0

                                Пользователи будут ныть в любом случае, но вот мне идея прямо понравилась.


                                Иногда очень хочется вопросу (или ответу) поставить больше, чем просто плюс, и я в таких случаях завожу баунти (с тех пор, как разрешили давать баунти просто потому, что вопрос / ответ тебе понравился). Но с баунти нужно два дня ждать, чтобы его передать автору, и вот это — раздражает неимоверно, висит открытая вкладка в браузере, просто чтобы банально не забыть.


                                Я — за кнопку «прямо сейчас передать 100/200/300/400/500 очков репутации вот за это».

                                  0

                                  Вот только ограничение на два дня именно затем и сделано, чтобы такой кнопки ни у кого не было...

                                    0

                                    Это я понимаю, я не понимаю — почему? Что плохого в том, что я поделюсь своей репутацией в благодарность за красивый и полезный вопрос / ответ?

                                      0

                                      Можно будет легко передавать репутацию между виртуалами.

                                        0

                                        О, да. И что? Вы много видели виртуалов с репутацией, которую можно долго кому-нибудь передавать?


                                        Кроме того, для виртуала — скрипт, который подождет два дня — вообще не проблема.

                                          0

                                          Так потому их и нету, что использовать тяжело.

                                            0

                                            Я вот правда не понимаю, как вы себе представляете организацию фермы виртуалов. Как они репутацию набирать будут, чтобы кому-нибудь передать, и почему это может быть легче, или удобнее, или лучше, чем просто отвечать одним пользователем и копить карму в одной корзине, если она так уж нужна?


                                            Кроме того, насколько могу судить, в оффлайне (приглашения на работу, хедхантинг, офферы из Китая, вот это все) — смотрят не на репутацию, а на метки. Я как только вошел в hall of fame в своих языках — предложения прямо пошли, а до этого — раз в месяц в лучшем случае, хотя с репутацией все было в порядке и тогда.

                            +9
                            Как-то раз мне тимлид сказал «умный вещ»: Все вопросы нужно задавать гуглу. Если, конечно, ответ на самом деле нужен, а не чисто чтобы спросить.
                              +3
                              Все правильно. Нужно задавать вопросы гуглу.
                              А уж гугл первым делом отправляет на SO. Где-то на похожий вопрос, но не тот, что нужен.
                              +2
                              А гугл ведет на SO. И по Xamarin допустим предлагается несколько вариантов решений. И я выберу не набравший больше плюсов. Потому что на данном этапе он мне ближе. Руководство видит проблему правильно. Но помогать начинающим такое себе удовольствие. Поэтому желающим написать ртфм, там делать в ответах нечего.
                              +4
                              иди погугли
                              Когда я гуглю что-то, то несколько первых строк выдачи за SO. Забавно.
                                +3
                                Именно поэтому дофига вопросов являются дупликатами — вместо гугления люди идут постить по сто раз один и тот же вопрос.
                                  0
                                  Ну, там ещё проблема в том, что на сайтах SE сети поиск ужасный.
                                    0
                                    а что мешает искать там гуглом?
                                      0
                                      Удивитесь, но очень многие не знают, что в гугле можно производить поиск по конкретному сайту. Даже среди тех, кто сидит на SO. Хотя, казалось бы…
                                        +1

                                        Не обязательно искать по конкретному сайту чтобы получить в выдаче ответ на SO.


                                        Одно время была проблема c qaru, но или их все-таки начали блокировать или их алгоритмы стали хуже определять предпочитаемый язык пользователя, но теперь, наконец-то, запрос на английском языке не выдает множество ответов — автопереводов.

                                          –1

                                          Прости господи, но если человек понимает предметную область на английском языке (термины и определения) и умеет гуглить на английском — он уже имеет достаточные навыки нахождения ответов на свои вопросы, а значит не попадает в такие ситуации, когда спрашивает банальные вопросы.

                                            0
                                            Эта проблема никуда не делась. Если у вас не стоит расширение вроде Google Personal Blocklist — то вы никуда не денетесь от qaru.
                                            Запросы на английском, естественно.
                                              0

                                              Любопытно. Сейчас специально потестировал на нескольких простых запросах. Из расширений у меня только бесплатный Browseс, но даже если его отключить, то qaru не будет в выдаче на первой странице.

                                                +3
                                                Очень сильно зависит от местоположения и дефолтного языка системы. Если он у вас русский — получите клоны.
                                                Чтобы быстро проверить и демонстрации всей дичи добавьте к адресной строке &lr=lang_ru. Это конечно не точное воспроизведение проблемы, но показательно. Надо понимать, что новички в программировании, которых посылают искать в гугле увидят именно это

                                                  0

                                                  Спасибо, действительно если добавить &lr=lang_ru, то в результате и у меня полно авто-переводчиков:


                                                  image


                                                  запрос2


                                                  но хотя-бы нормальные сайты в рейтинге выше.

                                                0
                                                Позволю себе наглую рекламу своего списка для блокировщиков рекламы, который скрывает такие результаты из гугла. Силами CSS-правил, без дополнительного расширения, достаточно обычного uBlock Origin:

                                                github.com/Nebula-Mechanica/Anti-AutoTranslation-List
                                        –1
                                        И первые позиции — закрыты как дубликат.
                                      +1
                                      Возможно, мой опыт несколько отличается от вашего.
                                      У меня есть пару вопросов по довольно редким темам вроде скрещивания LDAP с AD или граблей при использовании OpenLDAP и клиента Oracle в одном приложении. Так вот — 10 лет назад, когда я их задавал — туда приходили все три человека, которым приходилось с этим сталкиваться и кто-то из них советовал что-то дельное — а еще несколько могли плюсануть вопрос или ответ и на этом все успокаивалось.
                                      А в последнее время — эти древние вопросы/ответы кто-то все время редактирует, модерирует, высказывает какие-то претензии — короче идет серьезная движуха, никак не связанная с решением собственно проблемы. Такое впечатление, что куча народу не может ничего толкового посоветовать ни в одной теме — а комплексы давят, вот и идут в граммар/формат/CoC-наци…
                                      –10
                                      Раздал остатки крох дневного заряда.
                                      Всем пис!
                                        +16

                                        Токсичнее хабра трудно себе представить систему рейтингов. На SO я получаю плюсы просто за качественно заданный вопрос, а минусующий платит своей кармой, и всегда понятно за что, в результате — это приятное и позитивное сообщество, типичное для развитого западного общества.

                                          –16
                                          Токсичнее хабра трудно себе представить систему рейтингов.
                                          ВОТ ЭТО ТОЧНО!!!
                                            0

                                            Очень сильно зависит от предметной области.

                                              0
                                              Согласен, в некоторых сообществах работают платные модераторы, которые еще и мои вопросы правят (улучшают), и модерируют чужие ответы. Мозила в этом плане приятно радует, это ведь тоже способ продвижения своих продуктов.
                                                0

                                                А в некоторых это делают просто энтузиасты :)


                                                А в некоторых — до сих пор — прям страшно вопрос задать; придёт какой-нибудь нуб с репутацией чуть за 10К и покажет тебе мир с копеечку.

                                            +9
                                            Возникают ситуации, когда топик-стартеру просто ставят минусы и не объясняют причину. В результате тред опускается в выдаче, а человек не понимает в чем была его ошибка (как ему изменить свой вопрос, чтобы наверняка получить ответ). Поэтому он допускает её повторно — вновь неправильно формулирует вопрос. Цикл повторяется до тех пор, пока новичок не решает покинуть площадку.
                                            Где то это я уже видел, никто не помнит? Ах, да!!!
                                              +15
                                              Именно из-за токсичного сообщества, месяц назад площадку покинули три модератора, занимавшие должность как минимум пять лет

                                              Вы сами ты свою ссылку читали? Модераторы уходят со stackexchange не потому что комментарии токсичные, а потом что у руководства крыша поехала. Достаточно вспомнить про увольнение одного из самых уважаемых модераторов Monica Cellio, которую окунули по самые в грязь, не извинились и до сих пор всячески отнекиваются, придумав идиотскую процедуру восстановления прав модератора, от которой она сама же открестилась по очевидным причинам. Именно такое отношение к модератором и привели к их оттоку. Потом пошла идиотия с CoC, единственной целью которого являлось заставить (именно заставить, права выбора у тебя нет) людей обращаться к другим так, как они этого хотят. Monica Cellio уволили именно за предложение общаться в третьем лице (they, them, their), что руководство посчитало неуважением меньшинств и нарушение еще не вошедших в действие правил. История с внезапной сменой лицензии (вероятно даже нелегальной) контента пользователей тоже веселая — минусов в карму SE получили тонну за это. Как бы еще суды не начались, пользователи уже начинали консультироваться с юристами.

                                              А токсичность площадки это выдуманная проблема. При чем мне совершенно непонятна мотивация тащить к себе все больше новичков и пытаться обезопасить их, когда они постят в основном говеные вопросы, которые только закрывать остается (знаю, ревьювил, редактировал). При том что ниразу я не видел прямо оскорбительного отношения. Послать гуглить — запросто и это правильный комментарий. Это крутое пике SE началось не так давно, когда у них начали появляться типичные позиции по diversity и прочим модным направлениям, которые начали постить подозрительные блог посты про токсичность и инклюзивность. Вот с этого момента и пошло. Что является причиной такой смены курса — непонятно.
                                                +4
                                                Про ситуацию с Моникой, к слову, можно у нас на Мете почитать. Я постарался краткой summary написать по ситуации.
                                                  +1
                                                  одного из самых уважаемых модераторов

                                                  Я имел с ней общение на Area51. Вот её как раз охарактеризовал бы как токсичную и ригористичную, а не её оппонентов. Помню, один SE Valued Associate с небольшим номером за меня даже вступился. Полагаю, представление о ней те, кто её «уволил», составили не только по её деятельности на SO.


                                                  К слову, наличие подобных побочных сообществ призвано отчасти снизить остроту проблем: многие вопросы, закрываемые на SO, были бы вполне уместны на других ресурсах под зонтиком SE. Только ответят с меньшей вероятностью. Если хотите, чтобы ответили с большей вероятностью — извольте соответствовать правилам того места, где спрашиваете…


                                                  А так во многом согласен и с вами, и с другими комментаторами. Добавлю только, что часть проблем кажется действительно обусловленной существующей системой репутации. Возможность минусовать появляется гораздо раньше, чем возможность голосовать за закрытие вопроса. Голосуя за закрытие, указываешь какое-никакое обоснование, а минусуя — нет. М.б, стоило бы дать такую возможность и при минусовании или подсократить разрыв между 115 и 3000.

                                                    +1
                                                    Вы частный случай, сами понимаете. Это видно по огромной поддержке сообщества. Против нее не выступает никто в этой ситуации. Все тремя руками за и готовы жертвовать своей репутацией и статусом, т.к. на кону далеко не только ее позиция. А что до ее увольнения, SE скрывает всячески реальный процесс и мотивацию ее увольнения, но все признаки намекают на то, что причиной были именно разногласия по обращениям из нового CoC.
                                                      0
                                                      Там транскрипт мод чата где-то выкладывали. Довольно однозначна причина снятия лычек.
                                                  +22

                                                  Я не знаю, что они там подразумевают под токсичностью, но меня просто достали однотипные вопросы типа: «Здравствуйте, я Махеш из Мурудешвары, мне надо открыть файл /tmp/classes.txt в Python и прочитать его в переменную. Мне надо это сделать срочно».


                                                  Эти индусские (хотя их задают не только индусы) вопросы появляются тысячами каждый день. Достаточно просто вбить его в Google и получить сразу же 10 релевантных ответов на первой странице. А главное — по вопросу очевидно, что человек не открывал даже первую страницу туториала.


                                                  А когда в комментариях пишешь человеку ссылку на раздел туториала, где в 5 простых предложениях рассказывается, как решается его вопрос, получаешь ответ типа: «А ты не можешь сразу написать мне программу, которая работает? Зачем мне твой туториал».


                                                  По-моему, токсичными являются как раз все эти невежественные Махеши, которые не хотят ничего читать, а хотят, чтобы за них по щучьему велению делало домашки сообщество. И они реально убивают SO, потому что 10 лет назад вопросы и ответы были намного более интересными. А теперь копаться в 10,000 вопросах от Махешей ради одного интересного никому не хочется.

                                                    +7

                                                    Токсично это sql.ru лет 8 назад. И это круто. Надо думать над каждым словом иначе сходу на три буквы пошлют ( man читать, а не то что вы могли подумать)

                                                      +2
                                                      Чем больше и сложнее становится система, тем более она должна стремиться к акторной модели взаимодействия (всё более слабые связи между всё более инкапсулированными сущностями). То есть общение между задающими и отвечающими на SO должно становиться всё более формализованным и минималистичным. Как ни жаль, но количество эмоций, не связанных с конкретной темой должно уменьшаться до нуля. То есть обсуждение качества вопросов и личности участников должно блокироваться. Только сухой вопрос, сухой квалифицированный ответ и оценка треда.
                                                        +2

                                                        Кстати, раз уж вопрос всплыл. А как много людей здесь задавали вопросы на SO? Я вот ни разу — всегда находил решения как- то без создания нового вопроса. Тематическое форумы — да особенно у НАГа но все таки я не программист.

                                                          +1
                                                          Когда только начинал с Android'ом работать, то задавал довольно много. Позже уже просто появляются вопросы, на которые на SE не получится найти ответа.
                                                            0
                                                            Задавал, правда на других ресурсах StackExchange. За два из них аж получил ачивку «Tumbleweed». Это когда твой вопрос ни плюсуют, ни минусуют, ни комментируют. Либо слишком сложный, либо очень тупой.
                                                              +1

                                                              Многие из отметившихся в комментариях к этой статье имеют аккаунты на so с достаточно заметной репутацией, а значит и ответы-вопросы задавали. Других знаешь не только по so: в принципе, неважно где и на каком сайте пересекаешься, люди одни и те же. В этом плане Лёха Андреев говоря о механизме конвертации репутации одного сообщества в другое ошибался: не репутация делает человека, а человек с репутацией всегда будет выделяться на общем фоне.

                                                                0
                                                                У меня ноль вопросов на стеке, все ответы. Но тут чисто принцип — я не люблю спрашивать. Ищу сам, разбираюсь сам.
                                                                  0

                                                                  Я в своих основных языках знаком фактически со всеми активными профи, поэтому иногда спросить там что-нибудь заковыристое — это такой способ пообщаться, поспорить, подискутировать. Но так да, в основном отвечаем.


                                                                  Я когда-то давно в каком-то левом твите (или блоге) прочел: «Лучший способ выучить новый для себя язык за минимальное время — пойти на SO и начать отвечать на вопросы» и до сих пор убежден, что это один из лучших советов, которые мне довелось получить, пусть и косвенно.

                                                                    0
                                                                    Нынче еще проще может быть. Для новомодных языков сразу выходит добротно написанная книженция по абсолютно всем фичам языка. Я так не давно swift осваивал. Прочитал книгу эпл и вперед, переписывать проект.
                                                                      0

                                                                      И да, и нет. Синтаксиса (по крайней мере, в нашей предметной области) мало, иногда (всегда) полезнее посмотреть на существующие use-cases, проблемы, в которые упирались живые люди. Ну, там, типа «а вот что делать, если мне нужно прочитать и обработать 150 мегов из CSV не дольше, чем за минуту?». В книгах такого не напишут.

                                                                        0
                                                                        Подобные задачи это вопрос уже банального навыка как программиста. Посмотрел стандартную библиотеку и решай, как это лучше сделать. Тем более, я бы сказал, что подобный вопрос для SO некорректен и запросто получит минусы.
                                                                          0

                                                                          Возможно, я недостаточно хороший программист, или просто тупой, но когда человек впервые сталкивается с подобной задачей — банальных навыков недостаточно. Ну, мне — моих — недостаточно.


                                                                          Вопрос надо сформулировать корректно, конечно, типа: «вот ьак попробовал, и так, и смог выжать только две минуты с лучшем случае».

                                                                            0
                                                                            Я в том плане, что если не происходит кардинальной смены парадигмы, где, например, в первый раз начинаешь писать на функциональном языке, то большой разницы между языками особо нет. Структуры данных одни и теже, ограничения по памяти одинаковые, подходы к параллелизации делаются разными средствами, но подход все равно один и тот же будь это реальный потоки или корутины.

                                                                            В моем случае так вообще задача была переписать смесь Obj-C и C (манипуляция с байтами и прямая работа с упакованными структурами) на свифт. Код уже готов, ничего принципиально другого на свифте не напишешь. Вопрос был скорее как раз к синтаксису, т.к. работа с сырой памятью там уж очень неудобно делается со странными ошибками компилятора.
                                                                              0
                                                                              Структуры данных одни и те же, ограничения по памяти одинаковые, подходы к параллелизации делаются разными средствами, но подход все равно один и тот же будь это реальный потоки или корутины.

                                                                              Во-первых, это не так. У меня вот на эрланге приложение создает около 100 000 потоков только на старте, я посмотрю, как вы это на корутинах реализуете. Во-вторых, про ошибки компилятора не зазорно и спросить у гуру.


                                                                              И, в-третьих, дело даже не в этом: я же говорю, новый use-case. Ну вот разбирать строки в языках с паттерн-матчингом — это принципиально иной подход. Рекурсия имеет смысл только в языках, где хорошо сделан TCO (и мало кто об этом знает, но в руби, например, его можно опционально включить, и про это не написано ни в одном самом толстом руководстве). Если есть виртуальная машина — то в каждом языке для нее свои заморочки. Если есть прямая работа с памятью — то освобождать ее надо по-разному. Если есть нативные биндинги к низкоуровневым языкам — везде куча подводных камней, и они разные. Если в языке есть нативный доступ к AST — а вы к этому не привыкли — вы все метапрограммирование будете делать неправильно, а в туториалах про такие вещи не пишут. И так далее.


                                                                              Swift после C/Obj-C — это не другой язык, это, считай, диалект поменялся. Вот LISP → Julia — это да, смена парадигмы.

                                                                                0
                                                                                У меня вот на эрланге приложение создает около 100 000 потоков только на старте, я посмотрю, как вы это на корутинах реализуете.

                                                                                Вот это как раз без проблем. Если потоков 100000 — они просто ну никак не могут быть CPU-bound, а это единственное место где корутины не справляются.

                                                                                  0

                                                                                  Я же вчера уже этот пример приводил: ну вот слушают они все какой-нибудь RabbitMQ, и тут заходят 9 тяжелых для обработки сообщений. И мы зависли, пока их не обработаем. Очередь копится (а мы не можем их даже акнуть), транзакции замерзают, мы тут работаем.


                                                                                  Чтобы в такой ситуации не зачахнуть, надо прям неимоверные пляски с бубном устроить. Так что нет, не без проблем.

                                                                                    0

                                                                                    Ну, очереди-то как раз для разруливания подобных ситуаций и нужны.

                                                                                      –1

                                                                                      Так-то да, пока скорость отклика на каждое конкретное сообщение не критична.


                                                                                      Смотрите: два клиента, одному нужно срочно разместить одну заявку, второй заслал десять раз по стопиццот заявок, и готов ждать.


                                                                                      Только не нужно мне предлагать докупить мощностей, пожалуйста, потому что это не решение, а прямой путь в бедное никуда.

                                                                                      0
                                                                                      Чтобы в такой ситуации не чахнуть, надо или входной поток уменьшать, чтобы очередь не копилась, или ресурсы поднимать, чтобы очередь, опять же, не копилась. При чем тут корутины, потоки и вообще все это. Это ортогональные проблемы.
                                                                                        –1
                                                                                        надо или входной поток уменьшать, чтобы очередь не копилась

                                                                                        Поток не мой, я только объяву разместил.


                                                                                        ресурсы поднимать, чтобы очередь, опять же, не копилась

                                                                                        Даже если такая ситуация — три раза в день? Ну вот и сразу видно, что ваши опционы не зависят от расходов компании.


                                                                                        При чем тут корутины, потоки и вообще все это.

                                                                                        При том, что в эрланге такой проблемы нет.

                                                                                          +1
                                                                                          Даже если такая ситуация — три раза в день? Ну вот и сразу видно, что ваши опционы не зависят от расходов компании.

                                                                                          Для этого люди придумали облака, где скейлинг динамический. Других решений нет.

                                                                                          При том, что в эрланге такой проблемы нет.

                                                                                          Ага, когда вы в CPU упретесь у вас тоже эрланг волшебным образом решит все ваши проблемы? Что за выдумки. У вас тяжелые транзакции, у вас падает RPS. Хоть сколько вы там потоков выделяйте. Быстрее отвечать они не станут и латентность все равно пойдет вверх. Эрланг помогает лишь с тем, что мелких потоков может быть очень много и нет одного небольшой пула потоков, который если выжрали весь, то все повиснет нафиг. Только вот ОС потоки не резиновые, на которых это все выполняется. Ровно тоже самое у Го с его горутинами. Горутины сотнями тысяч запускаются, это нормально. Только если процессорных ресурсов нет, чтобы их выполнять, быстрее работать оно не станет. Латентность все равно пойдет вверх.

                                                                                          Именно поэтому вам выше про CPU-bound упоминали — корутины эрланга хороши для IO-bound задач, где бОльшая часть времени тратится на ожидание чего-то. Таким образом процессор забивается работой лучше. А обычные потоки обычно фиксированны по их числу (или в конфигах, или банально по памяти. Стеки то огромные) и в какой-то момент просто кончается их число даже при том, что все они могут висеть и ждать ответа из сети, а процессор при этом ничего не делает.
                                                                                            0

                                                                                            Еще раз повторяю: ситуация с забитой очередью — не частая, но случается. Облако — не вариант, потому что мне нужен hot code reload, я не могу позволить сервису дропнуть активные соединения, которые могут длиться месяцами.


                                                                                            И у меня очередь не засоряется. Понимаете, оно работает. Невзирая на ваше авторитетное утверждение, что так не бывает. Ну, возможно, это просто мистика.

                                                                                              0

                                                                                              Откуда у вас вообще сверхценные активные соединения в программе, которая разгребает MQ?

                                                                                                0

                                                                                                Ну мы как-то выбрали модель разработки посередине между монолитом и микросервисами (возможно, это архитектурно не совсем верно, но так по многим параметрам удобнее поддерживать). Каждый из таких миддл-сервисов отвечает скорее за бизнес-процесс, а не за наш внутренний процесс.


                                                                                                Вот один такой миддл принимает заявки от клиентов в удобном для них формате, который может быть и очередью в брокере, и открытым вебсокетом, в который льется XML (есть клиенты, которые иначе не умеют). Вот этот поток XML рвать очень не хочется, потому что пересинхронизироваться и все такое придется в полуручном режиме (не из-за нас, ага).

                                                                                                  0

                                                                                                  Ну, выглядит как ошибка в архитектуре...

                                                                                                    0

                                                                                                    Это осознанный выбор, который работает. И я не уверен, что ошибка.


                                                                                                    Разгребать очередь — это не такая задача, под которую имеет смысл поддерживать свой сервис. Там бизнес-логика одинаковая, поэтому удобнее все адаптеры воткнуть в один процессор, а не выносить наружу.

                                                                                                +1
                                                                                                Невзирая на ваше авторитетное утверждение, что так не бывает

                                                                                                Какое утверждение? Я уже перестал вообще понимать, чего вы хотите сказать. Горячую загрузку кода приплели. Окей, полезно. Только вот беда — разговор с другого начинался. С ваших непонятных фантазий о способностях эрланга. Если у вас очередь не засоряется, то у вас не CPU-bound задача и вам хватает ресурсов, чтобы обслуживать параллельно запросы. Для этого эрланг и го с их сложными рантаймами как раз и придумывали, чтобы корутинами эффективно забивать процессор работой, а не сидеть ждать IO.
                                                                                                  0
                                                                                                  Для этого люди придумали облака, где скейлинг динамический. Других решений нет.

                                                                                                  Вот это утверждение.


                                                                                                  Очередь засоряется иногда. По медиане сервис справляется. И очередь не «засоряется», а просто обработка некоторых сообщений может занять продолжительное время. Это не влияет на способность остальных потоков продолжать разгребать очередь.


                                                                                                  На Го такой паттерн нереализуем, или реализуем очень сложно. Эрланг это делает сам. Всё.

                                                                                                    +1
                                                                                                    Очередь засоряется иногда.

                                                                                                    Вот именно для иногда люди используют облака. Потому что иногда ресурсов надо дохрена, а платить за них постоянно не хочется. Поэтому делается автоскейлинг и все само собой разруливается. Уходит нагрузка, даунскейл, и денежки опять экономим. Эрланг тут никаким место, его точно так же придется скейлить, когда он упрется в процессор и станет медленно отвечать. Собственно, благодаря его модели «процессов» кластеризация может быть реализована вообще прозрачно для кода. Хотя с учетом описания вашей архитектуры вам возможно такой скейлинг не светит.

                                                                                                    На Го такой паттерн нереализуем, или реализуем очень сложно. Эрланг это делает сам. Всё.

                                                                                                    Значит вы ничего про го не знаете, а про эрланг мало понимаете, раз на нем писали все таки. И тот и другой способны на это из коробки, они для этого были созданы. Более того, и тот и другой вдохновлены CSP (communicating sequential processes).
                                                                                                      0
                                                                                                      Значит вы ничего про го не знаете, а про эрланг мало понимаете, раз на нем писали все таки.

                                                                                                      Я думаю, нам стоит дискуссию прекратить. Вы считаете, что я не знаю, и не умею, я тоже невысокого мнения о ваших когнитивных способностях, да и поднадоело мне приводить use-cases и ссылки.


                                                                                                      Так что конструктива не выйдет, увы.

                                                                                                        0
                                                                                                        Я не считаю, вы в каждом комментарии демонстрируете свое невежество по отношение к другим технологиям (в частности, го), а про эрланг рассказываете сказки, сами не понимая его устройства. Теперь вот вообще решили перейти на оскорбления.

                                                                                                        Ссылок вы никаких не приводили. Скинули какой-то бесполезный пост на стэке, хотя можно было уже найти в исходниках BEAM те самые preemption point'ы. Или и тут вам помощь экспертов нужна?
                                                                                              0
                                                                                              > При том, что в эрланге такой проблемы нет.

                                                                                              Расскажите, пожалуйста, с какой именно версии эрланга «такой проблемы нет», если сообщение поступило во входную очередь его процесса, и процесс взял первое поступившее сообщение и начал обрабатывать. Или вы имеете в виду, что в этом состоянии процесса можно узнать, чем он занят? Ну это несущественное достижение.

                                                                                              А вот то, что в Erlang обработка, которая требует синхронного ответа какой-то третьей стороны (типа gen_server:call, а если не лезть в потроха стандартной библиотеки, то это характерно и для gen_tcp:send), приводит к квадратичной зависимости времени от всплесков длины входной очереди — это более существенно, и убило мне когда-то два проекта, после чего я на Erlang ни ногой, ни траком. А учитывая, что этот вопрос серьёзные заказчики поднимали ещё в 2008, если не раньше, а разработчикам языка/библиотеки на это плевать до сих пор — я лучше буду ананасную воду подавать писать на всяких Go, не к ночи будь упомянуто.
                                                                                                –1

                                                                                                Вы не понимаете, к сожалению ли, к счастью ли, ни архитектуру OTP, ни даже описанную мной проблему. Я про переключение между процессами, а вы вдруг про блокирующие вызовы.


                                                                                                серьёзные заказчики

                                                                                                Лол, фсе.

                                                                                        0
                                                                                        1. В эрланге и есть корутины (я тут не стал углубляться. В первом приближение это оно и есть, хоть и зовется green threads). Подход ничем принципиально не меняется. Меняется только понимание, что создавать их дешево в отличие от реальных ОС потоков. Тоже самое, что переход на тот же Go с какой-нить Java. Горутины работают точно так же как эрланг.
                                                                                        2. Для этого достаточно беглого поиска. В случае со свифтом просто сам синтаксис убогий и диагностика ошибок. Язык всеми силами противится прямым манипуляциям с памятью и превращениям произвольных кусков памяти в структуры. Конкретно мне очень помог код стандартной библиотеки, где такие манипуляции повсеместны.
                                                                                        3. Все это познается с опытом, все перечисленное справедливо практически для всех языков. Инструменты примерно одни и теже, разные реализации и их конкретная комбинация.

                                                                                        это не другой язык, это, считай, диалект поменялся

                                                                                        Так я и не говорил, что это прям что-то нечто. Именно об этом речь. Практически все языки примерно идентичны и переход между ними это смена диалекта и смена правил того, как писать стоит, а как не стоит. Идиоматичный код. Вот прыгнуть с С на хаскел — вот это я понимаю. Мне одного понимания синтаксиса явно будет недостаточно. Собственно, почему в сообществе широко распространено убеждение, что функциональные языки не могут решать их бизнес задачи, а подходят только заумные статьи писать про монады. Людям непонятно как вообще возможно решение на таком языке. С тем же F# повсеместно это.
                                                                                          0
                                                                                          В первом приближение это оно и есть, хоть и зовется green threads

                                                                                          Нет.


                                                                                          Горутины работают точно так же как эрланг.

                                                                                          Нет.


                                                                                          Для этого достаточно беглого поиска.

                                                                                          По какому ключевому слову, если вы даже не подозреваете, что такая возможность существует?


                                                                                          Инструменты примерно одни и те же

                                                                                          Нет.


                                                                                          прыгнуть с С на хаскел — вот это я понимаю

                                                                                          А вот в этом как раз вообще никакой проблемы не вижу: нет иллюзии, что язык похож — нет и иллюзии, что я понимаю, как на нем код писать.

                                                                                            0
                                                                                            Нет.

                                                                                            Да, если не упарываться теоретическими изысками.

                                                                                            Нет.

                                                                                            Да. Эрланг использует туже модель кооперативной многозадачности (я знаю, что ее называют preemptive. По факту, это не так. Она кооперативная) для создания иллюзии переключения потоков и их одновременной работы. Есть конкретные preemption точки, где выполнение может быть передано другой корутине. Если этой точки нет, то ОС поток будет занят до победного. Отличие лишь в том, как эти точки расставлены и позволяет ли семантика языка стать на грабли и получить блокировку такую. Эрланг похоже не позволяет. Го позволяет, поэтому там уходят на другой подход, когда поток реально прерывается на произвольной инструкции юникс сигналом.

                                                                                            По какому ключевому слову, если вы даже не подозреваете, что такая возможность существует?

                                                                                            С чего вдруг я не подозреваю? Я знал, что она существует. Знал способы как это реализовать, но ущербный синтаксис мне мешал, т.к. лезли ошибки компилятора, который не понимал как ему подставить generic параметры у вызываемой функции. Код стандартной библиотеки мне помог — сортировка вроде там через эти трюки с памятью и реализована в целях оптимизации.

                                                                                            Нет.

                                                                                            Да, все вами перечисленное это общие подходы для всех практически языков. Чтобы разобраться как оно реализовано в конкретно языке надо всего лишь почитать про этот язык. Тот же пример с памятью вообще смешной — ну да, надо освобождать самому. Что, нужна помощь экспертов, чтобы понять, что в одном языке это free, в другом delete, в третьем release? Что где-то сборщик мусора, где-то подсчет ссылок, что несет с собой те или иные последствия?

                                                                                            Эксперты нужны реально, когда надо узнать детали реализации чего-то. У вас есть какая-нить структура данных, вы думаете она работает так, а вам скажут, что на самом деле не так, поэтому ее использовать уже неэффективно в каком-то случае. В С++ том же полно примеров структур, которые далеко не очевидные последствия имеют для производительности. Но, опять же, никто не мешает самому проверить.
                                                                                              –1
                                                                                              Я знаю, что ее называют preemptive. По факту, это не так. Она кооперативная.

                                                                                              Ясно. Звучит очень авторитетно, Джон Хьюджес И Джо Армстронг посрамлены, истина торжествует.


                                                                                              Есть конкретные preemption точки

                                                                                              Ну ёлки, просто же проверить: сделайте N+1 бесконечный цикл с печатью изнутри тела (N — число ядер), и запустите параллельно. Про какую конкретно preemtive точку в этом примере можно говорить вообще?


                                                                                              Я знал, что она существует.

                                                                                              Здесь знали, а в общем случае можете и не знать.


                                                                                              чтобы узнать детали реализации чего-то

                                                                                              Как раз, чтобы узнать детали реализации, нужно просто почитать документацию.

                                                                                                0
                                                                                                Ясно. Звучит очень авторитетно, Джон Хьюджес И Джо Армстронг посрамлены, истина торжествует.

                                                                                                Вы про реализацию BEAM почитайте, а потом авторитетами кидайтесь. Если не согласны, но покажите, как там прерывание реализовано. preemptive оно со стороны программиста, как и в го — иллюзия таки создается, только вот речь у меня была о внутренностях. Единственный способ сделать preemptive многозадачность в юзерспейсе это кинуть тот же сигнал или еще как-то через ядро провернуть трюк. Только у ядра есть средства прерывания потоков. Все остальное иллюзия. Красивая может, но иллюзия.

                                                                                                Ну ёлки, просто же проверить: сделайте N+1 бесконечный цикл с печатью изнутри тела (N — число ядер), и запустите параллельно. Про какую конкретно preemtive точку в этом примере можно говорить вообще?

                                                                                                На каждом входе и выходе из функции. Ваш один вызов печати уже создаст несколько preemption точек. Если реализация еще чуть хитрее, то в начале или конце каждой итерации тоже может быть вставлена точка переключения. Тут не знаю, не слышал. В том же Go такой подход планировали, т.к. у них именно циклы могли приводить к проблемам. Не подошло, слишком дорого. Эрлангу вполне может подойти, он не так за скорость трясется.

                                                                                                Здесь знали, а в общем случае можете и не знать.

                                                                                                На моей практике такого я не встречал. Я всегда хотя бы примерно представляю, в каком направлении мне надо двигаться. Если речь о манипуляций с памятью, то всегда можно начать копать в сторону интеграции с С/С++. Если она есть, то есть и средства нужные. У свифта С функции вызываются без всяких прослоек напрямую. У C# есть специальный механизм, хотя, казалось бы, виртуальная машина и сборка мусора. И т.д.

                                                                                                Как раз, чтобы узнать детали реализации, нужно просто почитать документацию.

                                                                                                cache-friendliness там тоже будет описано? Когда кэш промахи происходят, как с ними бороться можно? Какую структуру лучше выбрать, если вам это важно? Как сильно память фрагментируется в процессе работы? Вот для этого эксперты нужны, которые это все смотрели, проверяли, могут совет дать. Благо на конференциях подобной информации полно.
                                                                                                  0
                                                                                                  покажите, как там прерывание реализовано

                                                                                                  Вот Вирдинг рассказывает: https://stackoverflow.com/a/16781443/2035262


                                                                                                  Вот простыми словами:


                                                                                                  On the other hand the factor of preempting a process from execution is based on a certain number of Reductions since the last time it was selected for execution, regardless of its priority level. The reduction is a counter per process that is normally incremented by one for each function call. It is used for preempting processes and context switching them when the counter of a process reaches the maximum number of reductions. For example in Erlang/OTP R12B this maximum number was 2000 reductions.

                                                                                                  Хотите, чтобы я вам ссылку на код дал, который это реализует?

                                                                                                    0
                                                                                                    Я все это видел и читал. Ваш пост никаким местом не касается механизма прерывания. Ищите лучше. Вам даже намек есть на то, о чем я говорил
                                                                                                    The reduction is a counter per process that is normally incremented by one for each function call.

                                                                                                    Интересно, как это BEAM считает количество вызовов функций.

                                                                                                    Но я вас не виню. Практически все, что касается описания их виртуальной машины, это красивые рассказы о том, как оно там все работает, прерывается, балансируется и т.д. Те самые рассказы про «reductions». А вот конкретно сказать, где их виртуальная машина вставляет те самые preemption points, чтобы забрать управление и передать другому «процессу», это как-то опускается. Но тут и самому не сложно понять. Если ОС поток один, то тут вариантов никаких — процесс сам должен отдавать управление. Сигналы BEAM не использует, насколько знаю. Значит остается только preemption point'ы как минимум на вызовах функций. Собственно, как и у го. Он тоже раньше по-умолчанию работал в рамках одного ОС потока и прекрасно уживались сотни тысяч горутин. BEAM конечно проще в этом плане. Он вроде бы до сих пор JIT не использует, а байткод напрямую гоняет. Тут то прерывание потоков сделать плевое дело.
                                                                                                      0
                                                                                                      > Интересно, как это BEAM считает количество вызовов функций.

                                                                                                      Считает-то очень просто: по вызовам функций :)
                                                                                                      Вы можете сделать сколь угодно сложный набор операций в коде, но за счёт того, что элементарный цикл на Erlang может быть сделан только рекурсией, получается, что каждая итерация цикла это один тик, и рано или поздно придётся вызвать любую функцию, даже текущую. А сгенерировать код типа пары гигабайт линейных операций вида X44=X43+1 не даст ограничение на количество локальных переменных в одной функции.
                                                                                                      Поэтому быстро (а в обычном коде — очень быстро) интерпретатор добирается до точки, где он проверит «а не много ли мы сидим в одном процессе? о, привет, шедулер, ты-то мне и нужен».

                                                                                                      Если бы в Go делали подобные проверки, например, на итерациях цикла, то можно было бы обойти и ситуации типа «for true {} подвешивает нитку навечно». Но, видимо, это не так критично.

                                                                                                      > Значит остается только preemption point'ы как минимум на вызовах функций.

                                                                                                      Угу.
                                                                                                        0
                                                                                                        Считает-то очень просто: по вызовам функций :)

                                                                                                        Сам то я понимаю, как оно там это делает. Я даже в исходный код лазил и видел конкретно эти проверки и preemption point'ы. Я просто человека пытался подвести к этому.

                                                                                                        элементарный цикл на Erlang может быть сделан только рекурсией

                                                                                                        Угу. Это любопытное свойство языка + байткод существенно упрощают реализацию рантайма. Если почитать BEAM, то там вообще элементарно все в плане шедулинга.

                                                                                                        А сгенерировать код типа пары гигабайт линейных операций вида X44=X43+1 не даст ограничение на количество локальных переменных в одной функции.

                                                                                                        Вот это мне было любопытно. Теоретически, смотря на то, что не все инструкции имеют preemption point и инкрементят редакшены, то возможно зависание одного процесса, т.к. шедулер не получит управление. Получается есть другие ограничения языка, которые и эту проблему позволяют обойти.

                                                                                                        Но в любом случае, как-то мне кажется, что не оптимален такой способ прерывания процессов с точки зрения равномерного распределения процессорного времени. Или же тут как и в Go, реальный юзерский код, а не синтетика, наводнена функциями и так или иначе все работает ровно чисто по случайному стечению обстоятельств.

                                                                                                        Если бы в Go делали подобные проверки, например, на итерациях цикла, то можно было бы обойти и ситуации типа «for true {} подвешивает нитку навечно». Но, видимо, это не так критично.

                                                                                                        Для Go это непозволительно с точки зрения скорости. Они бенчили вставки на итерациях, даже с разными эвристиками, чтобы не каждую итерацию прямо — не пошло. В любом случае это был бы костыль, а сейчас в ход пойдетрешение на основе настоящей preemptive многозадачности. Недавно вон даже баг в последних ядрах линукса нашли.
                                                                                                          0
                                                                                                          > Я просто человека пытался подвести к этому.

                                                                                                          Он-то понимает. Но стиль общения не даёт это ни высказать самому, ни понять другим. Но это отдельная тема (тут рядом обсуждают «токсичность», так вот отличный пример на обсуждение, так что я тут замолкаю). У меня же эта фраза была затравкой к описанию.

                                                                                                          > Но в любом случае, как-то мне кажется, что не оптимален такой способ прерывания процессов с точки зрения равномерного распределения процессорного времени.

                                                                                                          Равномерного, максимально эффективного или оптимального? Это заметно разные вещи :)
                                                                                                          Возможность проверить необходимость переключения на одной из, например, 2000 редукций ещё не значит, что это переключение будет сделано. Аналогично в ОС — таймер может тикать с какой-то частотой, но принудительное вытеснение может быть, например, после 16 тактов.

                                                                                                          > а сейчас в ход пойдетрешение на основе настоящей preemptive многозадачности.

                                                                                                          Хочу посмотреть, когда запустится, как они обойдутся при этом без 100500 ниток ОС. Пока что подобные подходы массово проваливались: Solaris после бодания с M:N поверх LWP перешёл к 1:1, FreeBSD аналогично в версиях 5-6 пытались через scheduler activations спасти ситуацию, но к 7.0 плюнули и оставили только 1:1, и так далее.
                                                                                                            0
                                                                                                            Хочу посмотреть, когда запустится, как они обойдутся при этом без 100500 ниток ОС

                                                                                                            А зачем они нужны? Принципиально в рантайме у них ничего не изменится. Все так же ОС поток на каждое ядро по дефолту и мультиплексим на него горутины. Меняется механизм их прерывания. Вместо preemption point'ов примерно как у эрланга на вызовах функций и прочих особых местах, будут юникс сигналы кидать. В случае винды SuspendThread. Проблема невозможности приостановить горутину, которая в бесконечном цикле зависла, исчезнет.
                                                                                                              0

                                                                                                              А SuspendThread-то тут как поможет?

                                                                                                                0
                                                                                                                В смысле как? Вот так и поможет. Поток, занятый любой горутиной, приостанавливается по требованию, а не когда она сама там до preemption point'а дойдет, которого может вообще нет. Основная проблема у Go с необходимостью остановить все потоки для инициации и остановки цикла сборки мусора. Если какая-то горутина висит в бесконечном цикле или просто долго что-то делает без preemption point'ов по пути, то вся программа виснет нафиг — все остальные горутины корректно паркуются, а сборщик мусора ждет, пока зависшая горутина наконец отдаст управление. В корректных программа полное зависание вряд ли увидишь, а вот увеличение из-за этого STW пауз вполне. Ну и планировщику это тоже в помощь, чтобы не допускать голодания горутин.
                                                                          +2
                                                                          Я задавал — c 2008 года 28 штук. Разумеется, предварительно поискав ответ в Гугле или на сайте производителя. На большинство получил вполне разумные ответы. И сам отвечал другим, конечно.
                                                                          +1
                                                                          IQ тест в качестве капчи. Ну, может, упрощенный. Если человек с интеллектом не особо, то и не слушать его стенания.
                                                                            0
                                                                            Из 20 заданных вопросов за последние полгода только на первом был минус, 2 проигнорировано, на остальные 18 получил или ответ или подсказку, что помогло решить проблему. Со временем учишься задавать вопросы так, чтобы ответили по-существу, тогда для тебя эта площадка работает эффективнее.
                                                                            Позволять ставить минус всем кому попало — это бред, который проблему только усугубит.
                                                                            Проблему может решить возможность пользователю пожаловаться, если заминусили без объяснения причин.
                                                                              –3

                                                                              У меня такой экспириенс. Я задал вопрос. По всем правилам задал, чёткий и ясный вопрос. Затем появился ответ в стиле "ответа на заданный вопрос я не знаю/не скажу, но — я конечно прямо вам это не скажу — однако имейте в виду, что вы идиот и всё делаете неправильно, а я знаю, как вам надо делать правильно, хотя я понятия не имею что именно вы делаете". Мои тактичные попытки как-то на это хамство отреагировать были удалены. Проясняющие ответы на заданные в комментариях вопросах также были удалены. Мой собственный ответ по делу был заминусован, вопрос также заминусован, а оскорбительный и хамский ответ не по делу заплюсован.

                                                                                0

                                                                                Можете поделиться ссылкой на ваш вопрос?

                                                                                  +1
                                                                                    +10

                                                                                    Спасибо, интересно. Взгляд со стороны (предупреждение — rust не знаю от слова совсем):


                                                                                    1. Вопрос нормальный, общая сумма голосов на момент просмотра равна 0: +2/-2


                                                                                    2. В ответе нет ни следа от того что вы описали ("ответа на заданный вопрос я не знаю/не скажу, но — я конечно прямо вам это не скажу — однако имейте в виду, что вы идиот и всё делаете неправильно, а я знаю, как вам надо делать правильно, хотя я понятия не имею что именно вы делаете"). Автор ответа уточнял и дополнял его по мере выяснения подробностей из комментариев. Ничего страшного тут нет.


                                                                                    3. Ваш ответ, в основном, состоит из ссылки на другой вопрос.


                                                                                    4. Вы пометили свой ответ как лучший, несмотря на то, что вам уже написали качественный и подробный ответ, суть которого не противоречит вашим выводам. Это некрасиво. Предполагаю, что именно это вызвало голоса "против".



                                                                                    Между прочим, ранее вы задавали другой вопрос, который был очень хорошо принят сообществом:


                                                                                    How to create a read-only struct without boilerplate code? с расспределением голосов: +5/0


                                                                                    Но по каким-то причинам об этом опыте вы не упомянули. Как-то не очень объективно получается.

                                                                                      –11
                                                                                      общая сумма голосов на момент просмотра равна 0

                                                                                      Только потому что я попросил друзей поставить плюсы.


                                                                                      В ответе нет ни следа от того что вы описали

                                                                                      Отвечающий первым же делом предполагает, что я не знаю как работает fill_buf. Без приличиствующих оговорок, извинений, экивоков. Это оскорбление и хамство. Он ни единым словом не касается заданного мной вопроса, и опять же не извиняется за это. Постить ответ без реального ответа — это наглость и хамство.


                                                                                      Далее, ответ, по-видимому, был исправлен — была добавлена часть "If you are trying to peek at the data and possibly wait for more". Тут я могу только порадоваться, что до него в конце-концов всё-таки хоть что-то дошло, однако и это добавление неверно: правильно не "you'll need to implement your own trait", а как раз "you need not to implement your own trait". То есть человек даже догадался зачем (в том числе) нужен буферизованный ввод в виде BufRead — а изначально он продемонстраировал полное непонимание этого, и мои намёки не помогали — но тут же отбросил свою правильную догадку, безосновательно заявив, что он для этого непригоден.


                                                                                      Ваш ответ, в основном, состоит из ссылки на другой вопрос.

                                                                                      И этого вполне достаточно.


                                                                                      Вы пометили свой ответ как лучший, несмотря на то, что вам уже написали качественный и подробный ответ, суть которого не противоречит вашим выводам.

                                                                                      Э-э-э, что значит "не противоречит выводам"? Суть "качественного и подробного ответа" за вычетом хамства равна пустой строке. Ответа на заданный вопрос он просто не содержит. Да, вряд ли пустую строку можно заподозрить в противоречии с чем-либо. Но и толку от такого "качественного и подробного ответа" ноль.


                                                                                      Он выглядит качественным и подробным, но он таквым не является. Плюсующим я бы всё-таки посоветовал прочитать и вопрос и ответ, так как они явно не сделали как минимум одного из этого.


                                                                                      Но по каким-то причинам об этом опыте вы не упомянули. Как-то не очень объективно получается.

                                                                                      Так это потому что я и не хотел передать объективное впечатление. Наоборот, я хотел, чтобы благодаря этому умолчанию создалось смещённое, некорректное впечатление.

                                                                                        +6
                                                                                        Отвечающий первым же делом предполагает, что я не знаю как работает fill_buf. Без приличиствующих оговорок, извинений, экивоков.

                                                                                        Послушайте, главный принцип нормального общения: "Предполагайте хорошие намерения".


                                                                                        Человек просто хотел вам помочь и сделал некоторые предположения на основании вашего вопроса. Даже если они оказалось ошибочным, то в этом нет ни злого умысла, ни намерений оскорбить, задеть или унизить.


                                                                                        Так это потому что я и не хотел передать объективное впечатление.

                                                                                        Из-за того что сообщество один единственный раз с вами не согласилось? Вы не находите такое желание несколько, как бы получше выразиться, странным?

                                                                                          –7
                                                                                          нормального общения

                                                                                          Я не знаю что под этим имеется в виду, зачем это нужно и чем плохо общение, таковым не являющееся.


                                                                                          Даже если они оказалось ошибочным, то в этом нет ни злого умысла, ни намерений оскорбить, задеть или унизить.

                                                                                          А какое мне дело до его намерений? Его намерения — это его личное дело.


                                                                                          Из-за того что сообщество один единственный раз с вами не согласилось?

                                                                                          Да. И потому что SO удалил почти все мои ответы в комментариях.


                                                                                          Вы не находите такое желание несколько, как бы получше выразиться, странным?

                                                                                          Я — нет, не нахожу. Я просто следую, так сказать, правилам игры. Если бы я, не знаю, устроил "в отместку" DDOS атаку на серверы площадки — вот это было бы уже "странно". А тут всё нормально. Мне нанесли ритуальный, игрушечный ущерб, и я — с той же степенью условности — сделал попытку ответить (уничтожить площадку), используя подвернувшийся случай. Так же как мне на самом деле плевать на этот вопрос, также и SO нисколько не терпит никакого урона от моих действий. Но важно, что ритуал соблюдён. По-идее, все должны быть довольны и счастливы.


                                                                                          P. S. Вот интересно, ставящие минусы моему исходному посту в этой ветке — они его ставят сразу или после прочтения всей ветки? Если после прочтения — то вот это как раз непорядочно.

                                                                                            +8
                                                                                            А говорить, что 2*2=4, — это тоже оскорбление и хамство?
                                                                                            Вам не минусы, вам розг надо прописать, за «токсичность».
                                                                                              –2
                                                                                              А говорить, что 2*2=4, — это тоже оскорбление и хамство?

                                                                                              Зависит от контекста.


                                                                                              Да, я в общем и целом за токсичность. (Плохо, когда токсичность везде, но когда её нет нигде — это тоже плохо.) А вы, видимо, против...

                                                                                              +4
                                                                                              А какое мне дело до его намерений? Его намерения — это его личное дело.

                                                                                              Люди разные. То что для вас приемлемо, или даже естественно, может быть совершенно чуждо другому человеку. Добавьте еще общение на языке которым не является для вас родным. Рано или поздно вы столкнетесь с ситуацией, когда слова отвечающего покажутся для вас оскорбительными.


                                                                                              Если ваше базовое отношение положительное ("он не стремился уязвить меня"), то вы не придадите большого внимания отдельно взятому предложению, или его части, правильно воспримите помощь и поставите upvote и галочку. Отвечающий будет доволен и потратит время чтобы помощь кому-то еще. Win — win стратегия. Все участники в плюсе.


                                                                                              В крайнем случае есть принятые механизмы обработки таких ситуаций — вы можете пожаловаться и обратить внимание модераторов и/или сообщества. Вы ведь не исключаете возможность собственной ошибки? :-)


                                                                                              Вместо этого вы расстроились и посчитали SO токсичной площадкой.


                                                                                              И потому что SO удалил почти все мои ответы в комментариях.

                                                                                              На SO комментарии предназначены для уточнений. Некоторые участники их даже периодически удаляют чтобы уменьшить количество "шума".


                                                                                              Мне нанесли ритульный, игрушечный ущерб, и я — с той же степенью условности — сделал попытку ответить, используя подвернувшийся случай.

                                                                                              Только вот разница здесь колоссальна — ущерб вы нанесли себе сами: неправильно восприняв ответ, голосование и удаление комментариев.

                                                                                                +3
                                                                                                и чем плохо общение, таковым не являющееся

                                                                                                Если вы считаете, что "ненормальное общение" это "хорошо" или как минимум "не плохо", то почему вы недовольны тем, что с вами (по вашим словам) именно так и общаются?

                                                                                                  –2

                                                                                                  Я не говорил, что недоволен.

                                                                                                    0

                                                                                                    Говорили:


                                                                                                    Мои тактичные попытки как-то на это хамство отреагировать
                                                                                                    а оскорбительный и хамский ответ не по делу заплюсован
                                                                                                    Без приличиствующих оговорок, извинений, экивоков. Это оскорбление и хамство.
                                                                                                    Он ни единым словом не касается заданного мной вопроса, и опять же не извиняется за это. Постить ответ без реального ответа — это наглость и хамство.
                                                                                                    толку от такого "качественного и подробного ответа" ноль.
                                                                                                    Мне нанесли ритуальный, игрушечный ущерб

                                                                                                    Используемые вами характеристики обозначают негативное отношение. А во второй и третьей фразе вы открытым текстом говорите, что вы бы предпочли не то, что было написано отвечающим, а что-то другое.

                                                                                                      –1

                                                                                                      Я не думаю, что "негативное отношение" и "недоволен" — это синонимы.


                                                                                                      Но даже если и так… Я против смертной казни, но это не мешает мне хотеть казни для, ну скажем, вора, укравшего у меня кошелёк. Я считаю, что это нормально — хотеть и требовать казнить преступника в такой ситуации. Но я считаю, что суд ни в коем случае не должен это требование удовлетворять.


                                                                                                      Так что, да, возможно, что я недоволен. Но я не считаю, что SO или там ещё кто должен обращать на это внимание. Но я — со своей стороны — должен попытаться заставить SO или ещё кого отреагировать.


                                                                                                      Это как в шаматах. Я хочу съесть ферзя противника, и буду рад, если он его подставит. Но я не считаю такой ход хорошим.

                                                                                                  0
                                                                                                  P. S. Вот интересно, ставящие минусы моему исходному посту в этой ветке — они его ставят сразу или после прочтения всей ветки? Если после прочтения — то вот это как раз непорядочно.

                                                                                                  Я бы поставил сразу, но к сожалению не могу)
                                                                                                  Поставил бы за стиль с комплексом юношеского максимализма, коим иногда и сам страдаю)
                                                                                                –2
                                                                                                Чтобы не токсично постить на таких ресурсах надо быть искренне отзывчивым человеком или
                                                                                                же воспитать в себе политическое чутьё. Ситуация когда вам наступили на ногу и вы, подозревая худшее, плюнули в ответ на спину, не подпадает ни под один выше описанный проходной вариант.
                                                                                                Только потому что я попросил друзей поставить плюсы.

                                                                                                На самом деле у меня на это есть и положительные эмоции. По своему опыту знаю у друзей тоже есть моральные принципы и они в отличие от прохожих вместе обсуждают проблемы.
                                                                                                Мой респект за то, что не побоялись минусов и вынесли на обсуждение, это главный двигатель работы над ошибками.
                                                                                        +3
                                                                                        По данным аналитиков 1cloud «по данным аналитиков из Сингапурского университета, 77% пользователей Stack Overflow задают всего один вопрос. При этом 7,8% отвечают не более, чем на пять вопросов»…

                                                                                        Пользуюсь SO еженедельно, ни разу не там задавал ни одного вопроса. Просто если google отсылает на SO & co. и там нет ответа, то следует перечитать предложенные варианты и переформулировать вопрос. Через несколько итераций либо ответ найдется по принципу 20/80, либо нет. Вариантов тоже нет ;(
                                                                                          –2

                                                                                          Уберите карму — исчезнут тролли и токсичность.

                                                                                            +3
                                                                                            Угу, а ветер дует потому, что деревья качаются.
                                                                                              +3

                                                                                              Расскажи это на ЛОРе или Опеннете )

                                                                                                0
                                                                                                mista.ru такой душевный форум, там все такие вежливые, добрые и так любят и уважают новичков!
                                                                                                image
                                                                                                +1
                                                                                                Давно уже пора ввести нейросеть которая проверит вопросы на соответствие гайдам и комментарии на предмет токсичности. А еще за каждый ответ начислять криптовалюту. А криптовалютой можно оплачивать вопросы чтоб подымать их выше. Или учередить награду за разрешение проблемы.
                                                                                                  0
                                                                                                  Это не решит проблему с блатом, рекламодателями, погонами и VIP-пользователями.
                                                                                                  +7
                                                                                                  Работаю в ИТ уже более 20 лет. И на начальном этапе (когда много искал по теме, да тогда и инета не было, книжки читали) не понимал и сейчас (когда в общем то по основной моей теме я уже консультирую коллег в основном) не понимаю раздражения «глупыми вопросами». Почему просто не игнорировать вопрос, если он тебе не нравится? Не нравится вопрос, не отвечай. Чего спамить идиотскими отсылками в гугл и мануал. Но нет, хочется ЧВС собственный потешить и повоспитывать «новичка» и заточить мир под свое восприятие. Это не приводит к уменьшению «глупых вопросов», люди новые все время появляются и продолжают задавать глупые вопросы. Это вообще ни к чему не приводит, кроме как к увеличению токсичности. Но нет, потешить самолюбие в праведном гневе просто необходимо некоторым товарищам, ведь мир вокруг должен стать «правильным» с точки зрения именно этих товарищей.
                                                                                                    +1
                                                                                                    Резиденты Stack Overflow могут проголосовать за хороший вопрос, чтобы поднять его репутацию и продвинуть в поисковой выдаче сайта.

                                                                                                    На этом месте понял, что ни разу не пользовался поиском на самом Stack Overflow, и даже не задумывался, есть ли он там) Я к тому что так ли уж важна репутация вопроса, если Гугл выдает результаты по соответствию введенному тексту.

                                                                                                      –1
                                                                                                      Точно описан мой опыт. Всю жизнь читал so. Несколько раз пытался отвечать, но меня всегда опережали с ответом. На днях решил задать вопрос, получил на нём «минус». Одно предложенное решение чинило одно, но при этом ломало другое. Так и не понял что я сделал не так. Больше там не буду ничего спрашивать или отвечать. Вопрос тут stackoverflow.com/questions/58991737/tabbable-panes-stopped-working-in-ie-11-after-upgrade-to-bootstrap-4
                                                                                                        +4

                                                                                                        Подозреваю, что минус вам прилетел за форматирование кода. Пока я его не поправил — оно было довольно вырвиглазным и сильно уходило за пределы блока из-за чего его надо было скроллить вправо. Вы, скорее всего, просто не обратили внимания, но многие считают "неуважением" неряшливый вопрос. Ну типа "Пришел за помощью, чтобы мы потратили на нее свое время, а сам даже код в удобочитаемый вид привести не потрудился". Sad but true.

                                                                                                        –3
                                                                                                        Есть русская версия SO которой я никогда больше не буду пользоваться именно из-за повышенной токсичности. Какой бы вопрос я там не задал, всегда ставят минус. И ни одного ответа по существу я там не получил.
                                                                                                        Англоязычной пользуюсь постоянно, но задаю там вопрос только когда вообще все перерыл и не нашел ответ.
                                                                                                          +2

                                                                                                          Если вы там вопросы задаёте так же, как на Хабре комментарии пишете — ничего удивительного.

                                                                                                            –2
                                                                                                            тов. майор, эта статья же для вас написана. А вы мой профиль полируете. Идите изучайте js и совершенствуйтесь в нем. А если не можете — гоняйте молодежь на vk. И не обращайте внимание на такие сомнительные персоны, как я.

                                                                                                        Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                                        Самое читаемое