As high level computer languages (e.g. FORTRAN) became the required standard for new software implementation, simulation contractors began to seek exceptions for certain high utilization procedures. The contractors protested that they simply could not meet the customer's execution efficiency requirements if the language requirement was rigidly enforced. Customers frequently agreed to a marriage of convenience mixing FORTRAN and assembly language. The resulting problems of language mix helped lead the Department of Defense to develop a next generation language as the basis for all embedded computer systems, namely Ada. Since the efficiency requirements for embedded systems are even more stringent than real time simulation, one might have expected that Ada would fulfill the real time simulation speed requirements. However, as Ada has become the required simulation language in recent years, new contractor complaints about execution speed and memory usage have arisen. Contractors have sought waivers for these systems to implement certain procedures in the C language (the next generation assembly language) to improve efficiency.
The accepted truism has been that since a low level language executes so much faster and requires less memory than high level languages, then the loss to the customer of the desired features of the high order language is worth the gain in efficiency. Does this idea equally apply to applications using Ada? Is an Ada-C marriage convenient, much less in the customer's best interest? This paper presents a contrasting experience in two software applications that have traditionally been targets for language waivers: low level interface drivers and multi-dimensional interpolations. The paper discusses the specific benefits and costs of developing such applications in Ada and in C.