무슨 일이 같은 같은 untelling 시스템 호출 이름을 사용하는 이유 time
와 creat
대신 getCurrentTimeSecs
과 createFile
유닉스에 어쩌면 더 적합 또는, get_current_time_secs
하고 create_file
. 다음 요점은 다음과 같습니다. 왜 누군가가 cfsetospeed
낙타 케이스없이 또는 최소한 밑줄없이 읽을 수 있도록해야합니까? 물론 호출에는 더 많은 문자가 있지만 코드의 가독성이 더 중요하다는 것을 모두 알고 있습니다.
답변
그것은 시간의 기술적 제약 때문입니다. POSIX 표준은 1980 년대에 만들어졌으며 1970 년에 탄생 한 UNIX를 참조했습니다. 당시 여러 C 컴파일러는 6 ~ 8 자 길이의 식별자로 제한되어 변수와 함수의 길이에 대한 표준을 정립했습니다. 이름.
관련 질문 :
답변
dr01이 옳지 만 또 다른 이유가 있습니다-유용성. 과거에는 키보드 입력만큼 편안한 느낌이 없었습니다. 운이 좋으면 구식 타자기와 비슷한 것이 있습니다. 운이 좋지 않은 경우, 실제 물리적 작업이 필요한 시스템 ( “키”를 누르는 데 많은 힘이 필요함)을 처리하거나 카드에 구멍을 수동으로 뚫어야했습니다.
이것은 6-8 자 이내로 명령을 가능한 한 짧게 유지하려고했습니다. 당신이 가지고있는 이유입니다 ls
대신 list
하고, creat
대신 create
. 그 시대의 코드는 a
, x
그리고 i
물론 x2
친구 와 같은 변수로 가득 합니다. 타이핑은 많은 작업이었습니다. 오늘 listIndex
은 “타이핑”에서했던 것보다 타이핑을 덜받으며 i
더 이상 느리지는 않습니다 (특히 자동 완성과 같은 추가 기술 사용).
진짜 질문은-왜 그렇게 많은 유닉스 관용구가 더 이상 바람직하지 않더라도 지속 되는가?
답변
다른 답변 외에도 Unix는 Multics, CTSS 및 기타 현대 운영 체제에 대한 반응으로 개발되었으며 이름 지정 규칙에 대해 더 장황한 것으로 나타났습니다. http://www.multicians.org/devdoc.html 에서 이러한 OS에 대한 정보를 얻을 수 있습니다 . 예를 들어 http://www.multicians.org/mspm-bx-1-00.html 은 change_name
파일 이름 바꾸기 명령을 제공 합니다. 유닉스를 비교하십시오 mv
.
또한 매우 짧은 시스템 호출 이름이 지속되는 주된 이유 는 이전 버전과의 호환성입니다. 최신 API는보다 명시적인 경향이 있습니다. 예를 들어 gettimeofday
와 clock_gettime
대신의 time
.
(오늘날, 루프 인덱스 whateverIndex
대신에 사용하는 것이 내 책 i
에서 자동 코드 검토 실패입니다 . 😉
답변
Dennis Ritchie는 Fortran에 필요하지 않은 링커 기능에 의존하지 않을 C라는 제약 조건을 설정했습니다. 따라서 외부 이름은 6 자로 제한됩니다.