我将编写一个XMPP(Jabber)机器人,我需要决定我应该用哪种语言编写它。目前我正在考虑使用Python,Java和PHP。
由于我期望机器人大部分时间都在运行(即23.5 / 7),是否有一些特定的论据支持或反对使用其中一种语言? (例如,不是“$ x糟透了”,但“$ y有很好的守护程序库”或“$ z泄漏内存”)
机器人的目的主要是响应用户输入。
如果这些语言都不适合你,你会推荐什么?
答案 0 :(得分:5)
我会说使用Twisted框架的Python。 Twisted是异步网络的惊人框架,并且大部分时间它已经支持您正在寻找的协议。由于反应器模式,有一个轻微的学习曲线,但一旦克服,你可以用最少量的代码做惊人的事情。至于扭曲的IRC协议已经有了它,所以虽然我不是IRC机器人专家,但我肯定会推荐Python和Twisted。
顺便说一句,这是第一个提出谷歌的问题:Python IRC bot using Twisted答案 1 :(得分:4)
如果你想同时为多个用户服务(可能你想要),PHP可能不是一个好的选择,因为它不支持(或实验支持)线程,你必须分叉应用程序的副本为每个用户。
我推荐Java用于此目的。 Sun将Java描述为“简单,面向对象,分布式,解释,健壮,安全,架构中立,可移植,高性能,多线程和动态。”。< / p>
在我看来,除了时间关键的工作,Java最适合客户端 - 服务器架构。
答案 2 :(得分:4)
在您发布的选项中,我将不得不建议使用Java。例如,PHP就不会按照你的意愿去做;它意味着是一种Web脚本语言,而不是任何其他脚本语言。 Python能够做你想做的事情,但我认为Java将为你想要实现的功能提供更多开箱即用的支持。
答案 3 :(得分:4)
就我个人而言,我从ejabberd代码库开始并从那里开始工作 - 对于无头网络服务器代理,Erlang将是我首先要达到的语言/平台,除非有另一个令人信服的论据技术。不可变数据和基于actor的并发性将所有正常的内务代码推送到平台中,让您可以专注于真正适合您应用的内容。
答案 4 :(得分:2)
几年前写过使用delphi的IRC机器人。它比解释器语言好得多 - 占用内存更少,工作速度更快,如果您将来需要添加越来越多的功能 - 解析用户短语,处理它们,您可以确定它具有很好的速度保留。例如,我的机器人特别记录了所有聊天并按用户请求执行了快速搜索(用户只是写了!搜索单词/短语 - 机器人执行搜索并以短引号发送给用户结果,因此用户可以选择其中一个引用并从日志中获取更多帖子。使用例如php几乎无法实现,因为它太慢了。 如果建议bot在* nix下工作 - 只需使用c / c ++:)
如果您只想使用帖子中列举的语言 - 那么我只想到Java。阅读以上原因。
答案 5 :(得分:1)
使用python创建一个jabberbot是一种相当简单的方法。