ADA语言Hello World
为什么要写关于这么古老的语言(1980年左右)的文章呢?因为我想既然mainframe用的cobol这么恶劣的语言都写了那么多了,为何不写一点我比较喜欢的语言呢?虽然除了高安全级控制和仿真领域之外ADA是不怎么用的。
首先说两句我个人对ADA语言的态度:
从编写大型程序的OO语言而言(我基本主要用的也就是这类语言),ADA在我评价中的排名是和C#和C++一个级别上的。ADA很大程度上是Java的前驱,而且在演进过程中相互影响。但不知什么原因,我个人向来不太喜欢Java。其他Smalltalk,Eiffel,Ruby,Python之类没接触过(没时间,关于Python德德是行家),而这些面向对象语言和C++和ADA之类相比还是有很大区别的。
ADA是受Pascal直接影响产生的(其他还有ALGOL之类)。Pascal被称为教学语言,以严谨著称。而在我看来Pascal有很多方面是不错,但有些地方“严谨”得有点傻掉了,隐约记得它里面有一套类型相容性规则,简直有点胡闹了(所幸应该被Delphi给剔除掉了)。再说了,通常编程语言总是想要严谨的,比如我就不认为有任何理由认为C不严谨;某种意义上讲,凡是能让计算机正确解释的东西都能说严谨的(当然像BASIC这样的语言设计随意了些,C++铺展得太开让人感觉过于狂躁,而动态类型语言可能是可以说成不太严谨)。所以Pascal只应当说是教学和学习思维上的严谨,语法上比较清晰,类型检查和控制比较严格(由此也引致冗长性,因为比如C/C++一个符号能做的事它要用一个完整语句来做)。但因为ADA完全秉承并极大发扬了这点,我在ADA看到了从上到下的高度一致性和严谨性加上其潜在的强大性,这点却是Pascal望尘莫及的。Pascal的另一些面向对象扩展有如Objective Pascal和Delphi,Delphi是不错,相比ADA具有易用性(因为是Java和C#这条路子的),但是深入研究却反衬出ADA的严谨和强大。当然这强大不是我说了算的,我也说不清楚。反正只要知道这个语言有这么几个令人敬畏的特性:
- 美国军方设计用来替代各种过往语言,用于统一开发高安全稳定性程序用的语言,多数用于军事(武器装备和系统)和航天的控制和设计、关键单位(火车、航空、电站等)的系统管理和控制等。有人这样描述,ADA是一种一旦编译通过后能很放心使用的语言,可能不尽恰当,但说明一些问题。
- 设计用来开发极大规模的系统。这说明强大性(至少有可维护性和可扩展性吧)。
- 广泛用于嵌入式系统开发,而它的一个衍生品VHDL是硬件开发语言。所以往往这个语言的性能是不太令人担心的(当然我还是不很理解如何程度依赖于编译器和运行环境)。
- 具有内在的并发支持(这个也很玄,我不知道一个语言的这些内在特性如何程度上依赖于系统并实现,可能还是有很大的负荷)。
- 还在不断发展,83,95版,最近的是2005年标准。
最后用一个Hello World作为本篇结尾,引自wikipedia。
with Ada.Text_IO; -- 表示使用这个package的内容
use Ada.Text_IO; -- 表示展开这个package的命名空间
procedure Hello is -- 定义过程,注意这个is就显得很严谨
beginPut_Line("Hello, world!"); -- 打印
end Hello; -- end后必须跟名称
和一些资源:
1. Windows下的开源开发环境:ADA Gide http://adagide.martincarlisle.com/ 其实这个不太好。
2. 最权威的开发环境是ADACORE的GNAT:http://libre.adacore.com/libre/ 这个的免费版就已经很不错,至少可以用用(下载链接:http://libre.adacore.com/libre/download/),虽然已经遇到一些问题和bug。(Linux环境往往会附带ADA编译器)
3. ADA 95标准和参考: http://www.adahome.com/rm95/
4. ADA 2005标准和参考:http://www.adaic.org/ada-resources/standards/ada05/
5. ADA的wiki books:http://en.wikibooks.org/wiki/Ada_Programming
6. 谁在用ADA:http://www.seas.gwu.edu/~mfeldman/ada-project-summary.html
7. ADA也有不少问题,一些ADA的比较研究:http://archive.adaic.com/intro/c.html
8. Most recommendable book for learning ADA 2005: Rationale for ADA 2005, PDF download
ADA语言Hello World相关推荐
- 【历史上的今天】12 月 10 日:世界上第一位程序员诞生;Ada 语言发布;第一人称射击游戏的开拓者
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2021 年 12 月 10 日,在 120 年前的今天,瑞典国王和挪威诺贝尔基金会首次颁发了诺贝尔奖.根据诺贝尔 ...
- 【历史上的今天】3 月 25 日:Ada 语言之父诞生;第一个维基站点问世;TechTV 被收购
整理 | 王启隆 透过「历史上的今天」,从过去看未来,从现在亦可以改变未来. 今天是 2022 年 3 月 25 日,在 1998 年的今天,为迎接 2000 年这一世界性节日的到来,人民日报发起,人 ...
- Ada语言实现-水和水蒸气热力性质IAPWS-IF1997
Ada语言实现-水和水蒸气热力性质IAPWS-IF1997 对外接口文件:IF97-Interfaces.ads -- File: IF97.adswith Ada.Numerics.Generic_ ...
- Ada 语言学习(3)复合类型数据——Array
文章目录 Array 数据类型声明 数组索引 数组范围 数组复制 数组初始化 直接赋值 通过拷贝赋值 不同索引范围但长度相等 非指定类型边界收缩 多维数组 数组遍历 数组切片 访问和动态检查 直接访问 ...
- Ada语言学习(1)Basic Knowledge
文章目录 说在前头 命名 注释 数字 变量 变量类型 signed integers Enumerations Floating Points 类型重用(继承) 类型转换 运算符 属性(Attribu ...
- Ada语言中命令行使用
Ada语言中命令行使用 要制作命令行程序,使用系统包ada.command_line .以下例程实现一个命令行程序. 命令如下:remove -iInputFileName -nCutOffNumbe ...
- Ada语言-标识符和注释
标识符 1,ada标识符是不区分大小写的,如下所示它们指向的都是同一个标识符: 2, 全以字母开头,如下: 3,以字母或数字结尾,如下: 4,可以'包含'不连续的下划线,如下: 注释 注意:在Ada中 ...
- Ada语言的这二十年
CROSSTALK(美国国防软件工程杂志, www.crosstalkonline.org)2017年1/2月号的专题是"Software's Greatest Hits and Misse ...
- 【Ada语言学习笔记】参考手册中文翻译及注记——语言概述
我们在Concurrent & Distributed Systems课的实验中需要用到Ada语言. 通俗而笼统地讲,Ada语言是一种描述特别详尽的语言(highly specific),因此 ...
最新文章
- 汉语转拼音工具、新华字典API——两个支持Python的中文资源
- java 连接mysql 8.0,java连接mysql 8.0的问题
- #pragma pack
- ABP官方文档翻译 0.0 ABP官方文档翻译目录
- Excel找出两列相同部分
- import javax.servlet.ServletRequest 关于IDEA javax.servlet.http.HttpServletRequest 不存在 解决方案
- 斯坦福完全可解释深度神经网络:你需要用决策树搞点事
- @JsonFormat与@DateTimeFormat注解的使用
- 初次接触 Lottie
- 2015年上海现场赛重现 (A几何, K暴力搜索)
- mathematica模式匹配
- ajax获取json里的list,ajax获取json数据然后将其装载到jqgrid实现
- 信号的捕捉与sigaction函数
- Android 最常用的设计模式八 安卓源码分析—工厂方法模式factory
- flume+kafka集群解决某著名联锁大型超市超过25年POS线下收单系统变实时系统的典型案例
- Markdown文档数学公式的使用
- 内积、外积、元素积、克罗内克积的区分及用法【python】
- Dreamweaver CS6实战手册
- Android内置系统apk问题
- 守住一份平淡,宁静坦然,不浮不躁