Table 1.
Percentage of leading FPLs taught.
Figure 1.
Genealogy of Programming Languages.
Table 2.
Evaluation Framework.
Table 3.
No. of assembly language instructions for one instruction of the considered FPLs.
Figure 2.
(Code Listing 1) Keywords in Fortran. (Code Listing 2) Different syntax for stack and heap memory objects.
Figure 3.
Default initialization rules in Java.
Table 4.
Orthogonality of FPLs.
Figure 4.
(Code Listing 4) Dynamic type binding. (Code Listing 5) Accidently converting integer to list type in Python.
Figure 5.
Free and discriminant union.
Figure 6.
Autoboxing and unboxing.
Table 5.
Strongly Typed.
Figure 7.
(Code Listing 10)Coercion with demotion in C++. (Code Listing 11) Referential transparency and side effects.
Figure 8.
Functional side effects.
Figure 9.
(Code Listing 13) Mixing of operators in boolean expressions. (Code Listing 14) Division operator in C++.
Figure 10.
Scope overriding and short-circuit evaluation.
Table 6.
Enforceability of Good Habits.
Figure 11.
Memory leakage and dangling reference.
Figure 12.
Array index-out-of- bounds, and pointer arithmetic problems.
Table 7.
Security issues in FPLs.
Figure 13.
Swap function in C++.
Figure 14.
Feature multiplicity.
Table 8.
Feature Uniformity for FPLs.
Figure 15.
“Hello World” program in Pascal and Ada.
Figure 16.
“Hello World” program in Modula-2 and Java.
Figure 17.
“Hello World” program in C# and Fortran.
Figure 18.
“Hello World” program in C and C++.
Figure 19.
“Hello World” program in Python.
Table 9.
Console Input and Output.
Table 10.
Effort required for writing simple program.
Table 11.
Demand in Industry.
Figure 20.
Multithreading in Python and Java.
Figure 21.
Exception propagation and cascade aborts.
Figure 22.
Packages in Java and C#.
Figure 23.
Generics in Java and C++.
Table 12.
Contemporary Features.
Table 13.
Criteria for transition cost (‘N’ is total considered languages).
Table 14.
Easy Transition (each comparison cell shows the costs paradigm shift/static-dynamic type shift/hop count).
Figure 24.
If statement in Ada.
Figure 25.
Ambiguous semantics of unary operators.
Table 15.
Readability of syntax in FPLs.
Figure 26.
Run-away comment.
Table 16.
Supported comments and their types.
Figure 27.
(Code Listing 43) Comment syntax vs. Pointer syntax clash. (Code Listing 44) Significance of space in C++.
Figure 28.
The usage of if instruction with and without compound statement.
Figure 29.
Dangling Else problem.
Figure 30.
Matching of else keyword with outer if keyword using indentation in Python.
Figure 31.
Naming conventions in Java.
Figure 32.
Use of parenthesis in expressions.
Table 17.
Coding standards that can or cannot be implemented by programming language.
Table 18.
Quality coding standards enforced by considered FPLs.
Table 19.
Support of user friendly integrated environment.
Table 20.
Mapping of the qualitative measure onto the quantitative score.
Table 21.
Unbounded and bounded (normalized) technical and environmental scores of languages.
Table 22.
Score based on technical features (sorted based on LsTECH).
Table 23.
Score based on environmental features (sorted based on LsENV).
Table 24.
Overall score for widely used programming languages (sorted based on score with default weights).
Table 25.
Overall score for widely used programming languages (sorted based on score with customized weights).