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

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

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


person Community    schedule 22.10.2009    source источник
comment
Конечно нет! Пожалуйста, используйте его только там, где вы должны! (ГКНР)   -  person soulmerge    schedule 22.10.2009
comment
@soulmerge - как я уже сказал, Помимо аргументов о том, является ли PHP в целом хорошим языком...   -  person Nathan Long    schedule 22.10.2009
comment
Потому что он немного медленный и не многопоточный.   -  person Roch    schedule 22.10.2009
comment
@fuentesjr - ваш комментарий больше оскорбляет, чем отвечает. Во-первых, я не планирую использовать PHP для настольной разработки, так что не надо думать, что я непрофессионал. Связанный вопрос показывает, что КТО-ТО рассматривает возможность сделать это. Возможно, те, кто погуглят, увидят это обсуждение в будущем. Во-вторых, ответ Дэниела Прайдена дает конкретику: вот почему это хорошо для этого, а не для этого. Именно такого ответа требует этот вопрос.   -  person Nathan Long    schedule 23.10.2009
comment
@nathan Оглядываясь назад, я согласен, что мой комментарий оказался оскорбительным. Я не хочу тебя оскорблять. Тем не менее, я категорически против использования PHP (или других инструментов в этом отношении) для решения проблем/задач, для которых он не предназначен, особенно когда есть альтернативы. Более того, я не звал вас напрямую, так что еще раз перефразирую. Однако, возможно, это устроит всех, если у вас будет четкое представление о проблемной области и наборе инструментов. Наконец, это был просто комментарий, а не формальный ответ, поэтому я не предоставил никаких подробностей на ваш вопрос.   -  person fuentesjr    schedule 23.10.2009
comment
Я, вероятно, буду раскритикован за это, но количество раз, когда мне приходилось использовать операции с файлами в настольных приложениях, было мизерным по сравнению с тем, сколько раз это было необходимо для веб-приложений. Только по этой причине я бы использовал PHP. Даже не уверен, есть ли в других языках что-то вроде RecursiveDirectorIterator как часть стандартной библиотеки. В конце концов, просто используйте тот язык, который вам удобен. На самом деле в PHP есть несколько мощных операций с файлами.   -  person Lotus Notes    schedule 29.06.2010


Ответы (13)


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

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

person Community    schedule 22.10.2009
comment
+1, потому что вы объясняете как его популярность, так и его непригодность для этой задачи (в отличие от ПРОСТО говоря «это отстой») - person Nathan Long; 23.10.2009
comment
говорят, что если бы php собрался вместе и стандартизировал все имена своих функций и т. д., это был бы хороший язык? - person Alec Gorge; 28.10.2009
comment
@Ramblingwood: Если бы была версия PHP со стандартизированными именами функций и стандартной библиотекой с улучшенным дизайном, это был бы лучший язык. Но чтобы быть по-настоящему хорошим языком (ИМХО), PHP потребовалось бы много изменений в правилах приведения типов — такие вещи, как разница между 0 и false, требуют гораздо больше работы. - person Daniel Pryden; 28.10.2009
comment
@Daniel Pryden Ваше определение хорошего языка - это язык со строгой и статической типизацией? - person Lotus Notes; 29.06.2010
comment
@Byron: Я бы сказал, что хороший язык не обязательно должен быть статически типизированным, но хороший язык должен быть строго типизированным в том смысле, что он должен иметь надежную систему типов с четко определенными, согласованными правилами приведения типов. Кроме того, хороший язык должен иметь хорошо спроектированную стандартную библиотеку с хорошей ортогональностью между различными функциями и множеством возможностей для расширения. В настоящее время я не вижу, чтобы PHP имел что-либо из этого, к сожалению. - person Daniel Pryden; 29.06.2010

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

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

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

person Community    schedule 22.10.2009
comment
Ну поставь батенька :) Устал сам шлифовать углы. - person fuentesjr; 22.10.2009
comment
Бинго. PHP может быть хорошим веб-языком с компетентными программистами. В настоящее время он не является (и вряд ли станет) хорошим языком рабочего стола, независимо от компетенции. - person ceejayoz; 22.10.2009
comment
Хорошо, PHP не был разработан для рабочего стола. Но что на самом деле делает его непригодным? Рассмотрим Python, который (я думаю) был разработан для сценариев на рабочем столе, но теперь широко используется в веб-приложениях. - person Mechanical snail; 29.09.2011
comment
Продолжительные процессы и отсутствие событийной абилити, которая может быть достигнута другими языками, — вот некоторые из вещей, которые делают его непригодным. PHP был создан для Интернета, и сделать его для рабочего стола сложно. Такие языки, как python или ruby, которые являются общими языками, позволяют легко программировать все, что вы хотите. - person Mauricio A. Cinelli; 10.11.2013

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

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

person Community    schedule 22.10.2009

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

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

person Community    schedule 22.10.2009
comment
Второй аргумент на самом деле недействителен, потому что любой новый язык будет иметь эту проблему. - person MattBelanger; 22.10.2009
comment
Справедливо, но я думаю, что должна возникнуть критическая масса, прежде чем новый язык получит хоть какой-то экспоненциальный рост, необходимый для активного сообщества. Это не относится только к PHP, и в какой-то момент это было верно для каждого языка, который активно используется для разработки настольных компьютеров, но пересечение этого порога от нишевого языка до действительного выбора для бизнеса не является тривиальным. - person Ryan Brunner; 22.10.2009

$language_under_consideration делает работу, которую я хочу, легче, чем $other_language?

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

person Community    schedule 22.10.2009

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

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

person Community    schedule 22.10.2009

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

person Community    schedule 22.10.2009

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

person Community    schedule 22.10.2009
comment
Поскольку честный разработчик не может с чистой совестью рекомендовать PHP в качестве платформы, это довольно самоуверенное утверждение. Вы намекаете, что каждый разработчик, использующий исключительно PHP, нечестен? - person Herbert; 27.09.2011
comment
@Herbert: Боже, я написал это 2 года назад. Я до сих пор презираю PHP, и только нечестный разработчик будет рекомендовать PHP любому другому разработчику. - person postfuturist; 29.09.2011
comment
Неважно, когда вы это написали. Это все еще здесь для всеобщего обозрения. PHP такой же валидный язык, как и любой другой. Это все равно, что сказать, что только нечестный разработчик порекомендует [вставить любимый язык программирования]. - person Herbert; 29.09.2011
comment
@Herbert: я допускаю, что разработчик может рекомендовать PHP по незнанию. - person postfuturist; 30.09.2011

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

Производительность — мой критерий для программного обеспечения для настольных ПК. Но я верю, что настольные программы когда-нибудь умрут :)

person Community    schedule 22.10.2009
comment
Производительность не так важна для настольных компьютеров, как для веб-приложений. Есть тысячи медленных приложений (вещи Java), любимые, ЕСЛИ они хороши. Кстати, я согласен с тем, что рабочий стол когда-нибудь умрет. - person Ismael; 22.10.2009
comment
Иногда производительность критична, иногда это не имеет большого значения. Вам нужен по крайней мере один высокопроизводительный язык, хотя вам не нужно писать на нем все подряд. Кроме того, я думаю, что программное обеспечение для настольных компьютеров останется в обозримом будущем. Всегда будет больше вычислительной мощности без задержки связи и приложений, которые в ней нуждаются. - person David Thornley; 23.10.2009

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

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

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

person Community    schedule 22.10.2009
comment
Этот сайт показывает целых 5 уязвимостей для PHP 5.3. Без признаков тяжести. Также обратите внимание, что большинство сайтов по безопасности предостерегают от использования количества уязвимостей в качестве метрики. - person ceejayoz; 22.10.2009
comment
@ceejayoz: Возможно, вы захотите взглянуть на дыры в безопасности, которые были исправлены в php 5.2 (мое любимое — это исправление ошибки № 44096 в версии PHP 5.2.6, которая вызывала огромное потребление памяти во время (!) объединения строк (!) ) php.net/ChangeLog-5.php - person soulmerge; 22.10.2009
comment
Думаю, я мог бы также упомянуть, как пользоваться сайтом. Первая страница - проблемы, выявленные сегодня. Вы можете просмотреть остальную часть архива, если хотите увидеть все проблемы безопасности. Я некоторое время наблюдал за этим сайтом, и PHP довольно часто выявлял уязвимости. - person BrandonCS; 23.10.2009
comment
И я сомневаюсь, что это потому, что команда PHP настолько осведомлена о безопасности :) - person soulmerge; 23.10.2009

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

person Community    schedule 22.10.2009
comment
У Perl есть еще одна или две ниши: замена сценариев оболочки и текстовых заданий. (При всем уважении к Ларри Уоллу и др., я могу назвать несколько языков, на которых я бы предпочел делать большие проекты.) В настоящее время у PHP нет другой ниши. - person David Thornley; 23.10.2009

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

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

person Community    schedule 22.10.2009