※ 引述《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。
這會不會,太花人力成本了一點?
窮,去做窮該做的事。