使用哪种编程范例?

时间:2012-09-16 08:24:54

标签: programming-languages artificial-intelligence robotics paradigms

我是一名高中生,之前有过一些编程经验。现在我想深入了解人工智能和机器人世界(制作AI程序和游戏以及制作机器人)。哪种编程范式对这些主题更好?我将根据它学习编程语言。我的学校教Java,但由于它只是一种OOP语言,我不知道它是否适合这项工作。多范式语言对这些更好吗?

我应该为此学习Python,C,C ++,Java或LISP吗?

6 个答案:

答案 0 :(得分:5)

我喜欢Python作为瑞士军刀的语言。它非常适应,当您的需求和兴趣发生变化时,Python仍然是您的宝贵工具。

几年前,我会建议Smalltalk。这是一种非常简洁的语言,但社区和生态系统正在逐渐消失。

祝你好运。

答案 1 :(得分:5)

对于AI,在技术层面上,它并不重要。只要您了解语言,您就可以使用任何现代语言获得不错的结果。我看到非常复杂的软件包放在最奇怪的语言中,只是因为程序员碰巧喜欢那种语言。当然,面向对象语言进行AI编程没有任何问题 - 您可以像在其他应用程序中一样设计用于AI的对象,并获得相同的奖励。如果我有选择的话,我也会用Java编写我的AI工作,如果我是从头开始构建的话。

您的语言技能可能会与其他人合作。而且我的定义非常广泛,包括与其他人编写的软件包一起工作,从具有语言导向的书籍中学习等等。我的意见是关于AI的好书不会依赖任何特定的语言,但会使用伪代码来获取想法。可悲的是,我的观点并不普遍。当然,你不能用伪代码编写包。 C / C ++和Lisp很常见,但并不常见,我想把它推向他们。此外,如果这对你来说不仅仅是一种爱好,你还是会学习一大堆语言。

我不是机器人专家。其中一个很大的区别是,在某些时候,你会想要在更低的层次上与硬件进行交互,这让我觉得C或C ++会更常见。其他人提到了乐高头脑风暴,这也是一个很好的想法。 Mindstorms背后的语言是另一种语言LabVIEW的变体,您可能不会听说过。 LabVIEW在工业中广泛用于控制测试设备,控制测试设备与控制机器人非常相似。 LabVIEW / Mindstorms的好处在于它非常易于使用并且可以非常快速地获得良好的结果。它的缺点在于它与正在讨论的任何其他语言的编程风格截然不同,并且知道它对学习其他语言没有多大帮助。

答案 2 :(得分:2)

不要将Java视为“只是一种OO语言”。它是我的一个AI课程中的首选语言。我最喜欢的多代理模拟器MASON都是java。

机器人技术是一个广泛的领域,根据您的兴趣,它可能会根据您在沙子中画线的位置而大不相同。有些人只对小型移动设备感兴趣,所有(通常是受限制的)计算都在机上。这些平台的计算更接近硬件级别,因此C是典型的选择。但是,其他语言也有效。通常情况下,这些机器人不需要做太多AI,而是专注于更具反应性的行为。另一方面,有些人拥有更大的机器人(移动或非移动),其中有一些当今最强大的计算机可用于控制。他们专注于更高层次的学习,计划和人工智能。在这里,语言并不那么重要。

但我认为无论您感兴趣,您可能都希望利用一些现有的机器人框架或平台。例如ROS,Microsoft Robotics Studio,URBI等,您可能希望使用他们选择的语言之一。我对游戏开发知之甚少,但我认为它与你想要利用的库和工具类似。

所以简短的回答是:是的。你可能会在你的职业生涯中学到所有这些。在适当的情况下使用每一个。

答案 3 :(得分:1)

你提到AI和机器人技术这一事实意味着我们无法在不挑选我们自己熟悉的东西的情况下给出具体的答案和具体原因。

至于实施的语言,正如其他答案所说,它取决于项目,因为你开始,你应该坚持社区使用的语言和工具,支持这些类型的项目,直到你可以处理问题自己。

根据我的经验,如果您计划阅读有关AI示例代码的书籍,那么请准备好阅读大量的Lisp。虽然您不必将Lisp学习到必须在其中编程的程度,但您需要阅读并理解它。我建议你买一本关于Lisp的书,比如Conrad Barski的“Land of Lisp”。

由于机器人直接处理硬件,您可能会发现自己编写的设备驱动程序几乎总是用C语言完成,而AI处理模式搜索,通常用LISP,ML,OCAML,F#等函数语言来完成。像PROLOG这样的逻辑语言。

祝你好运,坚持不懈。

答案 4 :(得分:1)

我和机器人一起工作了大约6到7年。我肯定会推荐使用C / C ++作为编译器和Python作为解释器的方式。

C / C ++: 这很好,因为: 它非常低,能够轻松地与硬件交互。您几乎总能看到所有支持C / C ++的微控制器。 Java不是这种情况。我从未见过如此广泛使用的任何其他编译器语言。 Java适用于虚拟机。与C / C ++创建的二进制文件相比,这使得它成为重二进制文件。您可以开始使用C / C ++来尽快编写一个小代码。 C有一些被称为致命的指针。但是当我16岁的时候我就被介绍过了,我爱上了它。它有很多OOP概念,最新版本的C / C ++带有升级库,一旦你知道如何使用它就非常容易使用并且很容易摆脱分段错误等。 ROS(机器人操作系统)几乎完全支持并用C / C ++编写。

Python: 它在翻译。但是python有很多适应性,你可以编写非常复杂的AI代码,并且几乎可以立刻测试它们。有一个库NumPy可以实现代码的矢量化,因此非常容易处理大块数据(比如Matlab)。为什么巨大的块是一个重要因素?因为AI处理一个巨大的数据集来训练和测试它的算法。你甚至可以看到AI的一部分,这是计算机视觉有很多数据需要查看和操作。 Matlab不是免费的。 Python是,它的伟大!!

答案 5 :(得分:0)

我建议你先选择一个套件,然后用它进行一些建筑和编程练习。每个工具包都有自己的编程语言,您只需要习惯。

如果你想要一个易于设置,没有图形化编程语言的焊接解决方案(拖放+输入参数),那么Lego Mindstorms NXT 2.0值得研究 - 唯一的缺点是价格昂贵。有一年一度的比赛(First Lego League,http://www.firstlegoleague.org/),这可能是让你的学校参与的好方法。

Arduino板也非常容易上手(即使没有焊接),并且网上有大量资源(例如http://letsmakerobots.com/node/2164)。 Arduino使用C编程语言的变体。

我没有使用PICAXE系统,但似乎它有很好的资源用于教育用途。它使用基本编程语言(或与Lego Mindsotrm NXT精神相似的流程图语言),并且它也有很好的入门教程,例如: http://letsmakerobots.com/start

我希望Rasberry Pi会越来越受欢迎(我刚刚在一周前获得了它:-)并且它将允许在编程语言中有更多的选择......

这是DIY硬件的激动人心的时刻。祝你好运!