I have some familiarity with C++, and concepts like compiling and linking static and dynamic libraries, which is what I understand as collections of code that simplify doing certain things.

But then I get confused in certain cases, for example, why is OpenGL considered an API? Why is it necessary to use other libraries like GLAD, freeGLUT or GLFW to interface with OpenGL?

And then other languages have this thing called package managers, like pip, node, cargo, and vcpkg for c/c++, where you install these packages that get used like libraries? What’s the difference?

Finally the ones I understand the least of are frameworks. I keep hearing the concept of frameworks like Angular for js and a lot of stuff that’s too alien for me because I’m still unfamiliar with web development.

So for example, I’m using the raylib library for a small game project I have. I link the .lib or .dll file to my executable file so I know I’m unambiguously using a library. How come there’s also Cocos2dx which is a framework? What’s the distinction?

  • pixxelkick@lemmy.world
    link
    fedilink
    arrow-up
    12
    ·
    12 hours ago

    API is just the term for “the surface of something that’s been exposed to you to interact with”

    Libraries, websites, tools, etc all have APIs, it’s just the general term for “this thing has something we can interface with”

    A library is a bunch of code someone else wrote.

    A package is when you use a tool to bundle up a library to make it easier to distribute to other people, usually adding a version # to it, and adding it to so.e popular package manager network so millions of people can find your package easier.

    A framework is a term for a very big cohesive library, with an advanced api, that does a whole bunch of different things that all have stuff in common. Basically a firework is a huge library that provides many many different things to do that all have stuff in common.

    Game Engines for example are frameworks.

    A library of tools to make a bunch of different website components that all work well together and have stuff in common is a framework.

    Etc etc. It’s a bunch of code that doesn’t do anything in it’s own, but provides a bunch of modular pieces you can assemble into something.

    Think of a framework like buying a big box of lego. It’s not anything specific yet, but you can assemble all those pieces together to make infinite different things.

    • Scrath@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      5
      ·
      12 hours ago

      I think the best explanation as to the difference between a library and a framework that I’ve heard so far is this:

      A library is something you use to do a specific thing in your project. A framework is something you build your entire project around.

      • Gremour@lemmy.world
        link
        fedilink
        arrow-up
        6
        ·
        11 hours ago

        I would describe a framework as something that you embed your logic into, letting it orchestrate the flow for you. You can use several frameworks in one project.