Language agnostic 用于web开发的脚本语言与编译语言 虽然我来自纯PHP的编程背景,但我也在C语言和C++上花了很多时间。

Language agnostic 用于web开发的脚本语言与编译语言 虽然我来自纯PHP的编程背景,但我也在C语言和C++上花了很多时间。,language-agnostic,Language Agnostic,我真的不想引发任何火焰战争,但是: 在网站开发中,什么时候应该使用脚本语言而不是编译语言? (反之亦然) 为了澄清这个问题,为了定义这个问题,我定义了一个“脚本语言”,它是指一种解释的语言,如PHP、Python或Ruby,以及一种“编译语言”,意指一种强类型的、编译的语言,如C++、C++、java或VB。 在 …您希望在何处以及如何部署应用程序 …贵公司工程师的技能 …您希望与哪些第三方组件集成或合并 部署 如果您需要能够在几十种不同的平台上部署解决方案,您可能会发现使用PHP比使用Ja

我真的不想引发任何火焰战争,但是:

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

为了澄清这个问题,为了定义这个问题,我定义了一个“脚本语言”,它是指一种解释的语言,如PHP、Python或Ruby,以及一种“编译语言”,意指一种强类型的、编译的语言,如C++、C++、java或VB。 在

  • …您希望在何处以及如何部署应用程序
  • …贵公司工程师的技能
  • …您希望与哪些第三方组件集成或合并
部署 如果您需要能够在几十种不同的平台上部署解决方案,您可能会发现使用PHP比使用Java更好(例如)。有成千上万的Java托管提供商,但可能有数百万的PHP托管提供商。(我这样说是作为一个Java的头头,他觉得PHP充其量只是“一般的”。)

这也适用于操作系统。除了Mono,.Net东西将限制您使用基于Windows的部署(或者落后于最前沿,必须非常非常严格地测试您引入的每一个第三方组件,以确保它没有Mono…问题)

技能 在一个环境或语言中跟上速度是非常重要的。对我们大多数人来说,掌握基本知识是相当快的,但你可能不会做出最好的架构/设计决策,因为你(相对而言)在环境/语言方面比较弱。技能决定胜负

与此相关:技能设置雇佣计数。雇佣具有3-4年经验的PHP开发人员、或具有3-4年经验的Java开发人员、或C#dev或……,是否更容易(和/或更便宜)

购买/查找/集成vs.构建 在您的目标开发领域中,您希望与哪些服务器端组件或包集成?PHP有大量可用的东西,Java、C#或ASP.Net也是如此。但是它们是不同的东西(大体上),所以你需要看看你真正想要使用什么

结论 因此,我认为这不是一个编译与脚本(在当今世界)的问题,更多的是一个什么最适合你尝试做的其他标准的问题

增编:两者/和
当然,总是有“两者/和”。例如,我现在在两个主要的、不相关的环境中工作,都使用脚本和编译资源的组合。(其中一个是Tomcat上通过Rhino的Java+JavaScript,另一个是IIS上编译的COM对象+JScript[同样,服务器端]。

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

专业的

  • 预编译的web应用程序易于部署,通常只需更新bin目录即可
  • 预编译的web应用程序性能良好
  • 你不需要上传源代码,这很好
骗局

  • 更新预编译的web应用程序通常意味着web应用程序被重置,因此除非您更改会话状态,否则它将结束所有会话并注销所有人
  • 重建一个大型web应用程序可能需要一些时间,这会增加您最初编写更改所需的时间。我有时不耐烦
另一方面,.net有一个很好的IDE,允许您在一个包中调试从后端(C#,VB.net)到前端(Javascript)的所有内容。
但再一次;两者都有优点和缺点。

我是各地编译语言的忠实粉丝,如果仅仅是为了静态类型的话。另一方面,脚本语言非常方便——无需处理二进制文件,只需处理文本文件,这是web服务器的一大优势


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

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

  • 写代码的速度有多快
  • 修复我的代码有多快
  • 重构代码的速度有多快
  • 测试我的代码有多快
也就是说,我关心的是最慢链接的速度:我自己。对于类似Twitter的负载,其他任何东西都足够快

今天,我对一个新项目的评估清单上的第一名是

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


啊,Python是。

程序员可以用任何语言编写好的/坏的快速/慢速可伸缩/不可伸缩代码。尽管如此,一些语言和技术使其更难实现。根据我的经验,使用脚本语言可以比使用Java等编译语言更快地生成中小型应用程序。然而,随着应用程序规模的增长,编译语言变得更适合于任务我认为这来自于强类型对象、管理任务的更深层次的体系结构、,还有更多的QA框架来验证事情在发生变化时是否按其应有的方式运行。

我不会对编译语言和解释语言进行如此明显的区分——这实际上只是一个实现细节,而且往往会随着时间的推移而变化(比语言本身的变化更快)。这一点也要感谢Facebook。另一个例子是——我喜欢用它进行web开发——我的首选现在运行的是一个VM,从这个意义上讲,它至少和Java一样经过编译

因此,我认为需要关注的问题是la的表现力