1. JavaScript / Говнокод #27929

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    class Node<T> {
        v: T;
        k: string;
        next: Node<T>;
    }
    
    function main()
    {
        let n = new Node<number>()
        n.next = n
        n.k = "Hello";
        n.v = 10.0;
        print("done.");
    }

    Вы не поверите как сложно сделать простые вещи в LLVM. встречаем рекурсивные типы :)

    Запостил: ASD_77, 06 Января 2022

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

    • начинаем высказываться... всех просим :)
      Ответить
    • А у тебя GC какой?
      Ответить
      • https://hboehm.info/gc/
        Ответить
        • > A garbage collector for C

          Во J123123 охуеет ))
          Ответить
          • «Boehm garbage collector» тут обсуждали с 2010-го года.
            Ответить
            • можно подумать есть выбор
              Ответить
              • можно подумать можно подумать
                Ответить
              • Выбор есть всегда. Например, можно сделать нормальный ЯП, без GC.
                GC вообще говно и не нужно
                Ответить
                • напиши мне - я внедрю
                  Ответить
                  • Привет.

                    Внедри пожалуйста RC типа эппловского ARC или типа С++ного смарт поинтера вместо GC.

                    Спасибо.
                    Ответить
                    • Чтобы конструкция из топика научилась крашиться и утекать?
                      Ответить
                    • > ARC
                      Худшее из двух миров, ей-богу. И оверхед, и течки.
                      Ответить
                      • Зато детерминированный, если аккуратно юзать. А gc, как правило, вообще неуправляемы.

                        З.Ы. Интересно, можно ли "аккуратно юзать" заэнфорсить на уровне типов? Иммутабельности ссылок в принципе хватает для защиты от колец. Но может что-то более тонкое можно?
                        Ответить
    • не понимаю почему на четвертой строчке нету "?" или чего-то такого, что говориоло бы об опциональности "next"
      Ответить
      • можешь так написать... но "next": рекурсивный поэтому он всегда поинтер.. так что без разницы что ты там пишешь
        class Node<T> {
        v: T;
        k: string;
        next: Node<T> | undefined | null;
        }
        Ответить
        • и что, что поинтер? В TS же null safety
          Ответить
          • у меня пока только TS без "null safety" :)
            Ответить
            • У меня в Си нет никакого "null safety", поэтому я за Си!

              Почему вообще так все против NULL? Отличный хак же
              Ответить
              • А у тебя в контроллерах есть
                (*(void(*)())NULL)();
                ?
                Ответить
                • На stm'ках это не прокатит, там в нуле адреса точки входа и вершины стека, если память меня не подводит.

                  Надо ещё одну индирекцию. Ну и стек потом как-то сбросить.

                  Так что проще документированным способом ребутнуть.
                  Ответить
                  • Да, где-то то ли gost, то ли ISO, то ли PolinaAksenova писал, что нулевой адрес и nullptr (0) - это разные вещи.
                    Ответить
                  • В реальном режиме x86 по нулевому адресу лежит вектор прерывания номер ноль. Чтобы повесить свой обработчик, нужно разыменовать ноль.
                    Ответить
                    • Чтобы установить обработчик деления на ноль нужно разыменовать ноль. Тлен и безысходность.

                      Именно поэтому я за lidt.
                      Ответить
                      • lidt — это такой нерусский шоколад?
                        Ответить
                        • Х.з., у меня только х86 да лазеры гуглятся... filter bubble как он есть.
                          Ответить
                          • Марка шоколада «Lindt».

                            Я просто вспомнил, как «Нидлесс» перемешал и взболтал слова «лямбда», «Lamoda», «блямба» и ещё какие-то.
                            Ответить

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