Должен ли я использовать Perl или PHP или что-то еще для этого проекта? - PullRequest
5 голосов
/ 29 марта 2010

Я собираюсь приступить к проекту, который должен будет:

  • Обработка XML
  • Тяжелый текстовый анализ не-xml документов
  • Вставка данных из документов XML и не XML в реляционную БД.
  • Представлять обработанные данные пользователю из БД с помощью веб-страниц.
  • Должен очень хорошо справляться с нагрузкой.

Сайт будет подвергаться коротким периодам очень большой загрузки страниц (более 300 посетителей в минуту в течение нескольких минут), но большую часть времени будет простаивать (около десятка посетителей в минуту).

У меня очень сильный опыт работы с Java и веб-сервисами, но я не хочу использовать Java для этого проекта, так как хотел бы разнообразить свой набор навыков.

Я не ищу ваше мнение о том, какой язык вы считаете лучшим. Какие плюсы и минусы использования этих языков вы можете узнать по собственному опыту?

Ответы [ 13 ]

9 голосов
/ 29 марта 2010

Я бы пошел с Perl. Модули серии LibXML предоставляют различные интерфейсы (DOM, XPath, XSLT и т. Д.), Поддерживаемые быстрым синтаксическим анализатором C.

Поддержка регулярных выражений в Perl для нарезки и нарезки текста практически не имеет аналогов ни в одном другом языке. Если вы планируете выполнять произвольную обработку текста и хотя бы немного знакомы с регулярными выражениями, вы будете благодарны.

Существует также ряд отличных веб-фреймворков для Perl, включая простой, но мощный Mojolicious фреймворк и всеобъемлющий Catalyst фреймворк. Всегда есть древняя и стабильная библиотека CGI , но Mojolicious или Catalyst, вероятно, будут лучшим выбором.

8 голосов
/ 29 марта 2010

Поскольку я парень по PHP, вот что я могу предложить по поводу PHP

Таким образом, требования к языку из вашего вопроса выполняются PHP.

Однако Perl, Python или Ruby или даже ServerSide JavaScript (...) должны быть способны выполнять то, о чем вы просите. У PHP есть свои причуды, как и у других языков. Если вы Java-парень, вам может понравиться Ruby за его синтаксис, но опять же, только вы можете решить.

7 голосов
/ 29 марта 2010

Следовательно, каждый элемент в вашем списке может быть выполнен с использованием обоих языков. Вы должны выбрать тот, который, по вашему мнению, сделает вас наиболее продуктивным, учитывая ваши собственные сильные и слабые стороны.

5 голосов
/ 29 марта 2010

Это действительно очень субъективный вопрос. Я могу полностью представить, что в 2010 году Perl или PHP (и даже Python или Ruby) могли бы одинаково служить вам для такого проекта. Разница будет заключаться не в самом языке, а в инструментах, лучших практиках и сообществе.

Из этих языков я больше всего знаком с Perl, поэтому позвольте мне попытаться дать ответ с этой точки зрения относительно ваших потребностей.

Синтаксический анализ текста и XML: Perl имеет очень надежную поддержку синтаксического анализа текста даже очень длинных файлов (до тех пор, пока вы не хлюпаете ) и обеспечивает мощный, четкий и легкое регулярное программирование . Он имеет встроенную поддержку Unicode и стандартные инструменты транскодирования (модуль Encode ), что очень удобно при работе с пользовательскими интерфейсами. Он также имеет прямую привязку для libxml2 в виде стандартного, быстрого и ухоженного модуля: XML :: LibXML .

Поддержка реляционных БД: В дополнение к стандартному интерфейсу базы данных ( DBI ), который позволяет направлять запросы SQL ко многим СУБД, существует ряд структур для создания БД. Управление в WebDoc проще, но все же мощно. Самым известным, вероятно, является Катализатор .

HTML Представление документа: Мейсон - мой любимый механизм доставки веб-приложений. Интеграция с Perl , поэтому элегантна, но не жертвует шаблонами или языковыми возможностями.

Работа с тяжелыми грузами: Решений столько же, сколько проблем с нагрузкой. Perl предлагает привязки для memcached : Cache :: Memcached (написано на Perl) и Cache :: Memcached :: Fast (написано на C).

Сбалансируйте это с вашими личными предпочтениями относительно синтаксиса и общей философии языка, и вы очень скоро сможете присоединиться к сообществу Enlightened Perl :)

4 голосов
/ 29 марта 2010

Похоже, что большая часть вашей работы будет обрабатывать данные больше, чем презентации, на мой взгляд, это то, что Perl делает лучше всего. Perl очень хорошо работает с регулярными выражениями, а широкий спектр модулей на CPAN может помочь вам разобрать обычные форматы. В Perl также есть несколько фреймворков, которые облегчат жизнь при представлении данных. Основным недостатком для новичка является то, что с десятками дистрибутивов на CPAN для каждой из различных проблем, с которыми вы можете столкнуться (синтаксический анализ XML, веб-среда, ORM и т. Д.), Может быть трудно принять решение о том, какой из них использовать. Благодаря Plack / PSGI, общение с веб-серверами на Perl в последнее время стало намного лучше.

Важно, чтобы «загрузка» была проблемой, не зависящей от языка, поэтому не тот язык, который вы выбираете, а то, как вы спроектируете свою систему, будет определять, насколько хорошо она справляется с повышенной нагрузкой. Perl, Java, PHP все использовались в небольших установках вплоть до некоторых наиболее загруженных веб-сайтов в сети. Если рост зависит от ваших будущих потребностей, сначала отсоедините его, если это необходимо, и спроектируйте его для будущего расширения. В небольшом масштабе можно использовать несколько серверов баз данных, кэширование, очереди сообщений / рабочих мест, и их проще разместить, когда все мелко, чем переписывать или быстро взламывать их, когда требуется больше ресурсов.

1 голос
/ 30 марта 2010

Ваша архитектура и алгоритмы будут иметь большее влияние на скорость и масштабируемость, чем выбор языка.

Perl, PHP или Java все сделают эту работу.

Я бы делал это на Perl, так как хорошо знаю и предпочитаю PHP (что я также хорошо знаю). ВАШ пробег будет варьироваться.

0 голосов
/ 29 марта 2010

Используйте Perl, если у вас есть опыт работы ни с одним из них, и ваша цель - сделать себя более конкурентоспособным.

Гораздо проще подделать опыт PHP, если вам нужно защитить обе записи в разделе «Профессиональный опыт».

0 голосов
/ 29 марта 2010

Хорошо, так что все были субъективны в своих ответах, я тоже добавлю свои.

Используйте Java, ядро ​​поддерживает все, что вам нужно (без фреймворков), его бесплатно, ОС и его в 2-3 раза быстрее, чем Perl - PHP.

Серьезно ... PHP разработан для веб-проектов, он прост и поддерживает все, что вам нужно сделать (попробуйте Zend framework), он имеет достойную кривую обучения (Java сложнее в освоении), существует огромное сообщество разработчиков там, чтобы помочь вам, если вы столкнетесь с чем-то неожиданным (больше, чем у Перла и Явы). Что касается производительности, то она немного медленнее, чем жемчужина (я говорю о простых PHP-скриптах, без оптимизации wierd-vodoo), но этого достаточно для того, что вам, вероятно, нужно.

В конце я уверен, что вы получите менее согласованное приложение, если будете использовать PHP (и если будете следовать всем рекомендациям по кодированию и дизайну), чем когда-либо, используя Perl.

(Java намного лучше ... но я не хочу, чтобы какой-то ревностный фанат PHP)

0 голосов
/ 29 марта 2010

Я бы использовал Common Lisp.

  • Закрытие XML для анализа XML
  • cl-ppcre - это библиотека регулярных выражений, совместимая с perl, но в зависимости от того, какой тип текста вы хотите анализировать, вы можете найти специализированные парсеры в Common Lisp Directory .
  • Я не знаю, какую базу данных вы хотите использовать, но Postmodern очень хорош для Postgres. Существует также более общий CLSQL .
  • Вы можете использовать Hunchentoot в качестве веб-сервера и, например, CL-WHO для создания HTML-страниц. 5 страниц в секунду не должно быть проблем.
0 голосов
/ 29 марта 2010

Почему бы вам не попробовать Ruby on Rails?

Возвращаясь к вашему вопросу, я бы сказал, PHP. Поскольку вам нужно изучать что-то новое, и в то же время у вас должно быть отличное сообщество, где вы можете найти поддержку.

PHP делает все, что вы просили.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...