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

19 robotics programming-languages ada

如果我要制造机器人,你推荐我哪种语言?在我们的大学,我们可以选择几种语言.大多数学生选择Ada只是因为我们的老师使用它.

经过一番研究,我发现ada已经过时了.你的想法是什么?是值得学习的吗?

Sha*_*rk8 27

是.在我看来非常如此.

Ada非常擅长两点,在其他编程语言中经常被忽略:

  • 通用系统:包,函数和过程都可以是通用的.这对于根除DRY [ Don't Repeat Yourself]原则特别有效.是的,你可以过分使用泛型,但我在(其他语言)项目中看到的事情是,剪切和粘贴编程似乎更常见.[如果需要在代码点上修复错误,那么只会引入多个故障点.
  • 原生多任务处理.关于语言级任务特性的一个好处是,多线程不会感觉"固定",并且不是一个笨拙的扩展,而是集成到语言中.

也就是说,学习/使用Ada还有其他充分的理由.一个是挑剔的编译器,因为它如此挑剔它迫使你开始以自然减少编程错误的方式思考.(如禁止andor在同一条件.)

另一个是亚型的概念; 子类型与OOP中的对象相反,而不是分支出你进一步的derevition,你缩小类型(它是可接受的值)越远离基类型.{从适当的集合来看; 整数是你的基本类型,自然是你的非负整数,正数是你的正整数......而对于你的亚型,你可以对你的亚型有一些有趣的排除,比如肯定是积极的亚型(抱歉是最后一点有点模糊;我还在学习2012年的东西.)

使用Ada 2012,您还可以在子程序中拥有前后条件; 仅此一项就可以使您的库更稳定.(可以为null - 排除指针.)


Pau*_*fer 20

Peter Norvig的建议可能与此相关:

当被问及"我应该使用哪种操作系统,Windows,Unix或Mac?"时,我的回答通常是:"使用你朋友使用的任何东西." 从朋友那里学到的优势将抵消操作系统之间或编程语言之间的任何内在差异.

十年教你自己编程

整篇文章读得很好.

顺便说一句,Ada是我学到的第一门语言.学习Ada首先有一个主要优点:没有人使用Ada,所以在做其他事情之前我被迫学习另一种语言,从而获得了视角.程序员可以拥有的最大问题之一就是相信用他们的第一语言完成事情的方式就是"事情已经完成".学习一门新语言既简单又极具价值.


Tho*_*cke 8

如果您的老师和大多数同学使用Ada,最好与Ada一起使用.对于小型和大型课程来说,这是一门非常好的语言.它非常易读,它可以保护您(在某种程度上)免受许多常见错误的影响.

Ada用于软件工程.正如darkestkhan所说,这不是"最好的"语言的"黑客和希望".

Paul Stansifer的建议非常好:学习几种语言.确保您有大量工具可供使用 - 不要仅限于一种语言.从学习不同语言中获得的视角非常有价值.肯定有不止一种方法可以给猫皮肤 - 例如,看看Haskell.您将获得有关如何解决问题的全新视角.

语言语法是学习如何编程的最少.困难的部分是学习如何将复杂的现实世界问题建模为在编程语言的非常有限的范围内有意义的事物.凭借其强大的类型系统,任务模型,泛型和实时和并发编程的可靠工具,Ada非常适合这项工作.

由于你专门询问机器人技术,一本好书可能是由John W. McCormick,Frank Singhoff和Jerome Hugues创建的"用Ada构建并行,嵌入式和实时应用程序".这是一个非常好的阅读.

http://www.cambridge.org/gb/knowledge/isbn/item5659578/?site_locale=en_GB


dar*_*han 7

艾达绝对值得。除了 Shark8 写的 2 件事之外,还必须补充一点,几乎所有的语言都专注于写作的容易程度而不是阅读(而且大多数情况下你会写一次,读很多次)。此外,围绕 Ada 的文化与主流文化完全不同——专注于程序的正确运行和源代码的可读性,而不是“黑客并使其工作,同时依靠不会引入错误的运气”。

至于年龄 - 哦,拜托 - C 更老。语言时代本身有什么重要意义?在谈论年龄问题之前,您应该先看看 Ada 83 中的内容(提示:主流语言在 90 年代后半期开始达到 Ada 83 的功能集,许多功能 [特别是子类型] 仍然没有在主流)。除了最新的 Ada 标准是 2012 年的 - 如果你可以称之为旧的,那么我不知道什么是“新的”。