高完整性系统工程(六):INTRODUCING ADA

目录

1. ADA的历史

2. ADA的特点

2.1 Strong, Static Typing 强语言、强静态类型语言

2.1.1 ADA is Strong, Static Typing

2.1.2 C is Weak, Static Typing 

2.2 Module System

2.3 Portable

2.3.1 ADA

2.3.2 C

2.3.3 Cost of Runtime Checking

2.4 Readability 

2.4.1 Purposeful Verbosity

2.4.2 Intended Redundancy

2.4.3 Unambiguous Semantics

2.4.4 Ada Prefers Readability

2.5 Semantics and Safety 语义和安全性

2.6 Application Areas 应用领域

2.7 与MISRA C的比较

3. ADA: SOME INTERESTING HIGHLIGHTS

3.1 Packages

3.1.1 Packages: with and use

3.2 Types

3.2.1 Type Casts and Errors 

3.2.2 Subtypes

3.3 Arrays

3.4 Procedures and Functions

3.5 Parameter Passing

3.6 Parameter Modes

3.7 Implementation Hiding

3.8 Enumerations 枚举

3.9 标准类型的选择


1. ADA的历史

mid 1970s:

US DoD has too many languages for myriad embedded devices; want: safe, modular, cross platform, high level

美国国防部有太多的语言用于众多的嵌入式设备;希望:安全、模块化、跨平台、高水平

1977:

solicit proposals for new language 

征求对新语言的建议

1979:

Honeywell’s proposal chosen; christened Ada

Honeywell的提案被选中;被命名为 "Ada"。

10 Dec 1980:

MIL-STD-1815 approved

1983:

ANSI/MIL-STD-1815A (“Ada 83”)

1995:

ISO-8652:1995 (“Ada 95”) USAF funds GNAT Compiler, now in GCC

2012:

ISO/IEC 8652:2012 (“Ada 2012”)

2. ADA的特点

2.1 Strong, Static Typing 强语言、强静态类型语言

静态类型语言 VS 动态类型语言

在静态类型语言中,变量的类型必须先声明,即在创建的那一刻就已经确定好变量的类型,而后的使用中,你只能将这一指定类型的数据赋值给变量。如果强行将其他不相干类型的数据赋值给它,就会引发错误。例如C。类型检查是在编译器编译时执行的!

在动态类型语言中,没有像静态类型语言那样的限制,而是你将什么类型的数据赋值给变量,这个变量就是什么类型。如Python,JavaScript。类型检查是在编译器运行时检查的!

 强类型 VS 弱类型

强弱之分,体现在对类型的检查严格程度上,弱类型语言对于变量类型的检查比较宽松,容忍隐式类型转换这种事情的发生。何为隐式类型转换,一般有两种形式:

  1. 相关类型之间隐式转换
  2. 不相关类型之隐式间转换

举例子来说,一个int类型的数据与一个float类型的数据相加,最终的结果是一个float类型的数据,这个过程就发生了隐式类型转换,int类型数据首先被转成float类型,然后与另一个float进行操作,这便是相相关类型之间隐式转换。

一个int类型数据与一个字符串类型数据相加,竟然没有发生错误,得到的结果是一个字符串,int类型数据隐式转换为字符串,可他们原本是两个不相干的数据类型,这种就是第二种隐式转换。

在弱类型语言中,变量可以隐式强制转换为不相关类型,而在强类型语言中则不可以。

2.1.1 ADA is Strong, Static Typing

2.1.2 C is Weak, Static Typing 

2.2 Module System

Automatic dependency resolution 自动解决依赖关系

Information Hiding, Encapsulation 信息隐藏、封装

2.3 Portable

对于一个signed integer type,如果执行的操作因为它超出了该类型的基本范围,而不能提供正确的结果,就会引发异常Constraint_Error。

2.3.1 ADA

2.3.2 C

2.3.3 Cost of Runtime Checking

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值