【问题标题】:Scripting Languages vs. Compiled Languages for web development用于 Web 开发的脚本语言与编译语言
【发布时间】:2010-06-03 13:02:09
【问题描述】:

虽然我来自编程的 Web 开发方面的纯 PHP 背景,但我也花了很多时间在桌面上使用 C# 和 C++。

我真的不想引发任何激烈的战争,但是:

什么时候应该使用脚本语言而不是编译语言进行网站开发?
(反之亦然)

为了澄清,为了这个问题,我将“脚本语言”定义为解释语言,如 PHP、Python 或 Ruby,将“编译语言”定义为强类型的编译语言,如 C# 、C++、Java 或 VB。

【问题讨论】:

标签: language-agnostic


【解决方案1】:

这取决于:-)

开...

  • ...您希望在何处以及如何部署应用程序
  • ...贵组织工程师的技能组合
  • ...您想要集成或合并的第三方组件

部署

如果您需要能够在数十种不同可能平台中的任何一种上部署解决方案,您可能会发现使用 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 [再次,服务器端]。)

【讨论】:

  • 完全同意 PHP 托管服务提供商的观点。虽然我不是编写 PHP 的忠实拥护者,但我必须这样做,因为顶级托管服务提供商不支持 Java。
【解决方案2】:

程序员可以用任何语言编写好/坏的快速/慢速可扩展/不可扩展代码。虽然,一些语言和技术使它更难做到。根据我的经验,使用脚本语言可以比使用 Java 等编译语言更快地生成中小型应用程序。然而,随着应用程序规模的增长,编译语言变得更适合这项任务,我认为这来自于强类型对象、用于管理任务的更深层次的体系结构以及更多的 QA 框架来验证事物在发生变化时是否正常运行。

【讨论】:

    【解决方案3】:

    我发现这主要是一个意见问题。起初我讨厌 asp.net 提供的预编译 Web 应用程序,但我已经习惯了,所以我不再讨厌它了。它有优点和缺点:

    专业版

    • 预编译的 Web 应用程序易于部署,通常您只需更新 bin 目录
    • 预编译的 Web 应用程序性能良好
    • 您不必上传源代码,恕我直言。

    骗子

    • 更新预编译的 Web 应用程序通常意味着 Web 应用程序已重置,因此除非您更改会话状态,否则它将结束所有会话并注销所有人
    • 重新构建大型 Web 应用程序可能需要一些时间,这会与您最初编写更改所花费的时间相加。我有时不耐烦。

    我一直很喜欢只更新 PHP 项目中的一个文件而无需重新构建项目或类似的东西是多么容易,另一方面,.net 有一个很好的 IDE 可以让您调试所有内容,从后端(C#、VB.net)到前端(Javascript),在一个包中。 但又一次;各有优缺点。

    【讨论】:

      【解决方案4】:

      我不会在编译语言和解释语言之间做出如此明显的区分——这实际上只是一个实现细节,并且往往会随着时间而变化(比语言本身的变化要快。)举个例子——感谢 Facebook,@ 987654321@也是。另一个恰当的例子 - 我喜欢使用 Scheme 进行 Web 开发 - 而我最喜欢的 Scheme implementation 现在运行一个 VM,从这个意义上说,它至少与 Java 一样编译。

      所以我认为要关注的问题是语言的表现力、性能和易于部署 - 编译与解释仅在与这些事情相关的范围内才重要。

      【讨论】:

        【解决方案5】:

        我是编译语言的忠实拥护者,哪怕只是为了静态类型。另一方面,脚本语言非常方便——无需处理二进制文件,只有文本文件,这对 Web 服务器来说是一大胜利。

        最后,这并不重要 - 使用任何你知道并觉得最适合这份工作的语言。

        【讨论】:

        • 编译和静态类型是正交的考虑。例如,有些 Scheme 编译器可以编译为本机代码。
        【解决方案6】:

        我认为速度是 Web 应用程序的一个关键问题,尤其是

        • 写我的代码有多快
        • 修复我的代码有多快
        • 重构我的代码有多快
        • 测试我的代码有多快

        也就是说,我关心的是最慢链接的速度:我自己。对于类似 Twitter 的加载,其他任何东西都足够快。

        今天,我的新项目评估列表中的第一名是Tornado and Python

        当然,如果我可以选择平台。

        啊,Python 是among the fastest in scripting languages

        【讨论】:

        • 啊,现在你让我对 Tornado 感兴趣了 :)。通读文档,它似乎是一个非常好的、简单的框架。你知道有什么好的开源项目使用它吗?我想看看它在现实生活中的一些用途......
        • 哦,没关系,我找到了一些例子:github.com/facebook/tornado/tree/master/demos
        • 它是为支持 FrienfdFeed 而开发的,特别是,它的开发目标是跟上大量持久连接。
        • >> 是最快的脚本语言之一 shootout.alioth.debian.org/u32/…然后想知道这些任务是否显示了有关 Web 应用程序的任何内容以及它们是否显示...shootout.alioth.debian.org/u32/…
        【解决方案7】:

        对于脚本语言,任何拥有您软件副本的人都可能修改您的源代码,因为它是开源的。

        对于编程语言,任何拥有该软件副本的人都不能简单地修改您的源代码,因为它是经过编译的。

        所以我猜,这取决于你的喜好。

        【讨论】:

        • 如今,当您发布软件(以便其他人拥有它的副本)时,您发布了整个项目设置。所以编译可能只是点击一个按钮或运行一些工具。
        猜你喜欢
        • 1970-01-01
        • 2011-08-12
        • 2013-06-19
        • 2011-03-16
        • 1970-01-01
        • 2010-11-18
        • 2011-11-18
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多