为什么不使用PHP作为桌面编程语言?

时间:2009-10-22 18:38:03

标签: php desktop

在回应this question时,我确信很多人会反对PHP不是桌面编程的最佳选择,而是建议使用Ruby或Python。我认为讨论原因会很有趣。

除了关于PHP是否总体上是一门优秀语言的争论之外,您对良好的桌面编程语言(与Web开发相对)的标准是什么?

13 个答案:

答案 0 :(得分:25)

你说“除了关于PHP是否总体上是一种好语言的争论” - 但我认为这是问题的症结所在。 PHP作为Web开发语言变得流行,因为它与现有的Web工具堆栈(内联HTML,良好的Apache集成,内置的MySQL支持等)很好地集成 - 因为它很好 - 设计易于使用的语言。(顺便说一句,它不是。)

如果您将网络带走并使用PHP进行桌面开发,您还剩下什么?一种弱类型,不一致的语言,不支持桌面UI和标准库的可怕混乱。人们不会那样使用PHP,因为它只是没有意义

答案 1 :(得分:20)

PHP专门用于创建Web应用程序。虽然从技术上来说可以使用它创建桌面应用程序,但是你真的要在角落里打磨以适应圆孔中的方形钉。

有很多编程语言是以桌面为目标而设计的,尝试将PHP软件推入一个不适合的世界是没有意义的。

透视:PHP是我的工作

答案 2 :(得分:11)

用于桌面应用程序的PHP:

具有Web应用程序性能的桌面应用程序的易于分发。

答案 3 :(得分:6)

这听起来像是一个陈腐的答案,但我认为大多数人不使用PHP作为桌面编程语言的原因是因为人们不使用PHP作为桌面编程语言。

意思是,围绕使用PHP的GUI桌面应用程序没有一个非常强大的社区 - 这将影响开发人员可用的工具,他可以寻求帮助的资源,以及公司或商业活动,程序员将拥有使用一套非常小的工具所必需的技能组合。

答案 4 :(得分:6)

$language_under_consideration是否比$other_language更容易完成我想要的工作?

例如,我发现mysql的php接口非常适合快速数据库工作。我不想在Windows上为GUI应用程序编写php ....

答案 5 :(得分:4)

因为它完全适用于网络编程,虽然它可能拥有桌面编程所需的工具,但还有其他语言功能更强大,更有效率。

就我个人而言,我不喜欢很多语言原则,所以我只是在被迫时才使用它。

答案 6 :(得分:2)

默认情况下是否在目标平台上安装?因为如果不是,那么采用会有更多的摩擦。

答案 7 :(得分:2)

我很惊讶没人说过这个。作为Web开发人员,我只使用PHP,因为这是客户通常要求的。他们希望在他们可以找到的任何主机上部署,并且所有Web主机共享一个共同点:PHP。此外,我们还进行了大量的救援任务样式编码,我们必须修复已经用PHP编写的站点。作为一个诚实的开发人员,不能推荐PHP作为一个良好的平台,用于严肃的Web开发。我绝不会为任何项目,网站或桌面选择PHP。 Python非常适合桌面应用。它比PHP更具动态性,更健全,更高效。

答案 8 :(得分:1)

  1. 如果您正在制作GUI应用程序,PHP不太适合。考虑(1).NET / Mono或(2)Python与PySide(QT)。见下文。
  2. 如果您正在制作大型后端企业应用程序,则PHP不适用。你需要一种结构化的语言,比如C#或Java,它更习惯于繁重的团队合作。这里没有Python或PHP。但要注意Java的重型前端GUI和C#/ Mono的Windows依赖性。 (高效的团队编程本身就是一门完整的科学。)
  3. <强>然而.. 对于中小型桌面脚本或引擎,没有GUI (即自动化脚本等), PHP实际上非常强大

    使用PHP进行桌面脚本编写的主要原因:在脚本上培训IT部门是成功的一半。除非您也是IT部门(希望您不是),否则如果使用.NET等常用桌面语言,您将发现很难在任何Windows和Linux计算机上运行此脚本。其他语言所需的库和依赖项使得在具有不同操作系统的大量计算机中使用它们会产生问题。

    这是主要的实际原因。这里有更多/细节:

    • 轻松访问MySQL和DB:PHP非常适合使用快速数据库脚本。
    • 轻松,便携地访问HTTP,FTP,MD5等许多Web库
    • 令人惊讶的是跨平台且易于分发:它不仅可以在所有操作系统上运行,而且可以很容易地打包脚本。您甚至可以直接复制PHP文件夹本身。 为什么这很关键?请记住程序员不是IT 。当IT人员在凌晨2点迁移服务器并且您在2005年在.NET 2.0中编写的代码由于某些缺少依赖性或缺少DLL而崩溃时会发生什么?就个人而言,我发现这很常见。 PHP是为数不多的语言之一,并且已经很好地封装了#34;缺乏更好的短语。
    • 脚本编写的开发时间非常快。
    • PHP的执行速度很慢,但除非您处理大量数据,否则几乎不会引起注意。如果脚本每天运行一次以处理某种数据,那么没有人会错过你用C ++编写的400ms。然而,如果你每年用自己的时间节省5个小时来编写和维护这个脚本,并且因此有更多时间在代码中添加注释,那就更好了。
    • 虽然PHP是松散类型的,但您可以设置error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);并找到未初始化的变量。 Python也是松散类型的,许多人都使用它(Dropbox是用Python制作的)所以我不会在这里看到这个论点。它更多的是PHP语言的不一致。
    • 大多数外部PHP库都是高度可移植的,也是跨平台的。
    • 找到程序员帮助您的成本很低。 PHP程序员很容易找到并且聘用成本相对较低。无论是个人项目还是工作场所,这都有所不同。在工作中,我经常雇用人员制作PHP自动化工具并节省时间。在其他语言中可能更贵。
      

    除了关于PHP是否总体上是一种好语言的争论,还有什么   是您良好的桌面编程语言的标准(相反   到网络开发)?   Spoiler:使用.NET / Mono(mono是.NET语言的跨平台版本)和MonoDevelop IDE中的代码,以确保您的应用程序从第1天起就保持跨平台。对于Mac,您通常需要调整一些东西,因为它和#39;略有不同,但您可以使用Xamarin Mac(基于Mono但允许MacOS接口组件)使用.NET:   http://xamarin.com/mac

    如果由于依赖性开销,Mono / C#不够精简,请使用PySide查看Python。如果Python太慢(虽然许多流行的应用程序,如Dropbox使用它),那么使用C ++和QT框架(Skype和许多其他人使用)。我记得Delphi可能是另一个不错的选择,如果它仍然存在的话。

    要记住的事情:

    • 50%的情况下,您最终需要作为服务或命令行工具运行。因此,如果是这种情况,请尽早将GUI逻辑与后端分开。它还允许您制作自动化测试用例。
    • 如果这是一个大规模分布式程序(如Notepad ++,Dropbox,Gtalk),那么主要的是跨平台的用户体验。 Mac和Windows用户会有一个他们觉得舒服的快速加载应用程序吗?或者推出应用感觉就像把卡车推上山?
    • 注意:由于大多数人使用Windows,因此使用C#或VB.NET并使其成为Windows应用程序通常是有意义的。
    • 编程速度。大多数项目都因为耗时太长而失败。拥有快乐的Windows用户比没有用户更好。事实上,C#或VB.NET将让你制作出一款适合大多数人在一半时间内使用的优秀应用。并且您可以使用Mono将大部分操作系统移植到其他操作系统。也许它在性能或整体性能方面不是最快的,但在C ++中编码可能需要很长时间。
    • 分销/安装人员只有一半的战斗力。你会惊讶于在Win7 64位上完成一个应用程序的次数,只是意识到它会在没有一些古怪的库的情况下崩溃。与Web不同,您需要确保您的应用程序适用于所有操作系统和服务包。大痛!提示:使用像GoGrid这样的云服务测试全新安装,让您可以分离新的Windows安装。

    我已经用所有这些语言制作了完整的应用程序,用于内部使用和大规模分发,这是我的2cents。

答案 9 :(得分:0)

性能是我在桌面软件上的标准。但我相信桌面软件有一天会死掉:)

答案 10 :(得分:0)

我非常支持使用PHP快速开发Web应用程序。它易于学习,拥有庞大的其他用户社区,已经解决了大多数问题。

然而,除了其他用户提到的内容之外,您可能还想考虑PHP已经存在的大量漏洞(http://www.securityfocus.com/vulnerabilities)。

如果其中一些问题得到解决,并且可能与我们在Adobe AIR中看到的类似,那么桌面应用程序的生成可能会有很好的基础。

答案 11 :(得分:0)

如果你要将它用作Web环境之外的编程语言,那么PHP就是新的perl。如果我要编写应用程序,我希望能够使用一个非常有用的环境。如果没有第三方应用程序,调试php程序会很麻烦。

答案 12 :(得分:0)

我认为将PHP用于网络或桌面应用程序,只是不同的库,没有任何区别。 Qt和GTK +都是PHP的可用产品,如果有人花时间编写这样的绑定,这意味着比有人将它用于桌面更多。

在我看来,PHP在网络上的成功是因为没有有效的选择:换句话说,PHP就更糟了。在桌面世界中,它不是那么幸运,它应该与更强大的竞争者竞争...我会在PHP之前亲自选择其他语言。