2014-12-23 109 views
2

这样一个简单的问题,但我还没有找到合理的答案。我目前使用Python进行编程,这是一种解释性语言。我总是听说有人在程序中使用多种语言?然后我使用脚本语言听到他们。在这里,有人可以用简单的英语向我解释我所了解的编译语言和脚本以及地球上人们如何一起使用多种语言之间的区别?这只是没有任何意义。你如何一起使用编译的编程语言和脚本语言?

某人如何一起使用JavaScript,PHP和ASP。或者用C/C++编写游戏并使用python作为脚本?这对我来说没有意义,我认为它们是不同的语言,所以它们如何与对方发挥作用?

+2

好的问题在错误的地方我认为。去这里问问http://programmers.stackexchange.com。和语言差异阅读这个http://stackoverflow.com/questions/17253545/scripting-language-vs-programming-language –

+0

好吧谢谢! – user3712563

+0

没有单一的方法。你可以让脚本执行C程序,就像执行命令一样。你可以在Python中嵌入C代码,让它们作为一个单独的进程运行,允许你从Python中调用C函数。你可以有一个C进程和一个Python进程通过文件,套接字等进行通信。 – kec

回答

2

How do you use programming languages and scripting languages together?

脚本语言编程语言。您可能会想到脚本/解释语言的典型替代方法:编译语言。

I always hear of people using multiple languages in a program

语言有时在源代码中混合在一起,因为它们可以。有些语言是建立在旧版本的基础上的,并且有可以使用旧版本的编译器。如果您使用C++进行编程,那么应该可以使用好旧的c语言。大多数C++编译器还允许您输入汇编代码。这样做的原因可以从一种语言自己无法完成的技术要求(性能等)到程序员仅仅感觉用其他语言解决特定问题更加舒适。即没有共同的编译器(或翻译)

Othertimes语言一起使用,以建立一个单一的节目。这要归功于可以将它们连接在一起的链接器。 DLL库就是一个很好的例子。我不关心什么是DLL库,只要它能够工作并发布我能理解的API。

有时,不同的语言会生成不同的可执行文件,这些可执行文件不会被链接程序连接。但只要他们可以跑步,并相互交流,他们可以一起工作。如果你有一个用java编写的MP3录音机和一个用C++编写的播放器,他们可以一起工作,只需同意一个mp3是什么。

... explain to me the difference between what I know as programming languages and scripts

编译语言和解释型语言,也被称为脚本之间的区别,它们是如何运行或执行。任何编译语言在运行之前都必须进行编译。解释的语言不是。这里有两件令人惊讶的事情要理解:编译意味着什么以及为什么需要它。也就是说,为什么每种语言都没有解释。

编译语言涉及许多步骤,但它的心脏是把一个TXT文件转换成二进制文件。这个二进制文件将包含机器码。机器代码是您计算机说话的基本语言。这些都是大家都在谈论但从未见过的着名的1和0。等一下,我会把它们展示给你。

一个文本文件,是人类的东西可以,如果你正在读这篇文章,你正在阅读的TXT文件,现在有实际上记事本(或六,或文字编辑,或者...)读取。

的二进制文件是什么,通常看起来像火星人写的,当你在记事本中打开它。他们是这样的:

an executable program opened in a text editor

在文本编辑器

这其中大部分看起来像废话打开一个可执行程序。这是因为它不是用人类语言编写的。这是机器语言。这对计算机来说很容易理解。部分原因是因为记事本认为它是一个txt文件并试图将其作为一个文件呈现。只有可执行二进制文件中的实际txt才能被人读取。在十六进制编辑器

打开

same executable program opened in a hex editor

相同的可执行程序在这里,我们可以看到呈现为一种叫做十六进制表示数量庞大相同的文件。我们显示这样的二进制文件,因为以二进制显示它们需要更多空间。

hex in calculator

在十六进制模式的计算器进入了数量庞大的小片段。

enter image description here

相同数量的片断,但在二进制呈现。这里是你着名的1和0。

如果你回头看看十六进制编辑器的图片,你会发现它有它一点东西,你可以读到,“这个程序不能在DOS下运行”

也就是说文本字符串有已嵌入二进制可执行文件中。这是关于发生了什么的一个重要暗示。事实证明,txt文件也是二进制文件。每个文件都是二进制计算机中的二进制文件。那真正的区别是什么?编码!

编码是你如何编码信息。 ascii txt文件使用范围从0-127的数字。还有其他的txt文件代码代码,但ascii是一个流行的代码。当您编写脚本或编写编译(或解释)语言的源代码时,您使用ascii(或unicode或...)编码信息。

编译语言确实意味着将此txt文件翻译成机器代码文件。当运行时,计算机不会因再次进行翻译而变慢。机器代码文件也可以做得更小,因为它可以更紧凑地编码信息,编译器会抛出它不需要的东西,比如变量名称。

解释型语言必须在尝试运行该程序的同时进行相同的翻译。尽管现代口译员和虚拟机喜欢吹嘘他们如何能够更快地完成一些事情,但这通常会减慢速度,因为他们拥有编译语言所不具备的额外信息

由于计算机越来越快,速度越来越慢随着越来越多的人采用基于口译的语言来解决他们的问题,问题越来越少。

由于编译和解释之间的差异与源代码txt文件翻译成机器代码的时间有关,您可能仍然想知道这些语言之间的区别是什么。是什么让PHP如此特别以至于它可以被解释,而C++必须被编译?

答案不算什么。对于每种解释型语言而言,可以想象有人可以编写一个编译器来编译机器代码并将其作为文件存储,然后再运行计算机以避免重复执行该工作。同样可以想象,有人可以为每种编译语言编写解释器。那他们为什么不呢?一些他们have。 Perl是一种可以编译的解释型语言。

当人们谈论C++是一种编译语言时,他们的意思是传统的运行方式是将源代码编译为机器代码并执行(运行)机器代码。即使有人编写了可以处理C++的解释器,人们仍然会将C++看作是一种编译语言,因为很长一段时间就是这样,并且仍然是最经常使用的。这是传统。

How can someone use Javascript, PHP, and ASP together.

PHP和ASP是网站通常都使用服务器端。他们一起使用的最典型的原因是因为一家商店开始使用它并决定切换到另一个。或者他们确实需要一些第三方解决方案,这些解决方案是在另一方面编写的,并且发现他们需要支持两者的开发。 PHP可以支持网站上的一个页面,而ASP则支持另一个页面。

两者都可以很容易地使用JavaScript。 JavaScript运行在客户端。它的一部分甚至可能是由服务器端PHP或ASP编写的。

Or program a game in C/C++ and use python as scripts? 我从来没有使用过c/C++和python,但我会告诉你我已经使用perl和java在一起。我们使用perl在eclipse中自动设置我们的java项目。

不同的语言对解决某些类型的问题更好。对于需要强大文本处理的小型项目,Perl非常适用。对于需要可靠方法来解决依赖关系和控制复杂性的大规模多开发人员项目,Java非常适用。

您可能认为没有翻译员,两种语言不应该能够相互沟通,但编程语言会使程序执行工作。只要一切工作正确而一致,他们实际上并不需要彼此交谈。那么,除非这是他们的工作:)

事实上,我敢打赌,你现在使用的计算机有很好的资金,它们有运行和使用多种语言编写的程序。

+0

由于每个十六进制数字都是4位,因此不会在二进制中显示可执行文件占用四倍空间作为十六进制? –

+2

是的。空间比例实际上比当你考虑组合数字所需的空间时更差。这就是为什么,尽管计算机中的每一块信息都处于1和0的大部分时间,但您看到它们是某个艺术家参与的时候。很少有人直接在1和0的工作。他们学习读取十六进制并保存屏幕空间。 – CandiedOrange