对静态语言和动态语言的初步认识

自己一直从事Java开发,在进行java开发web程序时,也用到javascript这样的脚本语言。javascript是一种动态语言,主要是基于浏览器解析并运行,最开始的时候这门语言并不是叫做javasript,而后来为什么javascript呢?主要是因为商业运作的考虑。当时javaweb开发风声水起,为了提高自己的知名度,因此改名为javascript。若是平时用的是java开发项目的,用javascript开发程序还是挺不是适应。首先java是编译器编译后,然后在根据平台的jvm上运行,所以在用工具开发时,编译器能随时对出现语法错误的位置进行标记。而javascript是解释器进行编译,而解释器是嵌入浏览器中的,因此出现语法错误这种问题时,只有在浏览器运行时才意识到哪里出了问题,觉得在使用上不太方便。

java和javascript还有一个明显的区别,java在开发时对每个基本类型的引用必须标明该引用是指用哪种类型。而javascript在初始化基本类型的引用是都用var,但当程序运行时总能分辨出是字符串还是数字类型。并进行相应的运算。在刚接触javascript语言时,以为javascript是弱语言类型的。后来对这门语言进一步了解后,发现其实javascrip也是强类型的语言。说是强类型语言,主要是因为语法方面对类型有强制的规定,比如定义的一个变量是字符串,所以在程序运行时判断是字符串后,才能调用相应的字符串操作函数。若是定义的变量是数字类型时,调用针对字符串的函数时就会提示语法错误。java在定义是就标明这个是什么类型的变量,而javascript是在运行时根据对应的值来确定这个是什么类型,似乎比java语言在这点上更加智能一点。但是这也会造成类型混乱的风险,虽然这个风险是可以避免的。而语法上面这样的设计也是因为脚本语言的限制所决定。

上面说过,javascript是基于浏览器中解释器翻译后运行,运行时才知道你所写的定义与逻辑,所以在编写时对变量进行各种类型的定义似乎没有意义,即使在设计语言时,有像静态语言一样的变量类型定制,在解释器进行翻译过程中还要验证你所标明的类型和直接的值是否一致,那还不如直接由解释器来说明这个值是属于哪种类型的更方便。因此动态语言这点上跟静态语言有很大的差别。

时间: 2024-10-12 22:52:20

对静态语言和动态语言的初步认识的相关文章

静态语言和动态语言

基本概念 静态语言(强类型语言) 静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型. 例如:C++.Java.Delphi.C#等. 动态语言(弱类型语言) 动态语言是在运行时确定数据类型的语言.变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型. 例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等. 强类型定义语言 强制数据类型定义的语言.也就是说,一旦一个变量被

编译型语言,解释型语言,静态语言,动态语言概念

编译语言和解释语言 1.编译语言: 需要通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言. 一般需经过编译,链接两个步骤: 编译:把原代码编译成机器码 链接:把各个模块和依赖库串起来生成可执行文件. 优点: 编译器一般会有预编译的过程对代码进行优化.因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高.可以脱离语言环境独立运行. 缺点: 编译之后如果需要修改就需要整个模块重新编译.编译的时候根据对应的环境生成机器码,不同的操作系统之间移植会有问题,需要根据运行

解释型语言和编译型语言、弱类型语言和强类型语言、动态语言和静态语言的区别

计算机是不能理解除了机器语言以外的任何语言所以必须要把程序员所写的程序语言都翻译成机器语言才能执行程序.程序语言翻译成机器语言的工具,叫做翻译器. 编程语言  ————> 翻译器  ————> 计算机语言(二进制) 翻译器翻译的方式有两种:一是 编译,二是 翻译.两种方式之间对区别在于翻译的时间点不同. 编译器:是在代码执行之前进行编译,生成中间代码文件 解释器:是在运行时进行及时解释,并立即执行(当编译器以解释方式运行的时候,也称之为解释器) 举个栗子: 编译型语言:就像是请客的时候要先把所

动态语言、静态语言及动态语言的“鸭子类型“

动态语言与静态语言: 所谓动态和静态,是指程序中类型.类型又是指class,int等定义,比如变量的类型,函数的入参类型,返回值类型.动态类型语言,表示在编写程序的时候,无需制定类型,是运行时检查:静态类型语言,表示在编写程序的时候,需要显式地制定各种类型,在编译的时候就会被检查. 有人说静态类型语言叫强类型语言,是指需要进行变量/对象类型声明的语言,一般情况下需要编译执行. 例如C/C++/Java/C# 有人说动态类型语言叫弱类型语言,是指不需要进行变量/对象类型声明的语言,一般情况下不需要

python——静态语言、动态语言、强类型语言、弱类型语言、脚本语言、解释型语言、编译型语言

静态语言 在编写代码时,必须为变量指定一个明确类型的语言.比如Java.C/C++ 动态语言 在编写代码时,不必为变量指定一个明确的类型,而是由解释器在运行时根据变量的使用情况确定变量的类型.比如python.javascript #python的动态特性 m = 10; m = 'hello' print m #print 'hello' 强类型语言 变量必须有一个确定的类型.比如Java.C/C++.python 弱类型语言 在运行时,变量不必按它原来的类型使用,可以当做其他类型来使用,比如

20_03_06_02 编程语言的分类—静态语言和动态语言

动态语言和静态语言 动态类型语言 1. 运行期间才去做数据类型检查的语言 2. 用动态类型的语言编程时,不用给任何变量指定数据类型 3. 动态类型语言会在第一次赋值给变量时,将内部数据类型记录下来 4. python是典型的动态类型语言 静态类型语言 1. 与动态类型语言刚好相反 2. 数据类型在编译期间检查,写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表 原文地址:https://www.cnblogs.com/azxsdcv/p/12424954.html

静态语言与动态语言,强类型语言与弱类型语言

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

02. oc语言是动态语言????

参照着知乎上大神们给的解释,(https://www.zhihu.com/question/19918532)自己要总结下知识: 自己初级并没有理解 动态.静态.强类型.弱类型 语言的这些含义,区分. 趁着近来有些零散的时间,赶紧补充下自己-- 1. 动态编程语言 是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化. 比如众所周知的ECMAScript(JavaScript)便是一个动态语言. 除此之外如Ruby.Python等也都属于动态语言. 2 . 静

【动态语言和静态语言】动态语言和静态语言的认识,定义

源:http://www.cnblogs.com/spmxlBlog/archive/2010/06/28/1766832.html 定义: 强类型语言(静态类型语言)是指需要进行变量/对象类型声明的语言,一般情况下需要编译执行. 例如C/C++/Java/C# 弱类型语言(动态类型语言)是指不需要进行变量/对象类型声明的语言,一般情况下不需要编译(但也有编译型的). 例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/JavaScript/Unix Shell等等.