this post was submitted on 04 Mar 2025
47 points (100.0% liked)
Programming
18656 readers
129 users here now
Welcome to the main community in programming.dev! Feel free to post anything relating to programming here!
Cross posting is strongly encouraged in the instance. If you feel your post or another person's post makes sense in another community cross post into it.
Hope you enjoy the instance!
Rules
Rules
- Follow the programming.dev instance rules
- Keep content related to programming in some way
- If you're posting long videos try to add in some form of tldr for those who don't want to watch videos
Wormhole
Follow the wormhole through a path of communities !webdev@programming.dev
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Package managers may distribute and manage libraries as dependencies, but may also manage tangential files like documentation, debug symbols, or source code for those libraries. They may also package build files to integrate into the build system, executable programs, or executable instructions. So it is a superset. Distributing libraries is the main, but only one aspect of them.
A packaged library is distributable through the package manager.
APIs, application programmable interfaces, are a standardization of callability - of names, parameters, returns, and behavior. Libraries may practically offer a non-standardized interface, or they may explicitly define an interface that they promise to follow (a more stable interface that you can depend on), or a library may implement an interface that is defined independently of a library.
With a standardized interface, multiple libraries can implement the interface, and they become inter-operable and inter-changeable.
OpenGL is an API that is defined as standards. The various graphics driver developers implement the interface. (Their driver makes the implementation available as libraries.) And there's even software-implementations that implement a translation layer rather than "directly" talking to hardware. This for example allows you to play Windows games on Linux where the Windows APIs get translated to Linux equivalent API calls or implementations.
Frameworks typically offer a broad[er] architecture and functionality of things. You do not interface with them, you integrate with them. For example, in C++ you may use the Qt framework for UI. Rather than using a UI library that you interface with and call, you implement UI the Qt way, and call Qt to render that. This does not only work for UI of course.