Почему НЕ использовать PHP в качестве настольного языка программирования?

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

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

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

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

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

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

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

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

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

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

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

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

Например, я нашел php-интерфейсы для mysql отличным для быстрой работы БД. Я бы не хотел писать php для GUI-приложения на Windows, хотя ….

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

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

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

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

  1. Если вы создаете графическое приложение, PHP не очень подходит. Рассмотрим (1) .NET / Mono или (2) Python с PySide (QT). Смотри ниже.
  2. Если вы создаете большое корпоративное приложение, PHP не подходит. Вам нужен структурированный язык, такой как C # или Java, который больше привык к тяжелой командной работе. Здесь нет Python или PHP. Но будьте осторожны с тяжелым интерфейсом GUI 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, чтобы ваше приложение оставалось кросс-платформенным с 1-го дня. Для Mac часто вам нужно настроить настройки, так как это немного отличается, но вы можете работать с .NET, используя Xamarin Mac (который основан на Mono, но позволяет компонентам интерфейса MacOS): http://xamarin.com/mac

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

Что нужно помнить:

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

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

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

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

Однако в дополнение к тому, что упомянули другие пользователи, вы также можете рассмотреть огромное количество уязвимостей, которые у PHP уже есть ( http://www.securityfocus.com/vulnerabilities ).

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

PHP – это новый perl, если вы собираетесь использовать его в качестве языка программирования вне веб-среды. Если я собираюсь писать приложения, я хочу, чтобы в нем работали достойные окружения. Без сторонних приложений отладка программ php может быть болью.

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

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