Re: [討論] 為什麼不要用c++寫網站
※ 引述《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。
這會不會,太花人力成本了一點?
窮,去做窮該做的事。
--
推,這才是從整個系統來看的角度。
從此鄙視鏈多了一個窮鬼套餐,c,cpp
通常我看到的情形,業界C++ 寫 CGI當backend,都不是用來
做IO存取的。最經典的就是做 web service 的 分發 gateway
,快速分發流量到各服務。這時候C++ 的價值就突出了。
那如果這個web service是CPU bound呢?
取char * 傳進來的字串長度是用sizeof -> 我笑了。
C++ 也是有相關的 Framework 啦。只是,軟體開發是一個
團隊。不是說想用什麼就用什麼。日後的維護成本總得考量
好像大家都忘了 prototyping 階段,請用 C++ 表演
不過我有個學弟寫 C++ 熟的,還真的認領了一個 web frame
work,人家現在在某 N 公司上班,除了羨慕還是羨慕
Push
確實
推,其實現代 jvm 速度已經沒有那麼慢了
中肯
問問仔不會認真看這篇啦
jvm佔用記憶體阿 外加某些工具啟動龜速 運作也馬乎也
沒什麼優勢
c++ compile真的是很耽誤開發
真想挑戰 c++ cgi 可以試試 cgicc 這 library
sizeof 是真的看過有人這樣做,出bug的時候真沒想到是這裡
推推
sizeof XDDD 很有畫面
確實 每次compile 也超耗時
回一下DrTech 的應用,要不要C++真的沒差。
君不見kafka 一樣可以裝你的網卡隨便填滿。
因為神人前輩們已經把需要C++好處的中間層完成了
變成只需要使用中間層就好 減少了需要C++的情境(工作)
甚"至"
libstdc++很大啊, 有的還放不下
推
推這篇專業
謝謝回應與交流不同看法
推推
26
首Po現代網站開發一定有框架 幾乎所有的操作都有現成的函數讓你用 也是就說 就算用c++開發也只是在call框架的API 把資料丟來丟去而已10
: : 在 c++ 也就只是一行 function call 而已了 : : 那為什麼不用c++開發網站就好了? :3
其實也沒有那麼陌生,經歷過php, Rails時代的人都有被cgi折磨過 只不過現代server side都轉向JavaEE那個樣子,類似Asp.net那樣依附個CGI還是 蠻少見的。 現代的web無論是spring還是go那邊都是走向自己從network connection開始管。 (我知道Spring有內置Tomcat)12
如果是我的話也許寧願選擇用 C 也不太會選擇用 C++ 開發網站。 C 和 C++ 的好處在於沒有節操,大部分軟體工程師講得出來的程式語言,都會有記憶體 範圍保護以及垃圾回收的設計。 但是 C 和 C++ 沒有,C 和 C++ 覺得這是工程師應該要負責的事情。 而大部分的 HTTP 伺服器,如果是使用 nginx 或是 apache 的話,基本上這兩套都是純
79
[心得] 軟體考古系列:JSON 的故事專門講軟體開發故事的 Podcast 節目 CoRecursive 最近訪問了 JSON 之父 — Douglas Crockford(以下簡稱 Doug),說他是怎麼想出 JSON 這個現在大家都在用的資 料格式,以及他是怎麼推廣它的。 我覺得這段歷史很有趣,就順手整理一下,翻譯成中文,希望可以娛樂到一些人 :) 本文也同時刊載在73
[閒聊] Pixiv遇到私信繪圖委託是常態嗎?如題 我發不到10張圖的菜逼八啦 昨天遇到有人私信委託 遇到這種私信是常態嗎?16
[討論] 這是前端junior常犯的錯誤嗎?一般來說 前端不是都會抓各個key的值放在各個元件裡嗎? 那怎麼會有這種顯示一整個json object的bug? 這是前端junior常犯的錯誤嗎? --16
[請益] 資料庫connection太多導致回應變慢工作上遇到了一個找不太到原因的狀況 語言: Java mybait 新增了一個功能後 endpoint A: 下面有一個method大概會打DB query 200次15
[請益] 後端精進的方向?各位好,我先講一下個人背景 目前是竹科系統廠網通工程師,資歷六年,年薪大概80-90 處理的事情大多就是一般系統廠的系統開發、解bug、主要是寫c 碰的東西通常都是Embedded system相關的軟韌體、通訊溝通的介面等等等 工作內容一部分是網頁前端,前端框架是用Backbone.js,後端CGI就是純PHP,7
[代發]45歲MIS中年轉業建議代PO,原作者無Ptt帳號,希望轉發PTT,原文連結或參與討論可前往 問題: 回答:8
[請益] Ajax傳值到後端問題(已解決)各位大神好: 這兩天自己用Google Map API 弄一個地址查詢 在做連動式下拉選單時抓不到 Ajax 傳的值 不論用$request, $_GET 或 $_POST 裡頭都是空的 Ajax 用GET 或 POST 傳都一樣6
[代發]45歲MIS中年轉業建議原作者無Ptt帳號,希望轉發PTT,原文連結或參與討論可前往 問題: 回答: 酸酸小信箱收到的問題: 請教各位前輩,45歲的小企業mis,5
Re: [問題] 為什麼任天堂不弄成就系統?技術雖然是一個問題 但也不算是難到寫不出來的東西 獎盃系統有些人誤解只是一個成就系統 但現代獎盃系統都要有社群功能才算完整 不然只能算半套 所以後台一定要有DB跟統計功能 前端也要有顯示 一個玩家一個遊戲算5筆record(五個成就)1
[問題] Queen Mary推薦信提供方式大家好,有關英國Queen Mary(我是想要申請LLM)的推薦信提供方式,看了以下網站上 的說明後還是不太理解,請問是否有申請過的人可以幫忙說明一下~~(不懂為何要有「 open reference」的概念…) 是說有可能有以下兩種方式嗎: 1. 老師已提供推薦信給你,那就自己彩色掃描後,上傳至申請系統;或