일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 포인터
- 브라우저
- 타입스크립트
- 자료구조
- 프로그래머스
- 큐
- 연결리스트
- 연결 리스트
- pytorch
- 배열
- vue3
- RT scheduling
- 웹팩
- 컨테이너
- 해시테이블
- 프로세스
- 스택
- Machine Learning
- 이진탐색
- GraphQL
- cors
- APOLLO
- alexnet
- 자바스크립트
- C
- 프론트엔드
- RxJS
- 알고리즘
- 코딩테스트
- 릿코드
- Today
- Total
프린세스 다이어리
반복문에서 변수명으로 i, j, k, ... n을 사용하는 이유 본문
C언어 문법을 익히다가 갑자기 궁금해져서 찾아보았다.
프로그래밍 언어가 등장하기 전, 고등 수학에서 사용하던 변수들이 i, j, k였다. 그래서 FORTRAN의 설계자들은 비슷한 방식을 차용하여 언어를 디자인했다.
포트란 개발자가 말하길, 1960년 포트란 개발 당시 문법상 변수의 타입을 지정할 수가 없었다고 한다. 포트란의 뭔가 다른 버전을 개발하셨는지는 모르겠지만, 위의 원로 개발자분의 이야기와는 조금 다르게, 포트란에서는 일반적으로 타입 선언 없이 i~n은 기본적으로 정수형이었고, 이 외의 문자를 사용하면 기본값으로 실수형을 의미하게 되었다. 정수형을 의미하는 integer라는 단어의 첫 글자와 두 번째 글자가 각각 i, n이기 때문이라고 한다.
여기에서 왜 i, j가 수학에서 먼저 사용되기 시작한 건지 다시 의문이 들기 시작했다.
역사적으로 대수학의 서브스크립트(subscript), 급수(series), 합계(summation) 등에서 정수를 i, j, k로 지정해서 사용해 왔다. 일반적으로 알 수 없는 변수의 경우 x, y, z를, 상수를 a, b, c로 많이 지정해 왔는데, i, j, k는 알파벳의 중간 어디쯤에 있는 무언가로 적당해서 쓰기 시작한 것이 아닌가 하는 추측이 있다. 지금의 컨벤션은 그때도 컨벤션이었기 때문에 사용되었을 거라고 하니, 아마 그때의 수학자들도 역사적으로 그렇게 써 왔으니까 계속 그런 방식으로 연구해 온 것이 아닐까 싶다.
포트란 개발자분이 이야기한 단어 'Integer'에 대한 내용과 수학의 전통은 어떻게 보면 거리가 있는 내용 같은데, 어찌 됐든 아이디어를 잘 가져와 의미를 잘 끼워 맞추게 된 것 같다.
'개발' 카테고리의 다른 글
깃헙에 반영되지 않은 예전 커밋 잔디심는 방법 (0) | 2021.11.12 |
---|---|
vscode에서 건드리지 않은 파일이 깃의 changes에 올라올 때 해결법 - cache 삭제 (0) | 2021.10.22 |
프록시(프락시) 서버 뜻, 프록시의 종류 및 URI 확장에 대해 정리 (0) | 2021.10.09 |
동적 타입 언어(statically typed languages) vs 정적 타입 언어(dynamically typed languages) (1) | 2021.09.07 |
인터프리터 언어(Interpreter Language) vs 컴파일 언어(Compiled Language) (0) | 2021.09.06 |