VS2015为什么可以直接“跑”C语言代码

在每个程序员写出用C语言写出Hello Wolrd之前,都经历了一系列的环境配置的准备工作,安装编辑器(例如Visual Studio Code)、安装编译器等等,但是也有人学到的是直接安装宇宙第一IDE(Integrated development environment,集成开发环境)Visual Studio 2015,这两种方式基本都可以满足C语言的学习(可能会认为这理所当然),但是当了解到Java,知道Java是先编译后解释,之后还会了解JavaScript是解释性语言、需要引擎解析。学了编译原理之后,可能就会提出疑问,VS2015为什么可以直接“跑”C语言代码?这到底是为什么?

常见的编译性语言和解释性语言

解释性语言:Java、Python、Perl、C#、JavaScript、VBScript、Ruby、MATLAB等。
编译性语言:C/C++、Pascal/Object Pascal(Delphi)等。

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。

机器翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。

编译性语言

编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。

解释性语言

解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性java语言,专门有一个解释器能够直接执行java程序,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。

脚本语言

脚本语言是解释性语言。脚本语言一般都有相应的脚本引擎来解释执行。它们一般需要解释器才能运行。所以只要系统上有相应语言的解释程序就可以做到跨平台。脚本语言是一种解释性的语言,例如vbscript,javascript,install shield script等等,它不象c\c++等可以编译成二进制代码,以可执行文件的形式存在。

脚本语言不需要编译,可以直接用,由解释器来负责解释。

JAVA语言

java语言是特殊的解释性语言。java程序同样需要编译,但是没有直接编译称为机器语言,而是编译为字节码,然后用解释方式执行字节码。Java既可以被编译,也可以被解释。通过编译器,可以把Java程序翻译成一种中间代码 - 称为字节码 - 可以被Java解释器解释的独立于平台的代码。通过解释器,每条Java字节指令被分析,然后在计算机上运行。只需编译一次,程序运行时解释执行,实现跨平台功能。
  
Java字节码使“写一次,到处运行”成为可能。可以在任何有Java编译器的平台上把Java程序编译成字节码。这个字节码可以运行在任何JVM(Java虚拟机)上。例如,同一个Java程序可以运行在WindowsNT、Solaris和Macintosh上。

编译器与解释器的区别

编译型语言在程序执行之前,有一个单独编译过程,将程序翻译成机器语言,以后执行这个程序时,就不用再进行翻译了。

解释型语言,是在运行的时候将程序翻译成机器语言,所以运行速度相对于编译型语言要慢。

编译型与解释型,两者各有利弊。前者由于程序执行速度快,同等条件下对系统要求较低,因此像开发操作系统、大型应用程序、数据库系统等时都采用它,像C/C++、Pascal/Object Pascal(Delphi)等都是编译语言,而一些网页脚本、服务器脚本及辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言,如Java、JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等等。

编译性语言不如解释性语言跨平台性好?

编译性语言例如c语言:用C语言开发了程序后,需要通过编译器把程序编译成机器语言(即计算机识别的二进制文件,因为不同的操作系统计算机识别的二进制文件是不同的),所以C语言程序进行移植后,要重新编译。(如windows编译成ext文件,linux编译成erp文件)。

解释性语言,例如java语言,java程序首先通过编译器编译成.class文件,如果在windows平台上运行,则通过windows平台上的java虚拟机(VM)进行解释。如果运行在linux平台上,则通过linux平台上的java虚拟机进行解释执行。所以说能跨平台,前提是平台上必须要有相匹配的java虚拟机。如果没有java虚拟机,则不能进行跨平台。

VS2015为什么可以直接“跑”C语言代码

知道C语言运行需要编译器后,我们大概能猜到VS2015为什么可以直接“跑”C语言代码了,那是因为VS2015内置了编译器,事实也的确是这样。

C语言的编译器有很多种,不同的平台下有不同的编译器,例如:
Windows 下常用的是微软编译器(cl.exr),它被集成在 Visual Studio 或 Visual C++ 中,一般不单独使用;
Linux 下常用的是 GUN 组织开发的 GCC,很多 Linux 发行版都自带 GCC;
Mac 下常用的是 LLVM/Clang,它被集成在 Xcode 中(Xcode 以前集成的是 GCC,后来由于 GCC 的不配合才改为 LLVM/Clang,LLVM/Clang 的性能比 GCC 更加强大)。

你的代码语法正确与否,编译器说了才算,我们学习C语言,从某种意义上说就是学习如何使用编译器,让编译器生成可执行程序(例如 Windows 下的 .exe 程序)。

编译器可以 100% 保证你的代码从语法上讲是正确的,因为哪怕有一点小小的错误,编译也不能通过,编译器会告诉你哪里错了,便于你的更改。

原文连接:https://blog.csdn.net/Dream_angel_Z/article/details/47168159

参考:http://c.biancheng.net/view/450.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值