术语-源代码是程序吗?[关闭]


10

我是编程的初学者,对术语没有很好的了解。我想知道以C或C ++等编译语言编写的源代码是否被视为程序?如果没有,谁能解释为什么?


1
是的,源代码被视为程序。程序可以通过它们包含的代码类型来区分,例如“源代码”,“目标代码”,“机器代码”和“可执行代码”。
罗伯特·哈维

6
这个问题几乎以“牛肉是牛吗?”的方式打动了我。出于几乎所有相同的原因。
RM

1
面粉和糖是蛋糕吗?
Bryan Oakley

Answers:


16

请参阅Wikipedia上有关Program的条目:(我已添加了粗体

计算机程序是指令的集合,这些指令在由计算机执行时执行特定的任务。计算机需要程序才能运行,并且通常在中央处理单元中执行程序的指令。

计算机程序通常由计算机程序员以编程语言编写。编译器可以从程序中以其人类可读的源代码形式获得机器代码,该机器代码由计算机可以直接执行的指令组成

因此,“程序”是计算机执行的指令集,“源代码”是这些指令的人类可读版本。


1
谢谢您的回答。如果我理解正确,则源代码是一个程序,因为它定义了一组指令,这些指令在计算机执行时会执行任务。但是,即使那些指令不是最后由CPU执行的指令,CPU也会执行指令,这些指令是高级语言定义的指令的翻译吗?
奥斯曼

7

我想知道以C或CPP之类的编译语言编写的源代码是否被视为程序?

是的。

这种思路的危险已经到来:“计算机执行我的程序,我用[例如] C语言编写程序,因此源代码是计算机的指令”。

这就是20多年来我们中许多人所想的。在过去十年左右的时间里,我们了解到其他程序员是源代码的主要受众。所以是的,该资源就是节目,就像您在剧院获得节目的方式一样,它可以告诉其他人正在发生的事情。源代码的优点在于,它不仅是程序,而且还是计算机指令集...


1

是否存在取决于上下文。这样想吧。我忘了这个概念的正式名称是什么,但是有一种语言理论说单词具有的含义不是描述什么是什么,而是描述什么不是。一个红色的苹果不是红色的,因为它是红色,而是因为它不是蓝色,不是绿色等。忽略这是否正确,只是假设它是一秒钟,然后考虑一下该问题。

因此,当我们想到这个概念时,我们可以将源代码与房屋设计图进行比较。如果您正在查看其他一叠蓝图中的蓝图,并询问“这是一所房子”,而其他蓝图是用于商业建筑,桥梁等的,那么答案是肯定的。因为该蓝图不能代表所有其他东西,而房屋方面则是将它与其他蓝图区分开的地方。

但是,显然,房屋的蓝图与您可以站立的用木头和石膏板制成的实际房屋并不相同。在某些情况下,该蓝图和实际房屋之间的差异很有意义。计划和可交付成果之间存在差异。

用编译语言编写的程序源代码就像使用蓝图一样,如果将其与库,内核模块等进行比较,则源代码和程序在概念上是相同的。但是,如果您正在研究如何编译,设计和部署软件,则两者并不相同。再次,计划和可交付成果之间存在差异。

tl; dr:有时候什么是什么,它代表什么,被认为是同一件事,但其他时候则不是。


0

源代码是原始代码行(由人类编写)的总称。非翻译的其他类型的代码可以通过翻译或其他程序来创建。

知识产权范围更广,可以包括源代码和其他代码或数据。

程序的完整性与其他代码(源代码或其他代码)不同。程序是足够完整的代码,可以运行(或打算运行)。并非所有代码(源代码或其他代码)都具有足够的完整性来运行。例如,库旨在与其他代码组合并由其他代码使用,因此通常不会被认为是程序,因为它们无法运行(本来不是要运行)。

完整性有时意味着有一个main,操作系统将其用作程序的入口点。

一般来说,当程序运行时,称为进程。


1
请不要提及“知识产权”,因为这是故意使人们感到困惑的术语。
whatsisname '16

0

源代码优选的在其上的软件的形式人类软件开发者的工作。洞察力在于软件开发是一个社会过程,因此源代码是一个社会概念。您主要为人类(您的开发人员,甚至您自己在同一程序上工作了几个月)编写源代码,而不是为计算机编写代码。对于用C编码的程序,通常是(但不总是).cC文件和.h头文件,但Makefile也是源代码。但是有时会使用元编程技术:某些程序生成 C代码,然后输入该生成器的代码被视为源代码(即使该生成器的输出是C代码)。两个例子:您可以使用一些解析器生成器(例如GNU bison)来解析问题,然后该.y生成器的输入文件就是源代码。或者,您可以编写一个小的awkgawk脚本,以从某些sqlite数据库中提取某些数据,这些数据将转换为例如enum 某些生成的标头中的大声明;那么该数据库将包含源代码!

一个计算机程序,在对比度运行它涉及到计算机。它通常是通过一些源代码(以某种编程语言编写的,并且是在技​​术文档中用英语编写的规范 - 参见C11的n1570草案-而非软件工具!)编译成二进制可执行文件而获得的

另请阅读有关免费软件的信息。深入研究现有自由软件项目的源代码(请参阅githubsourceforge以找到一些源代码)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.