Frameworks
Software that helps you write other software
According to Wikipedia (retrieved 2018-12-27), a Software Framework (itemization added):
- is “an abstraction in which software providing generic functionality can be selectively changed by additional user-written code, thus providing application-specific software”.
- “provides a standard way to build and deploy applications.
- “is a universal, reusable software environment that provides particular functionality as part of a larger software platform to facilitate development of software applications, products and solutions.
- “may include support programs, compilers, code libraries, tool sets, and application programming interfaces (APIs) that bring together all the different components to enable development of a project or system.”
Three distinguishing features (still from Wikipedia (retrieved 2018-12-27))
-
inversion of control: In a framework, unlike in libraries or in standard user applications, the overall program’s flow of control is not dictated by the caller, but by the framework.
-
extensibility: A user can extend the framework – usually by selective overriding – or programmers can add specialized user code to provide specific functionality.
-
non-modifiable framework code: The framework code, in general, is not supposed to be modified, while accepting user-implemented extensions. In other words, users can extend the framework, but should not modify its code.
Examples
C++:
- Unreal Engine (game engine)
- QT: (Gui development)
Java:
- Spring, and Spring Boot (web app development)
Python:
- Flask (web app development)
- Django (web app development)
- Pygame (game development)