我以为我了解Unix编程一词的含义,但是现在,在内核/ C编程上下文中阅读它之后,我觉得需要澄清该术语的含义。
我不清楚这是否意味着:
- Shell编程
- Unix编程工具,
- Unix命令行工具的特定编程方式/模式(例如,与“ Unix shell编程”的管道方式一致),或者
- 其他的东西。
我以为我了解Unix编程一词的含义,但是现在,在内核/ C编程上下文中阅读它之后,我觉得需要澄清该术语的含义。
我不清楚这是否意味着:
Answers:
“ Unix编程”是指为Unix环境显式编程。这将包括对符合相关标准(例如POSIX)的shell进行编程。但是,在假定这些特定于* 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一直是最普遍用于编写操作系统的语言,并且“操作系统”的性质决定了该类别中的许多内容。特定于OS的C编程” –除网络连接外的另一个日常示例是面向文件系统的内容,例如状态文件和读取目录。因此,由于C语言的基本编程不可避免地涉及许多特定于OS的元素,因此到处都有各种各样的“ Unix C语言编程”类型的书。诸如perl或java之类的可移植语言则不是这种情况。在这种情况下,本书的主题可能是“ Perl中的系统编程”,或更可能是普通的“使用Perl编程”。