Вместо предисловия.

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

Начнем.

WEB развивается уже второй десяток лет. Время статичных HTML-страниц кануло в истории, на смену которому пришел абстрактный стандарт WEB2, главное требование которого – взаимодействие с пользователем. Спорить, правильно ли это, конечно, можно, только в таком случае появляется вполне резонный вопрос: зачем читать эту статью, если она о средствах создания подобных сервисов?

Порог вхождения.

Традиционно для сравнительного анализа языков в первую очередь используют удобство синтаксиса, скорость работы и возможности.

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

PHP считается простым языком. Это не удивительно: от открытия учебника до первого “HelloWorld-a” проходит не больше 5 минут. С одной стороны это хорошо. Но подводных камней не мало.

Потратив неделю на изучение PHP, можно научиться базовым приемам ввода-вывода, примитивной выборке из БД и парочке других алгоритмов обработки информации. С усложнением задач появляется соблазн изобретать “велосипеды” и “костыли” на основе старых знаний, делая код нечитабельным, уничтожая возможность дальнейшей поддержки на корню.

Работа с таким “кодером” в команде, или еще хуже, поддержка проекта, написанного им, превращается в будни школьного учителя. Естественно, это утверждение относится не ко всем, но такая проблема существует.

Что касается Java, порог вхождения очень высокий. Вместо “Установка LAMP под Ubuntu” и “Скачать самоучитель PHP“, необходимо вникнуть в сервлеты, взаимодействие между ними, jsp, научиться работе с каким-нибудь фреймворком.

Плюс ООП, который в Java обязателен. Если проводить аналогию, начало работы сравнимо с высшей математикой в ВУЗ-е: всех неспособных отправить на службу родине.

Подобный подход к оценке языка не панацея. Достаточно много серьезных проектов, написанных на PHP. Более того, на данный момент в сфере WEB-разработок он доминирует.

Синтаксис и код.

Одна из обсуждаемых проблем Java – длиннейшие названия классов и стандартных методов. Чего только стоит “System.out.println()” оного вместо “echo” на PHP. Конечно, это легко решается “import-ом” в начале документа или выбором современной IDE, в которой достаточно написать первую букву метода или поля, как появится возможность выбора нужного из списка. Тем не менее, отрицать впечатляющий объем кода на Java – предвзято.

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

Что касается кода, я думаю мало кто станет спорить, что серьезный проект == серьезная работа в команде. А работа в команде требует годного, понятного кода, качественную документацию, и возможность эффективно распределить работу.

Здесь принудительное ООП Java и Javadoc для документации дают ощутимый прирост в копилке аргументов “За Java”.

В PHP эти возможности так же есть. Сравнительно недавно я узнал о аналогах Javadoc в PHP- phpdoc/PhpDocumentor.

С известных версий PHP поддерживает объектный подход(ООП). Правда он смешанный, и соблазн написать простую функцию без обертки очень большой.

Техническая площадка.

С кодом мы разобрались. А вот что касается хостинга, Java в проигрыше. PHP-хостинг распространен и он дешевле.

Правда под вопросом, стоит ли экономить на хостинге, если проект серьезный? Тем не менее, то, что заменить техническую основу проекта на PHP проще – факт.

Другой вопрос, если проект используется в интрасети. Стоимость хостинга отпадает. И программирование на стороне клиента дает плюс в сторону Java. Интеграция апплетов на нем в сети интернет потерпела крах, так как для запуска они требуют имплементатор на локалхосте. Но когда клиенты доступны физически, проблем нет.

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

Вместо заключения.

Я постарался не затрагивать сравнения технических характеристик языков. Такой информации в интернете полно. Так же считаю, что качество разработки значительно важнее. Язык создан для человека, а не для процессора. Для второго есть ассемблер.

Претензий на объективность у меня нет. Я попытался, насколько успешно- не знаю. Буду рад аргументированной критике.

Под конец повторюсь: все в руках разработчика, язык лишь инструмент. Профессионал и пальцем болт закрутит.