How do you use compiled programming languages and scripting languages together?
这样一个简单的问题,但我没有找到一个合理的答案。我现在用一种解释性语言python编程。我总是听说人们在一个程序中使用多种语言?然后我听到他们使用脚本语言。这里有人能用简单的英语向我解释一下我所知道的编译编程语言和脚本之间的区别,以及人们如何在一起使用多种语言吗?这没有任何意义。
人们如何能同时使用javascript、PHP和ASP。还是用C/C++编程游戏,用Python作为脚本?这对我来说是没有意义的,他们是不同的语言,我想是有原因的,那么他们如何在彼此之间扮演角色呢?
脚本语言是编程语言。您可能会想到脚本/解释语言的典型替代方案:编译语言。好的。
江户十一〔一〕号好的。
语言有时在源代码中混合在一起,因为它们可以。有些语言是建立在旧的语言之上的,并且有可以与旧版本一起使用的编译器。如果你在C++中编程,你就可以使用好的老C。大多数C++编译器也允许您删除汇编代码。这样做的原因可以从一种语言本身无法满足的技术要求(性能等)到程序员仅仅觉得用另一种语言解决某个特定问题更舒服。好的。
其他时候,没有通用编译器(或解释器)的语言一起用于创建单个程序。这要归功于一个能将它们连接在一起的链接器。DLL库就是一个很好的例子。我不在乎DLL库是用什么编写的,只要它能工作并发布我能理解的API。好的。
有时不同的语言会生成不同的可执行文件,而这些可执行文件不是由链接器连接的。但只要他们能跑步,互相交流,他们就能一起工作。如果你有一个用Java编写的MP3记录器和一个用C++编写的播放器,它们可以简单地通过同意MP3是什么来协同工作。好的。
埃多克斯1〔2〕好的。
编译语言和解释语言(也称为脚本)之间的区别在于它们是如何运行或执行的。任何已编译的语言必须在运行之前进行编译。解释语言不是。这里有两件令人惊讶的事情要理解:编译意味着什么以及为什么需要它。也就是说,为什么每种语言都不能被解释。好的。
编译一种语言需要很多步骤,但它的核心是将TXT文件转换为二进制文件。此二进制文件将包含计算机代码。机器代码是计算机所说的基本语言。这些是著名的1和0,每个人都在谈论,但从未见过。等等,我给你看。好的。
文本文件是人类可以用记事本(或vi,或textedit,或…)读取的东西。事实上,如果你正在读取它,你现在正在读取一个txt文件。好的。
二进制文件通常看起来像是火星人在记事本中打开它时写的。它们看起来像这样:好的。
。好的。
在文本编辑器中打开的可执行程序好的。
大部分看起来都是胡说八道。那是因为它不是用人类语言写的。这是机器语言。这是计算机很容易理解的。之所以看起来像胡说八道,部分原因是记事本假定它是一个txt文件,并试图将其作为一个文件呈现。人类只能读取可执行二进制文件中的实际txt。好的。
氧化镁好的。
在十六进制编辑器中打开的相同可执行程序好的。
在这里,我们可以看到相同的文件,以一个称为十六进制的巨大数字的形式呈现。我们这样显示二进制文件是因为用二进制显示它们需要更多的空间。好的。
。好的。
以十六进制方式在计算器中输入的巨大数字的小片段。好的。
氧化镁好的。
与代码段相同的数字,但以二进制形式显示。这是你著名的1和0。好的。
如果你回头看Hex编辑器图片,你会发现里面有一些东西,你可以读到,"这个程序不能在DOS下运行"好的。
这是嵌入在二进制可执行文件中的文本字符串。这是一个关于正在发生的事情的大提示。结果证明,txt文件也是二进制文件。在我们的二进制计算机中,每个文件都是二进制文件。那么真正的区别是什么呢?编码!好的。
编码就是编码信息的方式。ASCIITXT文件使用的数字范围是0-127。还有其他的TXT文件代码,但ASCII是一个流行的代码。当您编写脚本或编写编译(或解释)语言的源代码时,您正在用ASCII(或Unicode或…)编码信息。好的。
编译一种语言实际上意味着将这个txt文件翻译成一个机器代码文件。当它运行时,计算机不会因为必须再次进行翻译而减速。机器代码文件也可以变小,因为它们对信息的编码更紧凑,编译器会抛出不需要的东西,比如变量名。好的。
解释的语言必须在运行程序的同时进行相同的翻译。这通常会减慢速度,尽管现代口译员和虚拟机喜欢吹嘘他们如何更快地做一些事情,因为他们有编译语言所不具备的额外信息好的。
随着越来越多的人采用基于翻译的语言来解决他们的问题,由于计算机越来越快,速度减慢的问题越来越少。好的。
由于编译和解释之间的差异与源代码txt文件被翻译成机器代码的时间有关,因此您可能仍然想知道这些语言之间的差异是什么。是什么使得PHP如此特殊以至于它可以被解释而C++必须被编译呢?好的。
答案是什么都不是。对于每一种解释过的语言,都可以想象有人可以编写一个编译器,在运行时间之前将机器代码存储为一个文件,这样就可以避免计算机重复工作。同样,人们也可以为每种编译语言编写一个解释程序。为什么不呢?对有些人来说是这样。Perl是一种可以编译的解释语言。好的。
当人们谈论C++是一种编译语言时,他们的意思是,传统的运行方式是编译源代码到机器代码,并执行(运行)机器代码。即使有人编写了一个可以处理C++的解释器,人们仍然会把C++看作是一种编译语言,因为很长时间以来,它就是它的全部,它仍然是最常用的。这是传统。好的。
PHP和ASP通常都是用于网站的服务器端。它们一起使用的最典型原因是,一家商店开始使用一个,并决定切换到另一个。或者他们真的需要用另一种语言编写的第三方解决方案,并且发现自己需要在这两者中支持开发。PHP可以支持站点上的一个页面,而ASP支持另一个页面。好的。
两者都可以轻松地使用JavaScript。javascript是运行客户端的。其中的一部分甚至可能是由服务器端的PHP或ASP编写的。好的。
江户十一〔一〕号我从未使用C/C++和Python,但我会告诉你我已经使用了Perl和Java。我们使用Perl来自动设置Eclipse中的Java项目。好的。
不同的语言更擅长解决某些问题。Perl非常适合需要强大文本处理的小型项目。Java对于大规模的多开发者项目来说是很好的,它需要可靠的方法来解决依赖性和控制复杂性。好的。
你可能认为两种语言在没有翻译的情况下不应该互相交流,但是编程语言使程序发挥作用。只要每件事都在做,他们的工作就是正确和一致的,他们实际上不需要互相交谈。好吧,除非那是他们的工作。)好的。
事实上,我敢打赌,你现在使用的电脑运行和工作的程序都是用多种语言编写的。好的。好啊。