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?

  • FizzyOrange@programming.dev
    link
    fedilink
    arrow-up
    4
    ·
    6 hours ago

    It’s not hard and fast but:

    • API is the actual interface for the functions, not the implementation. It’s possible for one API to be implemented by more than one library.
    • Library is a bunch of code provided together. It might have more specific meaning depending on the language.
    • A package is something you can install. It’s pretty much synonymous to library since most packages contain one library.
    • A framework is just a library that dictates a lot about how your app works.

    Apart from API they don’t really have strict definitions so they’ll be used interchangeably and differently depending on the language.