Почему бы НЕ использовать PHP в качестве языка программирования для настольных компьютеров? - PullRequest
10 голосов
/ 22 октября 2009

Отвечая на на этот вопрос , я уверен, что многие люди возразят, что PHP не лучший выбор для настольного программирования, и вместо этого порекомендуют что-то вроде Ruby или Python. Я подумал, что было бы интересно обсудить почему.

Помимо аргументов о том, является ли PHP хорошим языком в целом, каковы ваши критерии хорошего настольного языка программирования (в отличие от веб-разработки)?

Ответы [ 13 ]

25 голосов
/ 22 октября 2009

Вы говорите «Помимо споров о том, является ли PHP хорошим языком в целом», - но я думаю, что в этом суть проблемы. PHP стал популярным как язык веб-разработки, потому что он хорошо интегрируется с существующим стеком веб-инструментов (встроенный HTML, хорошая интеграция с Apache, встроенная поддержка MySQL и т. Д.) - не , потому что он хорошо спроектирован язык, на котором легко работать. (Между прочим, это не так.)

Если вы заберете Интернет и будете использовать PHP для разработки десктопов, что у вас останется? Слаб типизированный, непоследовательный язык без поддержки пользовательских интерфейсов рабочего стола и ужасной путаницы в стандартной библиотеке. Люди не используют PHP таким образом, потому что это просто не имеет смысла .

20 голосов
/ 22 октября 2009

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

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

Для перспективы: PHP - моя работа

11 голосов
/ 22 октября 2009

PHP для настольных приложений:

Простота распространения из настольного приложения с производительностью веб-приложения.

6 голосов
/ 22 октября 2009

Выполняет ли $language_under_consideration работу, которую я хочу, проще, чем $other_language?

Например, я обнаружил, что php-интерфейсы для mysql отлично подходят для быстрой работы с БД. Хотя я бы не хотел писать php для приложения с графическим интерфейсом в Windows ....

6 голосов
/ 22 октября 2009

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

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

4 голосов
/ 22 октября 2009

Поскольку оно полностью ориентировано на веб-программирование, и, хотя оно может иметь необходимые инструменты для настольного программирования, существуют другие языки, которые намного более способны и более эффективны для работы.

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

2 голосов
/ 22 октября 2009

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

2 голосов
/ 22 октября 2009

Он установлен по умолчанию на целевой платформе? Потому что, если это не так, то есть больше трения для усыновления.

1 голос
/ 22 августа 2013
  1. Если вы создаете приложение с графическим интерфейсом, PHP не очень подходит. Рассмотрим (1) .NET / Mono или (2) Python с PySide (QT). Смотри ниже.
  2. Если вы создаете большое внутреннее корпоративное приложение, PHP не подходит. Вам нужен структурированный язык, такой как C # или Java, который больше привык к тяжелой командной работе. Нет Python или PHP здесь. Но будьте осторожны с тяжелым интерфейсным интерфейсом Java и Windows-зависимой природой C # / Mono. (Эффективное командное программирование - это целая наука.)

Однако .. С точки зрения небольших или средних настольных скриптов или движков, без GUI (т.е. скрипты автоматизации и т. Д.), Тогда PHP на самом деле очень сильный .

Основная причина использования PHP для написания сценариев для настольных компьютеров: обучение ИТ-специалистов работе со сценарием - залог успеха. Если вы не являетесь ИТ-отделом (надеюсь, что нет), вам будет сложно запустить этот скрипт на любом компьютере с Windows и Linux, если вы используете общие языки рабочего стола, такие как .NET. Библиотеки и зависимости, необходимые для других языков, затрудняют их использование на большом наборе компьютеров с разными операционными системами.

Это основная практическая причина. Вот больше / подробности:

  • Простой доступ к MySQL и базам данных: PHP отлично подходит для быстрых сценариев базы данных.
  • Простой, портативный доступ ко многим веб-библиотекам для HTTP, FTP, MD5 и т. Д.
  • Удивительно кроссплатформенный и простой в распространении: он не только будет работать на всех ОС, но и очень прост в упаковке сценария. Часто вы можете даже просто скопировать саму папку PHP. Почему это критично? Имейте в виду, что программисты - это не ИТ . Что происходит, когда ИТ-специалисты переносят сервер в 2 часа ночи, а код, написанный в 2005 году в .NET 2.0, дает сбой из-за отсутствия зависимости или отсутствия DLL? Лично я нашел это очень распространенным. PHP - один из немногих языков, который «хорошо инкапсулирован» из-за отсутствия лучшей фразы.
  • Очень быстрое время разработки сценариев.
  • Скорость выполнения PHP медленная, но она едва заметна, если вы не обрабатываете тонны данных. Если сценарий запускается один раз в день для обработки каких-либо данных, никто не пропустит 400 мс, которые вы сохранили, написав его на C ++. Тем не менее, если вы экономите 5 часов своего времени в год на написание и поддержку этого сценария с помощью PHP, и у вас есть больше времени для добавления комментариев к коду из-за этого, лучше будет imho.
  • Пока PHP свободно набран, вы можете установить error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); и найти неинициализированные переменные. Python также свободно набран, и многие используют его (Dropbox был создан на Python), поэтому я не вижу здесь аргумента. Это скорее несоответствие языка PHP.
  • Большинство внешних библиотек PHP также легко переносимы и кроссплатформенны.
  • Низкая стоимость, чтобы найти программистов, чтобы помочь вам. Программистов PHP легко найти и относительно недорого нанять. Как для личных проектов, так и на рабочем месте, это имеет значение. На работе я часто нанимал людей для создания инструментов автоматизации PHP и экономил свое время. Это могло бы быть дороже на других языках.

Помимо рассуждений о том, является ли PHP хорошим языком в целом, что ваши критерии хорошего настольного языка программирования (в отличие к веб-разработке)? Спойлер: используйте .NET / Mono (mono - это кросс-платформенная версия языка .NET) и код в MonoDevelop IDE, чтобы ваше приложение оставалось кроссплатформенным с первого дня. Для Mac часто приходится настраивать, так как немного по-другому, но вы можете работать с .NET, используя Xamarin Mac (который основан на Mono, но допускает компоненты интерфейса MacOS): http://xamarin.com/mac

Если Mono / C # недостаточно прост из-за накладных расходов на зависимости, изучите Python с PySide. Если Python слишком медленный (хотя многие популярные приложения, такие как Dropbox, используют его), тогда используйте C ++ и инфраструктуру QT (используется Skype и многими другими). Я помню, что Delphi может быть еще одним хорошим вариантом, если он еще существует.

Что нужно иметь в виду:

  • В 50% случаев вам, в конечном счете, необходимо работать как инструмент службы или командной строки. Так что отделите логику вашего GUI от вашего бэкенда на ранней стадии, если это так. Это также позволяет создавать автоматизированные тесты.
  • Если это массово распространяемая программа (например, Notepad ++, Dropbox, Gtalk), главное - хороший кроссплатформенный пользовательский опыт. Будут ли пользователи Mac и Windows иметь быстро загружаемое приложение, которое им удобно? Или запускать приложение будет похоже на толкание грузовика в гору?
  • ПРИМЕЧАНИЕ. Поскольку большинство людей используют Windows, часто имеет смысл просто использовать C # или VB.NET и сделать его приложением для Windows.
  • Скорость программирования. Большинство проектов терпят неудачу, потому что они занимают слишком много времени. Лучше иметь счастливых пользователей Windows, чем никаких пользователей. По правде говоря, C # или VB.NET позволят вам создать отличное приложение, которое работает для большинства людей в половине случаев. И вы можете, вероятно, перенести большую часть этого на другие ОС с Mono. Может быть, это не самый быстрый в плане производительности или лучший результат, но кодирование на C ++ может занять слишком много времени.
  • Распространение / установщики - полдела. Вы были бы шокированы тем, сколько раз приложение будет завершено на 64-битной Win7, только чтобы понять, что оно рухнет на XP без какой-нибудь дурацкой библиотеки. В отличие от Web, вы должны убедиться, что ваше приложение работает со всеми операционными системами и пакетами обновлений. БОЛЬШАЯ БОЛЬ! Подсказка: тестируйте свежие установки с помощью облачных сервисов, таких как GoGrid, которые позволяют вам запускать свежие установки Windows.

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

0 голосов
/ 23 октября 2009

Я не вижу никакой разницы в использовании PHP для веб-приложений или приложений для настольных компьютеров, просто для разных библиотек. Qt и GTK + оба доступны для PHP, и если кто-то потратил время на написание таких привязок, это означает, что его используют больше, чем кто-либо другой для настольных компьютеров.

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

...