2009-12-04 2 views
1

Я буду писать ботта XMPP (Jabber), и мне нужно решить, на каком языке я должен его писать. В настоящее время я рассматриваю Python, Java и PHP.Какой язык выбрать для бота Jabber?

Поскольку я ожидаю, что бот будет работать большую часть времени (т. Е. 23.5/7), существуют ли какие-то конкретные аргументы за или против использования одного из этих языков? (например, не «$ x sucks», но «$ y имеет хорошую библиотеку демона» или «$ z утечки памяти»)

Цель бота будет в основном отвечать на ввод пользователя.

Если ни один из этих языков вам не подходит, что вы посоветуете?

+1

Действительно большое личное мнение. Я хакер Perl, поэтому я считаю, что Perl лучше :). Если бы мне пришлось выбирать из ваших вариантов, я бы пошел с Python. Я определенно не пошел бы с PHP – Cfreak

+0

Я согласен с Cfreak. Я парень .NET, поэтому C# и jabber.net (http://code.google.com/p/jabber-net/) будут работать лучше всего для меня. – kenny

ответ

5

Я бы сказал, что Python с каркасом Twisted. Twisted - потрясающая инфраструктура для асинхронных сетей, и большую часть времени она уже поддерживает протокол, который вы ищете. Есть небольшая кривая обучения из-за шаблона реактора, но после его преодоления вы можете делать удивительные вещи с минимальным количеством кода. Что касается протокола IRC, то у него уже есть скрученный файл, поэтому, хотя я не эксперт в IRC-ботах, я бы определенно рекомендовал Python и Twisted.

Кстати, это первый один, который придумал Google: Python IRC bot using Twisted

4

Если вы хотите обслуживать несколько пользователей одновременно (возможно, вы хотите), PHP не может быть хорошим выбором, так как он не поддерживает (или экспериментально поддерживает) потоки, вы должны раскошеливать копию своего приложение для каждого пользователя.

Я рекомендую Java для этой цели. Sun описывает Java как «простой, объектно-ориентированный, распределенный, интерпретируемый, надежный, безопасный, нейтральный по архитектуре, портативный, высокопроизводительный, многопоточный и динамический.».

На мой взгляд, за исключением критически важных заданий Java, наиболее подходящих для архитектуры клиент-сервер.

2

Написал несколько лет назад бот для IRC, используя delphi. Он намного лучше, чем языки интерпретатора, - меньше потребляет память, работает намного быстрее, и вы можете быть уверены, что он будет иметь большой запас скорости, если вам понадобится добавить все больше и больше функций в будущем - разбор пользовательских фраз, их обработка. Например, мой бот особенно зарегистрировал все чаты и выполнил быстрый поиск по запросу пользователя (пользователь просто написал! Поиск слово/фразу - бот выполнил поиск и отправил результаты поиска в виде коротких котировок, чтобы пользователь мог выбрать одну из котировок и получить больше сообщений вокруг него из журнала). Это почти невозможно реализовать, например, php, потому что он слишком медленный. Если бот предлагается работать под * nix - просто используйте c/C++ :)

Если вы хотите использовать только перечисленные в своем списке языки, то только Java на мой взгляд. Читайте выше, почему.

4

Из предложенных вариантов я должен был предложить Java. PHP, например, просто не собирается делать то, что вы хотите; это означает, что это язык веб-скриптов, а не какой-либо скриптовый язык. Python способен делать то, что вы хотите, но я думаю, что Java предоставит больше готовой поддержки для тех функций, которые вы пытаетесь достичь.

4

Лично я хотел бы начать с ejabberd кодовыми и работать оттуда - для агента сервера обезглавленной сети, Erlang бы язык/платформу, на которую я мог бы связаться в первую очередь, если бы не были веские аргументы в пользу другой технологии. Неизбежные данные и параллелизм на основе актеров подталкивают весь нормальный код управления в платформу, оставляя вас свободным сосредоточиться на битах, которые действительно являются вашим приложением.

Смежные вопросы