代码之家  ›  专栏  ›  技术社区  ›  Unknown

PHP/Rails/DJANG/ASP网站应该用C++编写吗?

  •  4
  • Unknown  · 技术社区  · 17 年前

    现在,你可能已经准备好响应C++是如何做一个可怕的语言做网站,在网站上,瓶颈是在数据库中。

    但是我读了这篇文章:

    http://art-blog.no-ip.info/cppcms/blog/post/42

    他的观点正确吗?

    8 回复  |  直到 17 年前
        1
  •  17
  •   James Bennett    17 年前

    你链接到的文章的问题在于,当作者问“瓶颈”在哪里时,他显然不知道自己在说什么;事实上,有人拥有的web服务器比数据库服务器多并不意味着“数据库不能在问题所在的位置”。通常所说的“数据库是瓶颈”与每个曾经对web应用程序进行运行时评测的人所学到的相同。

    • 解析传入请求:50ms
    • 查询数据库:350ms
    • 为响应呈现HTML:50ms
    • 将响应发送回:50ms

    如果您看到这样的故障,其中数据库查询占应用程序实际运行时间的70%,那么您会正确地得出结论,数据库是瓶颈。而这正是大多数人发现当他们 分析他们的应用程序(通常,数据库完全控制着处理时间,因此在其余的处理过程中选择语言不会造成任何区别)。

    事实证明,涉及的数据库服务器数量无关紧要;这里有一句名言是,像你链接的那篇文章的作者这样的人是那种听说一个女人要花九个月才能生孩子的人,并且假设九个女人一起工作可以在一个月内生完孩子的人。在数据库方面:如果一个给定的查询在一个给定的数据库上执行需要100毫秒,那么添加更多的数据库服务器不会使其中任何一个能够更快地执行该查询。添加更多数据库服务器的原因是为了能够处理更多的并发请求,并防止数据库过载,而不是让孤立的请求运行得更快。

    然后,您将进入扩展应用程序的常规舞蹈:缓存以减少检索数据或呈现响应所花费的总时间,负载平衡以增加您可以服务的并发请求数量,分片和更高级的数据库设计方案以避免在负载下陷入困境,等等。

    但是,您会注意到,这些都与正在使用的编程语言没有任何关系,因为其他因素所花费或节省的时间量再次大大超过了“快”或“慢”语言所获得或损失的时间量(当然,事实上并没有这样的事情;这在很大程度上取决于问题领域和程序员的技能,以至于你无法进行有意义的一般性比较)。

    不管怎么说,这有点冗长和杂乱无章,所以我将用一个一般性的指导原则来结束它:如果你看到有人争论“你应该用X语言构建,因为它运行得更快”,这是一个致命的赠品,他们对真实世界的性能或扩展一无所知。因为,毕竟,如果归结到“用最快的语言编写”,他们会建议我们都使用汇编:)

        2
  •  11
  •   Tim Sullivan    17 年前

    服务器的一次性固定成本为几千美元。程序员的时间花费远不止这些。当然,用C++编写网站会降低硬件成本,但会大大减缓开发速度。因此,如果你可以用Ruby来代替你的开发,而不是C++,那么你就可以为额外的服务器支付一个月的时间。

    “更好”比“更快”更重要。

        3
  •  3
  •   Thomas L Holaday    17 年前

    是的,如果网站用C++语言编写的话,网站会更快。是的,它们可以服务更多的人,更具可扩展性,更高效。但这是否足以让我们失去口译语言给我们带来的所有好处呢?程序员的幸福感、开发时间、易用性、可移植性,还有更多我无法提及的东西。

    正确的工作工具,C++,网站开发不是其中之一。

        4
  •  3
  •   Tim Sullivan    17 年前

    我不愿意说服务器的一次性成本是几千美元,因为有些服务器的成本是几十万美元,我敢说是几百万美元。许多消息来源将表明,IT行业的最大成本是硬件,而不是人力。但是为了比较语言,我们需要比较它们,而不是比较硬件。

    Ruby、Python、PHP和Groovy等语言背后的思想本质上是快速应用程序开发(RAD)。框架、RubyonRails、Django、CakePHP和Grails是为了更好地促进RAD。这些语言易于使用,使开发人员能够以很少的成本进行设置和开发,并且与其他语言或设置相比,所涉及的时间缩短。

    是对还是错?这都是个人意见,但最终项目的需求将确定哪种工具集最适合。如果您的应用程序流量较低,并且您希望在几个月内开发并使用它,那么使用前面提到的语言和/或框架之一将是理想的选择。

    但C++、.NET和J2EE又如何呢?一切都有一个地方。这些项目往往具有更高的前期成本,与构建项目、设置开发环境和进行实际开发的时间和精力相关。但是由它们构建的语言和框架更适合于可伸缩性,以适应繁重的通信量或计算。

    以Facebook为例。最初的站点是原型化的,部署为PHP应用程序,用户群相对较小。随着网站发展成为怪物,我们现在知道了,他们通过在后端实现J2EE,同时在前端使用现有的PHP脚本来扩展应用程序。

    对于有J2EE开发和Python/PHP经验的人来说,有一组非常明显的优点和缺点。我可以在几天内用PHP构建一个博客,供公众访问,但在J2EE中完成同样的项目可能需要更长的时间。

    请原谅我的术语,但企业语言(J2EE、.Net)需要大量的配置和部署工作。Ruby、PHP和Python不需要,只需打开记事本,编写代码并使用正确的扩展名保存,就可以上传了。

    这有用吗?

        5
  •  2
  •   Artyom    17 年前

    程序员的幸福感、开发时间、易用性、可移植性,还有更多我无法提及的东西

    事实上在C++中开发并不是那么可怕和缓慢的过程。 正当 工具。

    这个项目运行的Wiki是在几天内编写完成的(是的,是用C++编写的)。。。对恐怖C++语言不坏;

    看一看:

    我认为这不是一个缓慢的过程,在晚上的工作,以创建这样的维基: http://art-blog.no-ip.info/wikipp/en/page/main

        6
  •  1
  •   Mark Rogers    17 年前

    不,他的观点无效。这并不是说一种语言比另一种好,而是以C#和java为例,它们只是更先进的现代语言,设计时考虑到了C++的问题。

    如果你不需要的话,就去做垃圾收集之类的事情是没有意义的。此外,各种web框架语言都有许多组件、控件、模块和许多其他部件,无论是开源的还是其他的,都已经由其他开发人员为它们编写,您将彻底改造其他语言中存在的轮子。

    我在C++中总是有一个地方,但是它有点愚蠢或是滑稽可笑,值得推荐你在C++中写得更好的网站。

    (编辑:也许C++是你唯一知道的语言,或者你有很多自制的组件用于网络,但是你仍然可以更好地学习一种用于网站开发的C++派生语言,一旦你知道了C++ + C++,它就很容易学了)。

        7
  •  0
  •   pbreitenbach    17 年前

        8
  •  -3
  •   Up.    17 年前

    最后我检查了一下,php、Ruby和Python都是用C编写的,这不算吗?