Кресты / Говнокод #27677 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
а давайте сравним размеры скомпилированного EXE под Винду и Убунту и посмотрим сколько лет надо ждать когда это Г будет собранно в ЕХЕ файл

windows: (+pdb)  
tsc.exe   159M
tsc.pdb  872M

ubuntu: (+debug info)
tsc               1290M (из них debug info 1153M)


а вы знаете сколько лет мне надо ждать что бы скомпилять такие файлы? особенно на убунте?

И какой "ур-д" предлагал мне использовать убунту а не винду :)?

сабж в теме

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

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

  • Это совершенно неважно т.к. твой тупскрипт один хрен никому нафиг не нужен будет, учитывая что с оригинальным тупскриптом он совместим не будет
    Ответить
    • Не расстраивай нашего Человека Дождя
      Ответить
    • тебе тошнить еще не надоело? бедные твои семейные... им наверно хуже чем на круизном лайнере 🙂
      Ответить
      • Семейных тут. Это форум программистов
        Ответить
        • Да. Здесь нету семейных. Женился — вали нахуй с «Говнокода». Хочешь на «Говнокод» — разводись.
          Ответить
          • Исключение только для тех, кто женился в "секонд лайф" или на нарисованной анимешной пони
            Ответить
                • Дакимакура не бумага, аниме не карандаш.

                  Меня не анимали, только мозг порвали.
                  Ответить
      • А нафиг? У него же AOT, а не JIT, кишкам LLVM в сконпелированном экзешнике делать нечего.
        Ответить
    • Рано или поздно это должно было случиться: компилятор на electron.
      Ответить
      • Ну у нас уже есть тулы на go, которые высирают .exe файл на 200 мегабайт
        Ответить
      • А, так это конпелятор столько весит, а не сконпелированная им экзешка.
        Ответить
  • Дварфы влинковываются, а pdb нет?
    Ответить
  • Ты кстати в курсе про наличие флага оптимизации "-Os" для малого размера бинарника?
    Ответить
    • мне не надо оптимизация - мне нужна мгновенный запуск программы в дебаге
      Ответить
  • аахахахах
    Председатель Правительства РФ Михаил Мишустин записал видеообращение к участникам международного форума Kazan Digital Week. В рамках обращения он рассказал об утверждении Правительством второго пакета решений для ускоренного развития IT-индустрии страны и о том, что в стране должна появиться отечественная платформа-аналог GitHub.
    Ответить
  • В поезде "Ужгород - Лисичанск" проводник в вагоне занимался оральным сексом со спящим пассажиром. Соответствующее заявление было зарегистрировано в полиции, сообщил журналист Александр Рудоманов. Там сказано, что проводник занимался сексом с пассажиром "неестественным способом". Заявитель проснулся и обнаружил, что работник Укрзализныци "делает ему минет". Пассажир резко оттолкнул проводника от себя, как оказалось проводница была в состоянии легкого алкогольного опьянения. По данному заявлению было возбуждено уголовное производство по статье "хулиганство"
    Ответить
      • Сначала проводник, после того как пассажир «резко оттолкнул» — стала проводницей.
        Ответить
        • А хулиганство приписали пассажиру за то что толкается?
          Ответить
      • В 2021-м году прогрессивному человеку стыдно задавать такие вопросы. Ты бы еще спросил какой они расы
        Ответить
        • Садись, два F по интерсекциональной теории. В прогрессивной Америке это в любой анкете спрашивают.
          Ответить
          • Потому что это страна белого шовинизма, но woke работает над этим
            Ответить
            • Ты не сечёшь в прогрессивной матчасти. Если убрать эту графу, угнетатели уйдут от ответственности же!
              Ответить
            • В шумерском языке — языке абсолютно свободных людей — мужчины и женщины даже произносили большое количество слов по-разному.

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

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

              Лютеране обожают унисекс, их мужчины без стеснения раздеваются друг перед другом и обычно не носят бороды и усов, подобно бритоголовому альбиносу-ВУЗовцу из Рашки.
              Ответить
              • Ходят слухи, что в раннем праиндоевропейском языке различались активный и пассивный рода (в другой терминологии одушевлённый и неодушевлённый), и активный потом разделился на мужской и женский, в разных диалектах по-разному.
                Ответить
                • Интересно, что во французском и в балтийских языках есть мужской и женский, а в нидерландском — одушевлённый и неодушевлённый («общий» и «средний»). Но в нидерландском, кажется, всё было наоборот: в него пришли три рода, а потом мужской и женский объединились в одушевлённый.
                  Ответить
                    • Чем меньше рейтинг этого комментария, там ТО САМОЕ интереснее.
                      Ответить
                    • Чем меньше рейтинг этого комментария, тем больше ТО САМОЕ менее интересно. (Другими словами, это вариант для быдла, которому кроме пивка, "РНР" и тупых фильмов про ментов больше ничего не интересно).
                      Ответить
      • Киевские таксисты под видом полицейских вымогали деньги у наркодилеров
        Ответить
  • ​​Стажер-разработчик бэкенда/Москва

    Работодатель: Яндекс ― крупнейшая российская поисковая система и портал.

    Уровень: Стажер

    Список обязанностей:
    ▪Работа с высоконагруженными отказоустойчивыми системами и интересными инженерными задачами.

    Требования:
    ▪Знание языка программирования C++/Python/Java/Go;
    ▪Отличное знание алгоритмов и структур данных;
    ▪Опыт разработки в Unix или Linux (приветствуется).

    Примерный уровень ЗП:
    Не указано

    Контакты: https://yandex.ru/yaintern/
    Ответить
    • >>>"Знание языка программирования C++/Python/Java/Go"

      Непонятно, зачем Яндекс насилует своих программистов третьесортными языками, когда для Elasticsearch есть прекрасный клиент, написанный на PHP: https://github.com/elastic/elasticsearch-php

      Или эти хрюшки-повторюшки услышали когда-то краем уха, что Google якобы использует Python и Java, и решили повторить за ними только потому, что "эта крута"? Чтобы быть, "как Гугал"?
      Ответить
      • А чем плох "GO"? Многие переходят на него с "PHP" и нахваливают.
        Ответить
        • Для любого, даже наипримитивнейшего JSON надо заранее прописывать какие-то структуры и строго их придерживаться. При каждом обращении к базе данных надо указывать какой-то ебучий "контекст", из-за чего код выглядит донельзя засранным лишними буквами. Копипастя код из Интернетов, каждый раз просираешься с компиляцией из-за забытых импортов, и потом по пять минут ищешь в справочнике, чё там надо прописать в импортах, чтобы скопипащенный код заработал. Ну, и масса других мелких неудобств. В Go невозможно взять и легко внести какое-то дополнение в код; сначала следует всё подготовить - импорты, структуры, объявления переменных, и т.д.
          Ответить
    • > ▪Отличное знание алгоритмов и структур данных;
      >> https://yandex.ru/yaintern/int_01
      >> Одна из задач на интервью обычно полегче — нужно будет реализовать простой алгоритм. Другая может потребовать знание основных структур данных. Сложные алгоритмы и структуры данных вам не понадобятся. Мы оцениваем в первую очередь навык программирования, умение реализовать придуманный алгоритм и найти ошибки в своём коде.

      Какая шизофрения )))
      Ответить
      • Отличное знание основных алгоритмов
        Ответить
          • Ну хуй знает, merge sort, quick sort, binary search?
            Ответить
            • > binary search
              Слабо написать из головы (без предварительного зазубривания) на бумажке без off by one?
              Ответить
              • // [b; e)
                int* search(int* b, int* e, int x) {
                    while (b < e) {
                        int* m = b + (e - b) / 2;
                        if (*m == x)
                            return m;
                        if (x < *m)
                            e = m;
                        else
                            b = m + 1;
                    }
                    return NULL;
                }
                Как-то так? Или я где-то обосралась?

                З.Ы. Блин, на бумажке легче было бы, там весь код видно, а не 5 строчек как в окошке ГК.

                s/NULL/e/ конечно же.
                Ответить
                • > s/NULL/e/ конечно же.

                  Блин, а "e" ведь испорчено. Надо оригинальное куда-то прикапывать ;(

                  С NULL'ом было корректнее.
                  Ответить
                  • > Блин, а "e" ведь испорчено. Надо оригинальное куда-то прикапывать ;(
                    Мы вам перезвоним.
                    Ответить
                    • > Мы вам перезвоним.

                      Вот так всегда, пишу правильный код, а потом исправляю на какую-то хуйню ;(
                      Ответить
              • Без подготовки разумеется проебусь на единичку
                Ответить
                • Подтверждаю. Я как-то забыл в вычислении среднего элемента прибавить начальный индекс и долго думал, что же пошло не так.

                  А Борманды на собеседовании будут над нами потешаться!
                  Ответить
                  • Хм, кстати, в [b; e) представлении lower_bound и upper_bound вообще красиво выглядят. Никаких лишних проверок в реализации.
                    Ответить
                  • > А Борманды на собеседовании будут над нами потешаться!

                    Скажи им: покажите как правильно.
                    И они сами обосрутся.
                    Ответить
              • бля что там писать... нашел середину сравнил. пошел влево или вправо. рекурсией делается елементарно
                Ответить
              • Наверное как-то так. Код не проверял компилятором и не запускал
                // [1] [2] [3] [ ]
                //  ^           ^
                // start       end
                
                int *bsearch(int *start, int *end, int val)
                {
                  if(start == end)
                  {
                    return NULL;
                  }
                  if (start+1 == end)
                  {
                    return start;
                  }
                  int *mid = start + (end - start) / 2;
                  if (*mid == val)
                  {
                    return mid;
                  }
                  if (*mid > val)
                  {
                    assert(mid+1 != end);
                    return bsearch(mid+1, end, val);
                  }
                  // (*mid < val)
                  assert(start != mid);
                  return bsearch(start, mid, val);
                }
                Ответить
                • Да вроде норм... Логика такая же как у меня выше, только на рекурсии вместо цикла.

                  З.Ы. А у тебя не попутано направление сортировки? Ты в правую половину уходишь если *mid > val, хотя судя по картинке перед кодом надо в левую.
                  Ответить
                  • Да, там надо if (*mid < val)
                    т.е. если середина меньше чем значение, надо искать в куске от середины+1 до конца
                    Тут сложно все ньюансы учесть, в какой-нибудь мелочной хуйне обязательно ошибешься
                    Ответить
                    • Именно поэтому я за coq.

                      > в какой-нибудь мелочной хуйне обязательно ошибешься

                      Ну гост исо об этом и намекает 😉
                      Ответить
                  • радуйся я тебе написал

                    #include <iostream>
                    #include <functional>
                    
                    typedef int number;
                    
                    enum class Comparison : number
                    {
                        LessThan = -1,
                        EqualTo = 0,
                        GreaterThan = 1
                    };
                    
                    template <typename T> auto compareComparableValues(T a, T b)
                    {
                        return a == b ? Comparison::EqualTo : a < b ? Comparison::LessThan : Comparison::GreaterThan;
                    }
                    
                    template <typename T> auto compareValues(T a, T b) -> Comparison
                    {
                        return compareComparableValues(a, b);
                    }
                    
                    template <typename T> using Comparer = std::function<Comparison(T, T)>;
                    
                    template <typename T, typename U>
                    auto binarySearchKey(const std::vector<T> &array, U key, std::function<U(T, number)> keySelector, Comparer<U> keyComparer,
                                         number offset = 0) -> number
                    {
                        if (array.size() <= 0)
                        {
                            return -1;
                        }
                    
                        auto low = offset;
                        auto high = array.size() - 1;
                        while (low <= high)
                        {
                            auto middle = low + ((high - low) >> 1);
                            auto midKey = keySelector(array[middle], middle);
                            switch (keyComparer(midKey, key))
                            {
                            case Comparison::LessThan:
                                low = middle + 1;
                                break;
                            case Comparison::EqualTo:
                                return middle;
                            case Comparison::GreaterThan:
                                high = middle - 1;
                                break;
                            }
                        }
                    
                        return ~low;
                    }
                    
                    template <typename T, typename U>
                    auto binarySearch(const std::vector<T> &array, T value, std::function<U(T, number)> keySelector, Comparer<U> keyComparer, number offset = 0)
                        -> number
                    {
                        return binarySearchKey<T, U>(array, keySelector(value, -1), keySelector, keyComparer, offset);
                    }
                    
                    template <typename T> auto identity(T x, number i) -> T
                    {
                        return x;
                    }
                    
                    int main()
                    {
                        std::vector<number> a;
                        
                        a.push_back(1);
                        a.push_back(2);
                        a.push_back(3);
                        
                        auto index = binarySearch<number, number>(a, 2, &identity<number>, &compareValues<number>);
                        
                        std::cout << index;
                    
                        return 0;
                    }
                    Ответить
                      • потом напишу с БД. о интересная идея написать тоже самое для моего компилятора
                        Ответить
                    • а на доске написать можешь фломастером?
                      Ответить
                        • > что еще за "-7"

                          return ~low, судя по всему. Видимо отрицательный оффсет -- это сообщение об ошибке.
                          Ответить
                        • хи хи... прикинь это когда когда данных которых нет в массиве .. они тебе выдает ближайший индекс с минусиком... опа опа...
                          Ответить
                          • > comparison of integer expressions of different signedness
                            > твой компилятор гавно

                            Какой багор )))

                            З.Ы. Интересно, получится ли тут триггернуть UBца?
                            Ответить
                            • Думаю нужно взять достаточно большой массив.

                              Ключевое в этом говне вот это:
                              low + ((high - low) >> 1)

                              Он вычитает, потому скорее всего не переполнится.
                              Ответить
                                  • Крестовик бы и енум не писал.

                                    Есть же std::strong_ordering

                                    > std::midpoint (since C++20)
                                    can be simply implemented as return a + (b - a) / 2; 
                                    on common platforms. However, such implementation is not guaranteed to be portable,
                                    because there may be some platforms where creating an array with number of elements greater than PTRDIFF_MAX is possible,
                                    and b - a may result in undefined behavior even if both b and a point elements in the same array.

                                    Ну да, именно поэтому я метод полусумматора.
                                    Ответить
                                    • Ну что за странная платформа, где нельзя сэмулировать число, в которое входит максимальная длина массива? Надуманная хуй-ня какая-то.

                                      З.Ы. А, они видимо про знаковость ptrdiff_t... Ну да, логично, в него меньше положительных чисел чем в size_t входит.
                                      Ответить
                                • > Просто обычно пишут (high + low) /2 и закономерно обсираются.

                                  У меня там указатели были, их не сложить...
                                  Ответить
                                  • > У меня там указатели были, их не сложить...

                                    Можно кастануть в size_t и тогда сложить
                                    Ответить
                                    • > кастануть в size_t

                                      Хотя тут правильней кастовать в uintptr_t
                                      Ответить
                            • Там еще такой забавный момент:
                              if (array.size() <= 0)
                              {
                                  return -1;
                              }

                              Почему не просто "if (array.size() == 0)"? Разве бывают массивы с отрицательной длинной?
                              Ответить
                              • > Почему не просто "if (array.size() == 0)"? Разве бывают массивы с отрицательной длинной?

                                Я бы тоже так написал.

                                Бывают глюки сишко- кресто- компилятора, и разные проёбы signed/unsigned когда очень большое становится очень маленьким и наоборот.
                                Ответить
                      • ну или добавь #include <vector> а то не все компиляторы одинаково умные
                        Ответить
                    • Ты опять забыл в ISO залогиниться
                      Ответить
          • метод монте-кало? сортировка пузырьком? решение линейных уравнений :)?
            Ответить
            • Решение задачи Коши для обыкновенных дифференциальных уравнений и их систем методом Рунге-Кутта
              Ответить
            • сортировка мочевым пузырьком
              Ответить
              • монет-кала

                за каким номиналом сам полезешь, а какой мать достать попросишь?
                Ответить
  • кто нить раскажет что это значит "струкуры данных"? и как их можно знать
    Ответить
    • Мы в вузе изучаем питон, никакиз структур данных у нас нет. Значит это хуйня ненужная.
      Ответить
      • Как все настоящие программисты знают, единственной полезной структурой данных является массив. Строки, списки, структуры и наборы — это все разновидности массивов и их можно рассматривать как массивы без усложнения вашего языка программирования.
        Ответить
        • Набор — это не разновидность массива, ты чего
          Мапа кстати тоже
          Ответить
          • Это все разновидности массивов т.к. реализуется через массивы. И вообще, это копипаста с http://lib.ru/ANEKDOTY/non_pas.txt
            .
               В  последнее  время  в  прессе муссируются структуры данных.
            Абстрактные типы данных, структуры, указатели,  списки и строки
            стали популярны в определенных кругах.  Вирт, сосунок,  написал
            даже  целую книгу  ("Алгоритмы + Структуры данных = Программы",
            Prentice Hall, 1976  [русский перевод -  изд. "Мир", 198?]),  в
            которой утверждает, что можно написать программу на базе струк-
            тур  данных,  не  используя  другие  способы. Как все настоящие
            программисты  знают,  единственной  полезной  структурой данных
            является массив.  Строки,  списки, структуры и наборы - это все
            разновидности массивов и их можно рассматривать как массивы без
            усложнения  вашего языка приграммирования.  Хуже  всего с этими
            хитрыми  типами  данных  то,  что  вы  должны  их  описывать, а
            настоящие  языки  программирования,  как мы все знаем, обладают
            возможностью неявного задания типа, основанного на первой букве
            6-символьного имени переменной.
            Ответить
    • Это например "массив", "хэш-таблица", "односвязный список", "двусвязный список", "xor-связный список", графы там всякие, деревья.
      Ответить
  • Данный текст - трактат о структуре изначального.

    Осознавая структуру изначального, преодолеваешь подсознательные барьеры.

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

    Люди общаются между собой подсознательно, в том числе телепатически.

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

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

    В любом случае, познание изначального вызывает преодоление подсознательных барьеров.

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

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

    Необходимо прочитать трактат семь раз.

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

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

Семь раз отмерь — один отрежь, guest!

    А не использовать ли нам bbcode?


    8