精华内容
下载资源
问答
  • 动态语言和静态语言

    千次阅读 2020-02-16 21:49:57
    动态语言无需编译,它由解释器动态解释执行,一般来说,动态语言拥有比静态语言更大的灵活性表达能力。动态语言优势在于灵活,易于开发学习,劣势在于性能较低。在高性能服务器并行处理的实现方案里,动态语言...

    动态语言也称为脚本语言,是介于标签语言(如HTML,XSLT,VML)和静态语言(如C++、C#、Java,也称编译语言)之间的语言。JavaScript、PHP、Perl、Ruby等都是动态语言。动态语言无需编译,它由解释器动态解释执行,一般来说,动态语言拥有比静态语言更大的灵活性和表达能力。动态语言优势在于灵活,易于开发和学习,劣势在于性能较低。在高性能服务器和并行处理的实现方案里,动态语言的优势掩盖自身的不足。一般来说,完成同样逻辑功能的程序,使用Ruby或Python之类的动态语言所需的代码量往往只有使用Java实现版本的1/10,相比C/C++差距更大。近两年来,动态语言似乎有山雨欲来风满楼的气势。在各大开发技术网站,有大量介绍动态语言的文章,在各大论坛里,人们针对动态语言的学习、交流、论战、预测的帖子不断成为抢眼热帖,搅动着开发者的神经。动态语言最突出的特性是语法简洁灵活,易于学习,拥有大量高级程序库,无须从底层开始搭建程序,降低了应用实现的难度。一个C++程序员,往往经过了几年的训练仍然不能开发出可用的程序,但动态语言的程序员经过几个月的训练就已经可以编写出可复用性的代码了。此外,动态语言的代码往往以开源的形式发布,容易被使用和学习。程序库往往决定了一种语言应用难度,纵观历史,凡是具有优秀程序库的语言生命力都很顽强,反之则容易销声匿迹。目前几种流行的动态语言,都具有丰富的程序库,在Python中,不仅具有诸如网络应用,多线程,图像处理,科学运算之类的程序库,甚至还拥有多套不同量级的Framework来辅助Web开发。事实上,任何需要的功能几乎都能找到相对稳定的程序库,大部分程序员仅仅需要组合这些库就能编写出强大的应用——这也正是使用动态语言开发程序代码量较少的原因之一。除了众多的程序库,动态语言本身的种类也远远大于静态语言,同样,每种语言也各具特点。Ruby,Python,Groovy,Perl是四种颇具代表性的动态语言,按照一般的看法,这些语言适合用来黏合不同的系统和模块,素有“胶水”的之称。后来人们发现“胶水”不仅仅能粘合其他模块,本身也具有强大的功能。在没有性能问题的重要性不突出的场合,动态语言看起来无所不能了,无论是网站还是应用程序,都能看到动态语言的身影。对时下的程序员来说,掌握一种动态语言已不仅仅是赶时髦,虽然你不一定能够靠单单一种动态语言找到一份喜欢的工作,但适时地采用动态语言,一定可以让你的工作

    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

    变的简单许多。

    展开全文
  • 通常我们所说的动态语言、静态语言动态类型语言(Dynamically Typed Language) 静态类型语言Statically Typed Language)。 还有一个 Dynamic Programming Language (动态编程语言),静态编程语言。 ...

    定义 
    通常我们所说的动态语言、静态语言指 动态类型语言(Dynamically Typed Language)和 静态类型语言Statically Typed Language)。
    还有一个 Dynamic Programming Language (动态编程语言),静态编程语言。

    动态类型语言:在运行期间检查数据的类型的语言。用这类语言编程,不会给变量指定类型,而是在附值时得到数据类型。如:Python和ruby就是典型动 态类型语言。很多脚本语言vbscrīpt,javascrīpt也是这类语言。看下面javascrīpt代码:

    function add(a,b){
    return a+b;
    }
    add(1,2);
    add('1',2);



    静态类型语言:相反静态类型语言是在运行前编译时检查类型。在写代码时,没声明一个变量必须指定类型。如:java,c#,c,c++等等。
    public int add(int a,int b){
    return a+b;
    }
    其实比较一下代码,你很快就会发现,其实区分动态静态类型语言从语法上就够了,语言语法格式基本就可确认动静态类型。

    而Dynamic Programming Language (动态编程语言)指在程序运行过程中可以改变数据类型的结构,对象的函数,变量可以被修改删除。比如:javascrīpt就是这类语言,ruby, python也属于这类语言。而c++,java不属于这类语言。看javascrīpt代码:

    function Person(name){
    this.name=name;
    }
    Person.prototype.getName=function(){
    return this.name;
    }
    var person=new Person("okok");
    alert(person.getName());
    person.getName=function(){return "nono"};
    alert(person.getName());



    当然静态编程语言 是运行时不可改变结构了。

    网上有人说 类型检查和改变结构 是静态语言和动态语言两个区别点。基本概念上应该就这些,是我个人理解,不一定完全正确。个人感觉没必要很清晰分门类,掌握优点、特点就好了。这个话题说开根本不是我能说清楚的。总结思考一下。

    有三个名词容易混淆:

    1. Dynamic Programming Language (动态语言或动态编程语言)
    2. Dynamically Typed Language (动态类型语言)
    3. Statically Typed Language (静态类型语言)

    FantasySoft在他文章中所提到的动态语言与静态语言实际上指的就是动态类型语言与静态类型语言。

    动态语言,准确地说,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。比如众所周知的 ECMAScript(JavaScript)便是一个动态语言。除此之外如Ruby、Python等也都属于动态语言,而C、C++等语言则不属于动态 语言。

    所谓的动态类型语言,意思就是类型的检查是在运行时做的,比如如下代码是不是合法的要到运行时才判断(注意是运行时的类型判断):

    defsum(a,b): 
      return a + b 

    而静态类型语言的类型判断是在运行前判断(如编译阶段),比如C#就是一个静态类型语言,静态类型语言为了达到多态会采取一些类型鉴别手段,如继 承、接口,而动态类型语言却不需要,所以一般动态语言都会采用dynamic typing,常出现于脚本语言中。(idior不知道这能不能回答你对动态语言多态的疑问^_^)

    这里我需要明确说明一点,那就是,是不是动态类型语言与这门语言是不是类型安全的完全不相干的,不要将它们联系在一起!

    静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。动态类型 语言的优点在于方便阅读,不需要写非常多的类型相关的代码;缺点自然就是不方便调试,命名不规范时会造成读不懂,不利于理解等。顺便说一下,现在有这样一 种趋势,那就是合并动态类型与静态类型在一种语言中,这样可以在必要的时候取长补短,Boo就是一个很好的试验性例子。^_^

    最后说一下Boo,Boo是一个静态类型语言,虽然用duck typing可以模拟dynamic typing,但是duck并不支持所有类型的操作替代,所以即使完全使用duck typing也不能达到dynamic typing。就像FantasySoft所述,Type Inference不是动态类型语言的特性,所以支持Type Inference不代表这门语言就是dynamically typed。

    再特地为Ninputer 这个VB的fans说一下VB.NET^_^,VB.NET是dynamically typed语言。

    展开全文
  • 类成员只能访问属于自己的方法变量,因此,静态语言的结构更加规范,便于调试,且可以进行多样化的性能优化.常见的静态语言有Java/c++/c 动态语言:大部分的判断工作被推迟到运行时进行,类的成员变量,方法地址...


    • 静态语言:静态语言在程序运行前会进行类型判断,类的成员,方法都会在编译阶段确定好内存地址.类成员只能访问属于自己的方法和变量,因此,静态语言的结构更加规范,便于调试,且可以进行多样化的性能优化.常见的静态语言有Java/c++/c


      动态语言:大部分的判断工作被推迟到运行时进行,类的成员变量,方法地址都在运行时确认.可以在运行时添加类成员,方法等.具有较高的灵活性,便于阅读,但方法无法进行内联等优化.





    展开全文
  • 静态语言和动态语言的区别

    万次阅读 多人点赞 2018-12-12 11:12:16
    我心血来潮就去百度了一番动态语言和静态语言的具体区别,一番百度才发现自己原来的想法不够全面,所以在这里做个笔记。 基本概念 动态类型语言:在运行期进行类型检查的语言,也就是在编写代码的时候可以不指定...

    今天在群里聊天的时候,谈论到python和Java相比居然不用定义变量类型。我心血来潮就去百度了一番动态语言和静态语言的具体区别,一番百度才发现自己原来的想法不够全面,所以在这里做个笔记。

    基本概念

    • 动态类型语言:在运行期进行类型检查的语言,也就是在编写代码的时候可以不指定变量的数据类型,比如Python和Ruby
    • 静态类型语言:它的数据类型是在编译期进行检查的,也就是说变量在使用前要声明变量的数据类型,这样的好处是把类型检查放在编译期,提前检查可能出现的类型错误,典型代表C/C++和Java
    • 强类型语言,一个变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。举个例子:如果你定义了一个double类型变量a,不经过强制类型转换那么程序int b = a无法通过编译。典型代表是Java。
    • 弱类型语言:它与强类型语言定义相反,允许编译器进行隐式的类型转换,典型代表C/C++。


    如果所有程序都是灰的,strongly typed
    否则如果存在红色的程序,weakly typed
    编译时排除红色程序,statically typed
    运行时排除红色程序,dynamically typed

    总结

    上一个图就很清晰了

    preview

    展开全文
  • 动态语言和静态语言的区别

    万次阅读 多人点赞 2016-09-18 10:55:26
    有三个名词容易混淆: Dynamic Programming Language (动态语言或动态编程语言)...FantasySoft在他文章中所提到的动态语言与静态语言实际上指的就是动态类型语言与静态类型语言。 动态语言,准确地说,是指程序在
  • 动态语言和静态语言 1.动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种...
  • 1 动态语言和静态语言  通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。  1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远...
  • 定义:强类型语言(静态类型语言)是指需要进行变量/对象类型声明的语言,一般情况下需要编译执行。例如C/C++/Java/C#/scala/goland弱类型语言(动态类型语言)是指不需要进行变量/对象类型声明的语言,一般情况下不需要...
  • 什么是动态语言和静态语言?定义通常我们所说的动态语言、静态语言动态类型语言(Dynamically Typed Language)和 静态类型语言Statically Typed Language)。还有一个 Dynamic Programming Language (动态编程...
  • 1、动态语言和静态语言  通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。 (1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,...
  • 1 动态语言和静态语言  通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。  1 动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也...
  • 动态语言和静态语言比较

    千次阅读 2007-10-31 10:42:00
    2007-08-30 20:23一 、静态语言的优势到底在哪?来自robbin 摘自 http://www.javaeye.com/article/33971?page=7引用是像Java或者C#这样强类型的准静态语言在实现复杂的业务逻辑、开发大型商业系统、以及那些生命...
  • 静态语言动态语言

    2017-01-19 14:52:53
    静态语言是指在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。例如:C++、Java、Delphi、C#等。 动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,...
  • 静态语言和动态语言之探索

    千次阅读 2018-05-18 14:30:13
    有三个名词容易混淆:Dynamic Programming Language (动态语言动态编程语言)Dynamically Typed Language (动态类型语言)Statically Typed Language (静态类型语言)静态类型语言的类型判断是在运行前判断(如编译...
  • 编译型解释型的区别 先来看看编译型语言定义: 编译型语言首先是将源代码编译生成机器指令,再由机器运行机器码 (二进制)。 再来看看解释型语言的定义: 解释型语言的源代码不是直接翻译成机器指令,而是...
  • 1 在看书的时候无意中讲到编程语言分为解释型编译型。我们知道软件的产生大都进过了这样的过程:(1)源程序----中间代码------机器代码;(2)源程序----机器代码。第一个过程应该是使用编译型程序设计语言,第...
  • 类型检查和改变结构 是静态语言和动态语言两个区别点 动态类型语言 和静态类型语言区别在于 语言类型是运行前确定还是运行时声明 静态语言(强类型语言) 静态语言是在编译时变量的数据类型即可确定的语言,多数静态...
  • 什么是动态语言/静态语言

    千次阅读 2017-07-23 10:40:18
    下面简单介绍下什么是静态语言和静态语言: 动态语言:动态语言是指在运行期间才去做数据类型检测的语言。在用动态语言编程的时候并不需要给变量指定数据类型,该语言会在第一次将数据赋值给变量的时候在内部将数 据...
  • 1、动态语言和静态语言 通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。 (1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,...
  • C语言是静态语言、弱类型语言。 Java语言是静态语言、强类型语言。 JavaScript语言是动态语言、弱类型语言。 静态类型语言、动态类型语言分析: 静态类型语言:变量定义时有类型声明的语言。 1)变量的类型在...
  • 1、动态语言和静态语言  通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。 (1)动态类型语言:动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,...
  • 动态语言、静态语言

    2008-05-07 17:38:00
    信息技术从来没有像今天这样飞速发展着,变换更新的技术... -------------------------------------------- 1、动态语言和静态语言 通常我们所说的动态语言、静态语言是指动态类型语言和静态类型语言。(1)动态类型语
  • 动态语言,静态语言的区别

    千次阅读 2017-08-31 10:15:04
    通常我们所说的动态语言、静态语言动态类型语言(Dynamically Typed Language) 静态类型语言Statically Typed Language)。 还有一个 Dynamic Programming Language (动态编程语言),静态编程语言。 ...
  • 动态语言和静态语言 1.动态类型语言:是指在运行期间才去做数据类型检查的语言。在用动态语言编程时,不用给变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 370,345
精华内容 148,138
关键字:

动态和静态语言