- Если вы создаете приложение с графическим интерфейсом, PHP не очень подходит. Рассмотрим (1) .NET / Mono или (2) Python с PySide (QT). Смотри ниже.
- Если вы создаете большое внутреннее корпоративное приложение, 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цента.