그 말이 무슨 뜻인지 알 것 같았는데유닉스 프로그래밍하지만 이제 커널/C 프로그래밍 맥락에서 이에 대해 읽은 후에는 이 용어가 무엇을 의미하는지 명확히 해야 할 것 같습니다.
이것이 다음을 의미하는지 확실하지 않습니다.
- 쉘 프로그래밍,
- 유닉스 프로그래밍 도구,
- Unix 명령줄 도구를 사용한 프로그래밍의 특정 스타일/모드(예: "Unix 쉘 프로그래밍"의 파이프 스타일에 동의) 또는
- 다른 것들.
답변1
"Unix 프로그래밍"은 특히 Unix 환경을 위한 프로그래밍을 의미합니다. 여기에는 관련 표준(예:POSIX). 그러나 유사하게 표준화된 시스템 인터페이스와 리소스를 명시적으로 사용하면서 모든 언어로 프로그래밍하는 것도 포함됩니다(이것이 *nix 세계에만 해당한다고 가정).
예를 들어, C 또는 C++ 타사 라이브러리가 없는 네트워크 프로그래밍은 어느 표준에서도 설명하지 않기 때문에 이식성이 없습니다. C/C++의 네트워킹은 OS 지정 인터페이스를 사용하여 구현되는 반면, *nix-ish 시스템에서는 이것이 다소 보편적이므로 해당 코드를 Windows로 변경하지 않고 포팅할 수 없으며 그 반대의 경우도 마찬가지입니다. 따라서 C나 C++로 네트워크 작업을 한다는 것은 이식 가능한 라이브러리를 사용하거나 플랫폼을 대상으로 한다는 뜻이고, 유닉스는 후자의 경우도 가능하므로 그것이 "유닉스 프로그래밍"(그리고 C나 C++ 프로그래밍과 네트워크 프로그래밍)이다. 1
그러나 네트워크 프로그래밍은 Perl, Python 또는 Java와 같은 많은 고급 언어를 사용하여 수행됩니다.예이식 가능합니다. 이러한 언어는 일반적으로 C로 구현되지만 구현 세부 사항은 플랫폼마다 다르지만 인터페이스는 그렇지 않습니다. 따라서 Perl로 네트워크 코드를 작성할 수 있으며 코드는 Perl을 실행하는 모든 시스템에서 실행되어야 합니다. Unix 시스템에서는 이는 인터프리터 구현에 의해 적절한 기본 호출로 변환되지만 Windows 시스템에서는 다른 방식으로 변환됩니다. 실제 Perl 코드는 Perl 이외의 어떤 것에 국한되지 않으므로 Unix 프로그래밍이 아닙니다. 이것은 네트워크 프로그래밍이고 Perl 프로그래밍이지만 Unix 프로그래밍은 아닙니다.
1. C와 Unix 사이의 긴밀한 역사적 관계로 인해, C가 운영 체제를 작성하는 데 가장 일반적으로 사용되는 언어라는 사실과 "운영 체제"의 특성으로 인해 "운영 체제"에는 많은 것들이 있습니다. 카테고리 OS 관련 C 프로그래밍 " – 네트워킹 이외의 또 다른 일상적인 예는 파일 계산 및 디렉토리 읽기와 같은 파일 시스템 지향적인 것입니다. 따라서 C의 기본 프로그래밍은 불가피하기 때문에 다양한 "C Unix 프로그래밍" 유형의 책이 있습니다. 관련된 특정 요소는 Perl이나 Java와 같은 이식성 있는 언어의 경우에는 해당되지 않으며, 이 경우 이 책의 주제는 "체계Perl 프로그래밍" 또는 간단히 "Perl 프로그래밍"일 가능성이 높습니다.