1. Java / Говнокод #27661

    +2

    1. 1
    https://codeforwin.org/2018/05/10-cool-bitwise-operator-hacks-and-tricks.html

    10 cool bitwise operator hacks and tricks every programmer must know

    Right shift (>>) operator is equivalent to division by 2
    Want to divide a number by 2 quicky. Here you go, use bitwise right shift operator to divide an integer by 2. Each right shift operation reduces the number (operand) to its half.


    Просто напомню, что Jawa-петушки вручную заменяют деление/умножение на 2 на сдвиг, потому что анскильный компилятор так не умеет.

    Запостил: OCETuHCKuu_nemyx, 12 Сентября 2021

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

    • Тред отсоса Jawa-блядей.
      Ответить
    • javac вообще ничего не умеет. Джит может что-то наджитить потом
      Ответить
      • Да уж, бестолковый компилятор, бестолковый jawa-программист... Незавидная участь у jawa-бля́дей.
        Ответить
      • При этом заменять деление сдвигом умели компиляторы разных ЯП уже в восьмидесятые, а возможно и ещё раньше. Причём это было не многомегабайтное говно, как «Йажа». Подозреваю, что ещё «Фортран» умел, надо проверить.
        Ответить
        • Так и Йажа умеет. Эти питумизации в «Hotspot». Как и замена деления на копзтанту умножением.
          Ответить
    • Джаву часто критикуют, но нужно помнить, что не каждая компания может позволить себе профессионального программиста на серьезных языках, да и не всегда в таком программисте есть смысл.

      Некоторые задачи (вроде несложного веб магазина или формочки для обратной связи) вполне может решить и т.н. "jawa программист".
      Ответить
      • > Джаву часто критикуют

        И за дело!

        > что не каждая компания может позволить себе профессионального программиста

        Достаточно среднего ума, чтобы 1: не кодить на jawa, 2: писать без ошибок тривиальный код.

        > на серьезных языках

        Да, jawa – кастрированный, игрушечный язык. Jawa недалеко ушла от блоксхем для операторов интерпретаторов.

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

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

        > Некоторые задачи (вроде несложного веб магазина или формочки для обратной связи) вполне может решить и т.н. "jawa программист".

        Ну, кому-то же нужно делать всякую грязную и неблагодарную работу: не программистам на «Nim» или «С++» же)
        Ответить
      • > Некоторые задачи (вроде несложного веб магазина или формочки для обратной связи) вполне может решить и т.н. "jawa программист".
        ПХП-макака тоже может и это будет дешевле. Поэтому я за «PHP»
        Ответить
    • Лол, а я просто юзаю операторы согласно семантике, а конпелятор сам разбирается.
      Ответить
      • Справедливости ради нужно сказать, что ручная замена умножения на сдвиг это последнее, что нужно сделать при устранении ботлнеков в коде на джаве.

        Можно для начала не создавать на каждую итерацию цикда 48_000 объектов, или что там обычно джавушки делают
        Ответить
        • Можно для начала поюзать bool вместо Boolean...
          Ответить
          • У тупых жавашков это разное, азаза.
            Ответить
            • Ты даже не представляешь НАСКОЛЬКО разное в джаве массив интов и лист интов:)
              Ответить
              • Честно говоря, мне и не надо. Я же не лаборант, проводящий анализ кала на коки.
                Ответить
            • Там ещё с какой-то версии завезли автобоксинг/автоанбоксинг, так что не знаешь, где у тебя нативные типы развернутся в объекты. Надо байткод смотреть.
              Ответить
              • Там где в обжект засунул -- там и развернутся. Он же не просто так ради прикола боксит, а потому что по-другому никак.
                Ответить
            • https://ideone.com/gO9swy

              Integer i1 = new Integer(1);
              Integer i2 = new Integer(1);
              System.out.println("i1 > i2: "+(i1 > i2));
              System.out.println("i1 >= i2: "+(i1 >= i2)); // true
              System.out.println("i1 == i2: "+(i1 == i2)); //false


              >= сравнивает значения, поэтому вернёт true.

              А == сравнивает адреса объедков, поэтому вернёт false. Какой багор )))
              Ответить
              • Именно поэтому ты за Integer.valueOf()?
                Ответить
                • Ага.

                  Почему так некокококонсистентно сделали? Тогда уж надо добавить сравнение адресов через < и > (не знаю, зачем оно нужно в «Йаже», которая не позволяет работать с указателями, но раз уж их начали сравнивать, то трудно остановиться).
                  Ответить
                  • Сравнение адресов на < в языке с гц -- это прямой путь в ад.
                    Ответить
                  • Кстати, а valueOf для чисел больше 128 тоже ведь разные инстансы для одного числа может вернуть?

                    З.Ы. It may cache values outside of this range. Вот и приехали, implementation-defined в этой вашей джаве. Т.е. сравнивать числа по адресу никогда нельзя, даже с valueOf.
                    Ответить
                    • никогда нельзя ничего по адресу сравнивать
                      вообще

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

                но потом вспомнил, что в Рэкете есть
                equal?
                и есть
                eq?


                попробуй без шпаргалки разобраться, кто про что
                Ответить
                • Боюсь, что даже если прочитаю документацию, через пару дней забуду, какой для чего, и снова полезу в шпаргалку.

                  Если бы было eqval и eqadr, я бы запомнил.
                  Ответить
                  • бля, сольвер какой-то нашёлся

                    https://docs.racket-lang.org/rosette-guide/ch_essentials.html#%28part._sec~3aquerie s%29
                    Ответить
                  • а, ещё есть
                    eqv?
                    Ответить
              • Ахахахахахп, тупые долбоебы
                Ответить
        • Бедные Jawa-петушки. Они даже структуру на стеке выделить не могут.
          Ответить
          • Даже за счёт escape analysis?
            Ответить
            • Сделать его может только джит
              Ответить
              • Кстати, а почему AOT конпеляторы загнулись? Было же что-то от авторов gcc.

                Слишком много динамических настроек в XML'ках, из-за которых структура проги непонятна до старта и хрен что оптимизнёшь?
                Ответить
                • Не нужно пытаться оправдать анскильность Jawa-петухов сложностью XML-ек.
                  Ответить
                  • Если на сишке писать всё подряд через индирекции, управляемые через XML, то там тоже нихрена не оптимизнётся.
                    Ответить
                • В современной жаве уже нет XML, там DI реализуют кодом.
                  Но там всё равно ест рефлексия, а это всё равно медленно.

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

                  Я видел как питух через ORM заполнял несколько десятков тысяч сложных объектов, и это реально создало боттлнек. Правда это было 15 лет назад
                  Ответить
                  • Хм, т.е. теперь во время конпеляции можно узнать что какие интерфейсы реализует?

                    > ORM

                    ORM'ы ведь тоже со "статической" конфигурацией на собачках, а не из базы или каких-нибудь хмлок? Тогда можно заранее всё разобрать и сгенерить код без рефлектора.
                    Ответить
          • Уже могут.

            Туда завели record (ворованный сишный struct).

            https://govnokod.ru/27041#comment586191
            Извиняйся перед джавашнёй, анскилябра.
            Ответить
        • > не создавать

          А вот тут сложный вопрос...

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

          Вполне возможно, что создать-и-выбросить будет лучше по пирфомансу.

          З.Ы. Блин, вот у вас там памятью управлять сложнее чем в крестах... Надо всякие умные статьи читать.
          Ответить
          • Нужно еще профильнуть через JMH.

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

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

            Лазить за ними в говнокеши тоже не бесплатно.
            Ответить
    • Jawa-программист написал программу:
      https://imgur.com/a/k7HPKIj
      Ответить
    • А какие конпеляторы «Йажи» вообще бывают? Есть «gcj» (из «gcc», хотя интеграция там слабая), есть «ecj» (я его даже в «Андроиде» запустил. Что ещё есть помимо «javac»?
      Ответить
      • Пусть «ASD_77» напишет нормальный.
        Ответить
        • К сожалению, Jawa – это тупорылая абоминация для простофиль в мире программирования. Пытаться исправить косяки (которые являются неотъемлемой частью Jawa) равносильно тщетным потугам виндузятника выпилить телеметрию или яблобляди убедить техподдержку восстановить его «iCloud» с «iTunes».
          Ответить
    • https://www.meme-arsenal.com/memes/484a9da04097756d005c346b5b1f34db.jpg
      Ответить
    • https://pbs.twimg.com/media/Ca7gpbbVIAAXe_Z?format=jpg&name=medium
      Ответить
      • Именно поэтому я за «PHP».
        Ответить
      • А как же "♂ + С++ = ♀"
        Ответить
        • в смылсе с++ превращает мужика в бабу? Срочно переходи на Tупоскрипт
          Ответить
          • Поздно, ты писал тайпскрипт на крестах.
            Ответить
            • то есть у него пизда раскрылась, но член не спрятался?

              это тот мужик, про которого лолечка рассказывал? [self fuck]?
              Ответить
              • > [self fuck]

                какой objc ))
                Ответить
                • class Pervert:
                      def fuck(self):
                          return fuck(self)
                  Ответить
                  • Это питон?
                    код не рабочий
                    Ответить
                    • Почему не рабочий?
                      Ответить
                      • class Pervert:
                            def fuck(self):
                                return self.fuck()

                        гне?
                        Ответить
                        • Вообще-то тогда будет рекурсия и код зависнет.
                          Ответить
                          • А я думал ты этого и хотел

                            а блядь

                            я не понял шутку просто)))

                            теперь понял. Ты написал ровно то, что и планировал написать
                            Ответить
                • Поляки в неформальной обстановке называют «селфи» словом «samojebka»:
                  https://en.m.wiktionary.org/wiki/samojebka
                  Ответить
                  • > в неформальной обстановке
                    – под пледиком?
                    Ответить
        • Шутка про сиси-плюс-плюс?

          https://aliexpress.ru/item/4000368662890.html
          Ответить
    • jawa просто знает, что среди 8 миллиардов устройств может найтись некоторое не на двоичной логике
      Ответить

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