1. Pascal / Говнокод #5657

    +101

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    type Table = record
       f1, f2, f3, f4, f5: integer;
    end;
    
    procedure Sort(a: array of Table; L, R: integer; Shift: integer);
    begin
    // что-то там...
    // сравнение элементов:
       if pinteger(size_t(@a[i])+Shift)^ < pinteger(size_t(@a[j])+Shift)^
    end;

    Использование: Sort(a, 0, Length(a) - 1, size_t(@a[0].f4) - size_t(@a[0]))
    сортировка по полю f4.

    Запостил: chaoswithin, 13 Февраля 2011

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

    • Опа, и меня запостили!
      Chaos Optima, это ты, да?

      Объясняю - это был ответ на вопрос, как без шаблонов сделать сортировку массиву структур по любому полю типа integer.
      Ответить
      • Сложно не ошибиться хоть раз в параметре Shift

        И вообще я так понимаю этот код написан исключительно в академических целях
        Ответить
        • Ясен пень, я в реале не применяю его.
          В реале в таких местах я применяю что-то типа
          if Key(a[i]) < Key(a[j]) then...
          Key - функция, применяемая в качестве параметра.
          Ответить
    • Представьте себе программу из 10К строк такого рода. Врагу не пожелаешь её улучшать :)
      Ответить
      • показать все, что скрытоПоэтому Дельфи делает всё, чтобы такой код писать было тяжело.
        Ответить
        • >Поэтому Дельфи делает всё, чтобы такой код писать было тяжело.
          Как раз наоборот. Вам пришлось так написать из-за дельфей, в которых нет шаблонов лямбд.
          Ответить
          • Нет, Дельфи подталкивает меня к написанию передачи функции сравнения в качестве параметра.
            А это было написано для примера.
            Ответить
            • Зачем же надо было приводить говнокод качестве примера?
              Ответить
              • Чтобы показать, что теоретически это возможно.
                Ответить
                • Тоесть, говнокод на дельфе возможен? Что и требовалось доказать.
                  Ответить
                  • Да, если трактористы - женщины!
                    Ответить
                    • Только не становитесь на пути у поезда с криками: "Задавлю!"
                      Излишняя уверенность/упёртость весьма пагубно влияет на людей.
                      Ответить
                  • это всего лишь значит что язык говнаполон по Тьюрингу
                    Ответить
        • Не писать такой код обязан разработчик, а не среда должна ему мешать.
          Ответить
          • Сишник детектед. Опять вера в идеального программиста.
            Ответить
            • >Опять вера в идеального программиста.
              Даже у нас в захолустном городишке можно найти людей, обученных писать в соответствии с кодеконвеншеном, принятом на предприятии. Этому можно научить даже последнюю макаку.
              Ответить
            • >Опять вера в идеального программиста
              Поглядите вон на язык, который спроектирован специально, что-бы на нём не говнокодили - ВисуалБейсик. Он даже отступы за программиста расставляет. И какой код на этом языке получается?
              Ответить
              • > Поглядите вон на язык, который спроектирован специально, что-бы на нём не говнокодили - ВисуалБейсик

                Зачот
                Ответить
            • вообще этот пример наглядно показывает, что с задачей "мешать писать говнокод" Delphi не справляется. И не справится никогда, т.к. изобраетательность человека не имеет границ.
              Имея возможность работать с данными на низком уровне - всегда будет возможность написать какой-то извратный код.
              Ответить
              • Как раз то, что этот пример попал на говнокод, показывает, что справляется.
                На С, например, подобный код - норма, поэтому на С подобный код сюда бы не попал.
                Ответить
                • Вот к примеру Java справляется. потому, что тупо нет указателей:)
                  Но зато на нем не напишешь какие-то системные вещи.
                  Дельфи же все это позволяет. и то что на нем возможно писать подобный код - не является минусом языка, скорее наоборот, т.к. на дельфи можно писать как на языке высокого уровня, так и на низком уровне.
                  Ответить

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