ISO/IEC JTC 1/SC 22 Programming languages, their environments and system software interfaces is a standardization subcommittee of the Joint Technical Committee ISO/IEC JTC 1 of the International Organization for Standardization (ISO) and the International Electrotechnical Commission (IEC) that develops and facilitates standards within the fields of programming languages, their environments and system software interfaces. ISO/IEC JTC 1/SC 22 is also sometimes referred to as the "portability subcommittee". The international secretariat of ISO/IEC JTC 1/SC 22 is the American National Standards Institute (ANSI), located in the United States.[1] [2]
ISO/IEC JTC 1/SC 22 was created in 1985, with the intention of creating a JTC 1 subcommittee that would address standardization within the field of programming languages, their environments and system software interfaces. Before the creation of ISO/IEC JTC 1/SC 22, programming language standardization was addressed by ISO TC 97/SC 5.[3] Many of the original working groups of ISO/IEC JTC 1/SC 22 were inherited from a number of the working groups of ISO TC 97/SC 5 during its reorganization, including ISO/IEC JTC 1/SC 22/WG 2 – Pascal (originally ISO TC 97/SC 5/WG 4), ISO/IEC JTC 1/SC 22/WG 4 – COBOL (originally ISO TC 97/SC 5/ WG 8), and ISO/IEC JTC 1/SC 22/WG 5 – Fortran (originally ISO TC 97/SC 5/WG 9).[3] Since then, ISO/IEC JTC 1/SC 22 has created and disbanded many of its working groups in response to the changing standardization needs of programming languages, their environments and system software interfaces.
The scope of ISO/IEC JTC 1/SC 22 is the standardization of programming languages (such as COBOL, Fortran, Ada, C, C++, and Prolog), their environments (such as POSIX and Linux),[2] and systems software interfaces, such as:[4]
ISO/IEC JTC 1/SC 22 also produces common language-independent specifications to facilitate standardized bindings between programming languages and system services, as well as greater interaction between programs written in different languages.[5]
The scope of ISO/IEC JTC 1/SC 22 does not include specialized languages or environments within the program of work of other subcommittees or technical committees.[6]
The mission of ISO/IEC JTC 1/SC 22 is to improve portability of applications, productivity and mobility of programmers, and compatibility of applications over time within high level programming environments. The three main goals of ISO/IEC JTC 1/SC 22 are:[7]
Although ISO/IEC JTC 1/SC 22 has had a total of 24 working groups (WGs), many have been disbanded when the focus of the working group was no longer applicable to the current standardization needs.[3] ISO/IEC JTC 1/SC 22 is currently made up of eight (8) active working groups, each of which carries out specific tasks in standards development within the field of programming languages, their environments and system software interfaces. The focus of each working group is described in the group’s terms of reference. Working groups of ISO/IEC JTC 1/SC 22 are:[8]
data-sort-type="number" | Working Group | Working Area | Status | |
---|---|---|---|---|
data-sort-value="01" | ISO/IEC JTC 1/SC 22/WG 1 | PLIP (Programming Languages for Industrial Processes) | Disbanded | |
data-sort-value="02" | ISO/IEC JTC 1/SC 22/WG 2 | Disbanded | ||
data-sort-value="03" | ISO/IEC JTC 1/SC 22/WG 3 | Disbanded | ||
data-sort-value="04" | ISO/IEC JTC 1/SC 22/WG 4 | Active | ||
data-sort-value="05" | ISO/IEC JTC 1/SC 22/WG 5 | Active | ||
data-sort-value="06" | ISO/IEC JTC 1/SC 22/WG 6 | Disbanded | ||
data-sort-value="07" | ISO/IEC JTC 1/SC 22/WG 7 | Disbanded | ||
data-sort-value="08" | ISO/IEC JTC 1/SC 22/WG 8 | Disbanded | ||
data-sort-value="09" | ISO/IEC JTC 1/SC 22/WG 9 | Active | ||
data-sort-value="10" | ISO/IEC JTC 1/SC 22/WG 10 | Guidelines | Disbanded | |
data-sort-value="11" | ISO/IEC JTC 1/SC 22/WG 11 | Binding Techniques | Disbanded | |
data-sort-value="12" | ISO/IEC JTC 1/SC 22/WG 12 | Disbanded | ||
data-sort-value="13" | ISO/IEC JTC 1/SC 22/WG 13 | Disbanded | ||
data-sort-value="14" | ISO/IEC JTC 1/SC 22/WG 14 | Active | ||
data-sort-value="15" | ISO/IEC JTC 1/SC 22/WG 15 | Disbanded | ||
data-sort-value="16" | ISO/IEC JTC 1/SC 22/WG 16 | Disbanded | ||
data-sort-value="17" | ISO/IEC JTC 1/SC 22/WG 17 | Active | ||
data-sort-value="18" | ISO/IEC JTC 1/SC 22/WG 18 | FIMS (Form Interface Management System) | Disbanded | |
data-sort-value="19" | ISO/IEC JTC 1/SC 22/WG 19 | Disbanded | ||
data-sort-value="20" | ISO/IEC JTC 1/SC 22/WG 20 | Disbanded | ||
data-sort-value="21" | ISO/IEC JTC 1/SC 22/WG 21 | Active | ||
data-sort-value="22" | ISO/IEC JTC 1/SC 22/WG 22 | PCTE (Portable Common Tool Environment) | Disbanded | |
data-sort-value="23" | ISO/IEC JTC 1/SC 22/WG 23 | Programming Language Vulnerabilities | Active | |
data-sort-value="24" | ISO/IEC JTC 1/SC 22/WG 24 | Active |
ISO/IEC JTC 1/SC 22 works in close collaboration with a number of other organizations or subcommittees, some internal to ISO, and others external to it. Organizations in liaison with ISO/IEC JTC 1/SC 22, internal to ISO are:[2] [6] [9] [10]
Organizations in liaison to ISO/IEC JTC 1/SC 22 that are external to ISO are:
Countries pay a fee to ISO to be members of subcommittees.[11]
The 23 "P" (participating) members of ISO/IEC JTC 1/SC 22 are: Austria, Bulgaria, Canada, China, Czech Republic, Denmark, Finland, France, Germany, Israel, Italy, Japan, Kazakhstan, Republic of Korea, Netherlands, Poland, Russian Federation, Slovenia, Spain, Switzerland, Ukraine, United Kingdom, and United States of America.[12]
The 21 "O" (observing) members of ISO/IEC JTC 1/SC 22 are: Argentina, Belgium, Bosnia and Herzegovina, Cuba, Egypt, Ghana, Greece, Hungary, Iceland, India, Indonesia, Islamic Republic of Iran, Ireland, Democratic People’s Republic of Korea, Malaysia, New Zealand, Norway, Portugal, Romania, Serbia, and Thailand.[13]
ISO/IEC JTC 1/SC 22 currently has 98 published standards in programming languages, their environments and system software interfaces. Some standards published by ISO/IEC JTC 1/SC 22 within this field include:[14] [15] [16]
ISO/IEC Standard/Technical Report | data-sort-type="text" width="29%" | Title | Status | Description | data-sort-type="number" width= "2%" | WG |
---|---|---|---|---|---|---|
ISO 7185 | data-sort-value="Pascal" | Published (1990) | Provides a machine independent definition of the Pascal programming language. Specifies semantics and syntax by specifying requirements for a processor and for a conforming program.[17] | data-sort-value="25" | ||
ISO/IEC 1989 | data-sort-value="COBOL" | Published (2002) | Improves interoperability, international character set handling, and data validation for the programming language COBOL. Includes a number of technological enhancements, such as, features for object-oriented programming.[18] [19] | data-sort-value="04" | 4 | |
ISO/IEC 1539-1 | data-sort-value="Fortran" | Information technology – Programming languages – Fortran – Part 1: Base language | Published (2010) | Specifies the form and interpretation of programs expressed in the base Fortran programming language. | data-sort-value="05" | 5 |
data-sort-value="Ada" | Published (2023) | Specifies the form and meaning of programs written in the Ada programming language. Promotes the portability of Ada programs to a variety of computing systems. | data-sort-value="09" | 9 | ||
data-sort-value="C" | Published (2018) | Specifies the form and interpretation of programs written in the C programming language | data-sort-value="14" | 14 | ||
ISO/IEC/IEEE 9945 | data-sort-value="POSIX" | Information technology – Portable Operating System Interface (POSIX) Base Specifications, Issue 7 | Published (2009) | Defines a standard operating system interface and environment for support of applications portability at the source code level. | data-sort-value="15" | 15 |
data-sort-value="Prolog" | Information technology – Programming languages – Prolog – Part 1: General core | Published (1995) | Promotes the portability and applicability of Prolog data and text for a variety of data processing systems. | data-sort-value="17" | 17 | |
data-sort-value="C++" | Published (2017) | Specifies requirements for the implementation of the C++ programming language. | data-sort-value="21" | 21 | ||
ISO/IEC 23270 | data-sort-value="C#" | Published (2006) | Specifies the form and interpretation of programs written in the C# programming language | data-sort-value="22" | ||
ISO/IEC 16262 | data-sort-value="ECMAScript" | Information technology – Programming languages, their environments and system software interfaces – ECMAScript language specification | Published (2011) | Defines the scripting language for ECMAScript. | data-sort-value="23" | |
ISO/IEC 23360-1 | data-sort-value="Linux Standard Base" | Linux Standard Base (LSB) core specification 3.1 – Part 1: Generic specification | Published (2006) | Defines a system interface for compiled applications and minimal environment of installation scripts. | data-sort-value="24" | |
data-sort-value="Common Language Infrastructure" | Information technology -- Common Language Infrastructure (CLI) | Published (2012) | Defines the Common Language Infrastructure (CLI) in which applications written in multiple high-level languages can be executed in different system environments without the need to rewrite. | data-sort-value="25" | ||
ISO/IEC 25436 | data-sort-value="Eiffel" | Information technology -- Eiffel: Analysis, Design and Programming Language | Published (2006) | Provides the full reference for the Eiffel language. | data-sort-value="26" | |
ISO/IEC TR 24772 | data-sort-value="Guidance to avoiding vulnerabilities" | Information technology -- Programming languages -- Guidance to avoiding vulnerabilities in programming languages through language selection and use | Published (2013) | Specifies software programming language vulnerabilities to be avoided in the development of systems where assured behaviour is required for security, safety, mission-critical and business-critical software. | data-sort-value="27" | |
ISO/IEC 30170 | data-sort-value="Ruby" | Information technology -- Programming languages -- Ruby | Published (2012) | Specifies the syntax and semantics of the computer programming language Ruby, and the requirements for conforming Ruby processors, strictly conforming Ruby programs, and conforming Ruby programs. | data-sort-value="28" | |