本文介绍: 动态语言静态语言动态静态语言概念动态语言静态语言两者有缺点Objectivec说明补充说明动态静态语言概念动态类型语言:在运行期进行类型检查语言,也就是在编写代码的时候可以指定变量数据类型静态类型语言:静态类型语言:它的数据类型是在编译期进行检查的,也就是说变量使用前要声明变量数据类型,这样的好处是把类型检查放在编译期,提前检查可能出现的类型错误类型语言,一个变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。举个例子:如果你定义一个double类型变量a,不

动态静态语言的概念

动态类型语言:在运行期进行类型检查的语言,也就是在编写代码的时候可以指定变量数据类型。

静态类型语言:静态类型语言:它的数据类型是在编译期进行检查的,也就是说变量使用前要声明变量数据类型,这样的好处是把类型检查放在编译期,提前检查可能出现的类型错误

强类型语言,一个变量不经过强制转换,它永远是这个数据类型,不允许隐式的类型转换。举个例子:如果你定义一个double类型变量a,不经过强制类型转换那么程序int b = a无法通过编译。

弱类型语言:它与强类型语言定义相反,允许编译器进行隐式的类型转换

动态语言

动态语言(弱类型语言)是运行时才确定数据类型的语言,变量在使用之前无需申明类型,通常变量的值是被赋值的那个值的类型。比如Php、Asp、JavaScript、Python、Perl等等。

动态语言思维不受约束可以任意发挥,把更多的精力放在产品本身上;集中思考业务逻辑实现,思考过程就是实现过程

静态语言

静态语言(强类型语言)是编译时变量的数据类型就可以确定的语言,大多数静态语言要求在使用变量之前必须生命数据类型。比如Java、C、C++、C#等。

静态语言由于强制声明数据类型,让开发工具(IDE)对代码有很强的判断能力,在实现复杂业务逻辑开发大型商业系统、以及那些声明周期很长的应用中,开发者可以依托强大的IDE来更高效、更安全开发

两者有缺点

强类型语言在速度上略逊色于弱类型语言,使用弱类型语言可节省很多代码量,有更高的开发效率。而对于构建大型项目使用强类型语言可能会比使用弱类型更加规范可靠

静态类型语言的主要优点在于其结构非常规范,便于调试,方便类型安全;缺点是为此需要写更多的类型相关代码,导致不便于阅读、不清晰明了。动态类型语言的优点在于方便阅读,不需要写非常多的类型相关的代码;缺点自然就是不方便调试,命名规范时会造成读不懂,不利于理解等。

Objective-c说明

Objective-c的动态运行
Objective-c是c语言的一个子类,所以objective-c一个静态语言,但objective-c的三大特性之一的多态性让其拥有了动态性。
objective-c的动态性,让程序运行判断其该有的行为,而不是像c等静态语言在编译构建时就确定下来。它的动态性主要体现在3个方面:

1.动态类型:如id类型。实际上静态类型因为其
固定性和可预知性而使用的特别广泛。静态类型是强类型,动态类型是弱类型,运行时决定接收者

2.动态绑定:让代码在运行判断需要
调用什么方法,而不是在编译时。与其他面向对象语言一样,方法调用和代码并没有在编译时连接在一起,而是在消息发送时才进行连接运行时决定调用哪个方法

3.动态载入。让程序在运行时添加代码模块以及其他资源用户可以根据需要执行一些可执行代码和资源,而不是在启动时就加载所有组件。可执行代码中可以含有和程序运行整合的新类。

补充说明

静态类型(Statically Typed Language-静态类型语言)
而静态类型语言的类型判断是在运行前判断(如编译阶段),比如c#,java就是静态类型语言,静态类型语言为了达到多态oc支持方法名的多态但不支持参数操作符多态),会采取一些类型鉴别手段,如继承,接口,而动态类型语言则不需要,所以一般动态语言都会采用动态类型(Dynamically Typed),常出现于脚本语言中。
静态语言的优缺点
优点:其结构非常规范,便于调试,方便类型安全
缺点:需要写更多的类型相关代码,导致不便于阅读,不清晰明了。
动态语言的优缺点
优点:方便阅读,不需要写非常多的类型相关代码;
缺点:不方便调试,命名不规范时会造成读不懂,不利于理解等。

原文地址:https://blog.csdn.net/AHekey/article/details/123420525

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_15283.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注