ANSI
고친 사람 github-actions[bot]
ANSI 는 미국의 국가 표준을 승인하는 기구입니다. 분야마다 있는 단체가 쓴 표준을 살핀 뒤 국가 표준이라는 도장을 찍습니다. 국제 표준 회의에는 미국을 대표해 나갑니다. 개발자는 이 이름을 기구보다 데이터베이스 질의 언어 같은 표준의 별명으로 먼저 만납니다.
쉽고 빠른 이해
ANSI 는 미국 안의 여러 단체가 만든 표준을 미국 국가 표준으로 승인하는 곳입니다. 데이터베이스 질의 언어의 첫 표준이 여기서 나왔습니다. 그래서 지금도 그 표준 앞에 ANSI 이름을 붙여 부릅니다.
이게 없으면 단체마다 다른 표준을 내도 어느 쪽이 나라의 기준인지 가릴 곳이 없습니다. 국제 회의에서 미국 안의 여러 의견을 하나로 모아 낼 곳도 사라집니다.
굴러가는 차례는 이렇습니다.
- 표준을 만드는 단체가 공정한 절차를 지키는지 보고 미리 인정해 둡니다
- 인정받은 단체가 관계자를 모아 합의로 표준 초안을 씁니다
- ANSI 가 절차를 확인한 뒤 국가 표준으로 승인합니다
대가는 시간입니다. 합의를 거치느라 새 표준 하나가 나오기까지 여러 해가 걸립니다. 문서도 대개 돈을 내고 사야 읽을 수 있습니다.
터미널 글자색 코드와 윈도우의 문자 인코딩에도 ANSI 라는 이름이 붙습니다. 윈도우 인코딩은 이 기구가 정한 것이 아닙니다.
상세
운동 종목마다 협회가 있습니다. 경기 규칙은 그 협회가 만듭니다. 나라의 체육회는 규칙을 손수 쓰지 않습니다. 협회가 규칙을 공정한 절차로 정했는지 보고, 그 규칙을 나라의 공식 규칙으로 인정해 줍니다.
ANSI(American National Standards Institute, 미국 국가표준협회)는 표준 분야에서 그 체육회 몫을 맡습니다. 정부 부처가 아니라 민간의 비영리 기구입니다. 미국 안에서 표준이 만들어지는 과정을 조율하는 것이 이 기구의 일입니다.
표준이 하는 일
표준은 여럿이 같은 방식으로 만들기로 합의하고 그 방식을 적어 둔 문서입니다. 볼트와 너트의 나사산 간격을 표준으로 맞춰 두면 어느 공장에서 산 볼트든 너트에 들어갑니다.
소프트웨어도 같습니다. 데이터베이스 회사들이 같은 질의 언어를 따르면 개발자는 한 번 익힌 문장을 여러 제품에서 씁니다. 표준이 없으면 제품을 바꿀 때마다 새 언어를 배워야 합니다.
승인과 공인
ANSI 는 표준 문서를 대부분 직접 쓰지 않습니다. 쓰는 일은 분야마다 있는 단체가 맡습니다. 이런 단체를 표준 개발 기구라고 부릅니다. 한 분야의 기업·학계·사용자를 모아 표준 초안을 쓰는 곳입니다.
ANSI 가 하는 첫째 일은 이 단체들을 공인하는 것입니다. 공인은 「이 단체는 표준을 공정하게 만든다」고 인정해 주는 일입니다. 초안 하나하나가 아니라 단체에 주는 인정입니다. 이해관계가 다른 쪽도 의견을 낼 수 있는지, 반대 의견에 답하는지를 봅니다.
이렇게 나눈 까닭은 분야가 너무 넓어서입니다. 전기 배선부터 프로그래밍 언어까지 한 기구가 다 알 수는 없습니다. 내용은 그 분야 사람들에게 맡깁니다. ANSI 는 절차가 공정했는지를 봅니다.
초안 하나가 국가 표준이 되기까지는 아래처럼 흐릅니다. 초안은 공개해서 누구든 의견을 낼 수 있게 합니다. ANSI 는 그 의견들이 제대로 다뤄졌는지 확인한 뒤 승인합니다.
flowchart TD
A["ANSI"] -.->|미리 공인해 둔다| B["표준 개발 기구"]
B --> C["관계자를 모아 합의로 초안을 쓴다"]
C --> D["초안을 공개해 의견을 받는다"]
D --> E["ANSI 가 절차를 확인한다"]
E --> F["미국 국가 표준"]
그림에서 ANSI 가 나오는 곳은 맨 처음과 끝 가까이 두 번뿐입니다. 맨 처음의 점선은 초안마다 거치는 단계가 아니라 단체가 미리 받아 두는 인정입니다. 가운데에서 표준의 내용을 정하는 일은 표준 개발 기구의 몫입니다.
정보기술 분야를 맡은 표준 개발 기구는 INCITS(InterNational Committee for Information Technology Standards, 정보기술 표준 국제 위원회)입니다. 이름에 「국제」가 들어 있지만 ANSI 가 공인한 미국 안의 기구입니다. 프로그래밍 언어의 미국 표준 초안도 이 위원회에서 나옵니다.
SQL(Structured Query Language, 구조화 질의 언어)은 데이터베이스에 데이터를 묻고 고치는 언어입니다. 앞에서 말한 데이터베이스 회사들이 함께 따르는 질의 언어가 이것입니다. SQL 과 C 언어의 미국 표준이 이 위원회를 거칩니다.
ISO 의 미국 대표
ISO(International Organization for Standardization, 국제표준화기구)는 나라와 나라 사이의 표준을 정하는 기구입니다. 회원은 나라마다 하나씩 있는 표준 기관입니다. 미국의 회원이 ANSI 입니다.
표결도 나라 단위로 셉니다. 그래서 미국 안의 여러 단체 의견은 ANSI 를 거쳐 하나로 모인 뒤 국제 회의에 나갑니다.
같은 표준이 미국 표준과 국제 표준 두 이름을 다는 일도 이 구조에서 생깁니다. 미국에서 먼저 만든 표준을 ISO 가 국제 표준으로 받기도 합니다. 거꾸로 ISO 표준을 미국 표준으로 받아들이기도 합니다.
SQL 이 앞의 경우입니다. SQL 의 첫 표준은 ANSI 에서 나왔습니다. ISO 가 같은 내용을 국제 표준으로 받았습니다. 그 뒤의 개정은 주로 ISO 쪽에서 이뤄졌습니다. 그래도 표준 SQL 을 부르는 말로 「ANSI SQL」이 남았습니다.
C 언어도 같은 길을 밟았습니다. 첫 표준이 ANSI 에서 나와 「ANSI C」라 불렸습니다. 곧 ISO 가 같은 내용을 국제 표준으로 받았습니다.
SQL 표준의 격리 수준
데이터베이스 개발자가 ANSI 라는 이름을 자주 만나는 곳이 하나 더 있습니다. 여러 작업이 동시에 돌 때 서로 얼마나 간섭하게 둘지를 정하는 단계입니다.
트랜잭션은 여러 작업을 한 덩어리로 처리하는 단위입니다. 계좌 이체의 출금과 입금이 한쪽만 되는 일을 막으려고 둘을 한 트랜잭션으로 묶습니다.
트랜잭션 여럿이 동시에 돌면 서로의 중간 결과를 읽을 수 있습니다. 아직 끝나지 않은 이체의 출금만 다른 트랜잭션에 보이는 식입니다.
SQL 표준은 이 간섭을 얼마나 막을지를 네 단계로 나눠 이름을 붙였습니다. 이 네 단계가 격리 수준입니다. 격리 수준 앞에 ANSI 가 붙어 불리는 것도 이 표준에서 이름이 나왔기 때문입니다.
터미널 색 코드와 윈도우 인코딩
기구와 표준 말고도 ANSI 라는 이름이 붙은 것이 둘 있습니다.
터미널에서 글자색을 바꾸거나 커서를 옮기는 제어 문자열을 ANSI 이스케이프 코드라고 부릅니다.
화면에 안 보이는 이스케이프 문자 ESC(Escape) 뒤에 짧은 명령을 붙이는 꼴입니다. ESC 뒤에 [31m 을 붙이면
그 뒤의 글자가 빨갛게 찍힙니다.
이 코드는 ANSI 가 한때 표준으로 정했던 것입니다. 그래서 이름이 붙었습니다. 지금 이 표준 문서를 찾아 읽을 일은 드뭅니다. 터미널 프로그램들이 오래 따라온 관례가 이름과 함께 남았습니다.
윈도우의 「ANSI」 인코딩은 경우가 다릅니다. 코드 페이지는 문자마다 숫자 값을 매긴 대응표입니다. 윈도우는 언어마다 기본 코드 페이지를 하나씩 정해 둡니다. 윈도우에서 「ANSI」 인코딩이라 부르는 것이 이 기본 코드 페이지입니다.
이 인코딩은 ANSI 가 표준으로 정한 것이 아닙니다. 이름만 붙었습니다.
같은 「ANSI」 파일이어도 어느 언어의 윈도우에서 저장했느냐에 따라 다른 대응표로 적힙니다. 한국어 윈도우에서는 CP949(Code Page 949, 코드 페이지 949)입니다. 영어 윈도우에서는 Windows-1252 입니다. 한국어 윈도우에서 저장한 이 파일을 UTF-8(Unicode Transformation Format 8비트, 유니코드 변환 형식)을 기대하는 서버에서 읽으면 한글이 깨집니다.
이 이름을 만났을 때 가리는 법
개발 문서에서 ANSI 를 보면 먼저 무엇 앞에 붙었는지를 봅니다. 기구 자체를 가리키는 경우는 드뭅니다. 아래 표는 흔히 만나는 다섯 경우를 ANSI 가 실제로 무엇을 했는지로 가릅니다.
| 만난 말 | 가리키는 것 | ANSI 가 한 일 |
|---|---|---|
| ANSI SQL | 제품마다 덧붙인 문법이 아닌 표준 SQL | 첫 표준을 냈다 |
| ANSI C | C 언어의 첫 표준 | 첫 표준을 냈다 |
| ANSI 이스케이프 코드 | 터미널 제어 문자열 | 한때 표준으로 정했다 |
| 윈도우 「ANSI」 인코딩 | 언어별 기본 코드 페이지 | 없다. 이름만 붙었다 |
| 표준 번호 앞의 ANSI | 미국 국가 표준 문서 | 승인했다 |
마지막 칸을 보면 그 ANSI 가 이 기구가 정한 표준을 뜻하는지, 이름만 빌린 것인지 가려집니다. 「ANSI SQL 을 따른다」는 제품 설명은 앞쪽입니다. 표준 문법을 지원한다는 뜻입니다. 표준의 어느 부분까지 지원하는지는 제품마다 다르므로 그 제품 문서를 봐야 합니다.
합의에 드는 시간과 돈
공정한 절차에는 시간이 듭니다. 이해관계가 다른 쪽의 의견을 받아 하나하나 답해야 합니다. 그래서 새 표준 하나가 나오기까지 여러 해가 걸립니다.
표준 문서는 대개 돈을 내고 사야 읽을 수 있습니다. 그래서 개발자는 원문보다 데이터베이스 제품 문서로 표준을 익히게 됩니다. 제품 문서는 그 제품이 지원하는 부분만 적으므로 표준 전체의 모습은 잘 드러나지 않습니다.
관련 항목
ANSI 와 나란히 표준을 내는 기구
ISO · IEC · IEEE · ITU-T · W3C · IETF · Ecma International · NIST
ANSI 가 공인한 표준 개발 기구
INCITS · ASTM International · ASME · ASHRAE · NFPA
ANSI 표준을 거친 프로그래밍 언어
SQL · C · COBOL · Fortran · Ada
ANSI 이름을 달고 불리는 표준
ANSI SQL · ANSI C · ANSI 이스케이프 코드 · ASCII · 역할 기반 접근 제어
ANSI SQL 이 정한 트랜잭션 격리 용어
트랜잭션 · 격리 수준 · 더티 리드 · 반복 불가능 읽기 · 팬텀 읽기 · 직렬가능성
ANSI 와 이름이 겹쳐 헷갈리는 인코딩
코드 페이지 · Windows-1252 · CP949 · 문자 인코딩 · UTF-8
표준을 만들고 맞추는 일에 쓰이는 용어
표준 · 표준화 · 표준 개발 기구 · 국가 표준 · 사실상 표준 · 상호운용성 · 적합성 시험
다른 이름: American National Standards Institute · 미국 국가표준협회 · 안시