legs+ 发表于 2024-1-15 19:43:06

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

【问】



是因为语言特性本身导致 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嘛。



legs+ 发表于 2024-1-15 19:44:21

其实,c++进行web开发,受困于string类型和ORM
当然,进行底层开发是不二的选择
页: [1]
查看完整版本: 为什么说 C/C++ 不适合做 Web 开发?