作者Lordaeron (Terry)
看板Soft_Job
标题Re: [讨论] 为什麽不要用c++写网站
时间Wed Jun 19 22:33:03 2024
※ 引述《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。
这会不会,太花人力成本了一点?
穷,去做穷该做的事。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 36.229.131.153 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1718807585.A.88F.html
1F:推 wuyiulin: 推,这才是从整个系统来看的角度。 06/19 23:27
2F:推 neo5277: 从此鄙视链多了一个穷鬼套餐,c,cpp 06/19 23:39
3F:→ DrTech: 通常我看到的情形,业界C++ 写 CGI当backend,都不是用来 06/20 00:06
4F:→ DrTech: 做IO存取的。最经典的就是做 web service 的 分发 gateway 06/20 00:06
5F:→ DrTech: ,快速分发流量到各服务。这时候C++ 的价值就突出了。 06/20 00:06
6F:推 s06yji3: 那如果这个web service是CPU bound呢? 06/20 01:03
7F:→ antpro: 取char * 传进来的字串长度是用sizeof -> 我笑了。 06/20 01:46
8F:→ antpro: C++ 也是有相关的 Framework 啦。只是,软体开发是一个 06/20 01:50
9F:→ antpro: 团队。不是说想用什麽就用什麽。日後的维护成本总得考量 06/20 01:51
10F:推 s25g5d4: 好像大家都忘了 prototyping 阶段,请用 C++ 表演 06/20 01:55
11F:→ s25g5d4: 不过我有个学弟写 C++ 熟的,还真的认领了一个 web frame 06/20 02:00
12F:→ s25g5d4: work,人家现在在某 N 公司上班,除了羡慕还是羡慕 06/20 02:00
13F:推 haydou: Push 06/20 06:54
14F:推 Lhmstu: 确实 06/20 08:13
15F:推 alihue: 推,其实现代 jvm 速度已经没有那麽慢了 06/20 08:24
16F:推 TSMCfabXX: 中肯 06/20 08:35
17F:推 B0988698088: 问问仔不会认真看这篇啦 06/20 09:57
18F:→ superpandal: jvm占用记忆体阿 外加某些工具启动龟速 运作也马乎也 06/20 10:05
19F:→ superpandal: 没什麽优势 06/20 10:06
20F:推 brucetu: c++ compile真的是很耽误开发 06/20 11:10
21F:推 descent: 真想挑战 c++ cgi 可以试试 cgicc 这 library 06/20 11:33
22F:推 NDark: sizeof 是真的看过有人这样做,出bug的时候真没想到是这里 06/20 11:58
23F:推 v86861062: 推推 06/20 12:08
24F:推 tsaigi: sizeof XDDD 很有画面 06/20 12:35
25F:推 qwe78971: 确实 每次compile 也超耗时 06/20 13:51
26F:→ Lordaeron: 回一下DrTech 的应用,要不要C++真的没差。 06/20 15:48
27F:→ Lordaeron: 君不见kafka 一样可以装你的网卡随便填满。 06/20 15:48
28F:推 elfkiller2: 因为神人前辈们已经把需要C++好处的中间层完成了 06/20 16:22
29F:→ elfkiller2: 变成只需要使用中间层就好 减少了需要C++的情境(工作) 06/20 16:22
30F:推 sssyoyo: 甚"至" 06/20 17:00
31F:→ legnaleurc: libstdc++很大啊, 有的还放不下 06/20 18:30
32F:推 kuan: 推 06/20 21:06
33F:推 viper9709: 推这篇专业 06/21 00:17
34F:推 DrTech: 谢谢回应与交流不同看法 06/21 12:01
35F:推 iamOsaka: 推推 06/21 20:41
36F:推 knme: 推推 06/23 11:06
37F:推 Ekmund: 其实那段什麽bound就把大多故事讲完了... 06/25 09:40
38F:推 asdkmm5050: 推推 06/25 18:41