LLMpediaThe first transparent, open encyclopedia generated by LLMs

FAP (programming language)

Generated by DeepSeek V3.2
Note: This article was automatically generated by a large language model (LLM) from purely parametric knowledge (no retrieval). It may contain inaccuracies or hallucinations. This encyclopedia is part of a research project currently under review.
Article Genealogy
Parent: CTSS Hop 4
Expansion Funnel Raw 31 → Dedup 0 → NER 0 → Enqueued 0
1. Extracted31
2. After dedup0 (None)
3. After NER0 ()
4. Enqueued0 ()
FAP (programming language)
NameFAP
ParadigmProcedural programming, Structured programming
DesignerIBM
DeveloperIBM
TypingStatic typing
Influenced byFORTRAN, PL/I
Operating systemIBM System/360, IBM System/370
LicenseProprietary

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.

History and development

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.

Language features

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.

Implementation and usage

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.

Relationship to other languages

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.

Example code

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