我以为我明白这个词是什么意思Unix编程意思是,但现在,在阅读了内核/C 编程上下文中的内容后,我觉得我需要澄清这个术语的含义。
我不清楚这是否意味着:
- 外壳编程,
- Unix 编程工具,
- Unix 命令行工具编程的特定方式/模式(例如,同意“Unix shell 编程”的管道方式),或
- 其他的东西。
答案1
“Unix 编程”是指明确针对 Unix 环境的编程。这包括对符合相关标准的 shell 进行编程(例如POSIX)。然而,它还包括以任何语言进行编程,同时明确使用类似标准化的系统接口和资源,假设这些是特定于 *nix 世界的。
例如,没有 C 或 C++ 第三方库的网络编程是不可移植的,因为这两个标准都没有对此进行说明。 C/C++ 中的网络是使用操作系统指定的接口来实现的,而在 *nix-ish 系统上,这或多或少是通用的,您不能将该代码不变地移植到(例如)Windows,反之亦然。因此,用 C 或 C++ 进行网络工作意味着使用可移植库或针对平台,而 Unix 是后一种情况的一种可能性,因此,这就是“unix 编程”(以及 C 或 C++ 编程和网络编程)。1
然而,使用许多高级语言(例如 perl、python 或 java)进行网络编程是便携的;这些语言通常用 C 实现,但虽然实现细节因平台而异,但接口却没有差异。因此,您可以用 perl 编写网络代码,该代码应该在任何运行 perl 的系统上运行;在 Unix 系统上,这由解释器实现翻译成适当的本机调用,而在 Windows 系统上,它将以不同的方式翻译。由于您的实际 Perl 代码除了 Perl 之外不特定于任何内容,因此它不是 Unix 编程。这是网络编程,也是perl编程,但不是unix编程。
1. 由于 C 和 Unix 之间密切的历史关系,事实上 C 一直是最常用于编写操作系统的语言,以及“操作系统”的本质,“操作系统”类别中有很多东西操作系统特定的 C 编程”——除了网络之外的另一个日常示例是面向文件系统的东西,例如统计文件和读取目录。因此,出现了各种“C Unix 编程”类型的书籍,因为 C 语言的基本编程不可避免地涉及许多操作系统特定的元素。对于更可移植的语言,例如 perl 或 java,情况并非如此。在这种情况下,这本书的主题可能是“系统用 Perl 进行编程”,或更可能只是简单的“用 Perl 进行编程”。