2010-12-03 232 views

回答

16

几个因素应该在我的opinon都考虑

  1. 在你必须能够达到低层次的东西,越来越接近现实世界的硬件系统程序设计语言。在应用程序语言中,有一种用语言设计的“虚拟世界”(希望更好,更容易互动),而且您只需要能够应付这种情况。

  2. 在系统编程语言中,应该没有性能方面的让步。人们必须能够编写代码来挤出硬件中的所有汁液。这不是应用程序编程语言中最大的问题,因为实际编写程序所需的时间起着更重要的作用。

  3. 因为2系统编程语言可以自由地假定程序员没有错误,所以不会有“运行时错误”警卫。例如,索引出阵列将意味着世界的尽头,除非硬件免费提供这些检查(但在这种情况下,您可以选择更便宜或更快的硬件)。这个想法是,如果你认为代码是正确的,那么为检查不可能的事情付出很小的代价是没有意义的。另外一个系统编程语言不应该试图阻止程序员做他/她有意做的事情......假设他/她知道这是正确的。在应用程序编程语言中,它被认为很好地帮助程序员检查代码,并试图强制代码使用某些哲学模式。在应用程序编程语言中,例如执行速度,打字时间和代码大小可能会被牺牲,试图帮助程序员避免自己拍摄。

  4. 因为3系统编程语言将更难通过实验学习。从某种意义上说,它们是一种强大但危险的工具,应该仔细思考每一条语句,并且出于同样的原因,它们是调试比较困难的语言。在应用程序编程语言中,相反,尝试看看的方法可能是合理的(如果虚拟世界抽象不会泄漏太多),并且让错误进入以后删除它们被认为是一个可行的选择。

9

就像IT界很多东西一样,这条线是模糊的。例如,C开始作为一种系统编程语言(并且被用于实现Unix),但是它也被用于应用程序开发。尽管如此,显然有一些语言比其他语言更适合于系统编程(例如,C/C++比COBOL/FORTRAN更适合系统编程)。同样,有些语言更适合应用程序开发,而不是系统编程。 VB.NET。

上述示例中突出显示的语言特性是系统编程语言(如C/C++)的低级功能(例如指针,位操作符等)。当然,这个老玩笑说C是一种“海”级语言(坐在集合层和“高”层之间)。

警告:我从OS开发人员/操作系统工具开发人员的角度来进行系统编程。

我认为可以公平地说,尽管开发使用Java的操作系统的项目(虽然我相信大多数是本地编译的,而不是字节代码和JIT的/解释),系统编程语言的目标是本机机器码的目标平台。因此,主要针对托管代码/解释代码的语言不太可能用于系统编程。

无论如何,这确实是一个足以挑起无论是在支持和反对:)

5

这些都是不准确的概念,但在本质上一些评论,编程语言系统适用于编写操作系统(让他们有低级概念(如指针,与汇编器的集成,与内存相对应的数据类型和注册组织),而应用程序编程语言更适合于编写应用程序,因此它们通常使用更高级的概念来表示计算(例如OOP ,闭包,内置的复杂数据类型等)。

2

一般而言,系统编程语言的级别低于应用程序编程语言。但是,语言本身与它无关。它更多的是语言实现的细节。

例如,Pascal开始作为教学语言的生活,并非常严格的应用程序..然而,它已演变成一种系统语言,并被用于创建早期版本的MacOS和Windows。

C#不是典型的系统语言,因为它不能进行低级别的工作,尽管管理操作系统应运而生,但这条线是模糊的。

2

我不认为这里有最终答案。

Perl和Python来默认与几乎所有的Linux发行版...都可以联C ...都可以做的作业控制等“低层次”的任务......穿线等

任何语言,一组好的系统调用绑定和/或FFI应该像C或C++一样具有基本的系统意识。

唯一的语言,我会打折为系统语言是那些专门针对另一个平台(JVM,CLR),并积极寻求防止本地交互