Куча говна / Говнокод #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 nepeKamHblu_nemyx, (Updated )

Комментарии (276) 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. Может, Полина знает?

      Кстати, список длинных постов, которые нельзя трогать, никто не подскажет?
      Ответить
      • Список длинных хуёв, которые в твоём рту, не предоставить?
        Ответить
      • http://govnokod.ru/best/comments?time=ever

        Те, в которых более 1,8 килокомментариев (порог уточняется), роняют какую-то апликацию.

        Реальные примеры:
        http://govnokod.ru/18591 — Кубок DelphiGovno, 2131 комментарий.
        http://govnokod.ru/25054 — опрос j123123, 2025 комментариев.
        http://govnokod.ru/15804 — каклосрач, 1940 комментариев.

        Кажется, с последнего официальные™ оффтопы и начались.
        Ответить
      • Иногда появляется ETIMEDOUT. Даже на маленьких постах с парой комментариев.
        Ответить
        • Похоже, понял, что за питушня была с моим скриптом-загрузчиком. У меня и на событие error запроса, и на событие end ответа была передача управления внешним питухам. При ошибке они вместе срабатывали.

          Видимо, вплоть до 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к
      Ответить
      • > 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;
          Ответить
            • Что заебали? Не во все браузеры завезли let.
              Ответить
                  • Прости, у тебя 40-й хром 2015-го года или 10-й эксплорер?
                    Ответить
                    • У меня нет. Но я видел упоротых, которые смотрят сайты только через IE: «Ну как же, это лицензионный браузер! Он не может быть плохим! Я не хочу пользоваться нелицензионным софтом!»
                      Ответить
                      • В шестом эксплррере у них половина Интернета не работает, я гарантирую
                        Ответить
                        • Почему обязательно в шестом? Я для кого ссылку кинул? В десятом IE вообще нету let, в одиннадцатом let реализован не полностью.
                          Ответить
                          • В десятке уже edge, остальные Windows устарели
                            Ответить
                            • Из-за того, что они устарели, ими не перестали пользоваться. Думаешь, после выхода десятки все повыбрасывали старые компы?
                              Ответить
                              • Думаю, у них и в 11-м эксплорере много чего не работает
                                Ответить
                    • А ещё в «Андроиде Киткат» системный движок «WebView» сделан на тридцатом «Хромиуме» и не обновляется. Если питух не поставил себе нормальный браузер (на «Киткат», кстати, ставится «Хром 83»), а смотрит сайты системным, то он чувствует себя обладателем тридцатого «Хрома».
                      Ответить
                      • В смысле если у него мобилка семилетней давности?
                        Ответить
                        • Угу. Я думал, что «Киткат» — старое говно, но недавно увидел пользователей «Jelly Bean». Такие дела.
                          Ответить
              • Поддержка «IE6» завершена 12 января 2016-го года.
                Ответить
                  • «Chrome 40» или «Firefox 43» сгнили даже раньше «IE6».
                    Ответить
                • Могут быть петухи, которые не обновлялись с 2016 и сильно раньше. Давай ты посчитаешь сколько потеряет "Google", если вставит "let" на главную страницу.
                  Ответить
                  • Гугл потеряет конечно, но вы вроде как не гугл?
                    Ответить
                    • Может 1023 оттуда. Откуда ты знаешь?
                      Ответить
                    • Да стопудово там бабелят

                      Причем скорее всего там пишут на чем-то стат типизированном, типа их дарта или 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.
                                  Ответить
                                  • > Угадайте, что выведет этот код

                                    Всегда error т.к. X никогда не матчится с самим собой в паре с ok? Более ебанутое поведение я не могу придумать )))
                                    Ответить
                                    • Нет... `foo(error)' отработает нормально, а вот `foo({ok, pituh})' упадёт с badmatch.
                                      Ответить
                                          • > а первый кейз никогда не сматчится

                                            После пролога это довольно логичное поведение. Там ведь тоже забинденные переменные сравнивались а не перебиндивались.
                                            Ответить
                                      • ...Поэтому неумелого макроёба на Erlang ждёт багор (из внешнего скопа в макрос могут прилететь переменные, которые матчатся в нём). Приходится писать так:
                                        -define(koko(A), (fun() -> ... 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");


                                              Даже скопы звать не пришлось.
                                              Ответить
                                              • На подобном примере и «JavaScript» обосрётся. А вот «for» в сишке сделали нормальным, в отличие от.
                                                Ответить
                                        • > Ты это говоришь про человека, пишущего на «Питоне»

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

                                          Просто в «Питоне» нету нормальных лямбд. Вот 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».
                                                Ответить
                                                • > В любом ссылочно-прозрачном языке
                                                  не дали бы изменять i.

                                                  Заметим, что если эту переменную не менять, в JS всё будет очевидно даже для летоняков.
                                                  Ответить
                                                  • Не менять переменную цикла в императивном for-цикле? Впечатляет.
                                                    Ответить
                                      • > Какой пример? Где ввели 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

                                      и там тоже всё работает
                                      Ответить
                                        • да, и он сделал видимость. За то рубисты его и любят

                                          Без него всё конечно сломалось бы
                                          i = 'hello'
                                          
                                          for i in (0..10)
                                          
                                          end
                                          
                                          puts i # 10
                                          Ответить
                                    • > вменяемые языки

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

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

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

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

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

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

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

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

                                            И только JS взял худшее из двух миров со своим var, но слава богу починили в let
                                            Ответить
                                      • > Иначе из цикла или ифа наружу фиг что вытащишь
                                        Справедливости ради, в ещё более нормальных языках «if» и «for» — это expressions, а не statements.
                                        Ответить
                                          • val seq = Seq(1, 2, 3)
                                            val x = for (x <- seq) yield x * 2
                                            println(s"x = $x")
                                            Ответить
                                            • map и for это одно и тоже

                                              какая функциональщина ))
                                              Ответить
                                              • Я правильно понимаю, что из всей скриптушни победил Python -- язык без лексического скопа и без сахара для его создания посредством лямблий, как в руби?

                                                Это значит скоупы не нужны, или просто люди тупые?
                                                Ответить
                                                • > язык без лексического скопа
                                                  А внутри функций - чем не ЛС?

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

                                        Вот кстати да. В 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, блядь, пиши на нормальном языке!

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

                        Бабель запускается у программиста на CI или на машине
                        Ответить
                        • Запускается, если программист его запустил. А вот многие сайтостроители не считают нужным утруждать себя запуском какого-то Исаака Бабеля.
                          Ответить
                          • Бабеля можно и онлайново запускать у пользователя, но это медленно


                            Я за сборку JS. Чтобы иметь бабеля или TS или вебпак и всякие less/sass итд
                            Ответить
                        • Я написал код с let, или на TS.
                          Запустил конвертацию в старый JS (через бабелину).
                          Я не обязан так делать.
                          Ответить
                • Это для интерпрайз питухов.
                  У центос седьмой вон есть расширыенная поддержка

                  Ай-да писать скрипты под python2.7?
                  Ответить
                  • Кстати, чем вообще python3 от python2.7 отличается, кроме присваиваний в if, скобок в print и сломанных map/reduce/filter? Зачем он нужен?
                    Все те же классы и полезные пакеты в pypi есть под 2.7.
                    Ответить
                    • тайпнихнтами и оператором моржовым
                      >Все те же классы и полезные пакеты в pypi есть под 2.7.
                      Давно уже нет

                      запусти мне послденюю джангу под 2.7 или фласк какой-нить
                      Ответить
                      • Да, ситуация поменялась. Лет пять назад на «ГК» перечисляли пакеты, которые не портировали с 2.7 на 3. Теперь наоборот, уже пора перечислять пакеты, которые перестали обновляться или вовсе отсутствуют в 2.7.
                        Ответить
                        • 2.7 официально НЕ поддерживается с 1 янврая 2020-го года, а благодаря докеру запустить можно любой питон на любом дистре, и просто нет никакого повода думать о Python2
                          Ответить
                      • > послденюю джангу
                        А зачем последнюю? Та, что работает под 2.7, вполне юзабельна.

                        P.S. Зачем дрочить на новую питушню, если старая решает задачу так же хорошо?
                        Ответить
                        • >А зачем последнюю?
                          Затем, что старая не поддерживается, в ней не исправляют секьюрити баги, и не поддерживаются новые приложения.
                          Ответить
              • А это скрипт под 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 пропуска, а потом все поочерёдно пойдут сообщать, что потеряли, бюро пропусков сломается. Буквально потонет в финансовом потоке как тот мужик из мультфильма про копытное, которое делало золото.
      Ответить
    • А вообще, им наверно стоит в прокуратуру обратиться. Там разберутся и, если что, вуз перестанет творить питушню.
      Ответить
      • > перестанет

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          Какой graceful degradation )))

          NGK бы вообще неюзабельным стал.
          Ответить
          • Ну так это в пиздец оффтоп. То есть нельзя рассчитывать, что выполняемый скрипт загрузился полностью? Или браузер думает, что он целый?
            Ответить
    • Офисный планктон и не рубится... работают до поздна, а потом бухают на тимбилдинге. В аниме ведь врать не будут.
      Ответить
    • > ➻❥ она/её/арматурой/надломился ;; пивомамуля ;; обид не держу, держу пиво, а то прольётся ;; симпка дендро архонтки и сраалов ;; хейт акк михуе ⑅˖♡
      Ответить
    • Пиздец: столько анимешниц няшных няшек, никогда столько не видел owo

      Или это всё gost сам себе отвечает?
      Ответить
      • Переименование согласовывали, были слушания, заседания...

        Оказывается, «Чертаново Северное» — это название целого района (муниципального округа), а «Северное Чертаново» — это название одного экспериментального квартала с гигантскими домами, который возвели в 1980-х, когда ещё термина «жилой комплекс» не было. Там даже нумерация хитрая: не улица и номер дома, а N-й корпус Северного Чертанова (ну то есть почти как в Зеленограде, только в более мелких масштабах).
        Ответить
  • 6ecum goJI6oe6, BBbIKJIagbIBaI-0LLLuu B uHcmarpaM qpomku Koqpe B pyke.
    Ответить

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

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8