为什么说 C/C++ 不适合做 Web 开发?

电脑技术 电脑技术 309 人阅读 | 1 人回复 | 2024-01-15

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
【问】



是因为语言特性本身导致 C/C++ 不适合 Web 开发?那么这些特性是什么?
还是因为没有快速开发框架?那为何 C/C++ 社区没有产生这些框架?
【答】


没有不适合啊……在很古老的年代Web就是通过CGI的接口开发的,CGI可以认为就是一种C/C++编写的Web框架(在当时的情况下,Web并没有复杂到需要在Server后面再加上一级框架),本质上来说和后来的Servlet、WSGI差不多,甚至WSGI中有许多命名都还是跟着CGI的。与Servlet/WSGI不同,它还是一种跨语言的框架,可以使用任意语言编写应用,因此后来又开始使用其他语言比如perl来实现CGI程序。FastCGI作为CGI的改进,也可以看成是一种使用进程外通信技术的Web框架(虽然现在一般归类到Web Server,而将Web Server后面封装了常用Web功能的程序叫做框架),到现在最流行的Web Server如Apache和nginx也都是C编写的。
当一个领域需要编写大量的类似功能的代码的时候,就会出现领域专用语言。Web功能的开发一般来说有这些特点:
  • 大量使用字符串类型而较少使用数值类型
  • 大量涉及动态的、非规整的数据而较少涉及整齐的、静态的数组
  • 大量使用临时的数据而很少使用固定的数据
这些特点与传统的C/C++的应用有区别,因而更适合具有以下特点的编程语言:
  • 对字符串有良好支持的
  • 支持模板引擎的
  • 支持动态类型,或有一定动态特性的
  • 支持GC的
后来常用的Web编程语言或多或少有这些特点。你可能会说Java/Go是静态类型,但是Java和Go都有类型反射的功能,可以检查一个引用究竟是什么类型,从而从Object中还原回原始的类型;而C++拿到一个指针完全就是两眼一抹黑。
所以与其说C/C++不适合Web开发,不如说它们是没有经过特化的通用语言,而Java、PHP、Python这些是适应了Web开发(或者说互联网开发)需要的特化了的语言,因此更能胜任这些任务。为什么C/C++不编写框架或者加入特性,让C/C++也适应互联网开发呢?因为与其这么做,不如直接编写一个新语言的解释器或者编译器。某种意义上来说,Go有GoTemplate,Python有Jinja2,C的模板引擎那不就是PHP嘛。




回答|共 1 个

legs+ 发表于 2024-1-15 19:44:21| 字数 44 | 显示全部楼层

其实,c++进行web开发,受困于string类型和ORM
当然,进行底层开发是不二的选择
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

热门推荐