众所周知,计算只能识别二进制,任何程序或软件,最终都要经过编译或解释转换成二进制才能被计算机识别。源代码,源代码就是由程序员使用各种编程语言编写的还未经编译或者解释的程序文本,编译或解释能把源代码翻译成等效的二进制代码,也就是CPU
能够识别的机器语言。
编译和解释
编译和解释都是对源代码的解释处理方式,而由于他们的操作方法不同,所以会有不同的运行的效果:
编译是把源代码的每一条语句都编译成机器语言,并最终生成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,在运行时会有很好的性能;
解释是只有在执行到对应的语句时才会将源代码一行一行的解释成机器语言,给计算机来执行,所以使用解释器来执行的语言也被称为动态语言;
举个现实中的例子,比如你现在想读一本英文书,但你自己又不懂英文,然后你去找了个英文翻译小姐姐来帮忙,翻译小姐姐给你提供了两种选择:
全本翻译:由翻译小姐姐帮你把整本书翻译完,完成校稿后给你一本翻译完成的中文书,在这个过程中翻译就会花费较长的时间,你阅读时就会很快、很轻松;
随身翻译:就是翻译小姐姐随时守在你身边,你想阅读那一句,他就给你翻译那一句,这这种方式翻译时很快,但对你来说,阅读就会花费较长的时间;
编译型语言与解释型语言
编译型语言:使用编译器来编译执行的编程语言,这类语言往往会花费较长的编译时间,但编译完成后,会有很好的运行性能;因此,这类语言编写的程序每次修改都要再次经历一遍完整编译过程后,修改效果才能生效,迭代时间会比解释型语言要长。
由于要经历完整编译过程,因此在程序有任何语法错误都能在编译期被发现,大大降低程序的运行错误。
代表语言:C、C++
解释型语言:使用解释器来解释执行的编程语言,这类语言不需要编译,程序执行到了,解释器才会去解释对应的语句,这类语言更多的时间花费在了运行期间;但是这类语言编写的程序的修改迭代不要经历漫长的编译过程,效果能够很快生效;
这类语言由于没有经历编译过程,所以即便是语法错误,也得等到运行期间才会被发现。
代表语言:PHP、Python、Ruby