精华内容
下载资源
问答
  • 常见的解释型语言有:Python、JAVA、PHP、C#     传统意义上的所谓编译与解释,区别在于代码是在什么时候被翻译成目标CPU的指令。——虽然这种解释从科学上说不通,但这却是一直以来大家更认可的更约定俗成的...

      看这篇文章之前可以看看我之前写的,《程序员的自我修养》笔记一,读完那篇文章,就可以真正明白(从最底层明白)这篇文章里面的意思。

        传统意义上的所谓编译与解释,区别在于代码是在什么时候被翻译成目标CPU的指令。——虽然这种解释从科学上说不通,但这却是一直以来大家更认可的更约定俗成的定义。

        对 C、C++ 语言或者其他编译型语言来说,编译生成了目标文件(.exe),而这个目标文件是针对特定的 CPU 体系的,为 ARM 指令集生成的目标文件,不能被用于 MIPS指令集 的 CPU。这段代码在编译过程中就已经被翻译成了目标 CPU 指令(把所有的指令都翻译完我再执行)。所以,如果这个程序需要在另外一种 CPU 上面运行,这个代码就必须重新编译。( 这里解释一下,ARM、MIPS、X86,是最常用的CPU指令集)

        对于各种解释型语言(例如python/java)来说,同样也可能存在某种编译过程,但他们编译生成的通常是一种平台无关的中间代码,在运行过程中才被翻译成目标 CPU 指令的(翻译一条我执行一条),因而,在 ARM CPU 上能执行,换到 MIPS 也能执行,换到 X86 也能执行,不需要重新对源代码进行编译。但需要解释器。
        PS:还不理解?
        再大白话一点,你吃火锅的时候,是把所有东西一次性都放锅里煮熟,然后一起吃(编译型),还是说,你是一个一个放进去煮,煮熟一个你吃一个(解释型)?

      其实到这里已经可以完了,但又确实觉得不太严谨。




    这里多说两句:
        随着Java等基于虚拟机的语言的兴起,笔者认为,我们实际上又不能把语言纯粹地分成解释型和编译型这两种。
        用Java来举例,Java源代码首先是通过编译器编译成字节码文件(相当于上边提到的中间代码).class文件,然后在运行时通过解释器(也就是常说的JAVA虚拟机)翻译成目标机器指令。Python也如此,也需要先编译成与平台无关的字节码文件(编译过程完全感受不到),然后再用解释器解释执行。你说他们没编译么?他们编译了。你说他们是编译型语言?他们实际上又是每次运行都是解释一条指令然后执行一条。。。
        所以说,笔者认为,你只要理解程序运行的过程就好,没必要纠结JAVA、Python到底是不是解释型语言。
        如果想更深入了解程序运行过程的,可以点击此~


    简单总结:
    编译型语言在编译过程中生成目标平台的指令,解释型语言在运行过程中才生成目标平台的指令。

    展开全文
  • 编程语言从来没有编译型和解释型之分,只能说一门编程语言的常见执行方式为编译器编译成新代码(交给解释器或者机器码执行),或者解释器解释执行。 什么是编译器? 什么解释器? 总结 什么是编译器? 编译器,简单...

    没有意义。编程语言从来没有编译型和解释型之分,只能说一门编程语言的常见执行方式为编译器编译成新代码(交给解释器或者机器码执行),或者解释器解释执行。

    • 什么是编译器?
    • 什么解释器?
    • 总结

    什么是编译器?

    编译器,简单的说,就是一个程序,它的输入是一种A语言的源代码,输出是一种B语言的源代码,比如C++编译器,将C++源代码编译成为汇编代码。一般来说,A语言和B语言是不同的(但也有相同的情况,一般用于代码优化或者代码混淆)。

    编译过程中,并没有要求编译器表现出任何关于源代码定义的行为,它是生成了一个能表现输入源代码行为的新的代码。

    什么解释器?

    解析器,其实就是一个程序,它的输入是一种语言的源代码,但是它直接执行了源代码(意思是这个程序对外表现了这个源代码定义的行为)

    解释器内部的实现一般是一个编译器外加一个虚拟机。
    编译器用来将输入的源代码生成中间代码,而虚拟机将中间代码一条条执行(这个执行一般指的是使用C写的执行引擎程序来执行)
    一个虚拟机一般是由定义了的中间代码语法,以及一个执行引擎组成,比如JVM和Java字节码。之所以不采用真实的物理机,一是因为物理机的指令集多,各种新架构新增的指令直接写太困难,可移植苦难。俗话说的好计算机领域只要多分几层,没有解决不了的问题。对于一门动态语言(如Java),直接做一个编译器将这门语言和汇编链接到一起,难度太大(尤其是词法分析上),这个时候可以采取间接的定义一套中间码,将源代码编译成为中间码,中间码通过另一个程序(执行引擎,一般是C/C++写的)执行这个中间码,这样效率不会损失太多但大大加快了开发效率。

    总结

    其实所谓编译型和解释型递归到最后,都是编译型,因为你无论如何都是把代码转换为二进制机器码,而最后的执行,其实就是一个二进制数的第几位所对应ALU的第几号地址引脚的电平高低的变化而已。

    本文转载自知乎,有删减1.


    1. 作者:DreamPiggy
      链接:https://www.zhihu.com/question/31695794/answer/53797548
      来源:知乎
      著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    展开全文
  • 先说结论:python可以做游戏,但是不推荐,建议使用其他解释型语言。另外,大型项目(我指的是真正的大型...​www.zhihu.com目前手机游戏界主流的模式确实是编译语言(常见的是c++或c#)实现引擎,解释型语言实现业务...

    先说结论:python可以做游戏,但是不推荐,建议使用其他解释型语言。另外,大型项目(我指的是真正的大型游戏或者软件互联网项目,而不是鹅厂猪厂生产的那些手游“大作”)不建议使用动态类型语言开发,至于具体原因,可参考下面的,就不在这深入了。为什么说「动态类型一时爽,代码重构火葬场」?​www.zhihu.com

    目前手机游戏界主流的模式确实是编译语言(常见的是c++或c#)实现引擎,解释型语言实现业务逻辑。在这方面常见的三大手游引擎一般是这么做的:unity常用的方式是c#加lua,ue4可以用c++加lua,cocos2dx是c++加lua或者js/ts(当然这俩其实是一码事)。

    为什么要在业务层使用解释型语言呢?核心原因并不是解释型语言的开发效率,而是为了热更新。也就是你要修改bug或者添加新功能的时候,用户不需要重新下载安装包,只要在游戏内动态下载更新就可以了,这样对游戏的留存有很大帮助。根据我过去的经验,每次强行让用户更新安装包,都会有5%~10%的用户流失,而热更新只要每次的更新量不大就基本不会有流失。

    这种静态引擎+动态业务逻辑,基本架构是游戏内的通信、渲染、内存管理等功能由编译语言实现,然后中间还有一层脚本语言的解释器,这个解释器往往也是c++实现的。上层的业务逻辑由解释型的脚本语言实现,大致上是一个脚本-解释器-引擎的流程。

    从这个流程就可以看出来,由于中间多加了一层解释器,这个执行的过程会有额外的内存和运算开销,肯定没有直接编译型语言实现的效率高,但是对绝大多数手机游戏来说,这个性能上的损失是可以接受的,支持热更远比这点性能损失要重要得多。

    所以,你要问解释型语言能不能做游戏,这个问题是肯定的,而且是目前手游界的主流模式,python能不能做这个事儿呢?Lua能做的事情当然python也能。但是你要问我要不要用python来做这个事情呢?我是不推荐的。原因无他,从头造轮子,既无必要,又无优势。大家都用lua或者js,这两种语言各自都有它的优点,这点我就不细说了,最重要的是,这两种语言市面上有很多成熟的引擎可以用,而你非要标新立异地用python,这就代表你要从头开始造很多很多的轮子,这个过程中要踩很多很多的坑,付出很多很多的学费。网易用python,有其历史原因,而且网易这样的大厂,掏得起学费,造得起轮子,一般中小公司就不要盲目跟风了。

    展开全文
  • 解释型语言,是不用编译这个过程,只是在执行时通过相应翻译器(虚拟机)逐行翻译。这样它跨平台性就会较好,因为可以直接通过编译器编译成需要平台上语言,但是一个问题就是:它每次运行都要讲每行...

    首先需要明确的一点是,什么是编译型语言和解释性语言

    编译型语言,就是在其执行过程中需要先将其经过编译成机器码来给计算机识别的,其执行效率就会比较高这个是显而易见的,常见比如:C、C++

    而解释型语言,是不用编译这个过程的,只是在执行时通过相应的翻译器(虚拟机)逐行翻译。这样它的跨平台性就会较好,因为可以直接通过编译器编译成需要的平台上的语言,但是有一个问题就是:它每次运行都要讲每行代码逐行解释翻译一遍。常见比如:Python、JS、PHP

    由此可见,我们的OC和Swift都是需要先进行编译后才能执行代码功能的,因此他们都是编译型语言。

     

    接着谈的就是OC和swift的其中一个不同,那就是Swift它是一个动态类型语言,意思是他是在代码执行时才去做数据类型的检查,使用了swift的童鞋应该都清除,swift中变量的类型声明都是使用Var关键字的并不指定具体数据结构类型,这又衍生出一个类型,那就是弱类型语言,这个很好理解,类型比较弱嘛就是没有强制规定。相对应的OC中变量的在声明时候都要指定其类型,因此它就是相对动态类型语言反面的静态类型语言,也是强类型语言

    最后还要说明的就是运行时语言,由上文提到:编译型语言是要经过 编译--》运行,运行时语言就是在程序运行的时候才去调用该对象的方法,和决定其数据类型。而不是在编译的时候进行

    参考网站 http://www.th7.cn/Program/IOS/

     

    OC是运行时语言,只有在程序运行时,才会去确定对象的类型,并调用类与对象相应的方法。利用runtime机制让我们可以在程序运行时动态修改类、对象中的所有属性、方法,就算是私有方法以及私有属性都是可以动态修改的。

    展开全文
  • 解释型语言,是不用编译这个过程,只是在执行时通过相应翻译器(虚拟机)逐行翻译。这样它跨平台性就会较好,因为可以直接通过编译器编译成需要平台上语言,但是一个问题就是:它每次运行都要讲每行...
  • 编译程序和解释程序有什么区别?

    千次阅读 2020-05-26 22:52:19
    1. 编译程序和解释程序区别: 编译型是使用编译器编译后生成计算机硬件可直接执行指令,解释型是在运行时才由解释器逐语句去执行。 编译型代表:C&...解释型语言多为弱类型,如js中var a,a可以为
  • JAVA基础--语言特性

    2019-11-12 20:15:52
    前言 昨天跟同事聊天话题聊到了java语言的类型,有些人说是解释型语言,有人说是编译型语言。给我整的也很懵。所以今天就整理了一下思路。 正文 解释型语言 ...常见的解释型语言有:Python/JavaScr...
  • 即便在多核处理器上,使用 GIL 的解释器也只允许同一时间执行一个线程,常见的使用 GIL 的解释CPython与Ruby MRI。可以看到GIL并不是Python独有的特性,是解释型语言处理多线程问题的一种机制而非语言特性。 多....
  • Python是目前编程领域最受欢迎的语言。在本文中,我们总结了Python面试中最常见的100个问题。每道题都提供参考答案,希望能够帮助你在2019年求职面试中脱颖而出,找到一份高薪工作。...Python是一种解释型语言。...
  • python是一门解释型语言,代码想要运行,必须通过解释器来执行,当然为了满足不同平台的需求,python解释器也分为不同的种类,接下来老男孩教育为大家介绍五款常用python解释器。目前常见的Python解释器包括:...
  • 常见的面试题知识点

    2020-09-01 09:25:58
    关于 JVM JDK 和 JRE 最详细通俗解答 JVM Java虚拟机(JVM)是运行 Java 字节码虚拟机。JVM针对不同系统特定...Java 语言通过字节码方式,在一定程度上解决了传统解释型语言执行效率低问题,同时又保留
  • Python是目前编程领域最受欢迎的语言。在本文中,我将总结Python面试中最常见的50个问题。每道题都提供参考答案,希望能够帮助你在2020年求职面试中脱颖而出,找到一份高薪工作。...Python是一种解释型语言。与...
  • python是一门解释型语言,代码想要运行,必须通过解释器来执行,当然为了满足不同平台的需求,python解释器也分为不同的种类,接下来老男孩教育为大家介绍五款常用python解释器。目前常见的Python解释器包括:...
  • struts只是单纯的MVC模式框架(MVC就不用多解释了吧,j2ee常见的设计模式),而JSF是一种事件驱动的组件模型! 大家都知道应用程序的开发两种B/S(浏览器/服务器)和C/S(客户端/服务器端),JSF就是将C/S开发中的界面...
  • R语言基本用法

    千次阅读 2019-10-29 09:52:00
    微信公众号:[R语言小白速通]主要分享一些R语言和统计学知识,提升自己,帮助他人。[如果你觉得本文章对你...R语言是一种区分大小写的解释型语言。你可以在命令提示符(>)后每次输入并执行一条命令,或者一次...
  • GIL是什么 GIL百度解释:全局解释器锁(Global Interpreter Lock)是计算机程序设计语言解释器用于同步线程工具,使得在同一进程内任何时刻仅一个线程在执行。常见例子CPython(JPython不使用GIL)与 Ruby MRI...
  • 1.全局解释锁 如题: Python的多线程为什么不能利用多核处理器? ...可以看到GIL并不是Python独有的特性,是解释型语言处理多线程问题的一种机制而非语言特性。 2.Python的解释器 Python是一门解
  • 编程语言有很多种,而C语言和Python语言是比较常见的,那么初学者应该选择哪门语言进行入门呢?为大家介绍一下。  首先,需要对两门语言进行初步认识,C语言是一门通用性的编程原因,为什么说通用呢?是因为它能够做...
  • 编程语言有很多种,而C语言和Python语言是比较常见的,那么初学者应该选择哪门语言进行入门呢?为大家介绍一下。首先,需要对两门语言进行初步认识,C语言是一门通用性的编程语言,为什么说通用呢?是因为它能够做很多...
  • 编程语言有很多种,而C语言和Python语言是比较常见的,那么初学者应该选择哪门语言进行入门呢?为大家介绍一下。首先,需要对两门语言进行初步认识,C语言是一门通用性的编程原因,为什么说通用呢?是因为它能够做很多...
  • 编程语言有很多种,而C语言和Python语言是比较常见的,那么初学者应该选择哪门语言进行入门呢?老男孩教育为大家介绍一下。首先,需要对两门语言进行初步认识,C语言是一门通用性的编程语言,为什么说通用呢?是因为它...
  • hello,我是apan啊,一位失业已久,正在努力学习python点点点工程师,近期在努力找工作。...1、 python是什么类型的语言: 解释型 这篇博客是我百度来,写比较详细,可参考:https://blog.csdn.net/yatum_2.
  • python是高级的解释型动态语言,源于其代码的简洁易懂性和开发的高率性,受到了IT行业的热棒,俘获了广大编程人员的芳心,近几年更是霸占最受欢迎语言前三名;作为一名python开发从业者,说说自身的见解,目前python主要...
  • 文章目录基础概念与常识Java 语言有哪些特点?JVM vs JDK vs JREJVMJDK 和 JRE为什么说 Java 语言“编译与解释并存”?Oracle JDK 和 OpenJDK 对比Java 和 C++区别?import java 和 javax 有什么区别?基本语法...
  • shell脚本一个分享,直接粘贴过来

    千次阅读 2013-11-22 18:59:50
    解释型语言是解释语句,并且能根据流程控制机制让语句按需执行,解释一条语句就返回语句的结果,这种语言需要一个解释器,而linux中的bash就是这样的一个解释器,常见的解释型语言有perl,python,ruby,bash。...
  • hello,我是apan啊,一位失业已久,正在努力学习python点点点工程师,近期在努力找工作。本篇记录并总结下我面试遇到各种python题目以及相关...python基础类题目:1、python是什么类型的语言:解释型这篇博客...
  •  异常表示程序运行过程中可能出现非正常状态,运行时异常表示虚拟机通常操作中可能遇到异常,是一种常见运行错误。java编译器要求方法必须声明抛出可能发生非运行时异常,但是并不要求必须声明抛出未被捕获...
  • python笔记

    2020-10-13 13:54:31
    编程就是让计算机按照我们既定的思路去执行,代码是最终是CPU来执行,而计算机能听懂的就是计算机语言,常见的编程语言有java、python、js、go、c 二、为什么要学python? 1、python简单易学容易上手 2、Python语法...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 172
精华内容 68
关键字:

常见的解释型语言有什么