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

    +68

    1. 1
    2. 2
    3. 3
    public ConcurrentHashMap(int initialCapacity, float loadFactor, int concurrencyLevel) {
         if (initialCapacity < 0)
           throw new IllegalArgumentException();

    - unsigned?
    - ЖАБАПРОБЛЕМЫ.

    А ещё это не портируется на 64хбитные платформы с 32хбитным intом.

    Запостил: LispGovno, 04 Ноября 2012

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

    • > unsinged
      Зато в сишечке можно получить хешмап на 4294967295 записей =)
      Ответить
      • Для 64хбитных платформ для серьёзных задач вполне реально.
        Зато Java на одну запись больше даже на 64битной платформе может легко не потянуть.
        Ответить
        • Как говорит старый боян:

          Java нажрётся памяти и будет тихонько спать в уголке свопе.
          Ответить
        • >Для 64хбитных платформ для серьёзных задач вполне реально.
          А ну-ка расскажи нам поподробней про свои "серъезные задачи".
          Ответить
          • Считать из файла массив на 8 гиг, перевернуть его, и вывести четные элементы.
            Ответить
            • Сначала отфильтровать четные, а потом перевернуть.
              Ответить
              • А если они все четные?
                Ответить
                • Таккое не возможно. Первый элемент всегда нечетный, а второй четный, а третий снова не четный и тд.
                  Ответить
                  • > Первый элемент всегда имеет нечетный номер
                    Я где-то писал про номер? ;)

                    В данной очень серьезной задаче рассматривается четность самих чисел а не их позиций в массиве.
                    Ответить
                    • Тогда можно поступать как в хацкеле - не хватило памяти на бесконечный список, то как бы сам мудак, иначе выводишь результат.
                      Ответить
            • >8 гиг
              допустим intов, тогда вполне хватит signed int
              Ответить
              • Ну если есть голова, тогда хватит и пресловутых 640Kb для того чтобы это сделать.
                Ответить
                • И наверное даже 640 байт, если постараться.
                  Ответить
                  • Если массив элементов, размер которых больше 640, то нет.
                    Ответить
    • > А ещё это не портируется на 64хбитные платформы с 32хбитным intом.
      Жабий int не зависит от разрядности платформы. Он всегда 32 бита. А long всегда 64.
      Ответить
      • Именно. Поэтому если вдруг на 64хбитной платформе захотелось воспользоваться мапой или массивом с числом элементов не вмещающихся в 32 бита - жаба сразу идет в лес, в отличии от истинно кросплатформенных крестов (там size_t).
        Ответить
        • Эх, что же мне делать без массивов длиной 2 миллиарда...
          Ответить
          • Очевидно заводить массивы массивов или уйти на нормальный язык.
            Ответить
            • Ну тот подход с помощью которого написана ConcurentHashMap - сегмент+смещение вообще-то позволяет легко обойти это ограничение.

              Другое дело - такие мапы за десять лет особо никому и не нужны.
              PS. Можешь написать Дагу письмо, и попросить чтобы он в V8 сделал поддержу long. Чтоб хватало.
              Ответить
          • Массив длиной 2 лярда - КРЕСТОФИЧА!
            Ответить
            • http://xkcd.com/619/
              Ответить
              • показать все, что скрытоРусский же есть бля
                http://xkcd.ru/619/
                Ответить
                • Англосаксоны не одобрят.
                  Ответить
                  • Я не понимаю, тут все - сторонники того, чтобы выкладывать на непонятном английском то, что есть на понятном русском? Я правильно понимаю, что это психическое заболевание (стремление всё шифровать) вызвано теми же бациллами, что и крестоблядство?
                    Ответить
                    • > сторонники того, чтобы выкладывать на непонятном английском
                      Оригинал и все такое.

                      > крестоблядство
                      Не крестоблядство, а крестопринципы.
                      Ответить
                    • Имхо 90% xkcd - сакс и на русском, и на инглише.
                      Ответить
            • Очевидно, если ты не решаешь сложные вычислительные задачи, требующие больших объёмов данных в памяти при вычислениях, то это не значит, что все их не решают. Это лишь означает, что ты их не решаешь.
              Ответить
              • Задачи? Какие например?
                Сложные вычислительные задачи, требующие больших объёмов данных в памяти при вычислениях обычно решаются MapReduce.

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

      гляжу я на все эти coin'ы и с ужасом жду момента, когда нецелованная java сбыдлошарпится как последняя шлюха
      Ответить
      • Что-за coinы?
        Ответить
        • https://wikis.oracle.com/display/ProjectCoin/Home и прочие рюшечки для жабы7
          Ответить
      • >это не жабапроблемы, это жабапринципы
        Вот теперь как это называется? Если на другие языки кто-то начнет гнать - я тоже так скажу. Что-за двойные стандарты?
        Ответить
        • Теперь буду писать: Это не крестоблядство, а крестопринципы.
          Ответить
      • Ну вот нужна мне работа с битовым представлением или беззнаковое нужно для работы с шифрованием, кодированием, crc и прочими хешами, или вдруг в функцию передать положительный аргумент\длинну. И тут нам жаба вставляет палки в колеса. Правильные жабапринципы
        Ответить
        • если беззнаковое умещается в знаковое, юзаем. если не хватает int'а, юзаем long
          а все битовые операции с int'ом работают как обычно, плюс есть спецклассы

          кроссплатформенность (без перекомпиляции для целевой платформы) такая кроссплатформенность
          Ответить
          • >все битовые операции с int'ом работают как обычно, плюс есть спецклассы
            Что-то тут от нас скрывают? Зачем создали спецклассы, если там и без них все хорошо? Тк не все без них хорошо?
            Ответить
            • > спецклассы
              Имеется в виду арифметика произвольной точности (BigInteger, BigDecimal). Для байтолюбства есть беззнаковый сдвиг >>>, остальное вроде не ложно чинить особых препятствий.
              Ответить
              • нет, я имел ввиду http://docs.oracle.com/javase/1.4.2/docs/api/java/util/BitSet.html и все такое
                Ответить
        • > длинну
          Ответить
    • Я смотрю жабисты не умеют смеятся над своим инструментом:
      + 9
      - 7
      Ответить
      • Нет. Просто ты идиот. Но мне почему-то не смешно от осознания сего факта.
        public interface Map<K,V> {
            // Query Operations
        
            /**
             * Returns the number of key-value mappings in this map.  If the
             * map contains more than <tt>Integer.MAX_VALUE</tt> elements, returns
             * <tt>Integer.MAX_VALUE</tt>.
             *
             * @return the number of key-value mappings in this map
             */
            int size();
        Ответить
        • >If the map contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE
          Ахахах. Плюсую. Какие фундаментальные кастыли. :D
          Ответить
          • Причем тут ConcurrentHashMap?
            За нарушением общепринятых стандартов и соглашений - это к Майкрософт. Которая к слову делала свою "улучшенную" яву.
            Ответить
            • Можно и отдельным говнокодом запостить, ага.
              Ответить
            • Да, когда майкрософт запилила свою яву, не имеющую главного недостатка настоящей явы, то они туда добавили туже проблему c size_t, к сожалению.
              Ответить
        • > If the map contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.

          Мда. Это не смешно. Тут плакать нужно. Это же ёбаный нахуй сука пиздец! Нет чтобы кинуть исключение когда в мап будут сувать MAX_VALUE+1 элемент, так они замутили этот говнофикс на получении количества...
          Ответить

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