Куча говна / Говнокод #27463 Ссылка на оригинал

0

  1. 1
IT Оффтоп #93

#63: https://govnokod.ru/27004 https://govnokod.xyz/_27004
#64: https://govnokod.ru/27020 https://govnokod.xyz/_27020
#65: https://govnokod.ru/27027 https://govnokod.xyz/_27027
#66: https://govnokod.ru/27040 https://govnokod.xyz/_27040
#67: https://govnokod.ru/27049 https://govnokod.xyz/_27049
#68: https://govnokod.ru/27061 https://govnokod.xyz/_27061
#69: https://govnokod.ru/27071 https://govnokod.xyz/_27071
#70: https://govnokod.ru/27097 https://govnokod.xyz/_27097
#71: https://govnokod.ru/27115 https://govnokod.xyz/_27115
#72: https://govnokod.ru/27120 https://govnokod.xyz/_27120
#73: https://govnokod.ru/27136 https://govnokod.xyz/_27136
#74: https://govnokod.ru/27160 https://govnokod.xyz/_27160
#75: https://govnokod.ru/27166 https://govnokod.xyz/_27166
#76: https://govnokod.ru/27168 https://govnokod.xyz/_27168
#77: https://govnokod.ru/27186 https://govnokod.xyz/_27186
#78: https://govnokod.ru/27219 https://govnokod.xyz/_27219
#79: https://govnokod.ru/27254 https://govnokod.xyz/_27254
#80: https://govnokod.ru/27270 https://govnokod.xyz/_27270
#81: https://govnokod.ru/27280 https://govnokod.xyz/_27280
#82: https://govnokod.ru/27284 https://govnokod.xyz/_27284
#83: https://govnokod.ru/27296 https://govnokod.xyz/_27296
#84: https://govnokod.ru/27336 https://govnokod.xyz/_27336
#85: https://govnokod.ru/27381 https://govnokod.xyz/_27381
#86: https://govnokod.ru/27405 https://govnokod.xyz/_27405
#87: https://govnokod.ru/27429 https://govnokod.xyz/_27429
#88: https://govnokod.ru/27432 https://govnokod.xyz/_27432
#89: https://govnokod.ru/27435 https://govnokod.xyz/_27435
#90: https://govnokod.ru/27439 https://govnokod.xyz/_27439
#91: https://govnokod.ru/27449 https://govnokod.xyz/_27449
#92: https://govnokod.ru/27460 https://govnokod.xyz/_27460

Запостил: nepeKamHblu_nemyx nepeKamHblu_nemyx, (Updated )

Комментарии (552) 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.
    Остерегайтесь подделок. Берегите себя и своих близких. Кок!
    Ответить
    • Теперь я не забуду свой пароль! Всегда можно будет найти его в этой базе.
      Ответить
      • Просто мне кажется, вчера ты задал вопрос про бэкап, вчера же пол инета уебалось и тут же слив паролей на 100гигов. Совпадение?
        Ответить
    • > выложили словарь для джона
      > произошла утечка поролей!
      ох уж эти новости для русни
      Ответить
    • Так я не понял. Ап нахуй. Вы чо не златохуйские? Златохуйские сказали говно 0.7 литра это не машина а мопед.
      Ответить
        • нет. На говнокодике не токсичные русня советчики. Вот и спрашиваю, норм или залупа. Потому что идти на форум автолюбителей - это хуже чем форум линуксоидов, велопидоров, аудиофилов.
          Ответить
          • Мне кажется тян на такую не будут клевать. Но мешки с картохой норм возить.
            Ответить
              • в том же, в чем и отличие метапрограммирования от многпоточного
                Ответить
                      • > И жиров
                        Вы больше не можете отправлять сообщения этой тян.

                        > В картохе одни углеводы поди?
                        90% углеводов, да. Много крахмала.
                        Ответить
                    • Тян это богини, лучше них ничего нет и не может быть. Это ИСТИНА. Кстати, тяны, если вы читаете говнокод, пожалуйста, напишите мне в телегу: @etkii.
                      Ответить
                      • Я отговаривал канибалов жрать тян, а выше вон сколько их отписались. Вы давно тян закончили?
                        Ответить
                      • https://archive.org/stream/bub_gb_ft8FAAAAQAAJ_2/bub_gb_ft8FAAAAQAAJ_djvu.txt

                        nad) ^eint. ©pclnionn {bx\ Ju Tange, üloss. med. et iiifim. Latin. 8. v.) anflcljäd)»
                        fift^en llripiuii,!^ fetin mu" ctncn Wiirtel ober eine ®rf)uur jum i*lb^iü)lcii bcr ©ebefe
                        bebcutcn. ^ad Üue Dianu iuuii)e ^ucc)t m btx ^toeiten ^äljte be« 11. Olal)ct)unb€ttd
                        oü Mdifsniift tocDMnbt, bni ober ojl im 18. dal|ci|itiiM tedfl in Gf^hwiiQ; itftili
                        enip^oni bc Swbvne (nm 1225J (<U sfpt don. «p. «oU in Eofawdi Soriptt. Pnad*
                        I, 189) tticbtt^ottat c8 anMc^ttgc @etkii SO»
                        Ответить
                        • энциклопедия по протестанской теологии и чото там, я не оче шпрехаю
                          Ответить
                          • Зачем ты написал? Теперь в поисковике можно будет найти
                            Ответить
                            • Про что написать в следующем посте?
                              public poll

                              Обзор отличного примера интерактивной документации (какого — секрет). – 14
                              ??????? 67%
                              @katerina308, @etkee, @factorized, @exebeeche, @annacraneo, @anasta_ste, @DarthVader, @OlgaRevyakina, @SvetlanaNudel, @den317, @woooooowmen, @aselivanava, @slavachernikoff, @arvikon

                              Как добавлять диаграммы, в том числе UML, в документацию на Sphinx. – 4
                              ?? 19%
                              @yeugene, @Lananovikova, @PavelAlferov, @maxlapshin

                              Память переводов: зачем нужна и как устроена. – 2
                              ? 10%
                              @i_tsupko, @vodnicear

                              Как использовать ссылки в форматах разметки, чтобы они не сломались при переводе. – 1
                              ? 5%
                              @Dark_soul_Mike

                              ? 21 people voted so far.
                              Ответить
  • amity / gender-neutralize
    10
    Code
    Issues
    Pull requests

    Chrome extension to turn unnecessarily gendered words into their neutral alternatives across the web.
    Ответить
    • "Female" -> ""
      "Male" -> ""

      Заебись коннекторы на али покупать с этим плагином.
      Ответить
    • text = text.replace(/\b(s)?he was\b/g, "they were");
          text = text.replace(/\bShe was\b/g, "They were");
          text = text.replace(/\bHe was\b/g, "They were");
          text = text.replace(/\b(s)?he has\b/g, "they have");
          text = text.replace(/\bShe has\b/g, "They have");
          text = text.replace(/\bHe has\b/g, "They have");
          text = text.replace(/\bHe's\b/g, "They're");
          text = text.replace(/\bShe's\b/g, "They're");
          text = text.replace(/\b(s)?he's/g, "they're");
          text = text.replace(/\bhe has\b/g, "they have");
          text = text.replace(/\bHe has\b/g, "They have");
          text = text.replace(/\bHe is\b/g, "They are");
          text = text.replace(/\bShe is\b/g, "They are");
          text = text.replace(/\b(s)?he is\b/g, "they are");
          text = text.replace(/\b(she )([^ ]+)(s\b)/, "they $2");
          text = text.replace(/\b(he )([^ ]+)(s\b)/, "they $2");
          text = text.replace(/\b(She )([^ ]+)(s\b)/, "They $2");
          text = text.replace(/\b(He )([^ ]+)(s\b)/, "They $2");
          // Imperfect below -- but "her" as subject / possessive are tough
          text = text.replace(/\bher$/g, "them");
          text = text.replace(/ing her\b/g, "ing them");
          text = text.replace(/\b(s)?he\b/g, "they");
          text = text.replace(/\b(s)?he\b/g, "they");
          text = text.replace(/\bHe\b/g, "They");
          text = text.replace(/\bShe\b/g, "They");
          text = text.replace(/\bhers\b/g, "theirs");
          text = text.replace(/\bHers\b/g, "Theirs");
          text = text.replace(/\bhim\b/g, "them");
          text = text.replace(/\bHim\b/g, "Them");
          text = text.replace(/\bHis\b/g, "Their");
          text = text.replace(/\bhis\b/g, "their");
          text = text.replace(/\bher\b/g, "their");
          text = text.replace(/\bHer\b/g, "Their");
          text = text.replace(/\bhimself\b/g, "themselves");
          text = text.replace(/\bherself\b/g, "themselves");


      вроде JS, а всё равно пэхапэ


      Кстати, какого пола Софи?
      https://github.com/amity
      Ответить
  • Facebook CEO Mark Zuckerberg posted videos of himself on Monday throwing spears at wooden targets, and shooting a bow and arrow at bowling pins. The social media Master of the Universe inexplicably wore hearing protection when throwing spears.
    Ответить
  • Собирательный банк и мейл - это сейчас одно владение?
    Ответить
  • Сальвадор стал первой в мире страной, которая легализовала биткоины

    Парламент Республики Сальвадор принял закон, признающий криптовалюту биткоин легальным платежным средством в этой стране.
    Закон вступит в силу через 90 дней.

    https://finance.liga.net/cryptoeconomics/novosti/salvador-stal-pervoy-v-mire-stranoy-kotoraya-legalizovala-bitkoiny
    Ответить
    • ого, там и фотки реальных биткоинов даже есть
      да много как!
      Ответить
  • Давайте форсить Perl
    #!/usr/bin/perl
    use strict;
    use warnings FATAL => 'all';
    
    package User;
    our @users;
    
    sub new {
        my ($class, $name) = @_;
        my $this = { name => $name };
        push @users, $this;
        bless $this, $class;
    }
    sub hello {
        my $this = shift;
        "Hi, I am $this->{name}";
    }
    sub users {
        @users;
    }
    1;
    
    my $larry = User->new("Larry");
    print $larry->hello, "\n";
    
    User->new("Cock");
    
    print foreach (map {"We have a user named $_->{name}\n"} @User::users);
    print "So, we have ", scalar @User::users, " users";
    Ответить
  • https://habr.com/ru/post/562094/
    В современном мире ООП стало неотъемлемой частью разработки. Многие популярные языки, такие как Pyhon, Jaba, Hashkell, GOO и C== поддерживают данную парадигму.
    Ответить
    • Это ГОСТ шутит на говнокоде, ковякая названия и имена собственные.

      ***

      В этой статье я постараюсь раскрыть смысл таких архитектурных конструкций, как абстрактный синглтон и фабрика абстрактных синглтонов.

      ***

      Великая статья...
      Ответить
  • Надо для социальной гигиены поступать как ведьмак, иметь два айфона, обычный - для людей, и серебристый - для чудовищ из тиндера. Аккаунт в Фейсбуке один.
    Ответить
  • https://habr.com/ru/sandbox/155138/

    как вам сборка Dragonized BlackArch? Не нужно мучительно долго устанавливать BlackArch из командной строки, размечать диск, ставить графический интерфейс, сама мысль об этом отпугивает юных хакеров

    В процессе, читал про новую крутую систему BTRFS, которая сжимает данные, а значит мой SSD прослужит дольше


    Ну а что же там с хакерским софтом? А вот, что - очередной фигвам, из двух предустановленных программ запустилось 0! Здесь должен быть смайлик краснокожей раздраженной мордашки. Понесло меня на форум к ним обратно - создал ветку, почему на Garuda KDE BlackArch Edition ничего из меню BlackArch - не запускается. Гости форума пытались как-то помочь, а вот модераторы, они же разработчики стали посылать меня на другие форумы Arch, BlackArch, лепить какие-то отмазки, учить жизни...



    ----------

    какой хакер )))
    Ответить
    • > отпугивает юных хакеров

      Их отпугивает сама мысль о том, что не нужно мучительно долго устанавливать?
      Ответить
    • > Arch подобных KDE,

      А бывают Debian подобные Gnome?

      Хочу, чтобы этого чувака навсегда забанили на хабре, да и в интернете.
      Ответить
      • Зато название какое пафосное! Внушает уважение и трепет.
        Ответить
      • От -=HAkerZZZ=- же

        Чувак решил её поставить, и хотел чтобы там сразу была кнопка "сломать соседский wifi и страничку вконтакте" или что-то такое, а оно не работает
        Ответить
          • а там в меню есть такая кнопочка?

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

              Kali Linux — GNU/Linux-LiveCD, возникший как результат слияния WHAX и Auditor Security Collection. Проект создали Мати Ахарони (Mati Aharoni) и Макс Мозер (Max Moser). Предназначен прежде всего для проведения тестов на безопасность. Наследник развивавшегося до 2013 года на базе Knoppix дистрибутива BackTrack.

              > а если она незаработает, то можно пойти на форум и на русском языке поругать разрабов?

              The Kali Linux forums are meant to provide a place for the Kali community to converse and ask questions about the distribution. Due to the size of our community and complexity of Kali, we need to ensure Kali community members use these forums in a productive way which will also benefit others. For this reason we have set up some strict rules and regulations for posting in our forums. Please read these rules carefully before posting. Ignoring these rules will result in infractions and possible removal of your forum account. Any post not conforming to these rules will be deleted without notice.

              1. Search for a solution before you post.
              Before you post to our forums, try to search for the solution yourself. Start by searching the Official Kali documentation site, then the Kali forums. If nothing comes up, try Google next. If you still haven't come up with a solution, go ahead and post your question in the relevant forums. In most cases, the time you wait for your thread to be moderated and answered will be longer than the time it will take you to find a solution by searching.
              Ответить
    • ну ребята, песочница швабры, вы б ещё с помойки принесли
      Ответить
  • Внимание, лаба!

    [quote]
    Есть некая электронная книга, которую одновременно читает неограниченное количество читателей. Нужно сделать так, чтобы заданный читатель в любой момент мог проверить, какая доля пользователей прочитала меньшую часть книги, чем он . Предложено наивное решение хранить в map<int,int> в качестве ключа номера страниц, в качестве значения- количество прочитавших их пользователей. Конечно, при таком подходе программа медленно работает с большими тестами потому, что количество итераций по контейнеру map равняется числу прочитанных пользователем страниц. То есть, если пользователь прочел 1000 страниц из 1000 возможных, то в цикле нужно будет сделать 1000 итераций, и это сильно замедляет программу.
    [/quote]
    https://habr.com/ru/sandbox/155012/

    Ничего не понимаю. Ключи в map сортированые (там индейско-нигретянское дерево под капотом поди), значит если ты прочитал 42 страницы, то тебе нужно проитерироваться до ключа 42 и проссумировать пользователей, не?

    Это всё конечно не потокобезопасно, но и в его решении про потоки ничево нет
    Ответить
    • Ну да, получается O(n * log(n)) на такой запрос. Видимо автор хочет быстрее.
      Ответить
      • Он предлагает предподсчитывать, это нормальное желание если ты читаешь данные чаще, чем изменяешь.

        Но я не понял формулировки!

        "1000 итераций" звучит как "тысячу раз пройти всю коллекцию целиком", как если бы ключи были несортированы (как ``HashMap`` в джаве), хотя и тогда хватило бы одной итерации (просто полной)
        Ответить
        • Ну я бы так сделала:

          В первой мапе храним сколько страниц какой юзер прочитал.
          Во второй мапе храним сколько юзеров прочитало такое количество страниц.

          Запрос за O(log(N)), обновление за O(log(N)).

          Нафиг там что-то обходить циклом?
          Ответить
          • Борманд, а за какой доход в год чистыми ты бы согласился релоцироваться в Москву?
            Ответить
            • Х.з., не в доходе дело. Я просто не вижу смысла ехать в этот ебучий муравейник пока тут норм.
              Ответить
              • Понятно, что за $500k в год ты согласишься. Где эта граница?
                Ответить
                • Спроси, согласится ли он за $250к, а когда ответит – напиши мне в личку: я скажу, что дальше спросить.
                  Ответить
                • > за $500k в год

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

                      Никто не будет платить 3 ляма в месяц "обычному разработчику без рвания жопы".
                      Ответить
                      • Бля, хуле ты доебался? Про 500к я супер-верхнюю границу назвал, чтобы бинпоиском найти
                        Ответить
                        • В общем, я лучше на половину текущей зарплаты пойду, но чтобы вообще без стрессов и овердрайва.

                          Да простит меня д++.
                          Ответить
                          • А какие у тебя стрессы? Рассказывай
                            Ответить
                            • ого, я тоже хочу захайрить борманда

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

                                          Вот это же явно его фантазия ))

                                          > Может у него начальница - жирная баба альфачка, от этого и стрессует, боится что изнасилует?

                                          Или это прравда?
                                          Ответить
                                            • А если без шуток, то верно ли я понимаю, что по твоему в его компании (и вообще везде во внешнем мире) шумное суетливое говно с горящими сроками и кодом на коленке, а ты типа любишь спокойствие?
                                              Ответить
                                              • Ну раз много денег предлагают -- значит надо или выложиться на 146% или быть ниибаца экспертом.

                                                На ниибаца эксперта в их области я явно не тяну, так что скорее всего первое.

                                                Никто не будет платить деньги просто так.
                                                Ответить
                                                • )))

                                                  В IT много дурных денег, непонятно, почему ты думаешь, что их не будут платить именно тебе
                                                  Ответить
                                                • Ты ниибацца эксперт. Зуб даю.
                                                  Ответить
                                                • Вы можете наблюдать т.н. Эффект Даннинга — Крюгера

                                                  Борманд считает, что он недостаточно крутой для "таких больших денег".

                                                  А Ротоёб, я уверен, считает себя профессионалом во всем, что связано, например, с веб разработкой
                                                  Ответить
                                                • Сравнивай себя с вот тем парнем. Он зарабатывает больше за ту же работу, если не за меньший объём. Почему ты должен получать меньше, чем он?
                                                  Ответить
                                                  • >Сравнивай себя с вот тем парнем. Он зарабатывает больше

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

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

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

                                                  А разработчик прошивок сетевого оборудования не стресует, что оно пизднется оставив без Интернета пару бизнес-центров посреди дня, или откроет дырень, через которую в эти центры придет шифровальщик?

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

                                                      Угу, скорее оставят чистить вилкой )))
                                                      Ответить
                                                    • >Не знаю как нужно профакапиться, чтобы уволили.

                                                      попробуй взять весь доступный тебе код и все доступные тебе данные, и выложить их на reddit
                                                      Ответить
                                                      • Так это намеренное действие. Случайно как я это сделаю?
                                                        Ответить
                                                        • > случайно

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

                                                                У меня вот разные ключи для нашего сервера и для гитхаба
                                                                Ответить
                                                                • Забавно, что ключи в этой ситуации никак не спасут. Потому что гит выберет ключ, соответствующий ремоуту...

                                                                  Разве что разные пароли на ключах могут остановить и заставить задуматься.
                                                                  Ответить
                                                                  • так именно. Гит скажет

                                                                    "Enter passphrase for /home/MAKAKA/.ssh/github.key"
                                                                    и я пойму, что что-то не так
                                                                    Ответить
                                                                    • К сожалению, почти никто не читает повседневные сообщения. Обычно все эти пароли и прочие yes вообще на рефлексе прожимаются.
                                                                      Ответить
                                                                      • Кстати, а как будет выглядеть граф?
                                                                        Будет merge commit с двумя предками (ветка ремоута и моя ветка) либо мне нужно поребейзнуть свой самый первый коммит поверх последнего коммита ремоута?
                                                                        Ответить
                                                                        • Будет unrelated history, так что мастер в мастер без соответствующей опции не закоммитишь.

                                                                          А вот если там в репе main а у тебя master -- то норм залетит как новая ветка)
                                                                          Ответить
                                                                          • ага, то есть программист под угрозой увольнения из за сраных black live matters которые всё переименовывают?

                                                                            >unrelated history
                                                                            Пишут, что до 2.9 был обычный merge commit

                                                                            Потом питухи смекнули, что фича эта опасная, и сделали так

                                                                            --allow-unrelated-histories
                                                                            Ответить
                                                        • Увольнять программиста за случайное действие вообще странно.

                                                          Увольнять нужно если:
                                                          * От него мало толку, потому что он тупой
                                                          * От него мало толку, потому что он ленивый
                                                          * От него мало толку, потому что ему совершенно похуй на работу
                                                          * Он очень-очень токсичный, и на просьбу тестировщицы "посмотри этот баг, пожалуйста" отвечает "посмотрел тебе за щеку, проверь"
                                                          Ответить
                                          • Вроде это было здесь из киллми, или нет?
                                            Ответить
                            • Ураааа! Дефекате вернулся!!!
                              Ответить
                              • а если это Стертор, у которого онлайн атака наконец увенчалась успехом?
                                по таймингу подходит
                                Ответить
                                • я бы скорее подумал, что это ты д++, вернее, та его сторона, которую он предпочитает скрывать
                                  Ответить
                                        • А на чем вы в основном сейчас пишете?
                                          Ответить
                                            • >flutter
                                              ого, это где на Dartе пишут?
                                              Ответить
                                                • И как вам дарт?

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

                                                    а пока рано делать выводы, время покажет насколько сильно мы ошибались
                                                    Ответить
                                                    • А чем плох ксамарин? Вы не любите C#?

                                                      >писать натив под несколько платформ

                                                      пора уже пилить транслятор из котлина в свифт (или наоборот) и из андроиндных компонентов в UIKit
                                                      Ответить
                                                      • > А чем плох ксамарин? Вы не любите C#?
                                                        у нас есть здоровенный живой проект, где мобила на ксамарин
                                                        там только в фигме четыре сотни макетов состояний
                                                        never again

                                                        все с содроганием ждут момента, когда заказчик придет и скажет "давайте дальше развивать", а нам придется переписывать всё к хуям на более адекватную платформу
                                                        возможно, в то время надо было сразу брать котёл и не ебать себе мозги с C#
                                                        Ответить
                                                    • > ну говорят, что даже тайпскрипт лучше,

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

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

                                                          Я под контроллеры отлично пишу без всех этих параморфизмов и катаморфизмов, например. https://i.imgur.com/HopNrVI.jpg
                                                          Ответить
                                                          • В TS типизация вполне статическая, строгая, структурная, с выводом типов

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

                                                                В какой-то мере это можно делать в Coq -- придумать свой DSL, описать его синтаксис, сёмантику и типизацию и рассуждать над прогами на нём.

                                                                К примеру, можно доказать, что правильно типизированные проги на твоём DSL всегда завершаются или хотя бы не "падают" (могут выполнить ещё один шаг).
                                                                Ответить
                                                              • Потому что никто им пользоваться не будет. Каждый додик делает свой язык, который нахуй никому не нужен, кроме него самого. А ты всё равно в итоге обосрёшь "у меня в Си этого нету, именно поэтому я за Си".
                                                                Ответить
                                                                • > Потому что никто им пользоваться не будет.

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

                                                                  > А ты всё равно в итоге обосрёшь "у меня в Си этого нету, именно поэтому я за Си".

                                                                  Про "В X этого нету, именно поэтому я за X" - это вообще-то локальный мемчик говнокода, его ротоёб изобрел. Нет, я не считаю, что если чего-то нет в Си, то это вообще нахуй не нужно. Но я против того говна, которое укуренные стандартизаторы понапридумывали в крестопарашном стандарте. Я считаю что язык программирования не должен в себе содержать кучу ебанутых неочевидных правил о всякой хуйне, которые не осиливают корректно имплементнуть даже создатели компиляторов (а обычный рядовой говнокодер и подавно в этом пиздеце не разберется). Язык должен быть легко настраиваем и расширяем, и должна быть возможность создавать универсальные языковые расширители (в т.ч. синтаксис добавлять/менять, в т.ч. domain-specific оптимизации для определенных типов, которые можно было бы разрешать для определенных участков кода). В общем я за универсализм, а не за захардкоженную хуйню принятую говнокомитетом. Язык должен быть настраиваемым и программируемым.
                                                                  Ответить
                                                                    • Чтобы решать таким способом определенные задачи. Какие конкретно задачи - ну например генераторы синтаксических анализаторов и компиляторы регулярных выражений делать через embedded DSL, т.е. в некотором "своём" синтаксисе описывать грамматику питушни, и чтоб из этого генерировалась нужная хрень.

                                                                      А знаете как это делается в крестах? Я вот смотрю на код из https://github.com/hanickadot/compile-time-regular-expressions/ и это просто СРАНЫЙ ЕБАНЫЙ ПИЗДЕЦ НАХУЙ. https://www.youtube.com/watch?v=r_ZASJFQGQI я даже видео посмотрел про то, как эта хрень работает. Через шаблонопоебень с констэкспрами описывать LL(1) парсер, пиздец-пиздец-пиздец
                                                                      Ответить
                                                                      • не вижу разницы между тем чтобы взять язык и перехуярить его до неузнаваемости и тем, чтобы изначально взять другой язык или написать интерпретатор своего языка
                                                                        Ответить
                                                                        • > изначально взять другой язык

                                                                          Да, переписать на пёрл, потому что регулярки понадобились...

                                                                          > написать интерпретатор своего языка

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

                                                                              З.Ы. Заебали уже переставлять куски Алгола 68 в другом порядке и плодить языки из-за того, что одна конкретная фича в существующих не понравилась...
                                                                              Ответить
                                                                          • >Да, переписать на пёрл, потому что регулярки понадобились...

                                                                            регулярки есть в любом популярном языке

                                                                            >А это тупо дорого. Да и сочинять новый язык ради конпеляции сраных регулярок в компайлтайме -- ну такое

                                                                            а разрабатывать на какой-то неведомой хуйне и держать штат расширятелей дешево?
                                                                            Ответить
                                                                            • > регулярки есть в любом популярном языке

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

                                                                              Остаётся только сконвертить регулярку в эквивалентный код и скормить её конпелятору. И вот этот этап на крестах хоть и работает, но выглядит как ЁБАНЫЙ НАХУЙ СУКА ПИЗДЕЦ. Причём далеко не потому что переписать регулярку на сишку/кресты прям сложная и неразрешимая задача.
                                                                              Ответить
                                                                                • > нахуя их конпелировать

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

                                                                                  > не раздует размер бинаря

                                                                                  Сложно сказать. Где-то раздует, где-то наоборот меньше будет.

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

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

                                                                                  З.Ы. А нахуя вообще конпелировать код? Это же раздувает размер бинаря, лол.
                                                                                  Ответить
                                                                                  • в вебхуйне регулярка может и всю память выжрать, и просто долго исполняться и выполнять ее в одном треде с кодом может быть рискованно поэтому я и не подумал бы ее еще и в нативный код конпелировать

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

                                                                                      Именно! В том и суть Универсального Языка j123123, что больше не надо плодить новые технологии и языки, а можно просто скачать из репы либу, которая реализует нужную фичу.

                                                                                      З.Ы. На "D", к примеру, такие регулярки можно сделать в виде либы. Без внешних генераторов, новых языков и дрочева с шаблонной магией. И это круто.
                                                                                      Ответить
                                                                                      • я имею в виду что может такая хуйня слишком редко встречается в природе чтобы кому-то было не лень делать такой язык?
                                                                                        Ответить
                                                                                        • > слишком редко встречается в природе

                                                                                          Да не сказать, что прям редко...

                                                                                          В конце-концов DSL'и и генераторы кода часто пишут под любой язык, метушню в крестах развивают, языки в духе D придумывают. Т.е. желание пометушить на практике встречается довольно часто.
                                                                                          Ответить
                                                                                  • > Чтобы конкретные кейсы, которые я юзаю в горячих точках кода, работали быстрее и весили меньше.
                                                                                    А почему няльзя скомпилировать регулярки один раз, при запуске приложения? В питоне для этого есть re.compile(), няпример.
                                                                                    Ответить
                                                                                    • > почему няльзя скомпилировать регулярки один раз, при запуске приложения

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

                                                                                      Ну т.е. я могу сделать это с помощью llvm, к примеру. Но в какой-нибудь контроллер это уже не засунуть. Да и запускаться будет долго.

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

                                                                                Так есть же генераторы лексеров.
                                                                                Регулярка -> [неважночто] --> бинарь
                                                                                Ответить
                                                                            • >регулярки есть в любом популярном языке

                                                                              В "языке" они есть разве что в Perl, Ruby и JavaScript.
                                                                              В остальных они есть в библиотеке, и не всегда в стандартной (в сишке нет)
                                                                              Ответить
                                                                                • Потому что обычно отдельно описывается синтаксис языка, и его библиотека

                                                                                  Но может я и зря доебался. Тогда мой коммент можно удалить вплоть до первой скобки
                                                                                  Ответить
                                                                  • > а обычный рядовой говнокодер и подавно в этом няшнице не разберется
                                                                    > в т.ч. синтаксис добавлять/менять, в т.ч. domain-specific оптимизации для определенных типов, которые можно было бы разрешать для определенных участков кода
                                                                    Взаимоисключающие параграфы. Рядовой Говнокодер в такой хардкорной метушне уж точня ня разберётся, то есть самостоятельня расширять Универсальный Язык он ня сможет. Следовательня, рядовому Говнокодеру придётся использовать какие-то сторонние либы для Универсального Языка, в котором что будет? Правильня, куча няканутых неочевидных правил о всякой някне. Ergo, рядовому Говнокодеру такой язык будет совершенно ня нужен.
                                                                    Ответить
                                                                    • > Рядовой Говнокодер в такой хардкорной метушне уж точня ня разберётся, то есть самостоятельня расширять Универсальный Язык он ня сможет.

                                                                      Так пусть и не расширяет.

                                                                      > Следовательня, рядовому Говнокодеру придётся использовать какие-то сторонние либы для Универсального Языка, в котором что будет? Правильня, куча няканутых неочевидных правил о всякой някне.

                                                                      Пусть выбирает сторонние либы без кучи "няканутых неочевидных правил о всякой някне". Или пусть пишет без либ. Свобода.

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

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

                                                                  Надо чтоб без обязательного GC в рантайме
                                                                  Ответить
                                                                  • > чтоб без обязательного GC в рантайме

                                                                    А что мешает на лиспе сделать свой конпелируемый DSL, в котором нет GC в рантайме? А GC в компайлайме это ведь наоборот круто и удобно.
                                                                    Ответить
                                                                    • > А что мешает на лиспе сделать свой конпелируемый DSL, в котором нет GC в рантайме?

                                                                      А зачем тогда сам LISP? Ну т.е. я понимаю, если бы у меня был некий компилятор некоего легко расширяемого языка с гомоиконами и без обязательного GC, и этот язык я расширил некими регекспами. Но если я пишу свой компилятор, зачем мне именно LISP? Рантайм лиспа использоваться в итоговой скомпилированной программе не будет.
                                                                      Ответить
                                                                      • > А зачем тогда сам LISP?

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

                                                                          Зачем именно LISP? Почему не Python например? Почему не Си? Ведь совершенно очевидно, что компилятор этого суперохуенного ЯП должен быть написан сам на себе, так что надо чтоб раскрутка компилятора (бутстрапинг), т.е. на некоем языке (A) реализуем интерпретатор сабсета соотв. языка (B_subs), им запускаем(интерпретируем) код более полноценного компилятора, написанного на этом сабсете, но который уже реализует язык полностью (B) и потом компилятор сам себя должен собрать. И какой профит мне тут даст использование LISP-а в качестве языка для реализации интерпретатора подмножества окончательного языка?
                                                                          Ответить
                                                                          • > Почему не Python например? Почему не Си?
                                                                            Потому что из перечисленных языков только LISP — по-нястоящему гомоиконен?

                                                                            > Ведь совершенно очевидно, что компилятор этого суперняшного ЯП должен быть написан сам на себе
                                                                            Зачем? Какой профит от раскрутки есть в современном мире, кроме как демонстрация "смарите, как могу"?
                                                                            Ответить
                                                                            • > Зачем? Какой профит от раскрутки есть в современном мире, кроме как демонстрация "смарите, как могу"?

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

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

                                                                                > Ну и еще самодостаточность
                                                                                А это и есть "смарите, как могу". Чистое упражнение для ума, ня более.
                                                                                Ответить
                                                                                • > В тёмные времена, когда автотесты ещё ня изобрели, это, возможня и имело знячение. Но сейчас такой подход — довольня бессмысленное занятие, поскольку качество отлова багов таким способом ниже плинтуса. Даже баняльные юнит-тесты справятся лучше.

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

                                                                                  > А это и есть "смарите, как могу". Чистое упражнение для ума, ня более.

                                                                                  На самом деле - нет. Взять например SBCL - перенос его на другую платформу - задача далеко не тривиальная. https://www.youtube.com/watch?v=h4OPD4v9YY8 например

                                                                                  Если компилятор языка будет написан на другом языке, и если надо чтоб компилятор языка запускался на другой архитектуре и компилил код под нее, надо не просто написать в самом компиляторе поддержку компиляции под эту вот архитектуру, надо еще и этот другой язык (на котором компилятор написан) научить компилировать под эту другую архитектуру, и это было б нахуй не нужно делать, если бы компилятор языка сам на себе был написан. Если б компилятор языка X был на X же и написан, достаточно было бы добавить поддержку архитектуры X в сам компилятор, и кросскомпильнуть его в ту архитектуру им же!
                                                                                  Ответить
                                                                                  • > на которой можно что-то тестить
                                                                                    В том-то и дело, что "протестировать" таким способом ты можешь максимум то, что компилятор ня падает. А вот если в нём завёлся баг, который просто искажает генярируемый код — ты можешь получить целую серию някорректных версий компиляторов, и потом будешь судорожно искать, ня какую версию нядо откатываться, чтобы получить корректный компилятор.

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

                                                                                      git-bisect
                                                                                      Ответить
                                                                                    • > В том-то и дело, что "протестировать" таким способом ты можешь максимум то, что компилятор ня падает. А вот если в нём завёлся баг, который просто искажает генярируемый код — ты можешь получить целую серию някорректных версий компиляторов

                                                                                      Тут есть один интересный ньюанс. Сейчас поясню.

                                                                                      Вот берем мы бинарь компилятора версии 0.1 (в котором бага нет), и им компилируем из сорцов компилятор версии 0.2 (в котором бага есть) - получаем "0.1->0.2". Потом бинарем компилятора "0.1->0.2" компилируем опять компилятор 0.2. Получаем "0.1->0.2->0.2". Потом этим же бинарем компилируем опять компилятор 0.2. Получаем "0.1->0.2->0.2->0.2". А потом тупо сравниваем "0.1->0.2->0.2" и "0.1->0.2->0.2->0.2" - они должны быть одинаковы. Если они не одинаковы, это очевидно баг.

                                                                                      https://en.wikipedia.org/wiki/Bootstrapping_(compilers)#Process
                                                                                      Ответить
                                                                                      • > Если они не одинаковы, это очевидно баг.

                                                                                        А если они одинаково забагованы? 🙂
                                                                                        Ответить
                                                                                        • > А если они одинаково забагованы? 🙂

                                                                                          Т.е. если внесенный баг из категории "misscompilation" не срабатывает на кодовой базе самого компилятора? Ну тогда ждем появления такого кода, где этот баг реально проявится, и тогда находим бисекцией тот коммит, начиная с которого этот баг начал проявлять себя. И добавляем такой код в набор тестов. В GCC это именно так делают.
                                                                                          Ответить
                                                                                          • > не срабатывает на кодовой базе самого компилятора

                                                                                            Почему не срабатывает? Может это такой fixed point, хуёвый конпелятор порождающий другой хуёвый конпелятор с багом в том же месте. Просто баг не настолько фатальный, чтобы совсем всё распидорасить.

                                                                                            А с "0.1->0.2" ты сравнить не можешь т.к. у 0.1 кодовая база другая, выхлоп может быть совсем другим.
                                                                                            Ответить
                                                                                            • > Почему не срабатывает? Просто это такой fixed point, хуёвый конпелятор порождающий другой хуёвый конпелятор с багом в том же месте.

                                                                                              Тогда хуевым компилятором можно собрать чуть более древний компилятор, а потом получившимся собрать опять древний. Т.е. "0.2->0.1->0.1". И сравнить его с "0.1->0.1" и/или "0.1->0.1->0.1". Они должны быть одинаковыми.
                                                                                              Ответить
                                                                                              • > Тогда хуевым компилятором можно собрать чуть более древний компилятор

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

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

                                                                                                  И что? Если так подумать, бага может вообще не триггериться ни на какой версии исходников компилятора.

                                                                                                  А вообще, как должно (не) повезти, чтобы возник такой баг компилятора, который бы реально проявлялся при компилировании самого себя, сам себя не меняет при перекомпилировании компилятора самим собой и устойчиво сохраняется? И при этом не ломал бы компиляцию старых версий компилятора при сравнении "0.2->0.1->0.1" и "0.1->0.1->0.1"?

                                                                                                  > Короче х.з., сомнительная проверка какая-то.

                                                                                                  Не более сомнительная, чем какие-нибудь юнит-тесты, которые проверяют только какие-то частные случаи. Это вполне успешно практикуется в том же GCC и Clang/LLVM
                                                                                                  Ответить
                                                                                                  • > чем какие-нибудь юнит-тесты, которые проверяют только какие-то частные случаи
                                                                                                    Помимо модульных тестов, существуют ещё интеграционные, функционяльные, системные, e2e и прочая, и прочая.
                                                                                                    Такая "проверка раскруткой", кстати, ни что иное как частный случай интеграционного тестирования.
                                                                                                    Ответить
                                                                            • Еще можно прокачивать навыки владения этим самым языком, реализуя компилятор на нем самом. Показать преимущества этого языка для написания компиляторов (а они наверняка будут, например всякие промежуточные представления для оптимизации всякой хуйни можно описать как некие DSL-и и описать некую алгебру над всем этим, реализовать как систему символьных вычислений, в рамках которой там что-то трансформируется и оптимизируется, формально доказывать корректность каких-то там оптимзиаций и проч.).
                                                                              Ответить
                                                                              • > Еще можно прокачивать навыки владения этим самым языком
                                                                                Пользователям языка от этого ни жарко, ни холодня.

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

                                                                                > формально доказывать корректность каких-то там оптимзиаций
                                                                                Доказывать инструментом корректность самого инструмента — бессмысленное действие.
                                                                                Ответить
                                                                                • > Доказывать инструментом корректность самого инструмента — бессмысленное действие.

                                                                                  Я так не думаю. Метаматематики с тобой бы не согласились.
                                                                                  Ответить
                                                                                • > Доказывать инструментом корректность самого инструмента — бессмысленное действие.

                                                                                  Не совсем. Доказывать что-то про текущую версию инструмента им же самим, конечно, бессмысленно. Но доказательство корректности текущей версии при помощи предыдущей имеет смысл. Тем самым мы получаем импликацию: если прошлая версия была заебись, значит и эта тоже. Мы не внесли каких-то новых проблем.
                                                                                  Ответить
                                                                                    • > а если проебались еще в версии 0.1а, то ой

                                                                                      Ну откатишься на неё, пофиксишь багу и перепруфаешь все остальные по цепочке...
                                                                                      Ответить
                                                                                      • > пофиксишь багу
                                                                                        но ведь её надо сначала задетектить поломав такую красивую круговую поруку
                                                                                        Ответить
                                                                                  • >> если прошлая версия была заебись, значит и эта то
                                                                                    какая индукция ))
                                                                                    Ответить
                                                                                    • > какая индукция ))

                                                                                      Ну да. Осталась тривиальная задача -- доказать начало цепочки. Но... нечем.

                                                                                      Тлен и безысходность.
                                                                                      Ответить
                                                                                • > Доказывать инструментом корректность самого инструмента

                                                                                  Если я всё правильно понимаю, в Coq это примерно так и работает.

                                                                                  Когда ты вводишь новую теорему, у тебя появляется новая вселенная, в которой она верна. Но пруфнуть эту теорему ты должен в старой. И никак не няооборот.

                                                                                  Иначе ты напишешь, что теорема верна потому что она верна. А это очевидно хуй-ня.
                                                                                  Ответить
                                                                                  • > Иначе ты напишешь, что теорема верна потому что она верна. А это очевидно хуй-ня.

                                                                                    Это тогда аксиома.
                                                                                    Ответить
                                                                                    • > Это тогда аксиома.

                                                                                      Не совсем. Аксиома -- это скорее такой аргумент с невидимым пруфом, который нам передали извне. Поэтому всё, что мы с её использованием надоказываем, окажется зависимым от истинности этого аргумента. Т.е. это опять всего лишь импликация, а не истина на ровном месте.
                                                                                      Ответить
                                                                        • Joe Armstrong, создатель Erlang, даёт рецепт бутстрапа:

                                                                          So then Mike did the virtual machine in C and I did the compiler in Prolog. Then the compiler compiled itself and produced byte-code and you put it in the machine and then we changed the grammar and the syntax and compiled the compiler in itself and came out with an image that would bootstrap and then we’re flying. We’ve lost our Prolog roots and we’re now a language.

                                                                          перевод:

                                                                          И тогда Майк сделал виртуальную машину на C, а я написал компилятор на Прологе. Затем компилятор скомпилировал самого себя и получился байт-код, который мы запустили в машину, а затем мы изменили грамматику и синтаксис и снова скомпилировали компилятор самим собой, и получился образ, который бутстрапился, короче мы взлетели. Забыли свои прологовские корни и сделали новый язык.
                                                                          Ответить
                                                                  • фиг знает, а бывают языки с гомоиконами, но при этом без gc?
                                                                    Ответить
                            • ебать, кто-то жарит ботами

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

                  А в нерезиновке можно жить только на съёмной хате около работы, по ощущениям.
                  Ответить
            • > релоцироваться в Москву

              С другой стороны, в москве можно стать няшкой. Так что плюсы таки есть, да.
              Ответить
          • Предлагаю МАССИВ из N (N = количество страниц в книге) ячеек. Когда текущий пользователь переходит со страницы i ня страницу i + 1 — увеличиваем знячение МАССИВ[i] ня единицу. Тогда количество пользователей, прочитавших меньше x страниц, будет равно МАССИВ[x] - МАССИВ[x + 1] (если нигде ня няпутала с единичками).
            Запрос за O(1), обнявление за O(1).
            Ответить
            • да, это самый заебатый вариант, если конечно в книге не будет дырок:)
              Ответить
              • Если там дырки, то считай, что i -- это не номер страницы, а количество прочитанных юзером страниц. И всё должно быть норм.
                Ответить
                • Да, это ещё решает проблему читания страниц не по очереди. Нам в принципе пофиг, какие страницы прочитал юзер, главное — сколько.
                  Ответить
                  • Тогда ещё какой-то set прочитанных страниц надо, а то он 2 раза прочитает и буфер переполнит.
                    Ответить
                      • Ну да, уменьшишь соответствующий счётчик и сотрёшь из сета.
                        Ответить
                        • а в базе как это красиво описать? никто ж не будет такое дрючить в клиентском коде в проде
                          Ответить
                          • Ну возьмёшь таблицу вместо массива/мапы да и всё. Алгоритм можно не менять.

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

                                        а если книга одна и в ней тысяча страниц и тысяча пользователей, то вообще заебись же


                                        файлик можно ммапнуть на память вероятно, и потечь

                                        ну правда его наверное нужно фсинкать на случай дизастера
                                        Ответить
                                          • В перле из коробки мапинг хеша в базу данных, кстати:)

                                            Но если у нас одна книга, то нам нужно просто сериализовать массив интов (и тут его логично ммапнуть)

                                            А вот если несколько, то да
                                            Ответить
                                            • > ммапнуть

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

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

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

                                                >Либо в памяти
                                                ну тогда сбрасывать в файл переодически
                                                Ответить
                                                • > Если же ты боишься дизазстера

                                                  А как можно его не бояться? Ты на 100% уверен, что твоя прога не крашнется, диск не посыпется и ось в ребут не уйдёт?
                                                  Ответить
                                                  • >А как можно его не бояться?
                                                    ну например можно писать не продакшен-реди код)

                                                    >Ты на 100% уверен
                                                    разумеется, нет) Но база только лишь сможет гарантировать тебе консистентность, а факт чтения страницы ты всё равно проибешь
                                                    Ответить
                                                    • > не продакшен-реди код

                                                      А нахуя тогда mmap? Десяток-другой тысяч книг в оперативку вполне влезут. При остановке сервера скинешь их на диск да и всё.
                                                      Ответить
                                                      • >А нахуя тогда mmap?
                                                        чтобы автоматом записать массив на диск, удобно, ну)
                                                        Ответить
                                                    • Давай лучше придумаем как заюзать в этой задаче какую-нибудь кафку.
                                                      Ответить
                                                      • И Эрланг. Эрланг я дам. Ещё нужен Снаут. Снаут я не дам.
                                                        Ответить
                                                        • Ну на эрланге через ETS такое элементарно пилится. Будет по процессу на каждую книгу. Масштабируется хорошо.
                                                          Ответить
                                                              • по процессу на книгу – это что за квантовый компьютер там понадобится?
                                                                Ответить
                                                                • Там "процессы" лёгкие, их можно тыщами запускать. Они даже легче тредов в классических языках.
                                                                  Ответить
                                                                    • > подобная лёгкость

                                                                      За счёт того, что это гринтреды, которые переключаются в юзермоде. Но при этом в эрланге всё иммутабельное, так что они друг другу ничего поднасрать не могут и ты можешь считать их процессами.
                                                                      Ответить
                                                                        • В говне изначально были реальные треды вроде, раз говнисты начали на их основе городить ещё одни... А вот те -- да, похожи.
                                                                          Ответить
                                                                      • ...и поскольку всё иммутабельно, то не нужно никаких GILов, и потому можно аккуратно разделить 100500 гринтредов на 32 ядра

                                                                        да?
                                                                        Ответить
                                                                        • > на 32 ядра

                                                                          А вот я не помню, умеет ли BEAM в SMP. Вполне возможно, что ты должен юзать горизонтальное масштабирование и поднять 32 ноды на такой тачке, раскидав свои 100500 процессов по ним.

                                                                          Ждём экспертный ответ от Снаута.
                                                                          Ответить
                                                                          • А тебе же по идее похуй с точки зрения кода поднимишь ты ноду на той же машине, или на соседней?
                                                                            Ответить
                                                              • Можно еще железку сделать

                                                                Пусть она хранит информацию во флеше, например
                                                                А к ней поступает команда INC [cellname], и она атомарна команда эта.

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

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

                                                      Не проебу! Я просто не покажу юзеру следующую пока коммит о текущей не пройдёт.
                                                      Ответить
                                                      • следующую страницу?

                                                        то есть листание книги у тебя будет в той же транзакции?
                                                        Ответить
                                                        • > то есть листание книги у тебя будет в той же транзакции?

                                                          А как ещё гарантировать "непроёб страницы" (не то чтобы это было важно)?
                                                          Ответить
                                                          • Хранить факт чтения в самом читателе
                                                            У факта GUID

                                                            ОС подымается, читатель говорит: Я прочел страницу 8, во GUID

                                                            ты проверяешь, что ты этот GUID уже обработал, и ничего не делаешь

                                                            А иначе увеличиваешь нужную ячейку
                                                            Ответить
                                            • Кстати, в перле есть пакет и для привязки масивов к файлу, но он очень наивный:
                                              https://perldoc.perl.org/Tie::File

                                              все скаляры хранит как строки (даже если это числа) и пустые места сжимать не умееет
                                              Ответить
                    • Пусть прочитанные страницы хранит клиент. Данные анонимны, мерятся ими не с кем, поэтому на возможный подлог похер. Отправляется на сервер ID читателя и количество страниц. Сервер проверяет старое значение страниц у этого клиента, что новое значение больше старого и не превышает максимального и инкрементирует все количества пользователей прочитавших Х страниц со старого по новое значение.
                      Ответить
              • Скорее частные суммы и теорема Ньютоня-Лейбняца Ньютона-Лейбница.
                Ответить
                • нихуя се!

                  Полина реально показала только что зачем программисту матан и вышка
                  Оказывается, это не легенды
                  Ответить
                  • чтобы обосрать статью из песочницы хабра?

                    но я б конечно долго думал над элегантным решением. то ли туп, то ли mvc мозги разъел
                    Ответить
          • З.Ы. Вместо второй мапы можно вообще вектор т.к. количество страниц в книге известно заранее.

            Полина первая успела (
            Ответить
        • Видимо, он имеет в виду:
          std::map<int, int> pageToUsersCount{};
          // ...
          int currentPage = 16;
          int loosersCount = 0;
          for (int page = 0; page < currentPage; page++) {
              loosersCount += pageToUsersCount.at(page);  // currentPage раз по O(logN)
          }
          std::cout << "Loosers count: " << loosersCount << std::endl;
          Ответить
          • вот так же можно было?
            //
            	std::map<int, int>::const_iterator iter = pageToUsersCount.cbegin();
            
            	while (iter != pageToUsersCount.cend() && iter->first <= currentPage)
            	{
            		loosersCount += iter->second;
            	}
            Ответить
            • Да:
              for (auto it = pageToUsersCount.cbegin(); it->first < currentPage; ++it) {
                  loosersCount += it->second;
              }

              Но это всё равно currentPage лишних итераций, плюс някладные расходы ня дерево (оно сильно ня дешёвое). Проще прямо тут заменить мапу на МАССИВ без частных сумм — асимптотика ня изменится, реальняя производительность повысится.
              Ответить
      • Могу предложить решение за О(1), но оно будет неэффективным по памяти.
        Ответить
      • может у него и вышло быстрее, зато он вроде проиграл по памяти.
        Ответить
    • > Есть некая электронная книга

      В каком формате? Что за книга? Сколько в ней страниц?

      > которую одновременно читает неограниченное количество читателей

      То есть, читателей может быть и отрицательное количество? А может быть больше, чем население земли?

      > Нужно сделать так

      Кому нужно? Мне вот не нужно.

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

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

      > Предложено наивное решение хранить в map<int,int>

      Кем предложено? Вот пусть тот, кто предлагал, и пердолится.

      > то в цикле нужно будет сделать 1000 итераций

      Подключи тарифный план помощнее в AWS, в чём проблема?
      Ответить
  • "PHP в моем С++"
    https://habr.com/ru/sandbox/151066/

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

    Смотрите. Существует достаточно простое действия сложения строк - конкатенация. Например

    t1 = "age";
    tableName = "human";
    name = "Andr";
    output = "SELECT * FROM " + tableName + " WHERE t1=" + t1 + " AND name=" + name;


    Поэтому было решено использовать метод, который был давно реализов в Си через println

    Чтобы узнать как с помощью функции ``printf`` реализовать функцию ``printf`` нажмите по ссылке
    https://habr.com/ru/sandbox/151066/

    Отдельный лайк автору за использование ООП
    https://github.com/c-e-dev/StringFormatting/blob/main/include/StringFormatting.h
    Ответить