프로그래밍을 배울때 가장 중요한점 중 하나가 바로 인덱스가 0부터 시작한다는 개념이라고 생각합니다. 일부 강의나 강좌의 경우에 1을 기준점으로 삼는 경우가 있는데, 특히 초보일때 이렇게 배우면 정말 헷갈립니다. 특히 머리 좋은분들의 강의가 이런 경우가 꽤 있는데 그 분들은 머리속에서 숫자에 대한 연산에 강해서 별 대수롭지 않게 생각하기 때문에 지나가버려서 일반인들은 그 강좌를 따라하면 점점 머리가 꼬이게 됩니다. 왜냐하면 일반적인 연산이나 String처리시에는 1부터 세어도 문제가 없지만, for 문같은 문법으로 들어가면 N-1,N+1구간이 생기는데 이것을 처리할때 0으로 하지 않고 1로 해본다고 합시다. 그러면 내부적인 i값이 N-1 일경우는 0 N+1일 경우는 2가 됩니다. 뭔가 인식하기에 중간값이 0이 아니게 되는겁니다. 실제 내부적으로는 1이 중간값이지만 일반적인 인간의 인식적으로 그렇다는 이야기죠. 0을 기본값으로 두면 -1과 +1로 누구나 이전값이 0이라는것을 직관적으로 알 수 있습니다. 수식으로 표현하면 1을 기본값으로 두면 1 ≤ i < N+1 이 되는데, 0으로 기본값을 두면 0 ≤ i < N이 된다는것입니다. 수식으로 보면 수학에 관심이 없으신 분도 +1이 따로 붙어있는것보단 없는것이 더 보기에 갈끔하다는것을 아실 수 있습니다.
자세한 내용이 궁금하신분은 다음 링크를 참조해 보시면 좋습니다.
코코넛냠냠 :: 0부터 시작하는 이유와 마지막 수를 인덱스로 포함하지 않는 이유 (tistory.com)
읽어보면 집합론관련이야기도 나오는데 상당히 흥미로운 장문의 좋은글입니다. 정독을 권합니다.
'프로그래밍 > 프로그래밍' 카테고리의 다른 글
[단상] 실제 코드를 작성하려고 하면 생각처럼 되지 않는 이유 중하나 (0) | 2021.07.18 |
---|---|
[단상] 286,386등의 오래된 장비를 왜 업그레이드 할 수 없는가? (0) | 2021.06.01 |
JAVA와 C 의 배열 선언의 차이점 (0) | 2021.03.09 |
[tensorflow] AttributeError: module 'tensorflow' has no attribute 'set_random_seed' (0) | 2021.02.13 |