ISO/IEC JTC 1/SC 22
1. 개요
ISO/IEC JTC 1/SC 22는 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스 분야의 표준화를 담당하는 ISO/IEC JTC 1의 하위 위원회이다. 1985년에 설립되었으며, COBOL, Fortran, Ada, C, C++, Prolog 등 다양한 프로그래밍 언어, POSIX, 리눅스와 같은 해당 환경, 그리고 시스템 소프트웨어 인터페이스의 표준화를 목표로 한다. 이 위원회는 여러 워킹 그룹을 운영하며, 현재 C, C++, Fortran, Ada, COBOL, Prolog, Linux, 프로그래밍 언어 취약성 관련 그룹이 활동 중이다. ISO 내부 및 외부의 다양한 조직과 협력하며, 현재 23개국이 참여 회원으로, 21개국이 옵저버 회원으로 활동하고 있다. ISO/IEC JTC 1/SC 22는 C, C++, Ada, COBOL, Fortran, POSIX, Prolog, C#, ECMAScript, 리눅스 표준 베이스 등 98개의 표준 및 기술 보고서를 발행했다.
| 명칭 | ISO/IEC JTC 1/SC 22 - 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스 |
|---|---|
| 유형 | 표준화 서브위원회 |
| 모체 | ISO/IEC JTC 1 |
| 목표 | 프로그래밍 언어, 개발 환경, 시스템 소프트웨어 인터페이스 분야의 국제 표준 개발 |
|---|---|
| 활동 분야 | 프로그래밍 언어 표준 개발 (예: C 언어, C++, Fortran, COBOL, Pascal, Ada) 프로그래밍 언어 환경 표준 개발 시스템 소프트웨어 인터페이스 표준 개발 |
| 주요 표준 | C 언어 표준 C++ 표준 Fortran 표준 COBOL 표준 Pascal 표준 Ada 표준 |
| 사업 계획 | SC 22 사업 계획 (2011-10 ~ 2012-09) |
| 공식 웹사이트 | ISO/IEC JTC 1/SC 22 |
|---|
-
프로그래밍 언어 표준 -
C99
C99는 1999년 ISO/IEC 9899:1999로 출판된 C 프로그래밍 언어의 표준으로, 인라인 함수, 가변 길이 배열, `//` 주석 등 새로운 기능들을 추가하고 IEEE 부동소수점 자료 지원을 개선했으며 C90과 하위 호환성을 가지면서 C++와의 호환성을 고려했다. -
프로그래밍 언어 표준 -
C11 (C 버전)
C11은 2011년 발표된 C 언어 표준으로, C99를 개선하여 데이터 구조 정렬, 반환하지 않는 함수 지정, 형식-제네릭 표현식, 멀티스레딩 및 유니코드 지원 강화, 보안 기능 강화 등 다양한 기능을 추가했다.
2. 역사
ISO/IEC JTC 1/SC 22는 1985년에 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스 분야의 표준화를 다루는 JTC 1 하위 위원회를 만들 목적으로 설립되었다. ISO/IEC JTC 1/SC 22가 설립되기 전에는 프로그래밍 언어 표준화는 ISO TC 97/SC 5에서 다루었다.
ISO/IEC JTC 1/SC 22의 초기 작업 그룹 중 다수는 재편성 과정에서 ISO TC 97/SC 5의 여러 작업 그룹에서 승계되었으며, 여기에는 ISO/IEC JTC 1/SC 22/WG 2 – 파스칼 (원래 ISO TC 97/SC 5/WG 4), ISO/IEC JTC 1/SC 22/WG 4 – 코볼 (원래 ISO TC 97/SC 5/WG 8), ISO/IEC JTC 1/SC 22/WG 5 – 포트란 (원래 ISO TC 97/SC 5/WG 9) 등이 포함되었다. 그 이후로 ISO/IEC JTC 1/SC 22는 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스의 변화하는 표준화 요구에 따라 많은 작업 그룹을 만들고 해산했다.
3. 목표 및 범위
ISO/IEC JTC 1/SC 22는 프로그래밍 언어(COBOL, Fortran, Ada, C, C++, Prolog 등), 해당 환경(POSIX, 리눅스 등) 및 시스템 소프트웨어 인터페이스의 표준화를 담당한다.
표준화 대상은 다음과 같다.
* 명세 기법
* 공통 기능 및 인터페이스
ISO/IEC JTC 1/SC 22는 프로그래밍 언어와 시스템 서비스 간의 표준화된 바인딩을 용이하게 하고, 서로 다른 언어로 작성된 프로그램 간의 상호 작용을 개선하기 위한 공통 언어 독립적 명세를 제작한다.
다른 소위원회 또는 기술 위원회의 작업 프로그램 내의 특수 언어 또는 환경은 ISO/IEC JTC 1/SC 22의 범위에 포함되지 않는다.
ISO/IEC JTC 1/SC 22의 임무는 고급 프로그래밍 환경 내에서 애플리케이션의 이식성, 프로그래머의 생산성 및 이동성, 그리고 시간이 지남에 따라 애플리케이션의 호환성을 개선하는 것이다. ISO/IEC JTC 1/SC 22의 세 가지 주요 목표는 다음과 같다:
* 프로그래밍 언어 표준화를 통해 현재의 소프트웨어 애플리케이션에 대한 전 세계적 투자를 지원
* 해당 분야의 이전 명세 경험을 바탕으로 프로그래밍 언어 표준화 개선
* 새로운 기술적 기회에 대응
4. 구조
ISO/IEC JTC 1/SC 22는 프로그래밍 언어, 해당 환경 및 시스템 소프트웨어 인터페이스 분야의 표준 개발을 위해 여러 워킹 그룹(WG)을 운영해 왔다. 각 워킹 그룹은 특정 작업에 집중하며, 그 내용은 위임 사항에 명시되어 있다.
ISO/IEC JTC 1/SC 22는 총 24개의 워킹 그룹을 운영했으나, 현재 표준화 요구에 따라 많은 그룹이 해체되었다. 현재 활동 중인 워킹 그룹은 다음과 같다:
해체된 워킹 그룹은 다음과 같다:
| 워킹 그룹 | 작업 분야 | 상태 |
|---|---|---|
| ISO/IEC JTC 1/SC 22/WG 1 | PLIP (산업 프로세스용 프로그래밍 언어) | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 2 | 파스칼 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 3 | APL | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 6 | 알골 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 7 | PL/I | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 8 | 베이직 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 10 | 가이드라인 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 11 | 바인딩 기술 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 12 | 적합성 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 13 | 모듈라-2 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 15 | POSIX | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 16 | ISLisp | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 18 | FIMS (폼 인터페이스 관리 시스템) | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 19 | 형식 명세 언어 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 20 | 국제화 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 22 | PCTE (이식 가능한 공통 도구 환경) | 해산됨 |
4.1. 워킹 그룹 (WG)
ISO/IEC JTC 1/SC 22는 프로그래밍 언어, 해당 환경 및 시스템 소프트웨어 인터페이스 분야의 표준 개발을 위해 여러 워킹 그룹(WG)을 운영해 왔다. 각 워킹 그룹은 특정 작업에 집중하며, 그 내용은 위임 사항에 명시되어 있다.
ISO/IEC JTC 1/SC 22는 총 24개의 워킹 그룹을 운영했으나, 현재 표준화 요구에 따라 많은 그룹이 해체되었다. 현재 활동 중인 워킹 그룹은 다음과 같다:
해체된 워킹 그룹은 다음과 같다:
| 워킹 그룹 | 작업 분야 | 상태 |
|---|---|---|
| ISO/IEC JTC 1/SC 22/WG 1 | PLIP (산업 프로세스용 프로그래밍 언어) | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 2 | 파스칼 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 3 | APL | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 6 | 알골 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 7 | PL/I | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 8 | 베이직 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 10 | 가이드라인 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 11 | 바인딩 기술 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 12 | 적합성 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 13 | 모듈라-2 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 15 | POSIX | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 16 | ISLisp | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 18 | FIMS (폼 인터페이스 관리 시스템) | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 19 | 형식 명세 언어 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 20 | 국제화 | 해산됨 |
| ISO/IEC JTC 1/SC 22/WG 22 | PCTE (이식 가능한 공통 도구 환경) | 해산됨 |
5. 협력
ISO/IEC JTC 1/SC 22는 여러 다른 조직 또는 소위원회와 긴밀히 협력하며, 일부는 ISO 내부 조직이며, 다른 일부는 외부 조직이다.
ISO/IEC JTC 1/SC 22와 연계된 ISO 내부 조직은 다음과 같다.
* ISO/IEC JTC 1/SC 2, 코드화된 문자 집합
* ISO/IEC JTC 1/SC 7, 소프트웨어 및 시스템 엔지니어링
* ISO/IEC JTC 1/SC 27, IT 보안 기술
* ISO/TC 37, 용어 및 기타 언어 및 콘텐츠 리소스
* ISO/TC 215, 의료 정보학
ISO 외부의 ISO/IEC JTC 1/SC 22와 연계된 조직은 다음과 같다.
* Ecma International
* 리눅스 재단
* 계산기기 협회 Ada 특별 관심 그룹(ACM SIGAda)
* Ada-Europe
* MISRA
5.1. 협력 기관
ISO/IEC JTC 1/SC 22는 여러 다른 조직 또는 소위원회와 긴밀히 협력하며, 일부는 ISO 내부 조직이며, 다른 일부는 외부 조직이다.
ISO/IEC JTC 1/SC 22와 연계된 ISO 내부 조직은 다음과 같다.
* ISO/IEC JTC 1/SC 2, 코드화된 문자 집합
* ISO/IEC JTC 1/SC 7, 소프트웨어 및 시스템 엔지니어링
* ISO/IEC JTC 1/SC 27, IT 보안 기술
* ISO/TC 37, 용어 및 기타 언어 및 콘텐츠 리소스
* ISO/TC 215, 의료 정보학
ISO 외부의 ISO/IEC JTC 1/SC 22와 연계된 조직은 다음과 같다.
* Ecma International
* 리눅스 재단
* 계산기기 협회 Ada 특별 관심 그룹(ACM SIGAda)
* Ada-Europe
* MISRA
6. 회원국
국가들은 소위원회의 회원 자격을 얻기 위해 ISO에 회비를 납부한다.
ISO/IEC JTC 1/SC 22의 "P"(참여) 회원은 다음과 같다. 오스트리아, 불가리아, 캐나다, 중화인민공화국, 체코, 덴마크, 핀란드, 프랑스, 독일, 이스라엘, 이탈리아, 일본, 카자흐스탄, 대한민국, 네덜란드, 폴란드, 러시아 연방, 슬로베니아, 스페인, 스위스, 우크라이나, 영국 및 미국.
ISO/IEC JTC 1/SC 22의 "O"(옵저버) 회원은 다음과 같다. 아르헨티나, 벨기에, 보스니아 헤르체고비나, 쿠바, 이집트, 가나, 그리스, 헝가리, 아이슬란드, 인도, 인도네시아, 이란 이슬람 공화국, 아일랜드, 조선민주주의인민공화국, 말레이시아, 뉴질랜드, 노르웨이, 포르투갈, 루마니아, 세르비아 및 태국.
6.1. 회원국 현황
국가들은 소위원회의 회원 자격을 얻기 위해 ISO에 회비를 납부한다.
ISO/IEC JTC 1/SC 22의 "P"(참여) 회원은 다음과 같다. 오스트리아, 불가리아, 캐나다, 중화인민공화국, 체코, 덴마크, 핀란드, 프랑스, 독일, 이스라엘, 이탈리아, 일본, 카자흐스탄, 대한민국, 네덜란드, 폴란드, 러시아 연방, 슬로베니아, 스페인, 스위스, 우크라이나, 영국 및 미국.
ISO/IEC JTC 1/SC 22의 "O"(옵저버) 회원은 다음과 같다. 아르헨티나, 벨기에, 보스니아 헤르체고비나, 쿠바, 이집트, 가나, 그리스, 헝가리, 아이슬란드, 인도, 인도네시아, 이란 이슬람 공화국, 아일랜드, 조선민주주의인민공화국, 말레이시아, 뉴질랜드, 노르웨이, 포르투갈, 루마니아, 세르비아 및 태국.
7. 발행 표준 및 기술 보고서
ISO/IEC JTC 1/SC 22는 현재 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스에 대한 98개의 출판된 표준을 보유하고 있다. 이 분야에서 ISO/IEC JTC 1/SC 22에서 발행한 일부 표준은 다음과 같다.
| ISO/IEC 표준/기술 보고서 | 제목 | 상태 | 설명 | WG |
|---|---|---|---|---|
| ISO 7185 | 정보 기술 - 프로그래밍 언어 - 파스칼 | 발행 (1990) | 파스칼 프로그래밍 언어의 기계 독립적인 정의를 제공하며, 프로세서 및 준수 프로그램에 대한 요구 사항을 지정하여 의미와 구문을 명시한다. | |
| ISO/IEC 1989 | 정보 기술 - 프로그래밍 언어 - 코볼 | 발행 (2002) | 프로그래밍 언어 COBOL의 상호 운용성, 국제 문자 집합 처리 및 데이터 유효성 검사를 개선하며, 객체 지향 프로그래밍을 위한 기능과 같은 여러 가지 기술 향상 기능을 포함한다. | 4 |
| ISO/IEC 1539-1 | 정보 기술 - 프로그래밍 언어 - 포트란 - 파트 1: 기본 언어 | 발행 (2010) | 기본 포트란 프로그래밍 언어로 표현된 프로그램의 형식과 해석을 지정한다. | 5 |
| ISO/IEC 8652 | 정보 기술 - 프로그래밍 언어 - 에이다 | 발행 (2023) | 에이다 프로그래밍 언어로 작성된 프로그램의 형식과 의미를 지정하며, 다양한 컴퓨팅 시스템으로 에이다 프로그램의 이식을 촉진한다. | 9 |
| ISO/IEC 9899 | 정보 기술 - 프로그래밍 언어 - C 언어 | 발행 (2018) | C 프로그래밍 언어로 작성된 프로그램의 형식과 해석을 지정한다. | 14 |
| ISO/IEC/IEEE 9945 | 정보 기술 - 이식 가능한 운영 체제 인터페이스 (POSIX) 기본 사양, Issue 7 | 발행 (2009) | 소스 코드 수준에서 응용 프로그램 이식을 지원하기 위한 표준 운영 체제 인터페이스 및 환경을 정의한다. | 15 |
| ISO/IEC 13211-1 | 정보 기술 - 프로그래밍 언어 - 프롤로그 - 파트 1: 일반 코어 | 발행 (1995) | 다양한 데이터 처리 시스템을 위해 프롤로그 데이터 및 텍스트의 이식성과 적용 가능성을 촉진한다. | 17 |
| ISO/IEC 14882 | 정보 기술 - 프로그래밍 언어 - C++ | 발행 (2017) | C++ 프로그래밍 언어의 구현 요구 사항을 지정한다. | 21 |
| ISO/IEC 23270 | 정보 기술 - 프로그래밍 언어 - C# | 발행 (2006) | C# 프로그래밍 언어로 작성된 프로그램의 형식과 해석을 지정한다. | |
| ISO/IEC 16262 | 정보 기술 - 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스 - ECMAScript 언어 사양 | 발행 (2011) | ECMAScript를 위한 스크립팅 언어를 정의한다. | |
| ISO/IEC 23360-1 | 리눅스 표준 베이스 (LSB) 코어 사양 3.1 - 파트 1: 일반 사양 | 발행 (2006) | 컴파일된 응용 프로그램 및 설치 스크립트의 최소 환경에 대한 시스템 인터페이스를 정의한다. | |
| ISO/IEC 23271 | 정보 기술 -- 공통 언어 인프라 (CLI) | 발행 (2012) | 여러 고급 언어로 작성된 응용 프로그램이 다시 작성할 필요 없이 서로 다른 시스템 환경에서 실행될 수 있는 공통 언어 인프라(CLI)를 정의한다. | |
| ISO/IEC 25436 | 정보 기술 -- 에펠: 분석, 설계 및 프로그래밍 언어 | 발행 (2006) | 에펠 언어에 대한 전체 참조를 제공한다. | |
| ISO/IEC TR 24772 | 정보 기술 -- 프로그래밍 언어 -- 언어 선택 및 사용을 통해 프로그래밍 언어의 취약성을 방지하기 위한 지침 | 발행 (2013) | 보안, 안전, 미션 크리티컬 및 비즈니스 크리티컬 소프트웨어에 대해 보장된 동작이 필요한 시스템 개발 시 피해야 할 소프트웨어 프로그래밍 언어 취약성을 지정한다. | |
| ISO/IEC 30170 | 정보 기술 -- 프로그래밍 언어 -- 루비 | 발행 (2012) | 컴퓨터 프로그래밍 언어 루비의 구문 및 의미, 준수 루비 프로세서, 엄격하게 준수하는 루비 프로그램 및 준수 루비 프로그램에 대한 요구 사항을 지정한다. |
7.1. 주요 표준 목록 (일부)
ISO/IEC JTC 1/SC 22는 현재 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스에 대한 98개의 출판된 표준을 보유하고 있다. 이 분야에서 ISO/IEC JTC 1/SC 22에서 발행한 일부 표준은 다음과 같다.
| ISO/IEC 표준/기술 보고서 | 제목 | 상태 | 설명 | WG |
|---|---|---|---|---|
| ISO 7185 | 정보 기술 - 프로그래밍 언어 - 파스칼 | 발행 (1990) | 파스칼 프로그래밍 언어의 기계 독립적인 정의를 제공하며, 프로세서 및 준수 프로그램에 대한 요구 사항을 지정하여 의미와 구문을 명시한다. | |
| ISO/IEC 1989 | 정보 기술 - 프로그래밍 언어 - 코볼 | 발행 (2002) | 프로그래밍 언어 COBOL의 상호 운용성, 국제 문자 집합 처리 및 데이터 유효성 검사를 개선하며, 객체 지향 프로그래밍을 위한 기능과 같은 여러 가지 기술 향상 기능을 포함한다. | 4 |
| ISO/IEC 1539-1 | 정보 기술 - 프로그래밍 언어 - 포트란 - 파트 1: 기본 언어 | 발행 (2010) | 기본 포트란 프로그래밍 언어로 표현된 프로그램의 형식과 해석을 지정한다. | 5 |
| ISO/IEC 8652 | 정보 기술 - 프로그래밍 언어 - 에이다 | 발행 (2023) | 에이다 프로그래밍 언어로 작성된 프로그램의 형식과 의미를 지정하며, 다양한 컴퓨팅 시스템으로 에이다 프로그램의 이식을 촉진한다. | 9 |
| ISO/IEC 9899 | 정보 기술 - 프로그래밍 언어 - C 언어 | 발행 (2018) | C 프로그래밍 언어로 작성된 프로그램의 형식과 해석을 지정한다. | 14 |
| ISO/IEC/IEEE 9945 | 정보 기술 - 이식 가능한 운영 체제 인터페이스 (POSIX) 기본 사양, Issue 7 | 발행 (2009) | 소스 코드 수준에서 응용 프로그램 이식을 지원하기 위한 표준 운영 체제 인터페이스 및 환경을 정의한다. | 15 |
| ISO/IEC 13211-1 | 정보 기술 - 프로그래밍 언어 - 프롤로그 - 파트 1: 일반 코어 | 발행 (1995) | 다양한 데이터 처리 시스템을 위해 프롤로그 데이터 및 텍스트의 이식성과 적용 가능성을 촉진한다. | 17 |
| ISO/IEC 14882 | 정보 기술 - 프로그래밍 언어 - C++ | 발행 (2017) | C++ 프로그래밍 언어의 구현 요구 사항을 지정한다. | 21 |
| ISO/IEC 23270 | 정보 기술 - 프로그래밍 언어 - C# | 발행 (2006) | C# 프로그래밍 언어로 작성된 프로그램의 형식과 해석을 지정한다. | |
| ISO/IEC 16262 | 정보 기술 - 프로그래밍 언어, 환경 및 시스템 소프트웨어 인터페이스 - ECMAScript 언어 사양 | 발행 (2011) | ECMAScript를 위한 스크립팅 언어를 정의한다. | |
| ISO/IEC 23360-1 | 리눅스 표준 베이스 (LSB) 코어 사양 3.1 - 파트 1: 일반 사양 | 발행 (2006) | 컴파일된 응용 프로그램 및 설치 스크립트의 최소 환경에 대한 시스템 인터페이스를 정의한다. | |
| ISO/IEC 23271 | 정보 기술 -- 공통 언어 인프라 (CLI) | 발행 (2012) | 여러 고급 언어로 작성된 응용 프로그램이 다시 작성할 필요 없이 서로 다른 시스템 환경에서 실행될 수 있는 공통 언어 인프라(CLI)를 정의한다. | |
| ISO/IEC 25436 | 정보 기술 -- 에펠: 분석, 설계 및 프로그래밍 언어 | 발행 (2006) | 에펠 언어에 대한 전체 참조를 제공한다. | |
| ISO/IEC TR 24772 | 정보 기술 -- 프로그래밍 언어 -- 언어 선택 및 사용을 통해 프로그래밍 언어의 취약성을 방지하기 위한 지침 | 발행 (2013) | 보안, 안전, 미션 크리티컬 및 비즈니스 크리티컬 소프트웨어에 대해 보장된 동작이 필요한 시스템 개발 시 피해야 할 소프트웨어 프로그래밍 언어 취약성을 지정한다. | |
| ISO/IEC 30170 | 정보 기술 -- 프로그래밍 언어 -- 루비 | 발행 (2012) | 컴퓨터 프로그래밍 언어 루비의 구문 및 의미, 준수 루비 프로세서, 엄격하게 준수하는 루비 프로그램 및 준수 루비 프로그램에 대한 요구 사항을 지정한다. |