Следующий шаг после PHP: Perl или Python? - PullRequest
18 голосов
/ 09 марта 2009

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

У меня есть опыт работы с PHP 5 , как с функциональными, так и с объектно-ориентированными методами программирования. Я создал несколько минималистичных веб-сайтов.

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

В 42-м подкасте в блоге Stack Overflow разработчик из Польши спросил, на каком языке он должен учиться, чтобы улучшить свои навыки. Джефф и Джоэл предположили, что каждый из них поможет , хотя есть определенные, которые в некоторых отношениях лучше. Несмотря на то, что они сделали несколько важных замечаний, это мне не сильно помогло.

С точки зрения новичка, нет , которого можно не видеть (исправление, предложенное S. Lott ), много различий между Perl и Python Я хотел бы, чтобы Вы подчеркнули их сильные и слабые стороны и назвали несколько уникальных услуг.

Конечно, это было бы нечестно, так как я мог бы также проверить их обоих. Так вот мой список пожеланий и требования, чтобы помочь Вам помочь мне.

Прежде всего, я хотел бы следовать структурам ООП и использовать их фундаментально. Я частично планировал многопользовательскую CMS с использованием MySQL и XML, поэтому, чем больше реализация, тем лучше. Из-за своего предполагаемого характера, манипуляции со струнами будут интенсивно использоваться.

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

Итак, вот мой вопрос: какой мне следует попробовать сначала - Perl || Python?


Заключение

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

Я принял самый ценный ответ, хотя ниже есть много замечательных мини-статей. Как предлагается чаще, я сначала пойду с Python. Тогда я попробую Perl позже. Дай мне посмотреть, какой из них мне больше подходит.

Во время разработки моей специальной CMS я собираюсь спросить больше о сомнениях в программировании - потому что разработчики теперь могут рассчитывать друг на друга! Спасибо.

Редактировать: Некоторые люди предлагали вместо этого выбрать Ruby или Java. Ява фактически разочаровала меня. Может быть, у него есть отличные возможности, а может и нет. Мне бы не понравилось его использовать.

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

Ответы [ 14 ]

25 голосов
/ 09 марта 2009

Perl - очень приятный язык, и в CPAN есть тонна зрелых модулей, которые сэкономят вам много времени. Кроме того, в настоящее время Perl действительно продвигается вперед со множеством интересных проектов (в отличие от того, что любят распространять неосведомленные фанаты). Даже реализация Perl 6 уже выпускает работающий Perl 6.

Я тебе хочу сделать ОО, я бы порекомендовал Лось .

11 голосов
/ 09 марта 2009

Честно говоря, "большинство" моего программирования было на Perl и PHP, и я недавно решил сделать свой последний проект на Python, и я должен признать, что с ним очень приятно программировать. Я не решался вообще без фигурных скобок, так как это то, что я всегда делал, но это действительно очень чисто. Тем не менее, в конце дня вы можете создавать хорошие веб-приложения со всеми тремя, но если вы не готовы отказаться от PHP, чтобы попробовать что-то новое, я бы порекомендовал Python и инфраструктуру Django.

10 голосов
/ 09 марта 2009

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

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

7 голосов
/ 10 марта 2009

Я недавно сделал шаг от Perl к Python, после пары лет только для Perl. Вскоре после этого я обнаружил, что начал читать все виды Python-кода так же, как и любой другой легко читаемый текст, чего я никогда не делал с Perl. Необходимость вникать в сторонний код Perl всегда была для меня кошмаром, так что это стало очень приятным сюрпризом!

Для меня это означает, что Python-код гораздо проще поддерживать, что в долгосрочной перспективе делает Python намного привлекательнее, чем Perl.

7 голосов
/ 09 марта 2009

Я мало работал с Python, но я могу сказать, почему мне не понравилось * Perl, когда я его использовал.

  1. ОО поддержка чувствует себя прикрепленной. OO в Perl сильно отличается от поддержки OO в других языках, которые я использовал (включая такие вещи, как PHP, Java и C #)
  2. TMTOWTDI (есть больше, чем один способ сделать это). Хорошая идея в теории, ужасная идея на практике, так как она снижает читабельность кода.
  3. Perl использует много магических символов.
  4. Perl не поддерживает аргументы именованных функций, что означает, что вам нужно копаться в массив @_, чтобы получить аргументы, передаваемые в функцию (или, скорее, подпрограмма в perl не имеет ключевого слова function). Это означает, что вы увидите много вещей, таких как пример ниже (перемещено, потому что SO не любит код в нумерованных списках)

Сказав все это, я посмотрю на Python. Если вы не хотите использовать что-то более тяжелое, например C ++ или C # / Java.

Да, прежде чем я забыл: я хотел поместить пример для 4 выше, но ТАК не любит помещать код в нумерованные списки:

sub mySub {
    #extremely common to see in Perl, as built-ins operators operate on the $_ scalar or @_ array implicitly
    my $arg1 = shift;
    my $arg2 = shift;
}
7 голосов
/ 09 марта 2009

У меня нет опыта работы с Python. Я настоятельно рекомендую изучать Perl не из-за истощения, а потому, что на платформе есть ТОННА для изучения. Ключевые понятия Perl: «Делай, что я имею в виду» ( DWIM ) и существует больше, чем один способ сделать это ( TMTOWTDI ). Это означает, что гипотетически часто нет неправильного подхода к проблеме, если проблема адекватно решена.

Начните с изучения базового языка Perl, а затем изучите ключевые модули Perl, такие как IO :: File, DBI, HTML :: Template, XML :: LibXML и т. Д. И т. Д. search.cpan .org будет вашим ресурсом. perlmonks.org будет вашим гидом. Почти все, что нужно сделать, скорее всего, будет опубликован модуль.

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

Где используется Perl? Системные администраторы используют его интенсивно, как уже упоминалось. Вы по-прежнему можете создавать отличные веб-приложения с помощью простого CGI или MVC.

5 голосов
/ 10 марта 2009

Python чистый и элегантный, и тот факт, что LOTS of C APIs были упакованы, дает вам много полезных возможностей. Мне также нравится " Zen of Python ".

  • Красиво лучше, чем безобразно.
  • Явное лучше, чем неявное.
  • Простое лучше, чем сложное.
  • Комплекс лучше, чем сложный.
  • Квартира лучше вложенной.
  • Разреженный лучше, чем плотный.
  • Читаемость имеет значение.
  • Особых случаев недостаточно, чтобы нарушать правила.
  • Хотя практичность побеждает чистоту.
  • Ошибки никогда не должны проходить молча.
  • Если не указано явное молчание.
  • Перед лицом двусмысленности откажитесь от искушения угадать.
  • Должен быть один - и желательно только один - очевидный способ сделай это.
  • Хотя вначале этот путь может быть неочевиден, если вы не голландец.
  • Теперь лучше, чем никогда.
  • Хотя никогда не бывает лучше, чем прямо сейчас.
  • Если реализацию сложно объяснить, это плохая идея.
  • Если реализацию легко объяснить, это может быть хорошей идеей.
  • Пространства имен - одна из замечательных идей - давайте сделаем больше таких!
3 голосов
/ 10 марта 2009

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

Учебник по Python ( Классы Python )

Учебник Perl ( Классы Perl ) (Не удалось найти ни одного «официального» учебника по Perl, не стесняйтесь предложить один)


По моему опыту, Python обеспечивает более чистый и понятный опыт.

Мои проблемы с Perl:

  • «использовать строгий;», Taint, Warnings? - в идеале, они не должны быть нужны.

  • Передача переменных: @ ; против $ , против смещения

  • Scoping my , local , our ? (Местное определение, кажется, особенно указывает на некоторую путаницу с perl: «Вы действительно, вероятно, хотите использовать вместо меня my, потому что local - это не то, что большинство людей считает« local ».».)

В целом, с моими навыками Perl, я все еще нахожу свою документацию для встроенных функций. Где, как в Python, я нахожу это менее так. (я работал в обоих случаях примерно в одно и то же время, но мой общий опыт программирования со временем вырос. Другими словами, сейчас я, вероятно, стал бы лучшим программистом на Perl)

Если вы гуру командной строки Unix, Perl может прийти к вам более естественно. Или, если вы используете его в основном в качестве замены или расширения для задач администратора командной строки, это может удовлетворить ваши потребности в порядке. На мой взгляд, Perl «быстрее на ничью» в командной строке, чем Python.

3 голосов
/ 09 марта 2009

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

Я бы предложил что-то совершенно другое: Haskell (предложенный Джоэлом), Lisp, Lua, JavaScript или C. Любой из них сделает вас лучшим программистом, открыв новые способы взглянуть на мир.

Но пока нет причин прекращать изучение PHP.

Чтобы хорошо взглянуть на темную сторону этих языков, я искренне рекомендую: Какие пять вещей вы ненавидите в своем любимом языке?

2 голосов
/ 09 марта 2009

«Я бы хотел следовать структуре ООП ...» выступает за Python или, тем более, если вы открыты, Ruby. С другой стороны, с точки зрения существующих библиотек, порядок, вероятно, Perl> Python >> Ruby. С точки зрения вашей карьеры, Perl в вашем резюме вряд ли выделит вас, в то время как Python и Ruby могут привлечь внимание менеджера по найму.

Будучи программистом PHP, вы, вероятно, увидите, что все 3 являются несколько «обременительными» для запуска веб-страницы. У всех есть хорошие решения для веб-фреймворков, но ни один не настолько сфокусирован на рендеринге веб-страниц, как PHP.

Я думаю, что Python, скорее всего, будет лучшим выбором для вас, чем Perl. У него много хороших ресурсов, большое сообщество (хотя и не такое большое, как Perl, вероятно), немного выделяется в резюме и имеет хорошую репутацию.

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