值得学习Ada而不是其他语言[c ++,c#]吗?

问题描述 投票:19回答:8

如果我要制造机器人,您会推荐我哪种语言?在我们的大学中,我们可以选择几种语言。大多数学生之所以选择Ada,是因为我们的老师正在使用它。

经过一番研究,我发现ada很老。你怎么看?值得学习吗?

programming-languages ada robotics
8个回答
28
投票

是。我认为非常非常。

Ada在两点上非常好,这在其他编程语言中常常被忽略:

  • 通用系统:软件包,功能和过程都可以是通用的。这对于配合DRY [Don't Repeat Yourself]原理特别有效。是的,您可以[]泛泛使用泛型,但是我在(其他语言)项目中看到的是剪切粘贴式编程似乎更常见。 [如果错误需要在该代码点修复,那么这只会引入多个故障点。]本机多任务处理。语言级任务处理功能的一大优点是,多线程不会让人感到“棘手”,它不是笨拙的扩展,而是集成到了语言中。
  • 就是说,学习/使用Ada还有其他充分的理由。一种是挑剔的编译器,因为挑剔的特性使您不得不以自然减少编程错误的方式开始思考。 (就像在相同条件下对andor的禁止一样。)

另一个是子类型的概念;子类型与OOP中的对象相反,而不是分支出更多的派生对象,而是将类型(它是可接受的值)缩小到越远离基本类型。 {从适当的角度考虑它; Integer是您的基本类型,Natural是您的非负整数,Positive是您的正整数...并且在Ada 2012中,您可以对子类型进行有趣的排除,比如说Primes是Positives的子类型(很抱歉,关于最后一点有点含糊;我仍在学习2012年的知识)。}

使用Ada 2012,您还可以在子程序上设置前置条件和后置条件;仅此一项就可以使您的库更稳定。 (排除空指针也可以。)


20
投票
Peter Norvig的建议可能与这里有关:

8
投票
如果您的老师和大多数同学使用Ada,最好选择Ada。对于小型和大型程序而言,这是一种非常好的语言。它可读性强,在某种程度上可以保护您免受许多常见错误的侵害。

4
投票
Ada绝对值得。除了Shark8编写的两件事之外,还必须补充一点,几乎所有语言都将重点放在写作而不是阅读上(大多数情况下,您要编写一次且阅读很多次)。同样,围绕Ada的文化与主流文化大相径庭-专注于程序的正确工作和源代码的可读性,而不是“依靠运气,并且依靠运气不会引入任何错误”。

4
投票
尽管Shark8对于Ada作为一种语言总体上有一些很好的观点,但问题是关于机器人技术的。在这方面,我会说“不要打扰”。在从事从Lego到最先进的机器人手臂等各种机器人技术的十多年经验之后,我从未见过使用Ada的机器人系统。

3
投票
C ++并不完全是您认识的弹簧鸡。我认为这比Ada还年轻十岁。

1
投票

Ada比大多数其他语言更注重工程设计。与普通的编程语言不同,Ada为数据工程提供了强大的功能。就是说,在Ada开发人员甚至没有开始开发算法之前,他(她)就设计(设计)数据。

Ada类型的模型允许设计精确的数据。一个简单的例子是:类型Channel的范围是1..135;
其中此整数数据类型的每个实例都属于该预约束的值范围。这大大简化了使用此类实例的算法。

基本原理是,当对数据进行精确的工程设计时,相关的算法将不再那么复杂。此功能很少在其他语言中找到。在Ada中,这是常见的做法。

通过支持将数据工程这一概念作为整个软件工程过程的一部分,我们可以大大降低整个软件设计的圈复杂度。

我的示例只是对Ada中所有数据工程功能的了解。但是,正是数据工程能力使其成为安全性至关重要的软件的理想选择,而安全性关键的软件正是21世纪软件环境中目前最常用的利基市场。


0
投票
© www.soinside.com 2019 - 2024. All rights reserved.