【发布时间】:2010-06-03 13:02:09
【问题描述】:
虽然我来自编程的 Web 开发方面的纯 PHP 背景,但我也花了很多时间在桌面上使用 C# 和 C++。
我真的不想引发任何激烈的战争,但是:
什么时候应该使用脚本语言而不是编译语言进行网站开发?
(反之亦然)
为了澄清,为了这个问题,我将“脚本语言”定义为解释语言,如 PHP、Python 或 Ruby,将“编译语言”定义为强类型的编译语言,如 C# 、C++、Java 或 VB。
【问题讨论】:
虽然我来自编程的 Web 开发方面的纯 PHP 背景,但我也花了很多时间在桌面上使用 C# 和 C++。
我真的不想引发任何激烈的战争,但是:
什么时候应该使用脚本语言而不是编译语言进行网站开发?
(反之亦然)
为了澄清,为了这个问题,我将“脚本语言”定义为解释语言,如 PHP、Python 或 Ruby,将“编译语言”定义为强类型的编译语言,如 C# 、C++、Java 或 VB。
【问题讨论】:
开...
如果您需要能够在数十种不同可能平台中的任何一种上部署解决方案,您可能会发现使用 PHP 比使用 Java 更好(例如)。那里有成千上万的 Java 托管服务提供商,但可能有数百万的 PHP 托管服务提供商。 (我说这是一个 Java 头,他认为 PHP 充其量是“一般”。)
这也适用于操作系统。撇开 Mono 不谈,.Net 的东西会限制你使用基于 Windows 的部署(或者落后于最前沿,并且必须非常、非常严格地测试你引入的每一个 3rd 方组件,以确保它没有 Mono ...问题)。
在一种环境或语言中跟上进度并非易事。对于我们大多数人来说,掌握基础知识非常快,但您可能没有做出最好的架构/设计决策,因为您(相对而言)在环境/语言方面很薄弱。技能组合很重要。
与此相关:技能组招聘计数。雇用具有 3-4 年经验的 PHP 开发人员,或具有 3-4 年经验的 Java 开发人员,或 C# 开发人员,或......更容易(和/或更便宜)吗?
在您的目标开发领域,您希望与哪些服务器端组件或软件包集成? PHP 有一个vast 数组可供它使用,Java 也是如此,C# 或 ASP.Net 也是如此。但它们是不同的东西(总的来说),所以你需要看看你真正想要使用什么。
所以我认为这不是编译与脚本(在当今世界)的问题,而更多的是其他标准最适合你的问题'正在尝试做。
当然,总是有“两者/和”。例如,我现在确实在两个主要的、不相关的环境中工作,都使用脚本和编译资源的组合。 (其中一个是在 Tomcat 上通过 Rhino 的 Java + JavaScript,另一个是在 IIS 上编译的 COM 对象 + JScript [再次,服务器端]。)
【讨论】:
程序员可以用任何语言编写好/坏的快速/慢速可扩展/不可扩展代码。虽然,一些语言和技术使它更难做到。根据我的经验,使用脚本语言可以比使用 Java 等编译语言更快地生成中小型应用程序。然而,随着应用程序规模的增长,编译语言变得更适合这项任务,我认为这来自于强类型对象、用于管理任务的更深层次的体系结构以及更多的 QA 框架来验证事物在发生变化时是否正常运行。
【讨论】:
我发现这主要是一个意见问题。起初我讨厌 asp.net 提供的预编译 Web 应用程序,但我已经习惯了,所以我不再讨厌它了。它有优点和缺点:
专业版
骗子
我一直很喜欢只更新 PHP 项目中的一个文件而无需重新构建项目或类似的东西是多么容易,另一方面,.net 有一个很好的 IDE 可以让您调试所有内容,从后端(C#、VB.net)到前端(Javascript),在一个包中。 但又一次;各有优缺点。
【讨论】:
我不会在编译语言和解释语言之间做出如此明显的区分——这实际上只是一个实现细节,并且往往会随着时间而变化(比语言本身的变化要快。)举个例子——感谢 Facebook,@ 987654321@也是。另一个恰当的例子 - 我喜欢使用 Scheme 进行 Web 开发 - 而我最喜欢的 Scheme implementation 现在运行一个 VM,从这个意义上说,它至少与 Java 一样编译。
所以我认为要关注的问题是语言的表现力、性能和易于部署 - 编译与解释仅在与这些事情相关的范围内才重要。
【讨论】:
我是编译语言的忠实拥护者,哪怕只是为了静态类型。另一方面,脚本语言非常方便——无需处理二进制文件,只有文本文件,这对 Web 服务器来说是一大胜利。
最后,这并不重要 - 使用任何你知道并觉得最适合这份工作的语言。
【讨论】:
我认为速度是 Web 应用程序的一个关键问题,尤其是
也就是说,我关心的是最慢链接的速度:我自己。对于类似 Twitter 的加载,其他任何东西都足够快。
今天,我的新项目评估列表中的第一名是Tornado and Python。
当然,如果我可以选择平台。
啊,Python 是among the fastest in scripting languages。
【讨论】:
对于脚本语言,任何拥有您软件副本的人都可能修改您的源代码,因为它是开源的。
对于编程语言,任何拥有该软件副本的人都不能简单地修改您的源代码,因为它是经过编译的。
所以我猜,这取决于你的喜好。
【讨论】: