At one time, computer "programs" were simply written in "programming languages". The programmer did much of the work for everything that happened. Later, supplemental software "libraries" became popular. Libraries are self contained repositories of code that provide a specific set of functions. Library code is typically written in the same language.
Sometimes these libraries provided common and necessary functions, such as math libraries. Who wants to write the low level code that makes 2 + 2 come out to 4 every time you need a simple addition problem solved? Easier just to include a math library that has all that figured out. Or sometimes libraries are more about providing exotic features, such as decoding a video codec.
Such libraries were typically incorporated into the programming environment to provide a core level of functionality so that the application programmer did not have to re-invent every wheel. This way the application programmer was free to focus on the custom aspects of the project at hand, and provide a value added service by incorporating a custom layer of programming code on top of the core code and libraries at his/her disposal. Sometimes these code libraries were purchased on a per project basis. The cost was far outweighed by how much time they saved a programmer.
The project's design and flow were still purely at the discretion of the programmer. He could use the programming language and the library code any way he wished.
The concept of "libraries" has evolved into "frameworks". Libraries are used to make specific types of functionality available. Frameworks do that too, but frameworks do more than that. Frameworks provide a foundation upon which an entire application can built. The framework is as much a part of the project as the underlying language upon which the framework is built. The application developer will spend most of his time interacting with the framework's code, moreso than the framework's underlying language.
To put frameworks in laymen terms:
- Frameworks provide tools for doing repetitive tasks with the least amount of effort
- Frameworks provide tools and methods to minimize the opportunity for mistakes
- Frameworks provide tools that promote a consistent and efficient way of coding
- Frameworks provide methods for extending the framework itself, so that new functionality can be added without having to start from scratch
- Frameworks provide tools for solving common problems, such as security in web applications
The bottom line is that frameworks save a lot of time. The programmer can concentrate on things like business logic and not worry so much about the lower level nitty-gritty.
Frameworks lend themselves readily to this process of building web applications and is essentially how all modern web based applications are built. Applications built with frameworks are much more maintainable -- a VERY important aspect of web development that often gets overlooked.
So budding young developer's ... its good to know a few languages, but make sure your finished product is built with a Framework.
@author Hal