systems programming language
和Application programming language
之间有什么区别?
答案 0 :(得分:16)
我的意见中应考虑一些因素
在系统编程语言中,您必须能够达到低级别的东西,接近真实的硬件世界。在应用程序语言中,有一种“虚拟世界”(希望更好,更容易与之交互),它是用语言设计的,你只需要能够处理它。
在系统编程语言中,在性能方面不应有任何让步。一个人必须能够编写能够从硬件中挤出所有果汁的代码。这不是应用程序编程语言中最大的问题,实际编写程序所需的时间起着更大的作用。
由于2,系统编程语言可以自由地假设程序员没有错误,因此不存在“运行时错误”保护。例如,从数组中索引将意味着世界末日,除非硬件免费提供这些检查(但在这种情况下,您可能会选择更便宜或更快的硬件)。我们的想法是,如果你认为代码是正确的,那么即使支付一小笔费用来检查不可能的代码也没有意义。系统编程语言也不应该试图禁止程序员做他/她想做的事情......假设他/她知道这是正确的事情。在应用程序编程语言中,它被认为可以帮助程序员检查代码并试图强制代码使用某些哲学模式。在应用程序编程语言中,可以牺牲执行速度,打字时间和代码大小等方法来帮助程序员避免自己拍摄。
由于3,系统编程语言将难以通过实验学习。从某种意义上说,它们是一种强大但危险的工具,人们应该仔细思考每一个语句,出于同样的原因,它们是调试更难的语言。在应用程序编程语言中,尝试看方法可能是合理的(如果虚拟世界抽象没有泄漏太多),并且让错误在以后删除它们被认为是可行的选择。
答案 1 :(得分:9)
与IT中的很多东西一样,这条线很模糊。例如,C作为一种系统编程语言开始其生命(并用于实现Unix),但它也曾用于应用程序开发。
话虽如此,显然有些语言比其他语言更适合系统编程(例如,C / C ++比COBOL / FORTRAN更适合系统编程)。同样,有些语言更适合应用程序开发而不是系统编程,例如。 VB.NET。
上述示例中突出的语言特性是C / C ++等系统编程语言的低级特性(例如指针,位操作运算符等)。当然有一个老笑话,C是一种“海”级语言(位于汇编级别和“高级”级别之间)。
警告:我是从OS开发人员/操作系统工具开发人员那里开始进行系统编程的。
我认为可以公平地说,尽管开发使用Java的操作系统的项目(尽管我认为主要是本机编译,而不是字节代码和JIT /解释),但系统编程语言的目标是本机的机器代码。他们的目标平台。因此,主要针对托管代码/解释代码的语言不太可能用于系统编程。
无论如何,这肯定足以在支持和反对中激起一些评论:)
答案 2 :(得分:5)
这些不是确切的概念,但实质上,系统编程语言适合编写操作系统(因此它们具有低级概念,如指针,与汇编程序的集成,与内存和寄存器组织相对应的数据类型),而应用程序编程语言更适合编写应用程序,因此它们通常使用更高级别的概念来表示计算(例如OOP,闭包,内置的复杂数据类型等)。
答案 3 :(得分:2)
通常,系统编程语言的级别低于应用程序编程语言。然而,语言本身与它无关......它更多的是语言实现的细节。
例如,Pascal开始作为一种教学语言,并且几乎是严格的应用程序..然而,它已经演变成一种系统语言,并用于创建MacOS和Windows的早期版本。
C#不是,通常是一种系统语言,因为它无法进行低级别的工作,尽管随着托管操作系统的出现,这条线也很模糊。
答案 4 :(得分:2)
我认为这里不再有最终答案了。
默认情况下,perl和python几乎每个Linux发行版都有...两者都可以内联C ...都可以进行作业控制和其他“低级”任务......线程等。具有良好系统调用绑定和/或FFI的任何语言都应该像C或C ++一样从根本上系统感知。
作为系统语言我唯一会打折的语言是专门针对另一个平台(jvm,clr)并主动寻求阻止本机交互的语言