UNIX / POSIX 시스템 호출 이름을 알아볼 수없는 이유는 무엇입니까? 요점은 다음과 같습니다. 왜

무슨 일이 같은 같은 untelling 시스템 호출 이름을 사용하는 이유 timecreat대신 getCurrentTimeSecscreateFile유닉스에 어쩌면 더 적합 또는, 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.htmlchange_name파일 이름 바꾸기 명령을 제공 합니다. 유닉스를 비교하십시오 mv.

또한 매우 짧은 시스템 호출 이름이 지속되는 주된 이유 는 이전 버전과의 호환성입니다. 최신 API는보다 명시적인 경향이 있습니다. 예를 들어 gettimeofdayclock_gettime대신의 time.

(오늘날, 루프 인덱스 whateverIndex대신에 사용하는 것이 i에서 자동 코드 검토 실패입니다 . 😉


답변

Dennis Ritchie는 Fortran에 필요하지 않은 링커 기능에 의존하지 않을 C라는 제약 조건을 설정했습니다. 따라서 외부 이름은 6 자로 제한됩니다.