动态语言与静态语言的区别
静态语言和动态语言的区别:
静态语言是指在编译时变量的数据类型即可确定的语言,
多数静态类型语言要求在使用变量之前必须声明数据类型。
例如:C++、Java、Delphi、C#等。
动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,
通常变量的类型是被赋值的那个值的类型。例如:Python、Ruby、Perl等。
静态语言的优势:
Java或者C#这样强类型的静态语言在实现复杂的业务逻辑、开发大型商业系统、
以及那些生命周期很长的应用中也有着非常强的优势。
强类型语言(静态类型语言)是指需要进行变量/对象类型声明的语言,
一般情况下需要编译执行。例如C/C++/Java/C#。
弱类型语言(动态类型语言)是指不需要进行变量/对象类型声明的语言,
一般情况下不需要编译(但也有编译型的)。
例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/
JavaScript/Unix Shell等等。
强类型语言是一旦变量的类型被确定,就不能转化的语言。
实际上所谓的貌似转化,都是通过中间变量来达到,
原本的变量的类型肯定是没有变化的。
弱类型语言则反之,一个变量的类型是由其应用上下文确定的。
比如语言直接支持字符串和整数可以直接用 + 号搞定。
当然,在支持运算符重载的强类型语言中也能通过外部实现的方式在形式上做到这一点,
不过这个是完全不一样的内涵 。
静态类型语言因为类型强制声明,所以IDE可以做到很好的代码感知能力,
因为有IDE的撑腰,所以开发大型系统,复杂系统比较有保障。
静态语言相对比较封闭的特点,使得第三方开发包对代码的侵害性可以降到很低。
动态语言在这点上表现的就比较差,我想大家都有过从网上下载某个JS包,
然后放到项目代码里发生冲突的经历。
动态类型语言,特别是高级动态类型语言,
反而能够让人们不需要分心去考虑程序编程问题,而集中精力思考业
务逻辑实现,即思考过程即实现过程,用DSL描述问题的过程就是编程的过程,
这方面像Unix Shell,ruby,SQL,甚至PHP都是相应领域当之无愧的DSL语言。
而显然静态类型语言基本都不满足这个要求。
那静态类型语言的优势究竟是什么呢?我认为就是执行效率非常高。
所以但凡需要关注执行性能的地方就得用静态类型语言。其他方面似乎没有什么特别的优势。
静态语言是指在编译时变量的数据类型即可确定的语言,
多数静态类型语言要求在使用变量之前必须声明数据类型。
例如:C++、Java、Delphi、C#等。
动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,
通常变量的类型是被赋值的那个值的类型。例如:Python、Ruby、Perl等。
静态语言的优势:
Java或者C#这样强类型的静态语言在实现复杂的业务逻辑、开发大型商业系统、
以及那些生命周期很长的应用中也有着非常强的优势。
强类型语言(静态类型语言)是指需要进行变量/对象类型声明的语言,
一般情况下需要编译执行。例如C/C++/Java/C#。
弱类型语言(动态类型语言)是指不需要进行变量/对象类型声明的语言,
一般情况下不需要编译(但也有编译型的)。
例如PHP/ASP/Ruby/Python/Perl/ABAP/SQL/
JavaScript/Unix Shell等等。
强类型语言是一旦变量的类型被确定,就不能转化的语言。
实际上所谓的貌似转化,都是通过中间变量来达到,
原本的变量的类型肯定是没有变化的。
弱类型语言则反之,一个变量的类型是由其应用上下文确定的。
比如语言直接支持字符串和整数可以直接用 + 号搞定。
当然,在支持运算符重载的强类型语言中也能通过外部实现的方式在形式上做到这一点,
不过这个是完全不一样的内涵 。
静态类型语言因为类型强制声明,所以IDE可以做到很好的代码感知能力,
因为有IDE的撑腰,所以开发大型系统,复杂系统比较有保障。
静态语言相对比较封闭的特点,使得第三方开发包对代码的侵害性可以降到很低。
动态语言在这点上表现的就比较差,我想大家都有过从网上下载某个JS包,
然后放到项目代码里发生冲突的经历。
动态类型语言,特别是高级动态类型语言,
反而能够让人们不需要分心去考虑程序编程问题,而集中精力思考业
务逻辑实现,即思考过程即实现过程,用DSL描述问题的过程就是编程的过程,
这方面像Unix Shell,ruby,SQL,甚至PHP都是相应领域当之无愧的DSL语言。
而显然静态类型语言基本都不满足这个要求。
那静态类型语言的优势究竟是什么呢?我认为就是执行效率非常高。
所以但凡需要关注执行性能的地方就得用静态类型语言。其他方面似乎没有什么特别的优势。
上一篇:skin to skin 鹿晗
下一篇:python6
声明:以上文章均为用户自行添加,仅供打字交流使用,不代表本站观点,本站不承担任何法律责任,特此声明!如果有侵犯到您的权利,请及时联系我们删除。
文章热度:☆☆☆☆☆
文章难度:☆☆☆☆☆
文章质量:☆☆☆☆☆
说明:系统根据文章的热度、难度、质量自动认证,已认证的文章将参与打字排名!
本文打字排名TOP20
登录后可见
用户更多文章推荐
- 注意力高度集中2017-01-26
- 笔记本电池的保养误区2017-01-26
- 程序=算法+数据结构2017-01-24
- 对对象的理解2017-01-23
- 数据结构开篇2017-01-23
- 如何学好数据结构?2017-01-23
- 为什么会有一些很漂亮的女孩子当性工作...2017-01-22
- 你具备了刷题的知识结构了吗?2017-01-21
- 而立之年我做了什么事以及要做的事2017-01-21
- (上)正确的做事与做正确的事同样重要2017-01-21
- 如何深入理解设计模式2017-01-21
- 谈谈你对OOP的理解?2017-01-21
- 中国为什么没有自己编程语言?2017-01-20
- 谁才是计算机之父2017-01-19
- 现代计算机的终极形态2017-01-19
- 苹果六招干掉了诺基亚(一)2017-01-19
- 数据结构在内存中的表示2017-01-19
- 赵薇玩影视与贾跃亭造车,到底哪一个更...2017-01-17
- 了解编程的历史的必要性2017-01-17
- 如果你很牛或者不够牛!2017-01-17