

IBM i General Design Standards › Design Standards for Programs › Journaling for Audit Trail Purposes › Criteria for Choosing an HLL
Criteria for Choosing an HLL
Apart from the availability of staff with the appropriate language skills, there are several criteria for assessing an HLL:
- Expressiveness: The extent to which the language makes obvious the intention of the programmer is important both when writing and when maintaining programs. This will be affected by factors such as the data structures available, the syntax and layout facilities, and the ability to use qualified names and other name restrictions. The simplicity, conciseness, consistency and rigor of the language all contribute to its understandability, and hence its expressiveness.
For example, RPG, because of its fixed format and limited data types, is particularly poor.
- Completeness: The extent to which all objects and operations of interest can be described. The more sophisticated the capabilities of a language, such as the ability to support recursion, complex data structures, pointers, multi-dimensional arrays, or floating point arithmetic data types, the more complete it is likely to be.
Again, RPG is weak. Basic C lacks straightforward database field manipulation types.
- Generality: Some languages are better at specialized functions. Languages may support functions in a number of areas: I/O, mathematical functions, string handling, access to the Operating System, and data types.
RPG is good at database access but poor at string handling. CL is good at Operating System functions and string handling, has excellent access to system facilities, but has very limited database capabilities. Only C and PL/1 support pointer types, and so are the only viable languages for system programming.
- Openness: The ability to connect to other languages. This will be affected by the call mechanisms and parameter passing capabilities of the language, and the basic data types supported. Other factors such as character set dependencies and exception handling will also be relevant (such factors often tend to be machine dependent and so to have implications for portability).
Most of the iSeries languages have broadly equivalent call mechanisms, although PL/1 supports more complex features. System C provides the capability to access certain low level functions that are not available to other languages.
- Extensibility: The extent to which new objects and/or operations can be added to the language. This has important implications for systems programming type applications. The capability to use macros or copy facilities, Abstract Data Types (ADTs), and external calls can all be relevant.
The CL command definition language is a strong mechanism for extending CL. Once again, RPG III is weak and PL/1, with internally described procedures and functions, is fairly strong. The C standard libraries and precompiler make it the most extensible of the iSeries languages.
- Efficiency: How fast do programs using the compiler run.
RPG is strong; COBOL and PL/1 are almost as good. C is at present particularly weak because of the additional overhead of the runtime environment. REXX, an alternative to C, is interpreted and so also quite slow.
Copyright © 2014 CA.
All rights reserved.
 
|
|