※ 引述《brucetu (sec)》之铭言:
: 现代网站开发一定有框架
: 几乎所有的操作都有现成的函数让你用
: 也是就说
: 就算用c++开发也只是在call框架的API
: 把资料丢来丢去而已
: 有人觉得python / .net 写网站比较简单
: 但其实框架包得好
: 就算是c++也没有什么不同吧?
: 例如 python 的 list comprehension
: 或是 .net 的 linq
: 都可以包成一个套件来做啊
: 在 c++ 也就只是一行 function call 而已了
: 那为什么不用c++开发网站就好了?
CGI 这东西,看了这么多人回,都没人讲出来,表示这边的都是高手了。
资O会,以前某套内部的系统是CGI 当底的,后面接的是C。
但当我看到它每一个取char * 传进来的字串长度是用sizeof 时,就该明白....赞啦。
还好它只是检查它长度是否大于0。
鬼扯哪么久,回到正题,用C 接http request,有什么好处呢?
我们先理解一下web application 在做什么呢。
以前:将request 收到的key/value 凑一凑,塞给DB 做insert/update/delete/query
将结果结合html tag 产生response。
现在:将request 收到的key/value 凑一凑,塞给一个叫ORM 的框架,让它帮你
塞给DB 做insert/update/delete/query
将结果凑成一个叫json 的产生response,让"前端"的javascript 帮忙产生对应的
html tag。
看到了没?
"将request 收到的key/value 凑一凑,塞给DB 做" 这样的事
要C++ 来做,是为哪一条? 在写embedded系统,这种什么都穷的系统。
例如你家的router 之类的管理接口,才因为穷有好处,不然,有啥好处?
举例来说,
C++一般来说,处理速度是Java 的两倍,哪会因为用了C++ 而增加两倍的处理能力?
显然不会嘛,因为你还有一段network I/O,一段DB Action,甚致再多一段Disk I/O嘛。
而以CPU vs network I/O 的速度来比,不管是以前还是现在,都不是同一个量
级的对手。而不管是凑html 还是json,都没什么功,甚致都只是memory copy而已。
所以, 在这种基本上是I/O bound 的工作面前,用以CPU bound 为强项的语言。
是不是大材小用了?
再来,每次改完测试,都要重新compile。为了这个大材,还要浪费人力时间去
compile。
这会不会,太花人力成本了一点?
穷,去做穷该做的事。
作者:
wuyiulin (龙破坏剑士-巴斯达布雷达)
2024-06-19 23:27:00推,这才是从整个系统来看的角度。
作者:
neo5277 (I am an agent of chaos)
2024-06-19 23:39:00从此鄙视链多了一个穷鬼套餐,c,cpp
作者:
DrTech (竹科管理处网军研发人员)
2024-06-20 00:06:00通常我看到的情形,业界C++ 写 CGI当backend,都不是用来做IO存取的。最经典的就是做 web service 的 分发 gateway
作者:
wuyiulin (龙破坏剑士-巴斯达布雷达)
2024-06-20 07:27:00推,这才是从整个系统来看的角度。
作者:
neo5277 (I am an agent of chaos)
2024-06-20 07:39:00从此鄙视链多了一个穷鬼套餐,c,cpp
作者:
DrTech (竹科管理处网军研发人员)
2024-06-20 08:06:00通常我看到的情形,业界C++ 写 CGI当backend,都不是用来做IO存取的。最经典的就是做 web service 的 分发 gateway,快速分发流量到各服务。这时候C++ 的价值就突出了。
作者: s06yji3 (阿南) 2024-06-20 09:03:00
那如果这个web service是CPU bound呢?
作者:
antpro (-_*|| 宅)
2024-06-20 09:46:00取char * 传进来的字串长度是用sizeof -> 我笑了。C++ 也是有相关的 Framework 啦。只是,软件开发是一个团队。不是说想用什么就用什么。日后的维护成本总得考量
作者:
s25g5d4 (function(){})()
2024-06-20 09:55:00好像大家都忘了 prototyping 阶段,请用 C++ 表演不过我有个学弟写 C++ 熟的,还真的认领了一个 web framework,人家现在在某 N 公司上班,除了羡慕还是羡慕
作者:
haydou (haydou)
2024-06-20 14:54:00Push
作者:
Lhmstu (lhmstu)
2024-06-20 16:13:00确实
作者:
alihue (wanda wanda)
2024-06-20 16:24:00推,其实现代 jvm 速度已经没有那么慢了
作者: superpandal 2024-06-20 18:05:00
jvm占用内存阿 外加某些工具启动龟速 运作也马乎也没什么优势
作者:
brucetu (sec)
2024-06-20 19:10:00c++ compile真的是很耽误开发
作者:
descent (“雄辩是银,沉默是金”)
2024-06-20 19:33:00真想挑战 c++ cgi 可以试试 cgicc 这 library
作者:
NDark (溺于黑暗)
2024-06-20 19:58:00sizeof 是真的看过有人这样做,出bug的时候真没想到是这里
作者: tsaigi (菜鸡) 2024-06-20 20:35:00
sizeof XDDD 很有画面
回一下DrTech 的应用,要不要C++真的没差。君不见kafka 一样可以装你的网卡随便填满。
因为神人前辈们已经把需要C++好处的中间层完成了变成只需要使用中间层就好 减少了需要C++的情境(工作)
作者:
sssyoyo (柚子)
2024-06-21 01:00:00甚"至"
作者:
kuan (kuan_hiroshi)
2024-06-21 05:06:00推
作者:
DrTech (竹科管理处网军研发人员)
2024-06-21 20:01:00谢谢回应与交流不同看法
作者: s06yji3 (阿南) 2024-06-20 01:03:00
那如果这个web service是CPU bound呢?
作者:
antpro (-_*|| 宅)
2024-06-20 01:46:00取char * 传进来的字串长度是用sizeof -> 我笑了。C++ 也是有相关的 Framework 啦。只是,软件开发是一个团队。不是说想用什么就用什么。日后的维护成本总得考量
作者:
s25g5d4 (function(){})()
2024-06-20 01:55:00好像大家都忘了 prototyping 阶段,请用 C++ 表演不过我有个学弟写 C++ 熟的,还真的认领了一个 web framework,人家现在在某 N 公司上班,除了羡慕还是羡慕
作者:
haydou (haydou)
2024-06-20 06:54:00Push
作者:
Lhmstu (lhmstu)
2024-06-20 08:13:00确实
作者:
alihue (wanda wanda)
2024-06-20 08:24:00推,其实现代 jvm 速度已经没有那么慢了
作者: superpandal 2024-06-20 10:05:00
jvm占用内存阿 外加某些工具启动龟速 运作也马乎也没什么优势
作者:
brucetu (sec)
2024-06-20 11:10:00c++ compile真的是很耽误开发
作者:
descent (“雄辩是银,沉默是金”)
2024-06-20 11:33:00真想挑战 c++ cgi 可以试试 cgicc 这 library
作者:
NDark (溺于黑暗)
2024-06-20 11:58:00sizeof 是真的看过有人这样做,出bug的时候真没想到是这里
作者: tsaigi (菜鸡) 2024-06-20 12:35:00
sizeof XDDD 很有画面
回一下DrTech 的应用,要不要C++真的没差。君不见kafka 一样可以装你的网卡随便填满。
因为神人前辈们已经把需要C++好处的中间层完成了变成只需要使用中间层就好 减少了需要C++的情境(工作)
作者:
sssyoyo (柚子)
2024-06-20 17:00:00甚"至"
作者:
kuan (kuan_hiroshi)
2024-06-20 21:06:00推
作者:
DrTech (竹科管理处网军研发人员)
2024-06-21 12:01:00谢谢回应与交流不同看法
作者:
knme (knem)
2024-06-23 11:06:00推推
作者:
Ekmund (是一只小叔)
2024-06-25 09:40:00其实那段什么bound就把大多故事讲完了...