Generated by DeepSeek V3.2| FAP (programming language) | |
|---|---|
| Name | FAP |
| Paradigm | Procedural programming, Structured programming |
| Designer | IBM |
| Developer | IBM |
| Typing | Static typing |
| Influenced by | FORTRAN, PL/I |
| Operating system | IBM System/360, IBM System/370 |
| License | Proprietary |
FAP (programming language). FAP, an acronym for **F**ortran **A**ssembly **P**rogram, was a low-level assembly language developed by IBM for its IBM System/360 and IBM System/370 mainframe computer families. It was designed to provide a more structured and readable alternative to pure machine code while retaining fine-grained control over hardware resources. The language integrated features from higher-level languages like FORTRAN and PL/I to improve programmer productivity in systems programming tasks.
FAP was created by IBM in the mid-1960s alongside the introduction of the revolutionary IBM System/360 architecture. This period saw intense competition in the mainframe market from companies like Control Data Corporation and Univac. The development of FAP was part of IBM's broader software strategy to support its new hardware, which also included the IBM OS/360 operating system. Engineers sought to bridge the gap between the efficiency of assembly and the expressiveness of languages like FORTRAN, which was immensely popular in scientific computing at institutions such as Los Alamos National Laboratory. The language's evolution was closely tied to advancements in the IBM System/370 series and its associated operating systems.
FAP incorporated structured programming constructs to control program flow, moving beyond the simple branches of basic assembly. It supported symbolic addressing and macro instruction capabilities, allowing for code reuse and abstraction. The language featured a static typing system for data, with direct support for various numeric formats native to the IBM System/360 hardware. Unlike pure assembly language, FAP included high-level-like expressions and assignment statements, reducing the need for explicit register management. These features made it particularly useful for writing performance-critical sections of system software, such as device drivers or compiler components, where direct hardware manipulation was necessary.
FAP was implemented through an assembler (computing) provided by IBM, which translated FAP source code into executable machine code for the IBM System/360 and its successors. Primary usage was within IBM's own ecosystem, for developing parts of system software like the IBM OS/360 and its utilities. It was also employed by large corporate and government users of IBM mainframes, such as NASA and major financial institutions, for creating custom, high-performance applications. The assembler itself was a key tool in the IBM System/370 software toolchain, often used in conjunction with compilers for COBOL and PL/I. While not as widespread as FORTRAN or COBOL for application programming, FAP held a niche in systems programming where maximum hardware efficiency was paramount.
FAP was directly influenced by and intended as an assembly-level companion to FORTRAN, borrowing its syntax for certain expressions and operations. It also shared conceptual ground with PL/I, IBM's ambitious multi-purpose language, particularly in its approach to structured code. Compared to the basic assembly language for the IBM System/360, known as BAL, FAP offered a higher level of abstraction. It existed contemporaneously with other machine-oriented languages like ALGOL-based systems programming dialects in Europe and the PL360 language developed by Niklaus Wirth. FAP's design philosophy contrasted with the fully high-level approach of C (programming language), which emerged later and became dominant for systems work on platforms like the Unix operating system.
A simple FAP code segment might demonstrate a loop structure and arithmetic operation, showcasing its hybrid nature. The syntax would show symbolic labels for control flow, reminiscent of FORTRAN, combined with instructions specific to the IBM System/360 instruction set. For instance, a routine to add a list of numbers would use FAP's macro capabilities and structured loops, differing markedly from the linear sequence of instructions found in pure assembly language. Such code would be processed by the IBM System/370 assembler to produce an executable module, illustrating the direct translation from structured mnemonic code to machine code.
Category:IBM programming languages Category:Assembly languages Category:System/360