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

    +2

    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
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    27. 27
    class Animal {
        name: string;
    
        constructor(name: string) {
            this.name = name;
        }
    
        speak() {
            print(`${this.name} makes a noise.`);
        }
    }
    
    class Dog extends Animal {
        constructor(name: string) {
            super(name); // call the super class constructor and pass in the name parameter
        }
    
        speak() {
            print(`${this.name} barks.`);
        }
    }
    
    function main() {
        let d = new Dog("Mitzie");
        d.speak(); // Mitzie barks.
        print(d.name);
    }

    Я вам принес нового говнокода для нового говнокомпилятора.... дамп в следующем посту

    Запостил: ASD_77, 12 Июля 2021

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

    • по традиции дамп го-на... https://pastebin.com/ZLpPbBnN
      и результат работы
      C:\temp>C:\dev\TypeScriptCompiler\__build\tsc\bin\tsc.exe --emit=jit C:\temp\1.ts 
      Mitzie barks.
      Mitzie
      Ответить
    • Дамп отсосу прыщеблядей!
      Ответить
    • там даже мульти-наследование есть.. тсс. только никому не говорите. достаточно поставить extends Animal (два раза) :)
      Ответить
    • вот скажите честно может ваш с++ такое вытворять

      class Cat {
          name: string;
      
          constructor(name: string) {
              this.name = name;
          }
      
          speak() {
              print(`${this.name} makes a noise.`);
          }
      }
      
      class Lion extends Cat {
          speak() {
              super.speak();
              print(`${this.name} roars.`);
          }
      }
      
      function main() {
          let l = new Lion("Fuzzy");
          l.speak();
      }


      а мой может :)
      Ответить
      • Ты такую херню в D можешь сделать
        Ответить
        • А в «Nim» так нельзя.
          Ответить
        • кому нужен Д?
          Ответить
        • а может твой D вот такую бодягу сделать?

          class B
          {
             k = 0;
          }


          а мой может
          Ответить
          • Я вообше против классов и против всякого ебучего ООП с наследованиями. Лучше сделай вывод типов по Хиндли-Милнеру в своем язычке. И чтоб с гомоиконностью!
            Ответить
            • я не в курсе что такое гомоинконность...
              Ответить
              • Быть этого не может!
                https://en.wikipedia.org/wiki/Homoiconicity
                Ответить
                • гомоиконоборчество!
                  Ответить
                • Ого, я думал это понятие j123123 придумал owo.
                  Ответить
                  • Он внёс значительный вклад в популяризацию этой идеи.
                    Ответить
                    • j123123 вообще сторонник единнообразия и абстракции, как я понял

                      Ему не нравится, что в крестах есть отдельно код, отдельно шаблоны, отдельно данные.

                      Всё должно быть единообразно
                      Ответить
                      • Именно поэтому он за Фон Неймановскую рахитектуру?
                        Ответить
                    • Гомоиконный евангелист
                      Ответить
            • легко. уже есть unit типы и conjunction типы. можно делать тип2 = type тип 1 & тип 0; будет тебе вывод чего-то там
              Ответить
            • Тогда это получится не JS, а F# или OCaml.
              Ответить
    • ну когда же.. когда же ко мне придёт мировое признание?? :)
      Ответить
      • А можешь редактировать AST так, чтобы там хуйню какую-нибудь сделать новую?
        Ответить
        • а ты думаешь как получается код? из AST? первый шаг это дополнить недостоющие части в AST ...
          class B
          {
             k = 0;
          }


          переходит в AST вида

          class B
          {
             k: number;
             constructor()
             {
               this.k = 0;
             }
          }
          Ответить
          • Это очень круто и пездато. А можешь сделать бесконечный компайл-тайм цикл, который бы не давал проге скомпилироваться?
            Ответить
            • Кстати, полезно сделать питушню для задания не только кодогенерации, но и своего свинтаксиса.
              Синтаксис для преобразования новых конструкций в старые, например.
              Ответить
        • или ты про babel?
          Ответить
          • Бабел вроде бы реализует всякие новые штуки с помощью старых стандартов экмаскрипта, чтобы даже на моём компьютере джаваскрипт работал.

            Я скорее про штуки, которые позволяют дописать себе паттерн-матчинг или ещё что-нибудь интересное, используя сам этот язык. Чтобы были «гейские святые изображения».
            Ответить
            • патерн матчинг в LLVM уже есть но скорее не тот что ты хочешь
              Ответить
      • ну у нативного компилятора ts точно будут фанаты, как и у любой реализации которая работает быстрее майкрософтовского говна

        напиши статью на медиуме, опубликуй в hackernews
        Ответить
        • Зачем какой-то заедушный ``medium'', пусть вкидывает на HN ссылку на этот тред прямо!
          Ответить
      • Все пять пользователей нашего сайта твои достижения уже признали.
        Ответить

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