- Если вы делаете приложение с графическим интерфейсом, PHP не очень подходит. Рассмотрим (1).NET/Mono или (2) Python с PySide (QT). Смотри ниже.
- Если вы создаете большое серверное корпоративное приложение, PHP не подходит. Вам нужен структурированный язык, такой как C# или Java, который больше подходит для тяжелой командной работы. Здесь нет ни Python, ни PHP. Но остерегайтесь тяжеловесного внешнего графического интерфейса Java и зависимой от Windows природы C#/Mono. (Эффективное командное программирование — это целая наука сама по себе.)
Однако... С точки зрения настольных скриптов или движков малого и среднего размера, без графического интерфейса пользователя (т. е. скриптов автоматизации и т. д.), PHP на самом деле очень силен. .
Основная причина использования PHP для настольных сценариев: обучение ИТ-отдела работе со сценарием — это полдела. Если вы не являетесь также ИТ-отделом (надеюсь, что это не так), вам будет трудно запустить этот сценарий на любом компьютере с Windows и Linux, если вы используете распространенные языки рабочего стола, такие как .NET. Библиотеки и зависимости, необходимые для других языков, затрудняют их использование на большом количестве компьютеров с разными операционными системами.
Это главная практическая причина. Вот еще / подробности:
- Легкий доступ к MySQL и БД: PHP отлично подходит для быстрых сценариев базы данных.
- Простой переносимый доступ ко множеству веб-библиотек для HTTP, FTP, MD5 и т. д.
- Удивительно кроссплатформенный и легко распространяемый: он не только будет работать на всех ОС, но и очень легко упаковать скрипт. Часто можно даже просто скопировать саму папку PHP. Почему это так важно? Имейте в виду, что программисты не занимаются ИТ. Что происходит, когда ИТ-персонал переносит сервер в 2 часа ночи, а код, который вы написали в 2005 году для .NET 2.0, дает сбой из-за отсутствия какой-либо зависимости или отсутствующей библиотеки DLL? Лично я нашел это очень распространенным. PHP — один из немногих языков, которые «хорошо инкапсулированы» из-за отсутствия лучшей фразы.
- Очень быстрое время разработки, когда дело доходит до сценариев.
- Скорость выполнения PHP низкая, но это едва заметно, если вы не обрабатываете тонны данных. Если скрипт запускается раз в день для обработки каких-то данных, никто не пропустит 400 мс, которые вы сэкономили, написав его на C++. Тем не менее, если вы экономите 5 часов собственного времени в год на написании и поддержке этого скрипта с помощью PHP и благодаря этому у вас есть больше времени для добавления комментариев к коду, это лучше, имхо.
- Хотя 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, чтобы ваше приложение оставалось кроссплатформенным с первого дня. немного отличается, но вы можете работать с .NET с помощью Xamarin Mac (который основан на Mono, но позволяет использовать компоненты интерфейса MacOS): http://xamarin.com/mac
Если Mono/C# недостаточно компактен из-за накладных расходов на зависимости, обратите внимание на Python с PySide. Если Python слишком медленный (хотя многие популярные приложения, такие как Dropbox, используют его), используйте C++ и платформу QT (используемую Skype и многими другими). Я помню, что Delphi может быть еще одним хорошим вариантом, если он вообще еще существует.
Что нужно иметь в виду:
- В 50% случаев вам в конечном итоге нужно работать как сервис или инструмент командной строки. Так что отделите логику вашего графического интерфейса от вашего внутреннего интерфейса на ранней стадии, если это так. Он также позволяет создавать автоматизированные тестовые случаи.
- Если это массово распространяемая программа (например, Notepad++, Dropbox, Gtalk), то главное — хороший кроссплатформенный пользовательский интерфейс. Будет ли у пользователей Mac и Windows быстро загружающееся приложение, с которым им будет удобно? Или запуск приложения будет похож на толкание грузовика в гору?
- ПРИМЕЧАНИЕ. Поскольку большинство людей используют Windows, часто имеет смысл просто использовать C# или VB.NET и сделать их приложением для Windows.
- Скорость программирования. Большинство проектов терпят неудачу, потому что они занимают слишком много времени. Лучше иметь счастливых пользователей Windows, чем не иметь пользователей. Правда в том, что C# или VB.NET позволят вам создать отличное приложение, которое будет работать для большинства людей, в два раза быстрее. И вы, вероятно, можете перенести большую часть этого на другие ОС с помощью Mono. Может быть, это не самый быстрый с точки зрения производительности или лучший в целом, но кодирование на C++ может занять слишком много времени.
- Распространение/установщики — полдела. Вы были бы шокированы тем, сколько раз приложение будет завершено на 64-битной Win7 только для того, чтобы понять, что оно вылетит на XP без какой-то дурацкой библиотеки. В отличие от Интернета, вам необходимо убедиться, что ваше приложение работает со всеми операционными системами и пакетами обновлений. БОЛЬШАЯ БОЛЬ! Совет. Протестируйте свежие установки с помощью облачных сервисов, таких как GoGrid, которые позволяют создавать новые установки Windows.
Я сделал готовые приложения на всех этих языках как для внутреннего использования, так и для массового распространения, и это мои 2 цента.
person
Community
schedule
21.08.2013
RecursiveDirectorIterator
как часть стандартной библиотеки. В конце концов, просто используйте тот язык, который вам удобен. На самом деле в PHP есть несколько мощных операций с файлами. - person Lotus Notes   schedule 29.06.2010