精华内容
下载资源
问答
  • 静态类型语言和动态类型语言的区别
    千次阅读
    2019-03-16 16:59:49

    静态语言
      变量的类型在编译之前就需要确定,在编译的时候需要先编译,将源码转换成目标代码,然后需要运行目标代码程序才能运行,比如C++、Java、Delphi、C#。

    动态语言
      不需要直接指定变量类型,在解释的时候,转换为目标代码和运行程序一步到位,比如Python、Ruby、Perl。可以在运行时改变结构,这个小白想不懂,但是也写上。我的理解是在程序运行的时候可以改变程序的代码,程序不用停止。

    比较
      静态语言运行时因为只需运行目标程序,所以运行速度快,但是因为要注意变量的类型,需要多注意一些东西,而动态语言比较自由,可以将思想更多的集中在我们所开发的东西上。同时也因为动态语言的灵活性太高,当代码数量太大时,很多东西将变得不可控,不如静态语言稳定,所以当开发大型项目时,要优先选用静态语言。

    更多相关内容
  • 主要介绍了动态语言、动态类型语言、静态类型语言、强类型语言、弱类型语言介绍,需要的朋友可以参考下
  • 动态类型语言和静态类型语言

    千次阅读 2018-05-24 15:54:33
    https://www.cnblogs.com/liuning8023/p/4286044.html  动态类型语言和静态类型语言本文主要说明动态类型语言和静态类型语言。类型检查所进行的检验处理以及实行类型的约束,可发生在编译时期(静态检查)或运行...

    https://www.cnblogs.com/liuning8023/p/4286044.html   动态类型语言和静态类型语言


    本文主要说明动态类型语言和静态类型语言。

    类型检查所进行的检验处理以及实行类型的约束,可发生在编译时期(静态检查)或运行时期(动态检查)。静态类型检查是在编译器所进行语义分析中进行的。如果一个语言强制实行类型规则就称此处理为强类型(或静态类型),反之称为弱类型(或动态类型)。另外,严格意义上,强类型与静态类型不是一回事,同理,弱类型与动态类型。

    强类型是指某门语言检查两种类型是否兼容,如果不兼容就抛出一个错误或强制类型转换,尽管这个说法并不是很严格。静态类型强迫在类型结构的基础上执行多态。判断是否是一只鸭子的依据,是其基因蓝图(静态),还是因其叫声和走路的姿态像一只鸭子(动态)。静态语言的好处在于编译器和工具等对你的代码更加了解,可以用于捕捉错误,突出显示代码以及便于重构代码。付出的代价是你不得不做更多的工作,并且会受到一些限制。

    动态类型语言(Dynamically Typed Language)


    所谓动态类型语言,就是类型的检查是在运行时才做。

    类型对于变量,属性,方法以及方法的返回类型都是可有可无的,在给变量赋值时才决定它的类型, 之后,还可以赋值不同类型的值,即使是基本类型,比如 C# 装箱(boxing)和拆箱(unboxing),可以把值类型转换成引用类型,引用类型转换成值类型。当需要时,很多类型之间都会发生自动转换,可以把不同的基本类型添加到同一数组(collections)中。

    动态类型在解释语言中极为普遍,如 JavaScript、Perl、Python、Ruby 等等。

    静态类型语言(Statically Typed Language)


    静态类型语言的类型检查是在运行前的编译阶段,比如 C#、Java 等都是静态类型语言,静态类型语言为了达到多态会采取一些类型鉴别手段,如继承、接口,而动态类型语言却不需要,所以,一般动态语言都会采用 dynamic typing。静态类型语言常出现于编译语言中,比如,Java,实现运行时多态性的基础是动态方法调度,它是一种在运行时而不是在编译期调用重载方法的机制。

    “多态性”是指,代码(尤其是函数和类)对各种类型的值能够动作,或是相同数据结构的不同实体能够控制不同类型的元素。在具有多态性的语言中,只需实现如列表或词典的数据结构一次,而不是对使用到它的元素的每一个类型都规划一次。基于这个原因,电脑学家也称使用了一定的多态性的方法为泛型程序设计。

    推断类型(鸭子类型,Duck typing),这个技术之所以常被称作“鸭子类型”,是基于这句格言:“如果它摇摇摆摆的走法很像鸭子,而且它的嘎嘎叫声也像鸭子,那它就是一只鸭子!(If it waddles like a duck, and quacks like a duck, it's a duck!)”最初是由 Dave Thomas 在 Ruby 社区中提出的,推断类型用了这个论证法“如果它像什么,而且其它地方也像什么,那么它就是什么。”,比如,C++在迭代器和指针之间的双重性,两者以不同的机制实现并提供一个* 运算;C# 可以用 var 关键字声明变量,还有委托推断。

    比较


    静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是需要写更多的类型相关代码(如声明变量),不便阅读(特别是,当你看别人代码时,会连变量定义也看吗?想必不会,看结构,看方法的含义想必才是本质)。

    动态类型语言的优点在于方便阅读,不需要写非常多的类型相关代码;缺点自然是不便调试,命名不规范时会造成读不懂,不利于理解等。

    在强类型、静态类型语言的支持者,与动态类型、自由形式的支持者之间,经常发生争执。前者主张,在编译的时候就可以较早发现错误,而且还可增进运行时期的性能。后者主张,使用更加动态的类型系統,分析代码更为简单,减少出错机会,才能更加轻松快速的编写程序。


    展开全文
  • 静态类型动态类型的区别编译型语言解释型语言混合型语言静态类型语言动态类型语言 编译型语言 源代码需要通过编译器编译成机器可识别的机器码,包括编译链接两个过程。不同操作系统下的可执行文件不一样。代表...

    编译型语言

    源代码需要通过编译器编译成机器可识别的机器码,包括编译和链接两个过程。不同操作系统下的可执行文件不一样。代表语言有:C,C++
    优点:执行速度快
    缺点:修改了某一个模块就得重新编译

    解释型语言

    相对于编译型语言少了编译过程,源代码运行时由解释器逐行解释。代表语言有:JavaScript,Python,php
    优点:部署快,不停机维护,有很好的平台兼容性
    缺点:每次运行都需要解释一遍,性能上不如编译型语言

    混合型语言

    混合型语言就包括了编译过程和解释过程。比如:C#先是编译成中间码,并不是直接编译成机器码。java有先编译成中间字节码.class文件过程,最后在java虚拟机中解释执行。

    静态类型语言

    指的是代码运行之前就做的数据类型检查,运行前数据类型就已经确定了。比如:C,C++,JAVA;这个好比对应着具有编译过程的语言

    动态类型语言

    指代码运行的时候数据类型才会确定,数据类型绑定是代码运行的时候确定的。比如:JavaScript,php,这个好比对应着解释器类型的语言。

    展开全文
  • 类型语言 强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就死该数据类型。 强类型语言包括:Java、.net、Python、C++等语言。其中Python是动态语言,是强类型定义语言,是类型...

    强类型语言

    强制类型定义的语言,即一旦某一个变量被定义类型,如果不经强制转换,那么它永远就死该数据类型。

    强类型语言包括:Java、.net、Python、C++等语言。其中Python是动态语言,是强类型定义语言,是类型安全的语言,Java是静态语言,是强类型定义语言,也是类型安全的语言。

    强类型接口设计

    • 使用 feigh 设计强类型接口


    弱类型语言

    弱类型定义的语言,某一个变量被定义类型,该变量可以根据环境变化自动。弱类型语言包括:VB,PHP,JavaScript等语言。其中VBScript是动态语言,是一种类型不安全的原因。

    举个栗子吧:

    var A=5;
    var B="5"
    sumA=A+B;
    sumB=A-B;
    

    sumA=55,系统默认+字符连接符,将A转化为字符串类型;而sumB=0;系统认为-是算数运算符,从而将B转化为int类型,所以sum为5-5=0;

    优缺点

    强类型语言和弱类型原因其判断的根本是是否会隐形进行语言类型转变。
    强类型原因在速度上可能略逊于弱类型语言,但是强类型定义语带来的严谨性又避免了不必要的错误。

    动态类型语言

    动态性语言是指在运行期间才去做数据类型检查的语言,也就是说动态类型语言编程时,永远不用给任何变量指定数据类型,该语言会在第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。

    静态类型语言

    静态类型语言与动态类则刚好相反,它的数据类型在编译期间检查,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他静态语言还有C#、Java等。

    对于动态语言与静态语言的区分,其根本在于判断是在运行期间去做数据类型还是在编译期间检查。

    展开全文
  • 主要介绍了编程语言里的静态动态、强类型、弱类型等概念介绍,需要的朋友可以参考下
  • 一. 前言 今天小熙突然想到一个问题,那就是Java到底是动态语言还是静态语言,是强类型...静态类型语言:变量定义时有类型声明的语言。 (1)变量的类型在编译的时候确定 (2)变量的类型在运行时不能修改 这...
  • 动态语言静态语言 1.动态类型语言:是指在运行...2.静态类型语言:与动态类型语言刚好相反,它的数据类型检查发生在在编译阶段,也就是说在写程序时要声明变量的数据类型。C/C++、C#、Java都是静态类型语言的典型...
  • 什么是强类型、弱类型语言以及动态类型、静态类型语言
  • 所谓静态类型语言,在代码被编译时变量的类型便已确定了 所谓动态类型语言,其变量类型要到程序运行的时候,待变量被赋了某个值才能知道其类型 静态类型语言的优缺点: 优点: 避免程序运行时发生变量类型相关...
  • 今天来说说编程语言中的动态类型语言与鸭子类型。 动态语言 维基百科对动态语言的定义: 动态编程语言是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他...
  • 静态类型和动态类型有什么区别?

    千次阅读 2019-07-01 14:30:25
    编程语言按照类型检查可以分为两大类:**静态类型 (Static Typing) ** 动态类型 (Dynamic Typing)。在现在比较流行的这些语言里,静态类型的代表人物有 Java、C/C++、Golang 等,动态类型有 Python、Ruby 等。 ...
  • 动态语言(弱类型语言)是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。比如Php、Asp、JavaScript、Python、Perl等等。 var s ="hello"; var i = 0; var b = true...
  • 动态类型语言是运行期间才做数据类型检查的语言,即动态类型语言编程时,永远不用给任何变量指定数据类型。该语言会在第一次赋值给变量时,在内部将数据类型记录下来。例如:JavaScript、Python、PHP。 优点:方便...
  • 首先强弱是相对的。 强类型: 每个变量对象都必须声明类型,在编译时确定好类型了,执行时不能更改。...静态类型: 编译的时候就知道每一个变量的类型,因为类型错误而不能做的事情是语法错误。...
  • 这个转化的方式就分为两种:编译解释。区别在于转化的时机不同。 用编译型语言写的程序执行之前,需要一个专门的编译过程,通过编译系统(不仅仅只是通过编译器,编译器只是编译系统的一部分)把高级语言翻译成
  • 首先要清楚静态类型语言和动态类型语言的判别的标准 定义:如果类型检查发生在编译阶段(compile time),那么是静态类型语言(statically typed languages)中,相反的,如果类型检查发生在运行阶段(run time),那么是...
  • 这是本人关于Typescript的第一篇笔记,之所以选择将“强类型语言和类型语言静态语言和动态语言”作为第一个想要去总结的主题,是因为个人觉得它很重要。 如今这个年代,可以供我们选择的编程语言非常之多,我们...
  • 所以Java是静态、强类型语言。推荐学习:《编程视频课程》Java到底是动态语言还是静态语言,是强类型还是弱类型呢?虽然知道但是还是不够深入,接下来就一起探讨下吧。图释碰巧看到一张图,完美的区分了以...
  • 另外编程语言除了编译型解释型,还有静态语言、动态语言、强类型语言、弱类型语言。那么每种语言类型是什么样子的呢,下面让我们来看看吧。  但是在此之前,我们需要先了解一下计算机原因的发展史,从低级语言到...
  • 静态语言和动态语言的区别

    万次阅读 多人点赞 2018-12-12 11:12:16
    今天在群里聊天的时候,谈论到pythonJava相比居然不用定义变量类型。我心血来潮就去百度了一番动态语言静态语言的具体区别,... 静态类型语言:它的数据类型是在编译期进行检查的,也就是说变量在使用前要声明变...
  • 将知识点分门别类可以更好的记忆,编程语言也是,同类型语言之间也可以相互印证,更全面的理解。 下面转自知乎。 基础概念 Program Errorstrapped errors。解释器或编译器不能处理的错误。导致程序终止执行,如除...
  • 编程语言 - 强弱/动静态类型

    千次阅读 2020-04-28 12:35:58
    了解编程语言的分类及显著的区别, 帮助理解编程语言的本质,帮助快速学习一门新的语言.
  • 类型:容忍隐式类型转换。比如js中: 1+'a' > '1a' 以及c中double可以隐式转换为int 强类型:不容忍隐式类型转换。比如python中: >>> "1"+2 Traceback (most recent call last): File "<...
  • 动态类型语言&静态类型语言

    千次阅读 2017-04-14 16:41:56
    静态类型语言概念:意思就是类型判断是在运行前做的(如编译阶段)表现:使用变量前需要声明变量举例:C、C++、Java这些都属于静态类型语言参考:百度百科:http://baike.baidu.com/link?url=oc566smrlmg...
  • 动态语言是在运行时才确定数据类型语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。 例如PHP、ASP、Python、SQL、JavaScript、Unix Shell等等。 动态语言的优势:思维不受束缚,可以...
  • 我们先看看编译型,其实它汇编语言是一样的:也是有一个负责翻译的程序来对我们的源代码进行转换,生成相对应的可执行代码。这个过程说得专业一点,就称为编译(Compile),而负责编译的程序自然就称为编译器...
  • 静态语言:是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。例如:C++、Java、Delphi、C# 、go等。 动态语言:是在运行时确定数据类型的语言。变量使用之前不需要...
  • 类型(strong typed、Explicit typed)与弱类型(weakly typed或loosely typed或Implicit typed )的区别可以简单的概括为是否支持隐式转换。 例如:"...静态语言(Statically Typed)与动...
  • 类型系统的一些概念,众说纷纭,使用上也比较乱。有些东西,甚至不好严格定义。以下算学术界的一种相对“严格”的说法。 1. 先定义一些基础概念 Program Errors trapped errors。导致程序终止执行,如除0,Java中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 537,592
精华内容 215,036
关键字:

动态类型和静态类型语言