1. Python / Говнокод #26461

    +2

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    6. 6
    Вы напишите
    x != x
    или
    import math
    math.isnan(x)
    ?

    Запостил: 3_dar, 03 Марта 2020

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

    • я напишу на тебя президенту россии, хам
      Ответить
      • ватник познает рюзкей миръ
        день пятый: письма сралину
        Ответить
        • я вчера три видеообращения на коленях записыал, а чего добился ты?
          Ответить
          • отвечаешь уеёбку? пойдешь в игнор
            Ответить
          • https://twitter.com/Fbrmndt_/status/1194254631200792576

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

        именно по-этому я за 386 без сопроцессора
        Ответить
        • Для него соф-тварного плавающего питуха придумали. Библиотеки для всех ЯП включали мумулятор сопроцессора.
          Ответить
          • оче быстро работал, я уверен
            Ответить
            • >софтварный плавающий питух
              >ОЧЕ быстрая работа

              http://govnokod.ru/24276
              Ответить
    • import numpy as np
      np.isnan(x)

      ещё
      Ответить
    • конечно второе
      во-первых я не асемблерщик и не мамин хакир, чтоб завязываться на NaN != NaN.
      Во-вторых
      class Foo:
          def __eq__(self,_):
              return False
      
      
      x = Foo()
      
      print(x == x) # False
      Ответить
      • > print(math.isnan(x))
        TypeError: must be real number, not Foo
        Ответить
        • Именно поэтому я за «Fail fast».
          Ответить
          • А я за
            <p>Сумма Вашего заказа <b>Notice: must be real number, not Foo at <code>/home/p/petuz/sait/index.php</code> at line 9241</b> рублей</p>.
            Спасибо
            Ответить
    • >напишите

      str(x) == "NaN"
      Ответить
      • А вдруг это объект с перегруженным str?
        Ответить
        • А вдруг это и есть строка "NaN"?
          Ответить
        • ну так он и не намбер тогда!
          Ответить
          • А откуда я знаю, что он не намбер? Постоянно проверять? Статическую типизацию же не завезли...
            Ответить
            • Это же питон. Если покрытие тестами не выявило проблемы, значит, все нормально.
              (при условии, что x - промежуточный результат, который тест не может явно задать как строку "NaN" с перегруженным str)
              Ответить
    • Поэтому я за золотой_хуй
      local x = 0/0
      print(((pcall(function() local t = {[x] = 0}; end)) and "not nan") or "nan" ) --nan
      ---------------------
      local x = 1/0
      print(((pcall(function() local t = {[x] = 0}; end)) and "not nan") or "nan" ) --not nan
      ---------------------
      local x = 1/1
      print(((pcall(function() local t = {[x] = 0}; end)) and "not nan") or "nan" ) --not nan
      ---------------------
      Ответить
      • Ключ таблицы не может быть NaN?
        Ответить
        • Нет. В ошибку выпадает. Поэтому и исключение юзается.
          Ответить
      • Мы не обязаны знать язык для геймеров. Переведи на «PHP».
        Ответить
    • Забавно что в ideone и в luademo в на lua 5.3.3 0/0 показывает -nan
      https://ideone.com/9qc58G
      притом что в интерпретаторе 5.3.1 который у меня на компе показывает nan
      https://i.imgur.com/TaL0C3C.png
      Ответить
      • Минус нан? Не знал, что такое существует.
        Ответить
        • Я спецом поставил ту же версию что и Ideone написал 5.3.3 https://i.imgur.com/Qc7m9oL.png
          И lua demo 5.3.5 https://i.imgur.com/Jsgc6ro.png
          Результаты: Везде просто nan
          Вывод: Ideone и lua demo пиздят. Это не луа! Это эмуляция lua на ПХП!
          Ответить
          • И еще в этих онлайн псевдо интерпретаторе можно проставить унарный минус спокойно и конвертить -nan в nan и наоборот.
            В православных lua -nan вообще не существует и - на nan не работает и будет вечным nan.
            Ответить
            • И я забыл пометить все зеленым
              Ответить
            • Нагуглил. Это настоящий «lua». В «lua», «luajit» etc. плавающий питух может работать по-разному:
              https://github.com/gvx/Ser/issues/4
              Ответить
          • Именно поэтому я за «PHP».
            Ответить
      • Смотрите, какой чудесный проект нашёл:
        https://www.programming-idioms.org/idiom/55/convert-integer-to-string/1315/lua

        Гуглишь, как выполнить какую-нибудь простую операцию на каком-нибудь ЯП, а он её же показывает на других ЯП. Очень удобно, когда что-нибудь нужно перевести на «PHP».
        Ответить
        • Таблички:
          https://www.programming-idioms.org/about#about-block-language-coverage
          https://www.programming-idioms.org/about#about-block-all-idioms
          https://www.programming-idioms.org/about#about-block-cheatsheets

          Реальные примеры хеллоуворлдов:
          https://www.programming-idioms.org/idiom/1
          Ответить
        • >my $s = "" . $i;
          лол, нахуя
          Ответить
        • Ну, по хорошему, там еще должны быть не только чистые языки, но и фреймворки. Не буду же я под Qt писать std::to_string.
          Ответить
      • Версия другая. У меня так
        Lua 5.2.4  Copyright (C) 1994-2015 Lua.org, PUC-Rio
        > print(0/0)
        -nan
        Ответить
        • Похоже, что в интерпретаторе царский код, и результат (nan или -nan) зависит от того, с какими ключами его скомпилировали.
          Ответить
          • Именно. Вроде от того каким компилятором его скопилили.
            Ответить
        • Cygwin или Linux?
          Ответить
          • Ubuntu 18.04 на WSL2, то-есть обычный Linux на вротуалке.
            А вот на винде древняя луа, пришла с ЗБС
            Lua 5.1.5  Copyright (C) 1994-2012 Lua.org, PUC-Rio
            > print(0/0)
            nan
            >
            Ответить
            • Lua, собранная mingw, выдаёт nan, как и ожидается.

              А вот «luadist с батарейками» и «luaforwindows» и ещё какая-то, собранная MSVC, выдают -1.#IND (без понятия, что это означает; возможно, дробная часть INDEFINED или типа того).
              Ответить
              • Вот тебе реально нехуй делать сейчас, как собирать луа под мингв и проверять минус наны?
                Ответить
                • Это же Икарус. Будь луа под спектрум, он бы его спаял, и там проверил бы.
                  Ответить
                  • Нагуглил про #IND — это INDEFINITE:
                    https://stackoverflow.com/questions/19107302/in-lua-what-is-inf-and-ind

                    Да, похоже, что #IND и #INF всплывают в интерпретаторе, собранном «MSVC», а -nan — в интерпретаторе, собранном «Cygwin» и под «Linux».
                    Ответить
                    • >собранном «Cygwin» и под «Linux».
                      gcc назвается
                      Ответить
                      • «Mingw» — это тоже «gcc», но в нём просто nan безо всяких минусов.
                        Ответить
                        • gcc в «Cygwin» и под «Linux» создают либу под POSIX, а в Mingw -- либу под Win32API, без слоя эмуляции

                          Зырь импорты у этой твоей lua:
                          Ответить
                          • Похоже, что в «Луа» решили сделать минимальную переголову, поэтому выводит она то, что выводит стандартная библиотека сишки (CRT, libc).

                            Вообще про минимальный обвес где-то писали.
                            Ответить
                            • Так это вроде часть идеологии lua: луа умеет всего по минимуму. Всё, что она может мочь, она делегирует в стдлибу на си.

                              Потому луа очень простая, и очень легко собирается любыми сями (чуть ли не c99).

                              Где есть си -- там есть луа
                              Ответить
                              • А «PHP»?
                                Ответить
                                • https://medium.com/@erinus/how-to-build-php-on-windows-a7ad0a87862a

                                  дохуя сложно
                                  Ответить
                              • И именно поэтому «Lua» — стандарт де-факто для встраиваемого языка программирования в гейдеве.
                                Ответить
                                • Однажды я встречал джавускрипт в гейдеве. Было страшно.
                                  Ответить
                                • Не только, он еще встроен в менеджер "Far", например, и даже внезапно:
                                  https://developer.ibm.com/technologies/systems/tutorials/l-embed-lua/

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

                                  Кстати, TCL тоже довольно легко ембеддится.
                                  https://wiki.tcl-lang.org/page/How+to+embed+Tcl+in+C+applications
                                  Но описать на нем, к примеру, дерево это ой.
                                  Ответить
                                  • TCL, как и bash — это принципиально скриптовые языки.

                                    Вот Lua, Python, Ruby, PHP, JS — это компилируемые (в байткод) языки, но динамическая питузация, рефлексия, эвалы делают из них скриптовые.
                                    Ответить
                                    • Именно по причине их скриптовости можно делать всякие инересные вещи, и не париться о перформансе: он там всегда хувый.

                                      Штольман по этой причине и проклял тсл, по причине хувого перформнса.

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

                                          >4096
                                          А как же хьюдж пейджс?
                                          Ответить
                                      • Штольман вроде проклял создателя Tcl за то, что тот создал стартап и начал коммерциализироваться.

                                        Хотя rms мог проклять за шо угодно
                                        Ответить
                                        • >rms мог проклять за шо угодно

                                          А кто не так давно выступал в Микрософте?

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

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