当前位置: 首页 > news >正文

03 # 类型基础:动态类型与静态类型

通俗定义

静态类型语言:在编译阶段确定所有变量的类型

在这里插入图片描述
在这里插入图片描述

  • 编译阶段确定属性偏移量
  • 用偏移量访问代替属性名访问
  • 偏移量信息共享

动态类型语言:在执行阶段确定所有变量的类型

在这里插入图片描述
在这里插入图片描述

  • 在程序运行时,动态计算属性偏移量
  • 需要额外的空间存储属性名
  • 所有对象的偏移量信息各存一份

所以动态类型语言无论在时间还是空间都有比较多的性能损耗。

静态类型与动态类型对比

静态类型语言动态类型语言
对类型极度严格对类型非常宽松
立即发现错误Bug可能隐藏数月甚至数年
运行时性能好运行时性能差
自文档化可读性差

动态类型语言的支持者认为:

  • 性能是可以改善的(V8引擎), 而语言的灵活性更重要
  • 隐藏的错误可以通过单元测试发现
  • 文档可以通过工具生成

其他定义

美国加州大学的讲义中对强类型语言的定义如下

强类型语言:不允许程序在发生错误后继续执行

按照上面的定义,C/C++就是弱类型语言,因为它们没有对数组越界进行检查,一旦发生错误,程序就会终止

争议: C/C++是强类型还是弱类型?

语言类型象限

在这里插入图片描述

http://www.lryc.cn/news/230411.html

相关文章:

  • Python编程——模块、包和__init__.py
  • 220kV110kV10kV变电站初步设计
  • Git企业开发级讲解(一)
  • 【微信支付通知】对resource解密 AEAD_AES_256_GCM算法工具类
  • JVM虚拟机:垃圾回收之三色标记
  • 唯坚持而已
  • 【大语言模型】Docker部署清华大学ChatGLM3教程
  • 详解 KEIL C51 软件的使用·设置工程·编绎与连接程序
  • 小程序实现语音识别功能
  • 判断两层对象中是否有空的value值
  • 【SQLite】环境安装
  • 【QT】飞机大战
  • linux最全基础入门命令(简单明了建议收藏)
  • dgl 的cuda 版本 环境配置(dgl cuda 版本库无法使用问题解决)
  • 回文数和复利的威力(C#)
  • 【Java】面向对象程序设计 课程笔记 Java核心类
  • 16个值得推荐的.NET ORM框架
  • Git 进阶使用
  • 【微软技术栈】C#.NET 泛型数学
  • 【nlp】1.1文本处理的基本方法
  • 流量分析(信息安全铁人三项赛分区赛2-5.18)
  • 云服务器如何选?腾讯云2核2G3M云服务器88元一年!
  • 【Hello Go】初识Go语言
  • 计算机视觉:人脸识别与检测
  • 【NLP】理解 Llama2:KV 缓存、分组查询注意力、旋转嵌入等
  • ctyunos 与 openeuler
  • 跟着GPT学设计模式之工厂模式
  • VScode+python开发,多个解释器切换问题
  • c++ 经典服务器开源项目Tinywebserver如何运行
  • c++之xml的创建,增删改查