编译型语言和解释型语言解释说明

编译型语言和解释型语言的定义

很多资料上都会说:“python是解释型语言,因为python通常是解释执行的”,“C是编译型语言,因为C是编译执行的”,“Java是解释型语言,因为Java是有JVM解释执行的”以上这些说法其实都是都是伪命题

举例说明:

如果第一次听到“解释”和”编译“这两个概念,就来举个形象点的例子:

解释型语言

(1)把让计算机执行一段代码,比喻成让外国厨师做一道菜,用解释的方式执行一段代码,就好比是让国外的厨师做一道水煮鱼就需要吧中文菜谱里的第一个步骤念给翻译, 然后翻译再把这一步骤翻译成英文给厨师听,
[image:3FE82AB5-3AF9-4641-9E0E-CB4140316E70-421-0000573D02EE03EA/B3B63C23-1DAB-4BA3-8EB4-73CA2EE15EEC.png]

等英国厨师吧第一个步骤做完,你再把第二个步骤念给翻译,翻译再把第二个步骤翻译成英文念给厨师听,厨师再开始做第二个步骤。
[image:CFC37A9B-13B9-4263-8932-B1C89540E599-421-0000579797A1045F/EB6B73E4-D1FC-44A1-B82F-9F2896105575.png]

这里的翻译者就是指:
计算机执行代码的解释器

编译型语言

(2)把让国外厨师做的中国菜整个菜谱预先交给翻译,让翻译写出完整的一
份英文水煮鱼菜谱,
[image:6E886CDC-B548-4306-A300-EC0A81E6709A-421-000057BC3C18B9F2/10410B5F-F759-4916-A1BF-1F03D56B10B9.png]

这样以后再让英国厨师做水煮鱼时就可以直接把翻译好的英文菜谱交给英国厨师,就可以照着英文菜谱很快的把水煮鱼做出来。
[image:8A44F3A2-645C-44C7-AF35-E33C15163AFC-421-000057DBAD616963/E5E88566-A994-45BE-AA0D-A70F77EDC539.png]

这里的翻译者就是指:
编译器

总结

描述完以上举例说明后,会发现同样一个菜谱(也就是一段代码),既可以解释执行也可以编译执行所以再在哪里看到说某个语言是编译型还是解释型这完全是很荒谬的说法,就如同有人告诉你水煮鱼是一道“编译型的菜”,宫保鸡丁是一道“解释型的菜”

“某个语言是解释型或者编译型”就是一个伪命题,更准确的说法是某个语言的某个::特定实现::是编译型或者是编译型
比如:

  1. JavaScript,既有解释型实现 (90年代初的浏览器netscape navigator里的JS引擎),也有编译型实现(Chrome浏览器里的V8引擎)
  2. Chicken Scheme为Scheme这门语言提供了两套实现它们是
    解释器CSI

[image:31D5AC85-88EA-40E4-989A-DE07BBB0D480-421-0000588113C63EE3/1A62E072-EDAF-466F-B0BA-1D6DA07C47E7.png]

编译器CSC
[image:0ACF258C-054B-4093-8C03-C4732DB6E2BC-421-00005884D2E959CB/95F60F9E-B5E3-43FB-A849-E637C8BE2AE8.png]

总结一下:所谓的编译型,解释型并不是一门编程语言的特性,而只是语言实现的特性

#Java开发/基础阶段


版权声明:本文为qq_34672033原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。