유닉스 프로그래밍 이라는 용어의 의미를 이해했다고 생각 했지만, 이제는 커널 / C 프로그래밍 컨텍스트에서이 용어에 대해 읽은 후이 용어의 의미를 명확히해야한다고 생각합니다.
다음과 같은 경우 분명하지 않습니다.
- 쉘 프로그래밍
- 유닉스 프로그래밍 도구
- Unix 명령 줄 도구 프로그래밍의 특정 방법 / 패턴 (예 : "Unix shell programming"의 파이프 라인 방법에 동의하기 위해) 또는
- 다른 것.
유닉스 프로그래밍 이라는 용어의 의미를 이해했다고 생각 했지만, 이제는 커널 / C 프로그래밍 컨텍스트에서이 용어에 대해 읽은 후이 용어의 의미를 명확히해야한다고 생각합니다.
다음과 같은 경우 분명하지 않습니다.
답변:
"유닉스 프로그래밍"은 유닉스 환경을 위해 명시 적으로 프로그래밍하는 것을 말합니다. 여기에는 관련 표준 (예 : POSIX ) 을 준수하는 쉘에 대한 프로그래밍이 포함됩니다 . 그러나,이 시스템은 * nix 세계에만 해당되는 것으로 가정하고 유사하게 표준화 된 시스템 인터페이스 및 리소스를 명시 적으로 사용하면서 모든 언어로 프로그래밍하는 것도 포함합니다.
예를 들어, C 또는 C ++에서 타사 라이브러리가없는 네트워크 프로그래밍은 표준에 대해 아무 것도 말하지 않기 때문에 이식성이 없습니다. C / C ++의 네트워킹은 운영 체제에 의해 지시 된 인터페이스를 사용하여 구현되며, * nix 시스템에서 이것은 보편적 인 것이므로 해당 코드를 Windows로 (예) Windows로 또는 그 반대로 변경하지는 않습니다. 따라서 C 또는 C ++에서 네트워크 작업을 수행한다는 것은 휴대용 라이브러리를 사용하거나 플랫폼을 대상으로하는 것을 의미하며 Unix는 나중에 "유닉스 프로그래밍"(및 C 또는 C ++ 프로그래밍 및 네트워크 프로그래밍) 일 가능성이 있습니다. 1
그러나 perl, python 또는 java와 같은 많은 고급 언어의 네트워킹 프로그래밍 은 이식 가능합니다. 이러한 언어는 일반적으로 C로 구현되지만 구현 세부 사항은 플랫폼마다 다르지만 인터페이스는 다릅니다. 따라서 perl이 실행되는 시스템에서 실행되는 네트워킹 코드를 perl로 작성할 수 있습니다. 유닉스 시스템에서 이것은 인터프리터 구현에 의해 적절한 네이티브 호출로 변환되며, 윈도우 시스템에서는 다르게 번역됩니다. 실제 펄 코드는 펄 이외의 것이 아니기 때문에 유닉스 프로그래밍이 아닙니다. 네트워크 프로그래밍과 펄 프로그래밍이지만 유닉스 프로그래밍은 아닙니다.
1. C와 Unix의 밀접한 역사적 관계로 인해 C가 일반적으로 운영 체제를 작성하는 데 가장 많이 사용되는 언어였으며 "운영 체제"의 특성상 " OS 특정 C 프로그래밍 "-네트워킹 이외의 일상적인 예는 파일 스 태팅 및 디렉토리 읽기와 같은 파일 시스템 지향적 인 것입니다. 따라서 C의 기본 프로그래밍에는 필연적으로 많은 OS 관련 요소가 포함되기 때문에 다양한 "Unix Programming in C"유형 책이 있습니다. 이것은 perl 또는 java와 같은 이식성이 높은 언어의 경우에는 해당되지 않습니다. 이 경우이 책의 주제는 " Perl의 시스템 프로그래밍"이거나 "Perl을 사용한 프로그래밍"일 가능성이 높습니다.