200 likes | 407 Views
Evolution of Programming Languages. Effect On Programmers Productivity. Productivity. ‘The measure of outputs produced from a given set of inputs’. Introduction.
E N D
Evolution of Programming Languages Effect On Programmers Productivity
Productivity ‘The measure of outputs produced from a given set of inputs’
Introduction • The main motivation for introducing programming languages based on different paradigms is to increase the productivity of programmers.
Introduction • Different problems require different solutions, so using languages that are more suited to particular tasks increases productivity.
Introduction • Some areas that influence productivity include: • Speed of code generation • Approach to testing • Effect on maintenance • Efficiency of solution once coded • Learning curve (training required)
Speed of code generation • This is a standard method of measuring productivity. • Programmers are often paid per line of code. This leads to inefficient code generation.
Speed of code generation • Languages that increase the speed of code generation must increase the productivity. • Using a language based on the most suitable paradigm will make code more efficient and will result in a more elegant final solution.
Approach to Testing • The testing of individual modules is where the largest productivity gains can be made. • Functional and Object-Oriented languages force programmers to write self-contained functions and objects.
Approach to Testing • These functions or objects can be thoroughly tested, and re-used. It is also possible to create new objects that inherit attributes from the original. • This reduces the amount of testing needed, increasing productivity.
Approach to Testing • The creation of test data is vital. • Languages that can encapsulate their data will reduce the magnitude of the test data sets. • Therefore, the process of encapsulation will also increase productivity.
Effect on maintenance • Maintenance is the ability of code to be modified to meet changing requirements. • Locating the code that needs changing is often the hardest task, so languages that force the programmer to develop modules assist in this process.
Effect on maintenance • Object oriented languages do this well, functional and logic languages provide the facility but it is not enforced.
Efficiency of solution once coded • Efficiency of software is measured in the speed it performs tasks. • How efficiently can a language communicate with the hardware?
Efficiency of solution once coded • Imperative languages have evolved as the Von Neumann hardware architecture has evolved. • So essentially, languages of a non-imperative paradigm have a disadvantage when trying to work with the hardware resources.
Efficiency of solution once coded • However, although hardware is not really designed for these other paradigms, it is now capable of executing applications at such a speed that efficiency concerns are of a reduced importance.
Learning curve • Logic and Functional languages are not widely used. They are often only used in specialised areas. • It is difficult to learn languages from new paradigms; the learning curve is steep.
Learning curve • Object oriented languages, however, are very popular and are a large part of the educational and commercial sectors. • Many programmers are experiencing and learning OOP techniques early on, so these languages have gained wide acceptance.
Conclusion • It is difficult learning a new language, and even harder when also having to learn a new paradigm. • However, it is in our interest to examine and learn new ways of doing things, and this may even increase our productivity.