Re: [討論] 為什麼不要用c++寫網站

作者: Lordaeron (Terry)   2024-06-19 22:33:03
※ 引述《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:00
Push
作者: Lhmstu (lhmstu)   2024-06-20 16:13:00
確實
作者: alihue (wanda wanda)   2024-06-20 16:24:00
推,其實現代 jvm 速度已經沒有那麼慢了
作者: TSMCfabXX (台積新產品)   2024-06-20 16:35:00
中肯
作者: B0988698088 (廢文少女小円♥)   2024-06-20 17:57:00
問問仔不會認真看這篇啦
作者: superpandal   2024-06-20 18:05:00
jvm佔用記憶體阿 外加某些工具啟動龜速 運作也馬乎也沒什麼優勢
作者: brucetu (sec)   2024-06-20 19:10:00
c++ compile真的是很耽誤開發
作者: descent (「雄辯是銀,沉默是金」)   2024-06-20 19:33:00
真想挑戰 c++ cgi 可以試試 cgicc 這 library
作者: NDark (溺於黑暗)   2024-06-20 19:58:00
sizeof 是真的看過有人這樣做,出bug的時候真沒想到是這裡
作者: v86861062 (數字人:3)   2024-06-20 20:08:00
推推
作者: tsaigi (菜雞)   2024-06-20 20:35:00
sizeof XDDD 很有畫面
作者: qwe78971 (小信)   2024-06-20 21:51:00
確實 每次compile 也超耗時
作者: Lordaeron (Terry)   2024-06-20 23:48:00
回一下DrTech 的應用,要不要C++真的沒差。君不見kafka 一樣可以裝你的網卡隨便填滿。
作者: elfkiller2 (Re0)   2024-06-21 00:22:00
因為神人前輩們已經把需要C++好處的中間層完成了變成只需要使用中間層就好 減少了需要C++的情境(工作)
作者: sssyoyo (柚子)   2024-06-21 01:00:00
甚"至"
作者: legnaleurc (CA)   2024-06-21 02:30:00
libstdc++很大啊, 有的還放不下
作者: kuan (kuan_hiroshi)   2024-06-21 05:06:00
作者: viper9709 (阿達)   2024-06-21 08:17:00
推這篇專業
作者: DrTech (竹科管理處網軍研發人員)   2024-06-21 20:01:00
謝謝回應與交流不同看法
作者: iamOsaka (歐沙卡)   2024-06-22 04:41: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:00
Push
作者: Lhmstu (lhmstu)   2024-06-20 08:13:00
確實
作者: alihue (wanda wanda)   2024-06-20 08:24:00
推,其實現代 jvm 速度已經沒有那麼慢了
作者: TSMCfabXX (台積新產品)   2024-06-20 08:35:00
中肯
作者: B0988698088 (廢文少女小円♥)   2024-06-20 09:57:00
問問仔不會認真看這篇啦
作者: superpandal   2024-06-20 10:05:00
jvm佔用記憶體阿 外加某些工具啟動龜速 運作也馬乎也沒什麼優勢
作者: brucetu (sec)   2024-06-20 11:10:00
c++ compile真的是很耽誤開發
作者: descent (「雄辯是銀,沉默是金」)   2024-06-20 11:33:00
真想挑戰 c++ cgi 可以試試 cgicc 這 library
作者: NDark (溺於黑暗)   2024-06-20 11:58:00
sizeof 是真的看過有人這樣做,出bug的時候真沒想到是這裡
作者: v86861062 (數字人:3)   2024-06-20 12:08:00
推推
作者: tsaigi (菜雞)   2024-06-20 12:35:00
sizeof XDDD 很有畫面
作者: qwe78971 (小信)   2024-06-20 13:51:00
確實 每次compile 也超耗時
作者: Lordaeron (Terry)   2024-06-20 15:48:00
回一下DrTech 的應用,要不要C++真的沒差。君不見kafka 一樣可以裝你的網卡隨便填滿。
作者: elfkiller2 (Re0)   2024-06-20 16:22:00
因為神人前輩們已經把需要C++好處的中間層完成了變成只需要使用中間層就好 減少了需要C++的情境(工作)
作者: sssyoyo (柚子)   2024-06-20 17:00:00
甚"至"
作者: legnaleurc (CA)   2024-06-20 18:30:00
libstdc++很大啊, 有的還放不下
作者: kuan (kuan_hiroshi)   2024-06-20 21:06:00
作者: viper9709 (阿達)   2024-06-21 00:17:00
推這篇專業
作者: DrTech (竹科管理處網軍研發人員)   2024-06-21 12:01:00
謝謝回應與交流不同看法
作者: iamOsaka (歐沙卡)   2024-06-21 20:41:00
推推
作者: knme (knem)   2024-06-23 11:06:00
推推
作者: Ekmund (是一隻小叔)   2024-06-25 09:40:00
其實那段什麼bound就把大多故事講完了...
作者: asdkmm5050 (Mr xx)   2024-06-25 18:41:00
推推

Links booklink

Contact Us: admin [ a t ] ucptt.com