권위 주장
글쎄요 .. 최근 언어를 포함한 대부분의 언어는 0부터 시작합니다. 이 언어는 숙련 된 사람들이 작성 했으므로 친구는 틀렸어 야합니다 ...
왜 하나?
왜 1이 0보다 나은 시작 색인입니까? 왜 2 또는 10이 아닌가? 답 자체는 흥미 롭습니다. 왜냐하면 사람들이 아이디어를 변호하는 과정에 대해 많은 것을 보여주기 때문입니다.
첫 번째 주장은 그것이 더 자연 스럽다는 것 입니다 . 첫 번째 는 적어도 대부분의 사람들에게 보통 다른 것 보다 먼저 있기 때문 입니다 ...
번호 - 하나 개의 인수는 마지막 인덱스는 배열의 크기이다 ...
나는 이런 종류의 논쟁에 대해 일반적으로 듣는 이유의 "품질"에 여전히 깊은 인상을받습니다 ...
왜 제로가 아닌가?
... "1 기반"표기법은 서양 문화에서 남은 것이지만, 더 이상은 아니지만 수세기 동안 0의 존재를 무시했습니다.
믿거 나 말거나, 원래의 gregorian calendar는 -3, -2, -1, 1, 2, 3에서 나옵니다 ... 서양 과학에 기여한 문제를 상상해보십시오 (예 : 1 월 1 일부터 몇 년까지 -2 년) 원래 gregorian calendar보다 뺄셈처럼 단순한 것과 충돌하는 것을 보려면 1 월 2 일 1 일까지 ...).
1 기반 배열을 유지하는 것은 21 세기의 마일과 야드를 유지하면서 (글쎄, 나는 그것을 위해 수정 될 것입니다 ... ^ _ ^ ...)과 같습니다 ...
왜 제로? 수학이기 때문에!
먼저 (죄송합니다 ... 다시 시도하겠습니다)
Zero , Zero는 아무것도 아니며, 하나는 무언가입니다. 그리고 일부 종교 문헌들은 "처음에는 아무것도 없었다"고 주장합니다. 일부 컴퓨터 관련 토론은 종교 토론만큼이나 불타고있을 수 있습니다. 따라서이 시점은 주제에서 벗어나지 않습니다 ... ^ _ ^
첫째 , 0 기반 배열로 작업하고 1 기반 배열로 작업하고 0 값을 찾기 위해 해킹하는 것보다 0 값을 무시하는 것이 더 쉽습니다. 이 이유는 이전과 마찬가지로 어리석은 일이지만 1 기반 배열을 선호하는 원래의 주장도 상당히 잘못된 것입니다.
둘째 , 숫자를 다룰 때 기회가 높을 때마다 수학을 다루게 될 것이고, 수학을 다룰 때 기회가 좋다는 것을 기억하십시오. 어리석은 해킹이 쓸모없는 규칙을 피할 수는 없습니다. One-based 표기법은 수세기 동안 수학과 날짜를 괴롭 혔으며, 실수로부터 배움으로써 미래 지향적 과학 (컴퓨터 언어 포함)에서 피하기 위해 노력해야합니다.
셋째 , 하드웨어에 연결된 컴퓨터 언어 배열의 경우 21 개의 정수로 구성된 C 배열을 할당하고 포인터 10을 오른쪽으로 이동하면 자연스러운 [-10-10] 배열이됩니다. 이것은 하드웨어에 자연스러운 것이 아닙니다. 그러나 수학을위한 것입니다. 물론 수학은 쓸모가 없었지만 마지막으로 확인했을 때 세계 대부분의 사람들은 그렇지 않다고 믿었습니다.
넷째 , 이미 다른 곳에서 지적했듯이 불연속 위치 (또는 불연속 값으로 거리가 줄어든 경우)에도 건물의 바닥 (0에서 시작)과 같이 첫 번째 인덱스는 0이되고 카운트 다운이 감소합니다 (3, 2, 1, ZERO !), 지상고도, 이미지의 첫 번째 픽셀, 온도 (273K의 수냉 온도로서 절대 0 또는 섭씨 0 도의 경우 켈빈 0). 실제로, 실제로 하나에서 시작하는 유일한 것은 " 첫번째 , 두번째 , 세번째 등" 의 전통적인 방법입니다 . 반복 표기법으로 자연스럽게 다음 지점으로 안내합니다.
다섯 개 다음 (자연스럽게 다음 지점 이전은 ) 높은 수준의 컨테이너가없는 인덱스로, 액세스해야한다는 것입니다,하지만 의해 반복자 , 인덱스하지 않는 자체가 고유 값을 갖는다. 나는 당신의 "고수준 언어"옹호자가 그것을 언급하지 않은 것에 놀랐습니다. 지수 자체가 중요한 경우 수학 관련 질문을 염두에 두는 시간의 절반을 걸 수 있습니다. 따라서 컨테이너는 수학 친화적이고 1에서 시작하는 "당신의 오래된 gregorian calendar"와 같이 수학적으로 비활성화되지 않고 작동하기 위해 역류 핵이 필요합니다.
결론
동료 프로그래머가 말한 주장은 본질적으로 모호한 컴퓨터 언어 (명령을 흐리게하고 싶지 않은 곳)와 말하고 쓰는 언어 습관을 불필요하게 묶고 하드웨어를 잘못 부여했기 때문에 오류입니다. 이 문제의 원인으로, 그는 추상화가 점점 더 높아짐에 따라 제로 기반 배열이 과거의 일이라는 것을 확신시키기를 희망합니다.
제로 기반 배열은 수학 관련 이유로 제로 기반입니다. 하드웨어 관련이 아닙니다.
이제 이것이 동료 프로그래머에게 문제가된다면 반복자 및 foreach 루프와 같은 실제 고수준 구조로 프로그래밍을 시작하십시오.