为什么像C这样的语言没有被用于Web开发?编译带来的速度提升对于重负载网站肯定是有用的,但为什么没有应用呢?
为什么像C这样的语言没有被用于Web开发?编译带来的速度提升对于重负载网站肯定是有用的,但为什么没有应用呢?
另一个好处在于,在大型服务器上,执行速度并不像连接速度那样重要。大部分时间都花费在发送和接收数据上,而不是进行大量的计算。实际上,在某些需要大量计算的网络服务中,这些繁重的计算可能已经作为编译程序运行。
此外,解释性语言无需编译(在大型项目中可能需要耗费时间),因此更适合 web 解决方案的通常敏捷开发。
大多数网络应用程序与数据库通信。这些应用程序中绝大部分时间都在与数据库通信。因此,对于任何给定的请求,应用程序服务器中只有极少量的处理时间,然后就会长时间等待数据库响应。由于任何请求中实际应用程序服务器代码的百分比非常小,通过使用C/C++编写代码来优化该代码只能获得微小的、可能不明显的响应时间改善。
因此,与其专注于C/C++并节省每一个CPU周期,还不如关注开发人员的生产力。开发人员非常昂贵。他们通常在脚本语言甚至Java中比在C/C++中更具生产力。
当然,也有例外情况。如果您的应用程序某些请求需要消耗大量CPU或内存,则应使用C/C++编写它们。但是,对于您应用程序的其他部分,更好的做法是关注算法、数据结构、与数据库的通信和开发人员生产力的优化,而不是关注语言的优化。
脚本语言相较于C语言具有以下优势:
早期网页应用程序使用C语言 - 我曾经写过各种CGI脚本。
然而,随着时间的推移,更高效的语言(比如C#和Java,当然不仅限于这些)已被证明对于网络应用程序来说“足够高效”。请注意,C#和Java都编译为中间代码,然后JIT编译,实现“大致”原生代码性能。那么我们为什么要使用C呢?
即使传统上“真正解释”的语言(例如PHP)这些天也通常在执行时编译,就我所知。(我对PHP的了解是所有二手的。也许它一直被编译...同样我确定仍有一些网络平台始终是解释的。)
最初,后端代码(我想这就是你所说的)中的许多工作都是与文本相关的。他们要么直接从头构建页面,要么通过将数据库中的数据与模板组合来构建页面。
C语言并不总是适合文本处理。C字符串非常基础,虽然在C中进行文本处理当然可以执行得很快,但通常需要更长时间的开发,并且需要比一些更加方便的语言具有更深入的技能才能正确地完成。
这主要是因为它们快速且易于随时更改。编译语言需要与服务器匹配的开发环境。使用脚本,您可以使用FTP工具直接编辑文本,然后保存。从任何计算机或操作系统类型进行此操作的能力已经多次拯救了我的生命(或者正确地说是我的网站的生命)。