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

    +1

    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
    namespace Ifaces {
        interface IFoo {
            foo(): number;
        }
    }
    
    class Cls1 implements Ifaces.IFoo
    {
    	foo(): number
    	{
    		print("Hello");
    		return 1;
    	}
    }
    
    function main()
    {
    	const cls1 = new Cls1();
    	cls1.foo();
    
    	const ifoo: Ifaces.IFoo = cls1;
    	ifoo.foo();
    }

    Алилуя. я вам интерфейсы принес... узрите теперь дампик

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

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

    • а вот и дампик подошел https://pastebin.com/HnB8bPqu
      Ответить
    • и результат работы тем кто не в теме

      C:\temp>C:\dev\TypeScriptCompiler\__build\tsc\bin\tsc.exe --emit=jit C:\temp\1.ts 
      Hello
      Hello
      Ответить
    • тебя самого не заебало?
      Ответить
    • default implementations для методов интерфейсов будут?
      Ответить
      • будут во второй инкарнации. если до этого меня не зае..т это все....
        Ответить
        • хотя нет. я хочу сделать что бы любой класс можно было к интерфейсу приравнять и и прога сама сделает инплементацию интерфейса
          Ответить
      • только зачем это надо если это тупо abstract class
        Ответить
    • Добавляй ссылки на своё репо. Будет хоть какое-то SEO. Можно даже что-то писать как перекатный_петух.
      Ответить
      • ага. всем любителям поговнять код - всем сюда https://github.com/ASDAlexander77/TypeScriptCompiler
        Ответить
        • А где там у тебя юнит-тесты?
          Ответить
          • ctest папка c кодовым названием tests путь tsc/test/tester/tests/
            Ответить
            • А почему б тебе там Travis CI не настроить?
              Ответить
              • пробывал делать workflow но у нее не хватает места на мой билд из-за LLVM .. а переходить на пакет пока обломно
                Ответить
                • У тебя там пропатченный LLVM?
                  Ответить
                  • –— LLVM крути, говорю.
                    —– Который из них?
                    –— Пропатченный такой.
                    —– Да у вас там всё пропатченное!
                    –— Ну самый пропатченный!
                    Ответить
    • Ну вот, настал момент, когда я уже не могу сказать: «И в „Nim“ такое есть»...
      Ответить
      • с этим надо что-то делать и добавить интерфесы в "ним"
        Ответить
        • Добавишь?

          Кстати, там, наверное, уже такое добавили, ведь там такая метушня есть!
          Ответить
          • я думал ты добавишь
            Ответить
            • Я не знаю ни «Nim», ни языка, на котором написан комплиятор «Nim»...

              Надо бы подучить и сделать абстрактный класс.
              Ответить
      • А в "D" есть:
        https://dlang.org/spec/interface.html
        Ответить
        • Зато в "D" нельзя пижнять «AST», там надо пижняться с миксинами (черви такие). А в «Nim» можно писать новые части «Nim» на «Nim».
          Ответить
          • Чтобы нормально ебаться с AST, нужен однородный синтаксис, типа скобочной хуйни из (LISP), а в этом вот "Nim" я такого синтаксиса не наблюдаю.

            > https://nim-lang.org/faq.html

            > Nim provides memory safety by not performing pointer arithmetic

            Для системного языка это из серии "сразу нахуй". https://nim-lang.org/docs/gc.html к тому же там GC есть, а это анскильно.
            Ответить
            • Ну, что ж, видно придётся мне ещё раз разрушить аргументы анскильных лалок в пух и прах. Сектанты вообще много аргументов приводят, но я их все загружаю в массив и помножаю на ноль. Начнём-с, так уж и быть.

              > Чтобы нормально ебаться с AST, нужен однородный синтаксис, типа скобочной хуйни из (LISP), а в этом вот "Nim" я такого синтаксиса не наблюдаю.

              В «Nim» AST представлено нодами, которые някают мокросы и что-то там высирают. А в твоей сиштушне так можно?? А??? А???? Ну вот и всё, первый аргумент я с лёгкостью слил.

              > > Nim provides memory safety by not performing pointer arithmetic
              > Для системного языка это из серии "сразу нахуй".

              Вообще-то это наоборот круто и классно. Если нужно подрочить поинтер, то просто скастуй его в int и делай с ним что хочешь. Это правильный подход.

              В крайнем случае просто определи оператор `+` для поинтера и наклади его в «poleznyi_funkcyi.nim».

              > к тому же там GC есть, а это анскильно

              Это мы уже обсирали: Гц можно отключить и вручную управлять памятью «как в сишке», Но тогда отвалится половина стандартной библиотеки, которая использует всякие там слайсы и что-то типа того. Но они там, где вручную управляют памятью, и не нужны.
              Ответить
              • > В «Nim» AST представлено нодами, которые някают мокросы и что-то там высирают.

                Это хуйня. Надо чтоб синтаксис напрямую как AST был.

                > А в твоей сиштушне так можно??

                Сишка - говно. Надо чтоб гомоиконность. Но и Nim тоже говно

                > Если нужно подрочить поинтер, то просто скастуй его в int и делай с ним что хочешь.

                А не нарушает ли это правила strict aliasing? А что там по перфомансу будет? Вот например если у меня поинтер на double и поинтер на int, из-за этого strict aliasing-а компилятор предполагает, что указатели эти не указывают на один регион памяти, и за счет этого можно делать оптимизацию. Nim так может оптимизировать? Думаю, вряд ли, если надо что-то в int кастовать. Кстати, что еще за "int" такой? У него на 32-битной платформе будет размер 32 бит, а на 64 - 64 бит? Может тут нужен какой-то uintptr_t?

                > Это мы уже обсирали: Гц можно отключить и вручную управлять памятью «как в сишке»

                А если мне надо чтоб вообще без хипа? Так можно?
                Ответить
                • > А если мне надо чтоб вообще без хипа? Так можно?

                  Можно свой аллокатор написать, вроде бы.

                  А в остальном ты меня разъебал.
                  Ответить

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