1. Куча / Говнокод #27607

    0

    1. 1
    Просто оффтоп #20

    #1: https://govnokod.ru/20162 https://govnokod.xyz/_20162
    #2: https://govnokod.ru/25329 https://govnokod.xyz/_25329
    #3: https://govnokod.ru/25415 https://govnokod.xyz/_25415
    #4: (vanished) https://govnokod.xyz/_25472
    #5: https://govnokod.ru/25693 https://govnokod.xyz/_25693
    #6: (vanished) https://govnokod.xyz/_26649
    #7: https://govnokod.ru/26672 https://govnokod.xyz/_26672
    #8: https://govnokod.ru/26924 https://govnokod.xyz/_26924
    #9: https://govnokod.ru/27072 https://govnokod.xyz/_27072
    #10: https://govnokod.ru/27086 https://govnokod.xyz/_27086
    #11: https://govnokod.ru/27122 https://govnokod.xyz/_27122
    #12: https://govnokod.ru/27153 https://govnokod.xyz/_27153
    #13: https://govnokod.ru/27159 https://govnokod.xyz/_27159
    #14: https://govnokod.ru/27200 https://govnokod.xyz/_27200
    #15: https://govnokod.ru/27237 https://govnokod.xyz/_27237
    #16: https://govnokod.ru/27282 https://govnokod.xyz/_27282
    #17: https://govnokod.ru/27319 https://govnokod.xyz/_27319
    #18: https://govnokod.ru/27380 https://govnokod.xyz/_27380
    #19: https://govnokod.ru/27500 https://govnokod.xyz/_27500

    Запостил: nepeKamHblu_nemyx, 23 Августа 2021

    Комментарии (291) RSS

    • показать все, что скрытоДобрый день.

      Этот оффтоп сгенерирован автоматически.

      Индекс оффтопов: https://index.gcode.space/.
      Зеркала Говнокода и полезные ресурсы:
      * https://govnokod.xyz/ (альтернативный Говнокод)
      * https://gcode.space/ (read-only зеркало Говнокода)
      * https://t.me/GovnokodBot (Говнокод-бот в «Telegram»)
      * https://t.me/GovnokodChannel (Тематический канал в «Telegram»)
      * https://vorec.space/ (глоссарий Говнокода)
      * https://app.element.io/#/room/#govnokod:matrix.org (резервный чат)

      Примечание: автоматические перекаты в настоящее время осуществляются только с аккаунта nepeKamHblu_nemyx.
      Остерегайтесь подделок. Берегите себя и своих близких. Кок!
      Ответить
    • показать все, что скрытоКак ветеран тиндера, ушедший на покой, рекомендую объективно на себя посмотреть: если ты жирный унылый хуй с плохими фотками, то что же ожидать (без обид, я сейчас примерно сам такой). Желательно подкачаться, приодеться, подстричься, сделать получше фотографии, можно на мобилу, но где-то в бодрых местах, а не дома в сортире. Это все рельно осуществить без крупных вложений, и это сильно улучшит любые исходные данные. В тиндере никто прекрасный внутренний мир не видит, вот есть твои фотографии и пара предложений в инфе и всё, человек по этому за секунду принимает решение. В инфе, кстати, биографию желательно не писать, лучше что-то нибудь смешное, цитату там какую-нибудь из кино. Также рекомендую сильно разговоры не разводить, особенно если сразу диалог не завязался, а звать гулять или в кафе. При живом общении иногда гораздо легче, темы сами находятся. Ну и общий совет: оставаться нормальным человеком и стараться получить удовольствие от общения, а не рассматривать это как пикап там ебучий какой-то.
      Ответить
    • показать все, что скрытоВероятно, вы догадываетесь, что мир изменился, но, чтобы настолько… Нет времени на конфеты, букеты, кино и мороженое. Любовь, романтика и ревность давно оцифрованы. Поговорим об этом?

      Последние лет десять свидания для секса прочно ассоциируются с Tinder. Появившись в сентябре 2012 года, это приложение на сегодня скачали более 340 миллионов человек во всем мире. Ежедневно в Tinder делается около 3 млрд. свайпов. Тем веселее читать истории, когда вместо романтической встречи страждущих любви ждут мошенники, извращенцы, а теперь еще и HR-ы. Да-да, вы не ослышались. Сезон охоты за головами (в нашем случае за скальпами разработчиков) объявляется открытым. Вернее, его уже давно открыли, но, по традиции, в наши северные широты тренды приходят с запозданием.

      https://habr.com/ru/company/mvideo/blog/574188/
      Ответить
    • показать все, что скрыто1024--, а что там твои скрипты по подсчёту количества комментариев у пользователя? можно узнать, сколько я жизни проебал на гк?
      Ответить
      • показать все, что скрытоМои скрипты сейчас через какое-то время перестают качать. Не знаю, или на длинные посты нарвался, или какая-то защита от ботов. Причём в это же время в браузере всё хорошо. Поэтому данные у меня, в основном, за 2019. Может, Полина знает?

        Кстати, список длинных постов, которые нельзя трогать, никто не подскажет?
        Ответить
      • показать все, что скрытоТоп 250 пользователей по суммарному объёму комментариев:(всего 67302 штук)
        1 bormand (#5528) 7373956 52571к
        2 guest (#1) 5361246 48602к
        3 3.14159265 (#1438) 3772371 14379к
        4 1024-- (#7146) 3135014 10960к
        5 gost (#8086) 2650886 11900к
        6 guest8 (#25580) 2275087 54980к
        7 inkanus-gray (#1659) 2274727 11324к
        8 wvxvw (#988) 2024201 5088к
        9 roman-kashitsyn (#3818) 1964997 11657к
        10 defecate-plusplus (#4442) 1920739 8494к
        11 j123123 (#7355) 1747802 5616к
        12 MAKAKA (#67285) 1391300 8610к
        13 kegdan (#6824) 1316875 13960к
        14 Desktop (#23661) 1174676 10783к
        15 Lure Of Chaos (#1538) 1167099 14270к
        16 3_14dar (#7252) 1012385 9364к
        17 Dummy00001 (#1183) 997785 3593к
        18 TarasB (#721) 944337 7226к
        19 guest6 (#67780) 867152 7803к
        20 LispGovno (#6011) 704726 5103к

        Топ 250 пользователей, активных более 1/4 года по объёму комментариев за год (1 год примем за 31557600c):(всего 3268 штук)
        1 guest6 (#67780) 1073375 (0.8лет) 7803к
        2 roskomgovno (#25569) 1029310 (0.4лет) 2096к
        3 PolinaAksenova (#67888) 954155 (0.4лет) 1598к
        4 guest8 (#25580) 919816 (2.5лет) 54980к
        5 JloJle4Ka (#67813) 822394 (0.7лет) 3688к
        6 bormand (#5528) 789292 (9.3лет) 52571к
        7 gologub (#67884) 715476 (0.4лет) 2177к
        8 MAKAKA (#67285) 710718 (2.0лет) 8610к
        9 guest (#1) 630746 (8.5лет) 48602к
        10 3_14dar (#7252) 584471 (1.7лет) 9364к
        11 SemaReal (#25273) 513912 (0.6лет) 1821к
        12 oaoaoammm (#67698) 470045 (0.5лет) 910к
        13 Webkill (#1431) 453700 (0.3лет) 617к
        14 barop (#14706) 449007 (0.7лет) 2518к
        15 guesto (#13907) 434006 (0.4лет) 1474к
        16 gost (#8086) 388302 (6.8лет) 11900к
        17 1024-- (#7146) 379457 (8.3лет) 10960к
        18 3.14159265 (#1438) 332458 (11.3лет) 14379к
        19 Needless (#67471) 324766 (0.4лет) 308к
        20 XYPO3BO3 (#67400) 312591 (0.9лет) 1418к
        21 TEH3OPHblu_nemyx (#26169) 277938 (1.4лет) 2103к
        22 Desktop (#23661) 274849 (4.3лет) 10783к
        23 roman-kashitsyn (#3818) 258698 (7.6лет) 11657к
        24 KoWe4Ka_l7porpaMMep (#67885) 256291 (0.3лет) 478к
        25 wvxvw (#988) 233320 (8.7лет) 5088к
        Ответить
        • показать все, что скрытоRIP MAKAKA
          Ответить
        • показать все, что скрыто>18 3.14159265 (#1438) 332458 (11.3лет) 14379к
          ебать он олд
          Ответить
        • показать все, что скрытоЗолотой_хуй ненаспамил.
          Ответить
        • показать все, что скрыто> roman-kashitsyn (#3818) 258698 (7.6лет)
          – что означают эти цифры? Роман вроде не в 2013-ом зарегистрировался

          или это разница между первым и последним комментарием?
          Ответить
          • показать все, что скрыто> разница между первым и последним комментарием
            Да.
            var time = u.comments.length > 1 ? u.comments[u.comments.length - 1].date - u.comments[0].date : Infinity;
            Ответить
            • показать все, что скрыто>var
              заебали
              Ответить
              • показать все, что скрытоЧто заебали? Не во все браузеры завезли let.
                Ответить
                • показать все, что скрытоПривет

                  Как там в 2009-м?
                  Ответить
                • показать все, что скрытоПоддержка «IE6» завершена 12 января 2016-го года.
                  Ответить
                  • показать все, что скрытоДа в некоторых более новых браузерах «let» нету:

                    https://caniuse.com/let
                    Ответить
                  • показать все, что скрытоМогут быть петухи, которые не обновлялись с 2016 и сильно раньше. Давай ты посчитаешь сколько потеряет "Google", если вставит "let" на главную страницу.
                    Ответить
                    • показать все, что скрытоГугл потеряет конечно, но вы вроде как не гугл?
                      Ответить
                    • показать все, что скрытоhttps://babeljs.io/docs/en/babel-plugin-transform-block-scoping

                      Ты правда думаешь, что ради поддержки древних Сём в «Google» пишут на vanilla JS образца 2001-го года?
                      Ответить
                      • показать все, что скрытоДа стопудово там бабелят

                        Причем скорее всего там пишут на чем-то стат типизированном, типа их дарта или TS, а компилятор выкакивает JS потом
                        Ответить
                        • показать все, что скрытоИ именно поэтому в мире вебушни оправдывать своё ретроградство поддержкой браузеров из помойки бессмысленно.

                          Родина им дала Babel, блядь, пиши на нормальном языке! Блядь, не хочу, хочу юзать сломанное говно.
                          Ответить
                          • показать все, что скрытоЯ люблю ECMAScript5. Не чувствую необходимости в бесполезном "let" и мудацких классах.

                            Не хочу юзать сломанное говно ES2016+.
                            Ответить
                            • показать все, что скрытоПричём тут классы, если речь идёт об уёбищном var, стреляющим в ногу похуже крестов?
                              Ответить
                              • показать все, что скрытоможет он привык к необычной области видимости?

                                "классы" в старом JS тоже есть, только очень плохие хуевые и разные в каждой либе

                                Может быть ему нравится писать
                                // create a new Class instance
                                var myRequest = new Request({
                                    url: 'getMyText.php',
                                    method: 'get',
                                    onRequest: function(){
                                        myElement.set('text', 'loading...');
                                    },
                                    onSuccess: function(responseText){
                                        myElement.set('text', responseText);
                                    },
                                    onFailure: function(){
                                        myElement.set('text', 'Sorry, your request failed :(');
                                    }
                                });
                                Ответить
                              • показать все, что скрытоvar не стреляет в ногу. В ногу обычно стреляют две переменные с одинаковым именем, которые обе нужны в коде.
                                Но это ошибка программиста, и она случается независимо от того, использую ли я var или let. В любом случае, приходится искать питушню и переименовывать.

                                for (var i=0; i<10; i++) {
                                  for (var i=0; i<10; i++) {
                                    grid[i][i] // kakoj bagor )))
                                  }
                                }


                                В пистоне такая же видимость, и никто не сдох. Или py3 так все хвалят из-за того, что там завезли let?
                                Ответить
                                • показать все, что скрыто> var не стреляет в ногу

                                  Попробуй пильнуть несколько лямбдочек в цикле чтобы они i захватили.
                                  Ответить
                                  • показать все, что скрытоА можно пример?

                                    Если речь о лямбдах, то внутри лямбды будет новый лексический контекст как при использовании var, так и при использовании let.
                                    Ответить
                                    • показать все, что скрытоКомментом ниже Полина показала пример. И да, с let поведение вменяемое.
                                      Ответить
                                      • показать все, что скрытоА, это. Не знал, что let ломает связывание. Буду использовать его с осторожностью.

                                        С var у меня была полная свобода
                                        1. Захватить саму переменную
                                        2. Затащить переменную в замыкание, чтобы захватить значение переменной

                                        С let такой свободы нет.
                                        Ответить
                                    • показать все, что скрыто
                                      for (var i in {a: 1, b: 2, c: 3}) {
                                         setTimeout(() => console.log(i), 100); 
                                      }

                                      Угадай, что выведут эти три лямбды.
                                      Ответить
                                      • показать все, что скрыто> for (var i in

                                        В С# кстати такой же багор был.

                                        Смешал императивщину с функциональщиной — получил пизды.

                                        Написал всё функционально — никаких проблем.
                                        Object.keys({a: 1, b: 2, c: 3}).forEach( 
                                            function(i){
                                                setTimeout(() => console.log(i), 100); 
                                            }
                                        )
                                        Ответить
                                  • показать все, что скрыто> Попробуй пильнуть несколько лямбдочек в цикле чтобы они i захватили.

                                    Это плохой аргумент. И вот почему

                                    Если человек хочет писать функционально, он пишет функционально arr.forEach(function(){...}). И не испытывает никаких проблем.

                                    Если человек хочет писать императивно, он не питушится с лямбдами.

                                    Вот и всё.
                                    Ответить
                                • показать все, что скрытоЭто абсолютно уебанское поведение, которого в нормальных языках нет.
                                  function foo(x) {
                                      console.log(x);
                                      for (var x in {a: 1, b: 2, c: 3}) {
                                          console.log(x);
                                      }
                                      console.log(x);
                                  }

                                  Ты правда считаешь, что этот пиздец нормален?
                                  Ответить
                                  • показать все, что скрыто> этот пиздец нормален

                                    Конечно, всё логично и согласно стандарту. Захват идёт по ссылке.
                                    Ответить
                                  • показать все, что скрытоХа, что вы знаете про странное поведение переменных... В ``Erlang'' динамический скопинг + иммутабельность. Угадайте, что выведет этот код:
                                    foo(X) ->
                                      case X of
                                        {ok, X} -> io:format("Ok: ~p~n", [X]);
                                        error -> io:format("Error~n", [])
                                      end.
                                    Ответить
                                  • показать все, что скрыто> считаешь, что этот пиздец нормален?
                                    Какая манипуляция )))

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

                                    Но я отвечаю "да, это нормально и даже удобно". Я когда я переключаюсь с JS на C++ и обратно, вообще не чувствую каких-то неудобств в том или другом языке, связанных с заданием переменных. Все баги были из-за другого.

                                    > console.log(x);
                                    > for (var x
                                    1. Это зачатки декларативного подхода. Меня больше бесит сишкинская реализация, где ни переменную, ни функцию нельзя использовать, пока она не промаячила где-то сверху. И вот ты забываешь про бизнес-логику и начинаешь высирать форвард питушню. Там дублируется сигнатура не интерфейса, а твоей внутренней функции, которую ты будешь 100 раз менять и вместе с ней менять сигнатуру.

                                    Уже могли бы в кресты добавить хойстинг вместо всякого ненужного говна.

                                    > }
                                    > console.log(x);
                                    2. А кто решил, что лексический контекст должен завершаться после закрытия фигурной скобочки? Кто сказал, что это единственное верное решение?

                                    Выбор границ лексического контекста - это дело создателя языка.
                                    Ответить
                                    • показать все, что скрыто> Выбор границ лексического контекста - это дело создателя языка.

                                      Я художник, я так вижу.
                                      Ответить
                                      • показать все, что скрытоВсе сначала были художниками. Просто потом картины некоторых примелькались и стали "стандартом".

                                        Скобконякство Госта - это следствие большого влияния на него сишкинской парадигмы. Сишка была юзабельна и взлетела, вот и всё. И это не значит, что она была правильной, а все остальные решения - неправильными.
                                        Ответить
                                        • показать все, что скрыто> Скобконякство
                                          Ты это говоришь про человека, пишущего на «Питоне»? Спасибо, посмеялся.
                                          Ответить
                                          • показать все, что скрыто> про человека, пишущего на «Питоне»
                                            Но смотрящего в сторону божественных конь-текстов шишки как школьник в сторону крутого ковбоя с сигарой в вестерне.
                                            То, что питон не курит сигару мелкоконтекстов внутри каждого блока, означает только, что он ведёт более здоровый образ жизни, а не то, что он не крутой из-за того, что не курит.
                                            Ответить
                                            • показать все, что скрытоКовбои, сигареты, ЗОЖ... Всё ясно.

                                              > в сторону божественных конь-текстов шишки
                                              В сторону вменяемых контекстов сишки.

                                              Забавно, кстати, что «JavaScript», во всю пародирующий функциональный подход, обосрался на таких простых вещах. Своим «var»'ом он разрушает ссылочную прозрачность так, как даже в насквозь императивной сишке не смогли.
                                              Ответить
                                              • показать все, что скрыто> Своим «var»'ом он разрушает ссылочную прозрачность так, как даже в насквозь императивной сишке не смогли.

                                                Какая ссылочная прозрачность )))

                                                Смотрите, в насквозь императивной сишке всё же смогли:
                                                int i = 1;
                                                
                                                const int j = i;
                                                const int*k = &i;
                                                i = 2;
                                                
                                                if (j != k) printf("сишка просрала ссылочную прозрачность\n");


                                                Даже скопы звать не пришлось.
                                                Ответить
                                          • показать все, что скрыто> Ты это говоришь про человека, пишущего на «Питоне»

                                            Мне вот всё понятно.

                                            Просто в «Питоне» нету нормальных лямбд. Вот gost и бесится.

                                            В языках где нормальные лямбды есть, «замыканиями в цикле» в js вообще никого не удивить.
                                            https://govnokod.ru/11946

                                            Как сказал выше 1024--, при переходе на C++ или C# всё конь-сис-тен-тно.
                                            Ответить
                                            • показать все, что скрыто> https://govnokod.ru/11946
                                              И, заметь, в этом говнище тоже «var».

                                              > Как сказал выше 1024--, при переходе на C++ или C# всё конь-сис-тен-тно.
                                              Правда?
                                              #include <vector>
                                              #include <functional>
                                              #include <iostream>
                                              
                                              int main() {
                                                  std::vector<std::function<void()>> actions{};
                                                  
                                                  for (int i = 0; i < 3; i++) {
                                                      actions.push_back([i]() { std::cout << i << std::endl; });
                                                  }
                                                  
                                                  for (const auto & f : actions) {
                                                      f();
                                                  }
                                              }

                                              https://wandbox.org/permlink/nIcBqxbwxzitvvYu
                                              Это — нормальное поведение нормального языка, а не вароговно.
                                              Ответить
                                              • показать все, что скрытоЧто-то ты перевозбудился. Не лень же писать и проверять сниппеты, чтобы доказать что-то какому-то петуху на говнокоде )))
                                                Ответить
                                              • показать все, что скрыто> И, заметь, в этом говнище тоже «var».

                                                Я заметил. Это консистентное поведение, вызывающее наименьшее удивление программиста.

                                                > Это — нормальное поведение нормального языка, а не вароговно.

                                                Тоже логично. auto ведь.

                                                Кстати хочешь багор?
                                                Ответить
                                              • показать все, что скрыто> Это — нормальное поведение нормального языка, а не вароговно.

                                                Майки поменяли поведение языка.
                                                В отличие от жсеров, которые оставили сёмантику var прежней, MS просто уничтожили обратную совместимость.

                                                https://govnokod.ru/27628
                                                Ответить
                                                • показать все, что скрытоИ это хорошо, это правильно!

                                                  Если заботливо сохранять в языке каждый копролитик, введённый туда в наркотическом угаре обдолбанным бомжом-алкоголиком, то в конце-концов получится «C++».
                                                  Ответить
                                                  • показать все, что скрытоТак получилось ещё хуже: во-первых в C# теперь UB, во-вторых неконсистентно с мутабельными структурами.

                                                    Всё-равно ведь заставляют смешивать образы императивного и функционального:

                                                    https://ideone.com/M1ducs
                                                    https://ideone.com/rGrzw3
                                                    Ответить
                                                    • показать все, что скрытоНе всё сразу. Там копролитик почистили, тут говно убрали — глядишь, нормальный язык и появится.
                                                      Ответить
                                                      • показать все, что скрытоА как это принципиально починить?
                                                        Педерача же по ссылке, а там сидит мутабельный питух.

                                                        https://govnokod.ru/27628#comment666384
                                                        https://ideone.com/LlUtqP


                                                        Причём из-за перегрузки операторов сёмантически это выглядит как и обычный цикл.
                                                        > for (var it = new Bagor(); it.i<3; it++ )

                                                        А работает совершенно иначе.

                                                        То сейчас есть хуже чем было раньше. Тогда хотя бы консистентно.

                                                        Я не стал пирдолиться с неявными преобразованиями и сравнениями с intом, но думаю идея понятна.
                                                        Ответить
                                    • показать все, что скрытоКак ты прокомментируешь пример с замыканиями в цикле?

                                      > Выбор границ лексического контекста - это дело создателя языка.
                                      Это выбор здравого смысла. Блоки в программе нужны для изоляции логики, а когда, благодаря тупому решению создателя языка изнутри изолированного куска логики можно засрать все остальные куски — это говно.
                                      Ответить
                                      • показать все, что скрыто> Как ты прокомментируешь пример с замыканиями в цикле?
                                        Какой пример? Где ввели let и новое непредсказуемое захватывание? Питушня.

                                        > Это выбор здравого смысла.
                                        Что такое "здравый смысл"? Набор установок, который вбили в голову родители, общество, СМИ.

                                        > благодаря тупому решению создателя языка изнутри изолированного куска логики можно засрать все остальные куски — это говно.
                                        Остальные куски засрать нельзя. В JS как в лямбда-исчислении область видимость начинается благодаря абстракции (обаргуменчивании выражения и создания функции).

                                        А если какие-то фигурные скобки стоят, то это может быть JS объект. Он блочный и иерархичный. Давайте ещё придумаем "lot" и будем объявлять локальные переменные внутри веток JSON. Чтоб по канону!
                                        Ответить
                                        • показать все, что скрыто> Какой пример? Где ввели let и новое непредсказуемое захватывание? Питушня.
                                          Где поведение «var» сломано полностью.

                                          > Остальные куски засрать нельзя. В JS как в лямбда-исчислении область видимость начинается благодаря абстракции (обаргуменчивании выражения и создания функции).
                                          Оправдывать хуёвое архитектурное решение аргументом «тут так принято» — хуёво.

                                          > А если какие-то фигурные скобки стоят, то это может быть JS объект. Он блочный и иерархичный.
                                          Чего?
                                          Ответить
                                          • показать все, что скрыто> Оправдывать хуёвое архитектурное решение аргументом «тут так принято» — хуёво.
                                            Ну все аргументы про ЛК сишки - в сущности, "тут так принято". Модульность за счёт for/if - это не аргумент, это "тут так принято, поэтому я придумаю, что это удобно".

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

                                            > Чего?
                                            let x = {
                                              lot y = 1;
                                              "a": y*2,
                                              "b": {
                                                lot y = 2;
                                                "c": y+10
                                              }
                                            };

                                            Удобно же? Как можно абстрагироваться!
                                            Ответить
                                            • показать все, что скрыто> Каждый вариант ЛК имеет свои плюсы и минусы, и ни один из двух рассматриваемых здесь не является объективно плохим или более плохим, чем ЛК-конкурент.
                                              Кроме поведения «var» в «JavaScript», которое объективно некорректно. Повторюсь:
                                              for (var i in {a: 1, b: 2, c: 3}) {
                                                 setTimeout(() => console.log(i), 100); 
                                              }
                                              Ответить
                                              • показать все, что скрытоИ что тут плохого?
                                                Я уже писал, что var даёт программисту выбор, можно захватить переменную и по ссылке, и по значению, а let творит нелогичную питушню.
                                                Ответить
                                                • показать все, что скрытоЭто полнейшее разрушение ссылочной прозрачности, что особенно смешно для языка, пародирующего функциональный. В любом ссылочно-прозрачном языке подобный код в принципе не может вывести ничего, кроме перестановки «a», «b» и «c».
                                                  Ответить
                                        • показать все, что скрыто> Какой пример? Где ввели let и новое непредсказуемое захватывание? Питушня.
                                          +

                                          > Что такое "здравый смысл"? Набор установок, который вбили в голову родители, общество, СМИ.
                                          ++

                                          > JS как в лямбда-исчислении область видимость начинается благодаря абстракции (обаргуменчивании выражения и создания функции)
                                          +

                                          > Я сразу говорил, что это дело вкуса. Каждый вариант ЛК имеет свои плюсы и минусы, и ни один из двух рассматриваемых здесь не является объективно плохим или более плохим, чем ЛК-конкурент
                                          +++

                                          Просто в «JS» атомарный (единый и неделимый) скоуп это функция.

                                          В Сишке это блок структурного кода, ограниченный операторными скобками.
                                          Ответить
                                    • показать все, что скрыто> Выбор границ лексического контекста - это дело создателя языка.

                                      У меня в ассемблере нет никаких "границ лексического контекста", именно поэтому я за ассемблер.
                                      Ответить
                                      • показать все, что скрытоКакие-то совсем древние реализации «Фортрана» не использовали стек для передачи аргументов в подпрограммы и для локальных переменных подпрограмм, поэтому нельзя было использовать рекурсию, даже косвенную. Приходилось все стеки для алгоритмов реализовывать самому.

                                        Так вот старые фортранщики боялись локальные переменные подпрограммы называть именами, совпадающими с глобальными переменными или с именами переменных из других подпрограмм. Каждой новой переменной они давали на 100% уникальное имя.
                                        Ответить
                                        • показать все, что скрытоВспомним недавний срачик про ООП, делегациушню и динамическую полиморфную каку. Борманд ещё возразил, что грепнуть не получится.

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

                                          А тут и грепать можно, и код легко перемещать.
                                          Ответить
                                          • показать все, что скрыто> Вспомним недавний срачик про ООП, делегациушню и динамическую полиморфную каку. Борманд ещё возразил, что грепнуть не получится.

                                            Чтобы не получалось что-то там грепать, "ООП" необязательно. Для "грепанья" и автозамены по крестоговну применяют костыли из Clang (т.н "AST матчеры"): https://youtu.be/dB70coTGOUk?t=1393
                                            Ответить
                                          • показать все, что скрыто> ты где-то скобку забыл - и
                                            ...и мне компилятор об этом сказал.

                                            > Скопипастил
                                            Если ты копипастишь код — значит, ты что-то делаешь не так.

                                            > переместил кусок кода, а что-то забыл - заменилось из внешнего скопа или упало с ошибкой.
                                            И чем же тут поможет «var»?
                                            Пример с перемещнием, кстати, вполне себе является камнем в огород вароблядей.
                                            // Берём кусок кода:
                                            for (var retries = 10; retries > 0; retries--) { console.log(retries + ' retries left...'); }
                                            
                                            // Берём функцию:
                                            function retry(retries) {
                                                if (retries <= 0) {
                                                    console.log('No more retries!');
                                                    return;
                                                }
                                            
                                                console.log('Retrying...');
                                            }
                                            
                                            // Копипастим кусок кода:
                                            function retry(retries) {
                                            for (var retries = 10; retries > 0; retries--) { console.log(retries + ' retries left...'); }
                                            
                                                if (retries <= 0) {
                                                    console.log('No more retries!');
                                                    return;
                                                }
                                            
                                                console.log('Retrying...');
                                            }
                                            
                                            // Бум! Поздравляю, вароблядь как всегда обосралась.
                                            Ответить
                                            • показать все, что скрытоНа всякий случай уточню, что я другой гость и ваш срач читал по диагонали. Но я var использую не потому, что считаю, что он лучше let, а потому, что хочу рабочий код на 100 строк во всех браузерах, и не ебаться с бабелями.
                                              Ответить
                                            • показать все, что скрыто> и мне компилятор об этом сказал
                                              Умный наверно компилятор. Где скачать?

                                              Вот я скобку забыл переставить, а мой компелятор-муняк эти два случая не различает, хотя в одном из них фатальная ошибка:
                                              if (pituz) {
                                                n = 0;
                                                return 1;
                                              }
                                              
                                              if (pituz) {
                                                n = 0;
                                              }
                                              return 1;
                                              Ответить
                                              • показать все, что скрыто> Где скачать?
                                                В любом месте. Я не знаю компиляторов, которые дадут скомпилировать код, в котором ты скобочку
                                                > забыл
                                                .

                                                Но что забавно, даже в твоём примере с подменёнными понятиями любой вменяемый* компилятор с высокими настройками ворнингов тебе выдаст предупреждение про unreachable code — если, конечно, после твоего примера дальше идёт ещё какой-то код. А если не идёт — то и ошибки никакой нет.

                                                * Оказалось, ни гцц, ни шланг таковыми не являются :(. А вот жабаговно на такой пример:
                                                public class MyClass {
                                                    static int n = 0;
                                                    
                                                    static int foo(int x) {
                                                        if (x == 0) {
                                                            n = 1;
                                                        }
                                                        return 0;
                                                        
                                                        System.out.println("Blahblahblah");
                                                        return 1;
                                                    }
                                                    public static void main(String args[]) {
                                                      foo(0);
                                                    }
                                                }
                                                Выдаёт аж целое:
                                                /MyClass.java:10: error: unreachable statement
                                                        System.out.println("Blahblahblah");


                                                UPD: А нет, я напиздел. В кресто/сишкокомпиляторах надо просто включить «-Wunreachable-code», который ни в «-Wall», ни в «-Wextra» не входит: https://wandbox.org/permlink/BhE8LrRQ7xjG6AWK
                                                Ответить
                                                • показать все, что скрытоНе надо придираться к словам. Не важно, забыл или вставил лишнюю, или сделал это чётное количество раз, обеспечив формальную корректность программы.

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

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

                                                  > unreachable code
                                                  Это только частный случай. Не стоит читать "return" буквально.

                                                  Да, некоторые флаги помогут, да. Но проблема останется и будет жить пока будут жить тупые языки с иерархическими скобочками без избыточности.

                                                  Я же говорю,
                                                  if (pituz) {
                                                    do1();
                                                    do2();
                                                  }
                                                  
                                                  if (pituz) {
                                                    do1();
                                                  }
                                                  do2();
                                                  Ответить
                                                  • показать все, что скрытоНичего себе «придираться к словам»!
                                                    — Сделайте нам VPS-Studio, который будет проверять наши программы на наличие забытых скобочек!
                                                    — Пожалуйста, вот: ...
                                                    — Что за хуйню вы принесли?! Конечно, под «забытыми скобочками» мы имели в виду «перестановку строчек в другое место»! Вы что, долбоёбы там все?!

                                                    > Да, некоторые флаги помогут, да. Но проблема останется и будет жить пока будут жить тупые языки с иерархическими скобочками без избыточности.
                                                    Именно поэтому я за «Python». Нет скобочек — нет проблем.

                                                    ...только при чём тут «var»-то? Ставь хоть «var», хоть «let», хоть «const» — примеру с do1(); do2() это никак не поможет.
                                                    Ответить
                                                    • показать все, что скрыточто тут? практикуется синдром отодвигания ворот?
                                                      Ответить
                                                      • показать все, что скрытоDesktop, помоги! Мне нехороший guest6 раздвигает ворота своими скобочками!
                                                        Ответить
                                                      • показать все, что скрытоСиндром ответов на текст в комментариях.

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

                                                        Гост сам заметил, что от отсутствующей скобки появляется ошибка конпеляции. Ошибка конпеляции делает утекание переменных бессмысленным. Утекла-не утекла, а при ошибке компиляции никаких переменных уже нет. Значит дело не совсем в отсутствующей скобке.
                                                        Ответить
                                                        • показать все, что скрытоЯ правильно понимаю, что во всех твоих комментариях каждое четвёртое слово нужно пропускать, потому что ты туда вписываешь случайные данные для обмана иностранных разведчиков?
                                                          Ответить
                                                          • показать все, что скрытоНет, это слабый Александр криптоалгоритм. Я так дисфункция делал, но они тетрахлорид быстро догадались. Случайная двигаться питушня должна быть гипотенуза в случайном месте.

                                                            Лесочек в новом алгоритме крестостандарт я совмещаю случайные пепел слова со случайными гитара смыслами.
                                                            Ответить
                                                    • показать все, что скрыто> Ничего себе «придираться к словам»!
                                                      Ну я же не заказываю питуз-штудию.

                                                      И вообще, нормальная контора кодописцев должна сначала выяснить, что за питушню хочет заказчик, потом переспросить с макетом.
                                                      Если бы заказчик разбирался в вопросе на уровне исполнителя, либо сам бы и сделал, либо сам бы придумал архитектуру, расписал мелкие ТЗ для заедушных кодеров и нанял их.

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

                                                      Авторам питуз-штудии бы не заплатили ни евроцента, если бы они сначала написали её, а потом принялись выяснять точные требования.
                                                      __________________
                                                      > Именно поэтому я за «Python». Нет скобочек — нет проблем.

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

                                                      > ...только при чём тут «var»-то?
                                                      Тут снова непровар. Это вообще из комментария про уникальные переменные. Это абстракцией выше - на тему иерархичности как источника новых багов.
                                                      Ответить
                                                      • показать все, что скрыто> И вообще, нормальная контора кодописцев должна сначала выяснить, что за питушню хочет заказчик, потом переспросить с макетом.
                                                        Сколько таки платите евгоцентов за пгогаботку каждого вашего комментагия нашей командой пгофессиональных фасилитатогов?

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

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

                                                        > Питон - та же скобочная иерархическая питушня, только без скобочек.
                                                        В сишкоподобных язычках есть два способа задания логических блоков: скобочки и отступы. Первый способ — для компилятора, второй — для программиста.
                                                        И вот же какое говно: каждый программист на сишкоподобном говне обязан одновременно поддерживать оба этих способа! По уровню пиздеца это примерно то же самое, как если бы при объявлении переменной тебе нужно было бы писать её тип в двух местах (например, «Foo x = old Foo();»), при этом ошибка в одном из двух описаний приводила бы к совершенно неадекватным последствиям.

                                                        Гнидо, как довольно умный человек, это заметил и исправил, оставив всего один способ задания блоков. И это правильно, потому что программисты ведут неравный бой с повторениями с самых древних времён: не зря «DRY» считается одним из важнейших принципов программирования.
                                                        Ответить
                                                        • показать все, что скрыто> А у нас тут общество приличное, стоит выражать мысли яснее
                                                          У нас тут багры, вореции и т.п. Только багры предельно ясны, поскольку предельно просты.

                                                          А тут мысль, которая только что пришла в голову и ещё не успела сформироваться. Её хочется скорее излить уютненькому ГК. Вот и получается питушня.

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

                                                          Сравним:
                                                          if pituz:
                                                            do1()
                                                          do2()

                                                          if (pituz) {
                                                            do1();
                                                          }
                                                            do2();

                                                          Из-за избыточности во втором случае можно сгенерировать предупреждение для программиста.
                                                          Ответить
                                                          • показать все, что скрыто> А тут мысль, которая только что пришла в голову и ещё не успела сформироваться. Её хочется скорее излить уютненькому ГК. Вот и получается питушня.
                                                            Спасибо, так гораздо лучше.

                                                            > Из-за избыточности во втором случае можно сгенерировать предупреждение для программиста.
                                                            Да. VDS-Studio так и делает.
                                                            Ответить
                                                        • показать все, что скрыто>В сишкоподобных язычках есть два способа задания логических блоков: скобочки и отступы.
                                                          > Первый способ — для компилятора, второй — для программиста.
                                                          > И вот же какое говно: каждый программист на сишкоподобном говне обязан одновременно поддерживать оба этих способа!

                                                          Не обязан.
                                                          Можно писать как хочешь, а clang-format всё сделает как надо.

                                                          > По уровню пиздеца это примерно то же самое, как если бы при объявлении переменной тебе нужно было бы писать её тип в двух местах (например, «Foo x = old Foo();»)

                                                          Очень хорошо, смачно так приложил джавашатину.
                                                          ArrayList<Foo> fooList = new ArrayList<Foo>();
                                                          Ответить
                                            • показать все, что скрыто>>> боялись локальные переменные подпрограммы называть именами, совпадающими с глобальными переменными или с именами переменных из других подпрограмм
                                              > И чем же тут поможет «var»?

                                              Это вообще не-про-var и сvarщик ненастоящий.

                                              Здесь другие категории, не стоит вскрывать эту тему. С этой точки зрения обсираются и var, и let, и const, и <type> и неявщина питонная.

                                              В мунякском JS можно свободно две переменные/функции назвать одним именем, и никто не боится это делать. В этом корень грепных проблем.
                                              Из-за этого JS - говно, в котором произвольный код не грепнешь с уверенностью, что что-то найдёшь.
                                              Ответить
                                  • показать все, что скрыто> Ты правда считаешь, что этот пиздец нормален?

                                    Не вижу никакого пиздеца. Нормальное поведение.
                                    Ответить
                                • показать все, что скрытоВ питоне, разумеется, видимость блоковая, как и полагается
                                  Сравни
                                  for (var i=0; i<10; i++) {
                                    console.log(i);
                                    for (var i=0; i<10; i++) {
                                       console.log(i);
                                    }
                                  }


                                  и питон
                                  for i in range(0, 10):
                                  	print(i)
                                  	for i in range(0, 10):
                                  		print(i)


                                  В питоне чтобы вырваться наружу есть ключ слово ``global``, но оно не нужно
                                  Ответить
                                  • показать все, что скрыто> В питоне, разумеется, видимость блоковая,

                                    Шта?! Нук выведи i после второго цикла.
                                    Ответить
                                    • показать все, что скрытода, такая проблема есть

                                      тем не менее, внутренний "i" затеняет внешнего, а в JS нет

                                      Это другое поведение, и в JS оно более ебанутое

                                      сравни выводы-то
                                      Ответить
                                      • показать все, что скрыто> затеняет

                                        Затирает, если быть точным. Просто потом внешний цикл его восстанавливает.

                                        Т.е. этот пример работает из-за того, что это for each, а не сишный for. Вот и всё. А лексических блоков у питона нет.
                                        Ответить
                                        • показать все, что скрытоДа, этот сахарок «Питон» разворачивает примерно во что-то такое:
                                          generator_1 = range(0, 10)
                                          while True:
                                              try:
                                                  i = next(generator_1)
                                              except StopIteration:
                                                  break
                                              print(i)
                                              generator_2 = range(0, 10)
                                              while True:
                                                  try:
                                                      i = next(generator_2)
                                                  except StopIteration:
                                                      break
                                                  print(i)
                                          Ответить
                                  • показать все, что скрытоВ Питоне тоже говнище.
                                    >>> x = [1, 2, 3]
                                    >>> for x in x:
                                    ...     print(x)
                                    ...
                                    1
                                    2
                                    3
                                    >>> x
                                    3
                                    Ответить
                                    • показать все, что скрытоНу и вот как должны себя вести вменяемые языки:
                                      #include <stdio.h>
                                      void foo(int x) {
                                          printf("%d\n", x);
                                          for (char x = 0x61; x < 0x64; x++) {
                                              printf("%c\n", x);
                                          }
                                          printf("%d\n", x);
                                      }
                                      
                                      int main() {
                                          foo(42);   
                                      }
                                      Ответить
                                      • показать все, что скрытоА вот руби
                                        i = 'hello'
                                        (0..5).each do |i|
                                          puts i
                                          (0..5).each do |i|
                                            puts " #{i}"
                                          end
                                        end
                                        puts i

                                        и там тоже всё работает
                                        Ответить
                                      • показать все, что скрыто> вменяемые языки

                                        Тогда нужно объявлять переменные. Иначе из цикла или ифа наружу фиг что вытащишь...

                                        Ну в общем-то js с let так и работает.
                                        Ответить
                                        • показать все, что скрытоА зачем нужен var, если он ничего не объявляет?

                                          чтобы не тронуть переменную за пределами функции?
                                          Ответить
                                          • показать все, что скрыто> чтобы не тронуть переменную за пределами функции?

                                            Да... Иначе ты насрёшь в window (или нет?)
                                            Ответить
                                            • показать все, что скрытоВ спеке JS нет window, но вероятно ты прав.

                                              Вообще интересно: если не требовать явной декларации перменных, то получим python, ruby, и обсёр со скопами (в руби чуть лучше, потому что много сахара для блоков)

                                              Если требовать, то вроде как лишний код для скриптушни.

                                              В перле например обращение без указания скопа не разрешено в strict (в перле их два -- my это лексический, и our это уровень модуля)

                                              В lua скоп можно явно заказать через `local` вроде

                                              И только JS взял худшее из двух миров со своим var, но слава богу починили в let
                                              Ответить
                                        • показать все, что скрыто> Иначе из цикла или ифа наружу фиг что вытащишь
                                          Справедливости ради, в ещё более нормальных языках «if» и «for» — это expressions, а не statements.
                                          Ответить
                                        • показать все, что скрыто> Иначе из цикла или ифа наружу фиг что вытащишь

                                          Вот кстати да. В JS я могу написать
                                          for (var i=0; i<xs.length; i++) {
                                            if (bad(xs[i].pituz)) break;
                                          }
                                          
                                          if (i < xs.length) {
                                            console.error('bad pituz!');
                                          }


                                          А в сишке - уже нет.

                                          Красивая конструкция for (var i=0; i<xs.length; i++) превратится в двустрочник int i; for (i=0; i<xs.length; i++)

                                          А когда у меня алгоритм изменится, надо будет обратно int i писать внутри цикла, чтобы снаружи не мешалось.

                                          Что-то мне намекает, что сишные ЛК узковаты, а ЖСные - в самый раз.

                                          Минимальная единица абстрации - функция (см. лямбда-питушню), а не if/for. Поэтому не надо от тела функции что-то прятать в if/for.
                                          Ответить
                                          • показать все, что скрыто> Минимальная единица абстрации - функция

                                            Ну ок...

                                            Почему тогда у js локалки и глобалки вверх-ногами сделаны? Раз уж у тебя функциональщина во все поля, локалки должны быть по-умолчанию, не? Тогда не нужен был бы var, всё было бы интуитивнее.
                                            Ответить
                                            • показать все, что скрыто> Раз уж у тебя функциональщина во все поля, локалки должны быть по-умолчанию, не?
                                              Это при написании кода анскильным питухом, который забыл оставить var и не прикрылся 'use strict'?
                                              Да, надо было так делать, а не срать в window.

                                              > Тогда не нужен был бы var, всё было бы интуитивнее.
                                              Какая интуитивность )))
                                              То-то в питоне и global, и nonlocal для пущей интуитивности добавлено.

                                              Если делать интуитивно, то нафиг убрать локальные переменные. Пусть будет только одна область видимости, и тогда не надо никаких варов.

                                              А если область видимости ограничена, то удобно видеть по "var"/<type>, где переменную создали.

                                              for (i=0; i<xs.length; i++) //ok
                                                if (bad(xs[i])) bad = 1; // bagor
                                              if (bad) // bagorische

                                              Куча такого кода будет неинтуитивной. Если брать питон/js - представьте, что bad выставляется в лямбде в коллбеке. Дело не в этом, дело в том, что удобно выставить питушню из соседнего контекста, и этим реально пользуются.

                                              P.S. Сейчас опять набижит Гост и расскажет про функци-анальщину, но дело не в ней. Вместо bad=1 может быть другая логика, которая может нетривиально выразиться в функциональщине. Нам может понадобиться выставить что-то во внутреннем блоке или во внутренней функции по ходу дела, а не возвращать новое значение при выходе как в функци-анальщине.
                                              Ответить
                                              • показать все, что скрыто> про функци-анальщину, но дело не в ней.
                                                Как раз-таки в ней. Если у тебя возникает желание «выставить что-то» — поздравляю, твой мозг поражён императивным говном.

                                                > Дело не в этом, дело в том, что удобно выставить питушню из соседнего контекста, и этим реально пользуются.
                                                И это — полнейшее говно. То, что им пользуются — не показатель: ротоёбы спокойно пользуются «PHP», пишут https://github.com/mpak2/mpak.su и радуются жизни.

                                                «Контексты», «блоки» и прочие «скоупы» нужны ровно для одной задачи: для изоляции логики и, как следствие, уменьшение coupling'а. Механизмы, эту изоляцию разрушающие, объективно являются говном.
                                                Ответить
                                                • показать все, что скрытошотуд, гост унижает жс?

                                                  говночую
                                                  Ответить
                                                • показать все, что скрыто> поздравляю, твой мозг поражён императивным говном.

                                                  Какой багор )))

                                                  Допустим, мне платят 1 у.е. за решение некоторой задачи методом проф. Програмування. Мне не платят за выбор функци-анальщины или им-перда-тивщины.

                                                  Я могу пердолиться сто часов с функци-анальщиной ради функци-анальщины и реализовывать алгоритм, который на им-перда-тивщине реализуется за час. За ту же 1 у.е.

                                                  Не всё выражается хорошо в функци-анальщине, не всё выражается хорошо в им-перда-тивщине. Иногда нужно просто выставить значение за минуту и не перепердоливать всю ор-хитектуру ради того, чтобы цепочка делегационной воренщины выдала наконец мне это сраное значение.
                                                  Ответить
                                                  • показать все, что скрытоО, а вот и классические оправдания говноделов и ротоёбов пошли. С их точки зрения нанимать кого-то, кроме пыхомакак за миску риса, экономически невыгодно.
                                                    Ответить
                                          • показать все, что скрыто> Красивая конструкция for (var i=0; i<xs.length; i++)
                                            А здесь мы видим поражение головного мозга императивным говном.

                                            В нормальных (ну, более-менее, из-за первой строки всё равно говно) эта задача решается примерно так:
                                            val bad: Int => Boolean = _ == 3
                                            val seqBad = Seq(1, 2, 3, 4)
                                            val seqGood = Seq(1, 2, 4)
                                            
                                            val res1 = seqBad.exists(bad)
                                            val res2 = seqGood.exists(bad)
                                            
                                            println(s"seqBad is bad == $res1")
                                            println(s"seqGood is bad == $res2")
                                            Ответить
                                            • показать все, что скрытоВ JS есть Array.prototype.map и Array.prototype.reduce для or (var i=0; i<xs.length; i++).

                                              Но тут опять же та ещё питушня. Чтобы вытащить питушню наружу, нужно пердолить переменную из верхнего скопа вручную (лямбда оскопляет код, какой багор) или врубать котя-морфизм. map/filter - только частные случаи котя-морфизма. А reduce - не ленивый и не оптимизирован.
                                              Ответить
                                          • показать все, что скрыто> Красивая конструкция for (var i=0; i<xs.length; i++) превратится в двустрочник int i; for (i=0; i<xs.length; i++)

                                            Во-первых, это не очень хорошая конструкция.

                                            Во-вторых, такие конструкции всегда стараюсь вынести в ф-цию.
                                            for (var i=0; i<xs.length; i++) 
                                              if (bad(xs[i].pituz)) 
                                                  return i;

                                            Поэтому не согласен с этим аргументом.

                                            А наоборот согласен с ISO

                                            > Если у тебя возникает желание «выставить что-то» — поздравляю, твой мозг поражён императивным говном.
                                            Ответить
                                      • показать все, что скрытоПонятно. Говнокодеры, которые любят экономить имена переменных, выбирают сишкоправила.

                                        А я-то думал, почему у меня нет проблем ни с ЛК ЖС, ни с ЛК сишки. Я просто две переменные с одинаковым именем в одной функции только по ошибке создаю.
                                        Ответить
                          • показать все, что скрыто> Родина им дала Babel, блядь, пиши на нормальном языке!

                            Ну и нахуя мне ради джвух строчек пердолиться с очередной трансляторной питушнёй.
                            Ответить
                      • показать все, что скрытоЯ знаю, что есть конвертеры, но не все обязаны ими пользоваться.
                        Ответить
                  • показать все, что скрытоЭто для интерпрайз питухов.
                    У центос седьмой вон есть расширыенная поддержка

                    Ай-да писать скрипты под python2.7?
                    Ответить
                • показать все, что скрытоА это скрипт под Node.js.
                  Кстати, в 21 Августа 2013 (первое упоминание результатов скрипта) был let?

                  Хотя, не важно. var one love, а letоняди пусть страдают.
                  Ответить
      • показать все, что скрытоТоп 250 пользователей по количеству комментариев:(всего 67302 штук)
        1: guest8 (#25580) - 54980
        2: bormand (#5528) - 52571
        3: guest (#1) - 48602
        4: 3.14159265 (#1438) - 14379
        5: Lure Of Chaos (#1538) - 14270
        6: kegdan (#6824) - 13960
        7: gost (#8086) - 11900
        8: roman-kashitsyn (#3818) - 11657
        9: inkanus-gray (#1659) - 11324
        10: 1024-- (#7146) - 10960
        11: Desktop (#23661) - 10783
        12: 3_14dar (#7252) - 9364
        13: MAKAKA (#67285) - 8610
        14: defecate-plusplus (#4442) - 8494
        15: guest6 (#67780) - 7803
        16: TarasB (#721) - 7226
        17: j123123 (#7355) - 5616
        18: bugmenot (#1632) - 5230
        19: LispGovno (#6011) - 5103
        20: wvxvw (#988) - 5088
        21: CHayT (#2853) - 4884
        22: Stertor (#5934) - 4532
        23: Fike (#8394) - 4504
        24: absolut (#1528) - 4372
        25: anonimb84a2f6fd141 (#5798) - 4257

        Вроде удалось скачать, исправить http на https в парсере и распарсить.
        Только список пользователей не удалось подгрузить из-за какой-то питушни с моим JSON.
        Ответить
    • показать все, что скрытоhttps://habr.com/ru/post/284476/

      В учебном корпусе некоего института собираются включить поставленные с полгода назад турникеты. Для прохода нужны, судя по словесному описанию знакомого, в этом заведении обучающегося, RFID-карты. А за эти карты надо платить. Институту. Платить, говорят, не обязательно, но если не заплатишь — карточку не получишь. Соответственно и на пары не попадёшь. Вот такое бесплатное образование :)

      Возникает вопрос: имеет ли право кто-либо (институт, работодатель) требовать деньги за RFID-карточку, которая необходима для прохода к месту учёбы или работы?

      UPD: Стало понятно, что такого произвола много по всей стране, но люди боятся что-то делать из-за страха быть отчисленными. Кто-нибудь может подсказать действенные способы борьбы с описанным поведением вуза без риска для студентов?


      Эта история стара как мир...
      Ответить
      • показать все, что скрытоКакой багор :)
        Нам всё бесплатно выдавали, платить надо было только за замену.

        Кстати интересно, кто-нибудь пробовал задосить свой вуз заказами на пропуски? А если бы была бесплатная замена?
        Хотя, 200-300 рублей (<5 евро) - не такая большая сумма по сравнению с научным интересом. Если каждый студент, скажем, зарезервирует денег на 2-3 пропуска, а потом все поочерёдно пойдут сообщать, что потеряли, бюро пропусков сломается. Буквально потонет в финансовом потоке как тот мужик из мультфильма про копытное, которое делало золото.
        Ответить
      • показать все, что скрытоА вообще, им наверно стоит в прокуратуру обратиться. Там разберутся и, если что, вуз перестанет творить питушню.
        Ответить
    • показать все, что скрытоNepgear из Hyperdimension Neptunia
      Ответить
      • показать все, что скрытоmootools
        Ответить
        • показать все, что скрытоСуществовало несколько типов ритуальной практики Пурушамедхи.

          Согласно одной из них, царским домом покупался человек (обязательно кшатрий или брахман) за сто коней или тысячу коров. Этот человек в течение года фактически оставался на свободе и жил обычной жизнью, отказывая себе лишь в одном — в общении с женщинами. По истечении года его приносили в жертву вместе с жертвенными животными и царица совершала имитацию полового акта с трупом. По другому описанию, царица совершала половой акт или его имитацию с ещё живым человеком, после чего последний отпускался и награждался. Сам обряд был направлен на процветание государства.
          Ответить
          • показать все, что скрытоО чём этот тренд?
            Ответить
          • https://ayurvedaplus.ru/articles/265/252470/
            Коровий навоз. Его кушать не надо. Веды говорят, что это чистый продукт. Все остальные испражнения считаются грязными, и человек не должен касаться их, даже нюхать. Он должен избегать их, чтобы не оскверниться. Если же человек обоняет коровий навоз или соприкасается с ним, то это очень благотворно воздействует на него. Коровий навоз очищает прану человека, обладает максимально охлаждающим воздействием, снимает все виды осквернения тонкого тела ума от влияния других живых существ. Если вы с коровьим навозом помоете свою квартиру, то все духи оттуда сбегают, им становиться невыносимо холодно. Навоз действует напрямую на тонкое тело. Так как эти сущности живут в тонком теле и у них огня не слишком много, то они чувствуют, что нужно ретироваться. Наличие духов в квартире можно определить по запаху. Спертый запах, вызывающий неприятные эмоции, означает, что там живут какие-то духи. Если вы вымоете полы в квартире навозом, то там будет пахнуть свежестью, и будет ощущение, будто в ней никто не жил, будто вы только въехали в нее.
            Ответить
            • Когда человек ест пищу, он соприкасается с нею, и следы его тонкого тела остаются на этой тарелке. К ней потом прилепляются духи, и у нас потом портится настроение. Поэтому посуду Веды рекомендуют мыть с коровьим навозом, чтобы полностью очистить ее. Вы не сможете смыть следы тонкого тела по-другому. Если вы чувствительный человек, то даже после того, как посуда была вымыта с мылом и порошком после еды, понюхав ее, вы поймете, что от нее идет теплый запах. Это значит, следы вашего тонкого тела остались. После мытья с навозом, теплого запаха уже не почувствуете.
              Если вам подарили какую-то вещь, которая ранее была ношена, достаточно помыть эту вещь с коровьим навозом, и тогда ею можно пользоваться. То же относится к кровати, на которой кто-то спал. Без коровьего навоза невозможно жить, потому что ничто другое не освободит эту кровать или другую вещь от влияния человека, который ею пользовался.

              mootools
              Ответить
              • показать все, что скрытоСкушай заячий помёт.
                Он ядрёный, он проймёт.
                В тыщу раз целебней мёда,
                Хоть по вкусу и не мёд.

                Он на вкус, конечно, крут,
                И с него, бывает, мрут,
                Но зато кто выживает,
                Те до старости живут.
                Ответить
              • > Когда человек ест пищу, он соприкасается с нею, и следы его тонкого тела остаются на этой тарелке. К ней потом прилепляются духи, и у нас потом портится настроение. Поэтому посуду Веды рекомендуют мыть с коровьим навозом, чтобы полностью очистить ее. Вы не сможете смыть следы тонкого тела по-другому. Если вы чувствительный человек, то даже после того, как посуда была вымыта с мылом и порошком после еды, понюхав ее, вы поймете, что от нее идет теплый запах. Это значит, следы вашего тонкого тела остались. После мытья с навозом, теплого запаха уже не почувствуете.

                — Какое доброе дело? Ты понимаешь, что ты насрал, бля, в тарелку, единственная тарелка. Единственная, блядь, тарелка, мы из неё жрём. Жрём суп из неё, ты туда насрал. Чё… где мы теперь жрать будем, из чего, а?!
                Ответить
              • > Если вам подарили какую-то вещь, которая ранее была ношена, достаточно помыть эту вещь с коровьим навозом, и тогда ею можно пользоваться. То же относится к кровати, на которой кто-то спал.

                — Смотри, мухи, они тебе спать мешают, мухи… А я вот — давай я здесь насру, и они все прилетят сюда, и мы их убьём! Слышишь? И тебе тогда спать… ой!.. спать будет хорошо. Давай? Я насру, а… а мухи все прилетят, сюда, к нам. Ну, куда им ещё, ихнее место-то тока здесь. И… оооой!.. хочешь я насру здесь? И мухи, и мы их убьём!
                Ответить
    • показать все, что скрытоhttps://twitter.com/mop_e_s/status/1429461392332148742
      Ответить
    • показать все, что скрытоКороче, я усилием воли дочитал длиннючий тред про var/let.

      И лично для себя сделал следующие выводы: «JavaScript» сделан хуёво. Но не по причине var или его работы.

      var вообще нахуй не нужен. Точнее нужен, но для другого.

      Нужно было делать как в BASIC, Python: просто пишешь имя и используешь. LALKA=5

      LALKA по умолчанию должна быть локальной. Желательно локальной константой (привет функциональщине).

      А мудификатор var должен превращать её в локальную же переменную.

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

      С этим тоже «JavaScript» проебал, нужно было сделать явный захват use(a,b,c) как «PHP».

      Ну а если написал use(=) и проебал — ну сам виноват.

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

      А на скоупинг vara срать.

      Правильно guest6 резюмировал:
      > А я-то думал, почему у меня нет проблем ни с ЛК ЖС, ни с ЛК сишки.
      > Я просто две переменные с одинаковым именем в одной функции только по ошибке создаю.
      Ответить
      • показать все, что скрытоВообще обычно если текст функции занимает несколько экранов или в коде больше 128 уровней вложенности, то код, скорее всего, говно. Значит, настала пора разбивать его на более маленькие функции.

        Почему этого не делают? Из-за пирфоманса. Лишние вызовы могут увеличить время выполнения (что демонстрируют фреймворки с ООП гойловного мозга, в которых 90% методов ничего не делают, а только делегируют действия другим методам). Хотя, например, в сишке при использовании инлайна можно добиться минимальной переголовы.
        Ответить
    • показать все, что скрыто[email protected] (U, R) ☓ насрал в #21736 ☓ (NGK, XYZ) (9/14/2021 11:10:49 PM) #
      В Китае же Партия делает телевидение бесплатно доступным, чтобы ты знал, как в стране всё хорошо и что у всех есть кошка-жена. А в Ниппонии у типичной офисной крысы нет ни денег ни времени чтобы купить телевизор и платить не за что.

      А на чём же они в сони плейстейшн рубятся?
      Ответить
    • показать все, что скрытоВажный опрос:
      https://twitter.com/kamysssh/status/1438847200528932867
      Ответить
      • показать все, что скрыто> ➻❥ она/её/арматурой/надломился ;; пивомамуля ;; обид не держу, держу пиво, а то прольётся ;; симпка дендро архонтки и сраалов ;; хейт акк михуе ⑅˖♡
        Ответить
        • показать все, что скрытоПонял только предложение про обиды и пиво.
          Ответить
          • Судя по всему, "михуе" это компания-разраб той гача-дрочильни "геншин импакт"
            Ответить
            • Можно поискать в duckduckgo слово "михуе", и в разделе "видео" там будет куча дегродских роликов из "TikTok"
              https://duckduckgo.com/?t=ffcm&q=михуе&iax=videos&ia=videos
              Ответить
              • Цуфищщ!
                Ответить
                • > михуе не умеют делать фансервис это безвкусно #инадзума #genshinimpact #геншинимпакт #геншин #среншин #радфем

                  Среншин-хуеншин блядь. Сука, как много в интернете всяких ебланов развелось.
                  Лучше бы контроллеры программировали, а не упарывались в бессмысленные донатные гача-дрочильни с аниме-девочками.
                  Ответить
                  • Great for Privacy, Great for the Environment: DuckDuckGo Is Now Cabron Negative
                    Filed under DuckDuckGo News on 21 Sep 2021
                    Ответить
                    • не пердят в офисе?
                      Ответить
                      • На Cocoa перешли с Carbon
                        Ответить
                      • Нанимают нелегальных гомонигр, которые жертвы, поэтому несчитово даже если будут жрать пимеев с чесноком по-ополченски прямо на галере.

                        Congo rebels are eating pygmies, UN says
                        Ответить
                        • Пигмеев действительно едят. Они воспринимаются скорее как лесная дичь, а не как люди. К сожалению.

                          Волк может скушать маленькую собачку, увы. Так же и африканцы
                          Ответить
      • показать все, что скрытоПиздец: столько анимешниц няшных няшек, никогда столько не видел owo

        Или это всё gost сам себе отвечает?
        Ответить
    • показать все, что скрытоВореции:
      https://pbs.twimg.com/media/FAclQRlX0AMyKR2.jpg
      Ответить
    • показать все, что скрытоhttps://pbs.twimg.com/media/FAwzPZ2XIAAtZmX.jpg
      Ответить
      • показать все, что скрытоБагор какой )))
        Ответить
        • показать все, что скрытоПереименование согласовывали, были слушания, заседания...

          Оказывается, «Чертаново Северное» — это название целого района (муниципального округа), а «Северное Чертаново» — это название одного экспериментального квартала с гигантскими домами, который возвели в 1980-х, когда ещё термина «жилой комплекс» не было. Там даже нумерация хитрая: не улица и номер дома, а N-й корпус Северного Чертанова (ну то есть почти как в Зеленограде, только в более мелких масштабах).
          Ответить
    • 6ecum goJI6oe6, BBbIKJIagbIBaI-0LLLuu B uHcmarpaM qpomku Koqpe B pyke.
      Ответить
    • показать все, что скрытоhttps://pic.twitter.com/q05eJ19z43
      Ответить
    • показать все, что скрытоПо теме нашего сайта: https://pbs.twimg.com/media/FBa72qKWUAwRclK.png
      Ответить
    • показать все, что скрытоНе отвечайте уёбкам. Читайте книги.
      Ответить
    • Велосипедизация:
      https://pbs.twimg.com/media/FBceurFWQAMnRHF.jpg
      Ответить
    • Не отвечайте уёбкам. Читайте книги.
      Ответить
    • Не отвечайте уёбкам. Читайте книги.
      Ответить
    • Не отвечайте уёбкам. Читайте книги.
      Ответить
    • Не отвечайте уёбкам. Читайте книги.
      Ответить
    • Не отвечайте уёбкам. Читайте книги.
      Ответить
    • Не отвечайте уёбкам. Читайте книги.
      Ответить
    • Инверсия обосракции:
      https://pbs.twimg.com/media/FB4qFYLXsAIZ3NI.jpg
      Ответить
    • Как на "nemyx"-мове пишется буква "э"?
      Ответить

    Добавить комментарий