Compiled and interpreted languages

2023-10-10 23:50

本文主要是介绍Compiled and interpreted languages,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

将高级语言翻译成机器语言有两种方式:编译和解释。二者区别在于翻译的时间不同。

编译型语言

程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性差些。如CC++Delphi

解释型语言

程序不需要编译,程序在运行时才翻译成机器语言,每执行一次都要翻译一次。因此效率比较低。比如Basic语言,专门有一个解释器能够直接执行Basic序,每个语句都是执行的时候才翻译。(在运行程序的时候才翻译,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译。效率比较低,依赖解释器,跨平台性好.)

C言是编译型的。

Java 比较特殊,Java程序也需要编译,但是没有直接编译成机器语言,而是编译成字节码,然后用解释方式执行字节码。

C 程序——>机器语言(编译)

Java程序——>节码(编译)——>机器语言(解释)

脚本语言

介于 HTMLC,C++,Java,C#等编程语言之间。 
HTML
通常用于格式化和链结文本。而编程语言通常用于向机器发出一系列复杂的指令。 
脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相象一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一
脚本与程序代码的关系:脚本也是一种语言,其同样由程序代码组成。

注:脚本语言一般都有相应的脚本引擎来解释执行。他们一般需要解释器才能运行。JAVASCRIPTASPPHPPERL都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。 
脚本语言是一种解释性的语言,例如vbscriptjavascriptinstallshield script等等,它不象c/c++等可以编译成二进制代码,以可执行文件的形式存在。
脚本语言不需要编译,可以直接用,由解释器来负责解释。 
脚本语言一般都是以文本形式存在,类似于一种命令。 
举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的文件。你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言。 

JAVA语言

java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。Java既可以被编译,也可以被解释。通过编译器,可以把Java程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器解释的独立于平台的代码。通过解释器,每条Java字节指令被分析,然后在计算机上运行。只需编译一次,程序运行时解释执行。下图说明了它是如何工作的:


可以把Java字节码看作运行在Java虚拟机(Java VM)上的机器代码指令。每种Java解释器,不管是Java开发工具还是可以运行Java小应用程序的Web浏览器,都是一种Java VM的实例。JavaVM也可以由硬件实现。

Java字节码使写一次,到处运行成为可能。可以在任何有Java编译器的平台上把Java程序编译成字节码。这个字节码可以运行在任何 Java VM上。例如,同一个Java程序可以运行在WindowsNTSolarisMacintosh上。


Java平台

 平台是程序运行的硬件或软件环境。Java平台与大多数其它平台不同之处在于它是运行于其它基于硬件平台的纯软件平台。大多数其它平台是硬件和操作系统的结合。

Java平台由两部分组成:

•Java虚拟机(Java VM 
•Java
应用程序界面(Java API 
Java VM
Java平台的基础,可以移植到各种基于硬件的平台上。Java API是软件组件的集合,它们提供了很多有用的功能,如图形用户界面(GUI)。Java API被分组为相关组件的库(包)。

下图描述了一个运行在Java平台上的Java程序,如应用程序(application)或小应用程序(applet)。如图中显示的,JavaAPIVMJava程序从硬件依赖中分离出来。


作为一种独立于平台的环境, Java 比本地代码慢一些。然而,聪明的编译器、很好地调制过的解释器和即时字节码编译器可以在不牺牲可移植性的条件下 使 Java 的表现接近本地代码。

这篇关于Compiled and interpreted languages的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/183980

相关文章

Module compiled with Swift 版本号 cannot be imported by the Swift 版本号 compiler

今天把xcode升级到12.5最新版,然后编译出现下面错误。。。记录下 XCTestWD:Module compiled with Swift 5.3.1 cannot be imported by the Swift 5.4.2 compiler: /Users/liyinchi/TestTool/node-v12.18.3-darwin-x64/lib/node_modules/app-in

Loaded runtime CuDNN library: 7101 (compatibility version 7100) but source was compiled with 7005

https://blog.csdn.net/qq_22532597/article/details/80314896 https://blog.csdn.net/zw1078825408/article/details/82390542

Tensorflow针对CPU的编译优化加速-解决Not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA

本文介绍Tensorlfow 针对 CPU SSE4.1 SSE4.2 AVX AVX2 FMA 的编译优化,以提升Tensorflow在CPU上的计算速度,实测可以提升两倍以上的速度。 1、问题 在用 pip 安装tensorflow的CPU版本后,在运行的时候通常会出现如下提示:Your CPU supports instructions that this TensorFlow bina

python write出现 Non-character array cannot be interpreted as character buffer.

比如z是一个数字 out.wirte(z)报错 那么out.wirte(str(z))

Error:Kotlin: Module was compiled with an incompatible version of Kotlin.

一、问题:运行spring boot项目时,idea报出错误:时提示报错如下图: 错误代码: Error:Kotlin: Module was compiled with an incompatible version of Kotlin. The binary version of its metadata is 1.6.0, expected version is 1.1.16. 二

The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are available...

跑 tensorflow 官方教程时报warning: 2017-06-08 22:36:18.809242: W tensorflow/core/platform/cpu_feature_guard.cc:45]The TensorFlow library wasn't compiled to use SSE4.1 instructions, but these are availabl

Programming Languages B(Coursera / University of Washington) Assignment4

原文件已上传到GitHub: 点这里 本次作业需要racket标准库文档:https://docs.racket-lang.org/ Scheme 大法好 天灭过程式 退C保平安 人在做 天在看 赋值语句留祸患 指针乱用天地灭 赶紧重写保平安 诚心诚念SICP好 Scheme大法平安保 众生都为函数来 现世险恶忘前缘 Scheme弟子说真相 教你编程莫拒绝 早日摆脱面向过程 早日获得新生

Programming Languages A(Coursera / University of Washington) Assignment 3/signature和structure

The best way to understand a language construct is to understand how you would code it up in terms of other language constraints in another language. 原文件已上传到GitHub,分数是80: 点这里 本节需要用到标准库,sml标准库在这里:htt

Programming Languages A(Coursera / University of Washington) Assignment 2

原文件已上传到GitHub: 点这里 分数是80分(刚好通过)(用了一点限制函数) 第二次作业,主要是练习 pattern match 这真是很棒的feature,能够很好的控制scope,达到closure效果 也能领会ml的 referential transparency、lazy evaluation、statically typed 等 feature 在和别人交流的过程中,还学到了g

Programming Languages A(Coursera / University of Washington) Assignment 1

Coursera有这门课的全部资料,就不放链接了:) 第一个课设一共13道题,都是sml编程题目 challenge没有时间就跳过了 原文件已上传到GitHub: 点这里 分数是90分 Write a function is_older that takes two dates and evaluates to true or false. It evaluates to true if th