• xiii@lemmy.world
    link
    fedilink
    arrow-up
    7
    ·
    edit-2
    2 days ago

    I was working on a C code base with classes, inheritance, and polymorphism, all done by hands and macros.

    Something like

    typedef struct s_some_class {
        void (*method)(this *s_some_class);
    } t_some_class;
    

    Overall, learning C was the best enabler in my whole career. For instance I was learning Python by tinkering with CPython VM, so when I see these ‘WAT’ quircks I know exactly what’s up.

    • bestelbus22@lemmy.worldOP
      link
      fedilink
      arrow-up
      3
      ·
      2 days ago

      Interesting, how did they do inheritance? Something like void *super? Also why not switch to CPP if you wanna do OOP?

      • xiii@lemmy.world
        link
        fedilink
        arrow-up
        2
        ·
        17 hours ago

        In general, ‘classes’ declarations were done with macro. I don’t remember the exact code — something akin to

        BEGIN_CLASS(A, Parent);
        CLASS_MEMBER(a...)
        END_CLASS();
        

        The project had started before C++ existed, and the switch would be too costly. It’s not just OOP part, also reflection mechanism with bindings to the homemade scripting language, and multi-platform UI library. It was a gem of its time.

          • xiii@lemmy.world
            link
            fedilink
            arrow-up
            2
            ·
            13 hours ago

            Revolutionary technologies of the '80 make me appreciate modern programming languages and especially tooling much more.