这么简单的问题,但我还没有找到合理的答案。我目前用Python编写一种解释性语言。我总是听说人们在一个程序中使用多种语言?然后我听到他们使用脚本语言。有人可以用简单的英语向我解释我所知道的编译编程语言和脚本之间的区别,以及人们如何一起使用多种语言?这没有任何意义。
如何有人一起使用JavaScript,PHP和ASP。或者用C / C ++编写游戏并使用python作为脚本?它对我来说没有意义,我认为它们是不同的语言,所以它们如何相互发挥作用?
答案 0 :(得分: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库就是一个很好的例子。只要它工作并发布我能理解的API,我就不在乎编写DLL库的内容。
有时,不同的语言会生成不同的可执行文件,这些可执行文件不会通过链接器连接。但只要它们可以运行并相互通信,它们就可以一起工作。如果你有一个用java编写的mp3录音机和一个用c ++编写的播放器,他们可以简单地通过同意mp3是什么来合作。
... explain to me the difference between what I know as programming languages and scripts
编译语言和解释语言(也称为脚本)之间的区别在于它们的运行或执行方式。必须先编译任何编译语言才能运行它们。口译语言不是。这里有两个令人惊讶的事情要理解:编译的意思是什么以及为什么需要它。也就是说,为什么每种语言都没有被解释。
编译语言涉及许多步骤,但其核心是将txt文件转换为二进制文件。该二进制文件将包含机器代码。机器代码是您的计算机所说的基本语言。这些是每个人都在谈论但从未见过的着名的1和0。坚持下去,我会告诉你。
文本文件是人类可以用记事本(或VI,或TextEdit,或......)阅读的东西,实际上如果您正在阅读本文,那么您现在正在阅读txt文件。
二进制文件通常看起来像火星人在记事本中打开时写的那样。它们看起来像这样:
在文本编辑器中打开的可执行程序
这大部分看起来像胡说八道。那是因为它不是用人类语言写的。这是机器语言。这是计算机易于理解的内容。它看起来像废话的部分原因是因为记事本认为它是一个txt文件并试图将其作为一个文件呈现。只有可执行二进制文件中的实际txt才能被人读取。
在十六进制编辑器中打开相同的可执行程序
在这里,我们可以看到相同的文件显示为一个称为十六进制的大量数字。我们显示这样的二进制文件,因为以二进制显示它们需要更多空间。
以十六进制模式输入计算器中的大数字的小片段。
与代码段相同的编号,但以二进制形式显示。这是你着名的1&0和0。
如果你回头看看Hex编辑器的图片,你会发现它里面有一些东西可以读,"这个程序不能在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非常适合需要可靠方法来解决依赖关系和控制复杂性的大型多开发人员项目。
您可能认为两种语言不能在没有翻译的情况下相互通信,但编程语言会使程序能够完成工作。只要一切都正确地完成了它的工作,他们实际上并不需要彼此交谈。好吧,除非那是他们的工作:)
事实上,我现在打赌你正在使用的计算机有很多钱,这些计算机的程序正在运行并且以多种语言编写。