1

我将编写一个 XMPP (Jabber) 机器人,我需要决定我应该用哪种语言编写它。目前我正在考虑使用 Python、Java 和 PHP。

由于我希望机器人大部分时间都在运行(即 23.5/7),是否有一些具体的论据支持或反对使用其中一种语言?(例如,不是“$x 很烂”,而是“$y 有很好的守护程序库”或“$z 泄漏内存”)

该机器人的目的主要是响应用户输入。

如果这些语言都不适合您,您会推荐什么?

4

6 回答 6

5

我会说带有Twisted框架的 Python。Twisted 是一个令人惊叹的异步网络框架,并且大多数时候它已经支持您正在寻找的协议。由于反应器模式,学习曲线略有下降,但一旦克服,您可以用最少的代码完成惊人的事情。至于 IRC 协议,twisted 已经有了,所以虽然我不是 IRC 机器人专家,但我肯定会推荐 Python 和 Twisted。

顺便说一句,这是 google 提出的第一个:Python IRC bot using Twisted

于 2009-12-04T07:41:53.047 回答
4

如果您想同时为多个用户提供服务(可能是您想要的),PHP 可能不是一个好的选择,因为它不支持(或实验性支持)线程,您必须为每个用户分叉您的应用程序副本.

为此,我推荐使用 Java。Sun 将 Java 描述为“简单、面向对象、分布式、解释性、健壮、安全、架构中立、可移植、高性能、多线程和动态”。

在我看来,除了时间紧迫的工作之外,Java 最适合客户端-服务器架构。

于 2009-12-04T07:10:48.163 回答
4

在您发布的选项中,我不得不建议 Java。一方面,PHP 根本不会做你想做的事。它旨在成为一种网络脚本语言,而不是其他任何脚本语言。Python 能够做你想做的事,但我认为 Java 将为你想要实现的功能提供更多开箱即用的支持。

于 2009-12-04T07:22:16.627 回答
4

就我个人而言,我会从ejabberd代码库开始,然后从那里开始工作——对于无头网络服务器代理,Erlang 将是我首先要使用的语言/平台,除非对另一种技术有令人信服的论据。不可变数据和基于参与者的并发将所有正常的内务管理代码下推到平台中,让您可以自由地专注于您的应用程序真正涉及的部分。

于 2009-12-04T08:16:11.230 回答
2

几年前使用 delphi 为 IRC 编写了 bot。它比解释器语言要好得多 - 消耗更少的内存,工作速度更快,并且如果您将来需要添加越来越多的功能 - 解析用户短语,处理它们,您可以肯定它会有很大的速度储备。例如,我的机器人特别记录了所有聊天记录并按用户请求执行快速搜索(用户刚刚写了!搜索词/短语- 机器人执行搜索并作为短引用发送到用户结果,因此用户可以选择其中一个引用并获得更多关于它的帖子来自日志)。使用例如 php 几乎无法实现,因为它太慢了。如果建议 bot 在 *nix 下工作 - 只需使用 c/c++ :)

如果您只想使用帖子中列举的语言——那么我认为只有 Java。阅读上面的原因。

于 2009-12-04T07:20:10.483 回答
1

蟒蛇贾伯博特

这是使用 python 创建 jabberbot 的一种相当简单的方法。

于 2010-10-07T19:02:19.740 回答