我們為什麼不用c++寫網頁?
要回答這個問題首先要明確題主對於寫網頁的定義。
一個網頁往往包含前端、後端兩部分。前端負責頁面的呈現,後端負責數據的處理,可以大概的理解成前端是人的衣服,而後端是人的五臟六腑。
前端的話主要是採用html+css+javascript這樣的組合。html有點像word裡面的操作,告訴瀏覽器,哪裡是題目,哪裡是正文。然後用css去定義這些標題,正文,鏈接的樣式。而JavaScript則讓這些內容能夠動起來,比如有些網站煩人的彈窗,其實就是js里的alert指令完成的。在前端部分里,html和css似乎是不可替代的,JavaScript的話,近年來有typescript等,但都沒能成為主流,c++在前端在的應用似乎是沒有的。
再來說後端部分,後端的語言有很多,市場佔有比例最大的是應該是java,這也是java前幾年就業火熱的一大原因。php作為「世界上最好的語言」,則是一門專門為網頁開發而設計的一門語言,近年來,python的Flask,Django等框架,也漸漸進入人們的視野,airbnb就採用了Django。
那麼為什麼我們不在後端里使用C++呢?這個問題其實,本身是不對的。因為我們並不是不使用,而是使用的比較少。騰訊就是以C++作為開發的主要語言。因為騰訊的產品主要偏向於通訊,而做通訊的大部分都是採用C++來開發的,產品需求決定了團隊,而團隊則決定了傳統。還有一個原因就是,C++雖然開發效率低,但是性能會比java等好。而騰訊這樣大體量的公司,是不在乎開發效率的問題的。
這也就不難理解,為什麼使用C++使用的人少了。
1、開發效率低,現成的類庫少,編譯還存在問題,有時會覺得用別人的庫,還不如自己擼一個輪子。而Python、php等則容易上手很多,甚至一星期就能做一個還過得去的網站。
2、C++語言難,因為C++比較偏向底層的開發,內存,指針,這些東西對於一個入門的開發者來說很傷腦筋,debug的過程很艱難,而且C++很靈活,其它語言的一些語言特性,你基本在C++上面都可以實現,這就使得你做一件事,有了很多條路可以選,這很容易陷入一種怪圈,寫完一種方法覺得不夠優雅,然後再用另一種方法,再寫一次。寫完C++再去寫Java,你會覺得爽快很多。
你要先了解一下網頁製作的原理,真正呈現給用戶看到的網頁一定是一個html+css+js的頁面,無論我們通過php、c#還是java寫的網頁,最終都會以html+css+js的形式呈現,底層語言主要用來處理資料庫里的數據。
如果把網頁和後台處理完全分開,你會看的更清晰,比如一個html頁面我們用html+css布局完成以後,通過js去訪問後台頁面的數據
訪問的後台頁面只是對資料庫進行操作
上面後台頁面對資料庫的操作是用php寫的,它只負責對資料庫進行處理,並把處理好的結果返回給你的前端頁面。這是一個非同步處理的過程,當前端頁面收到數據以後就會使用js對前端頁面進行相應的更改。
我們可以看到整個前端用戶可以看到的頁面其實沒有涉及到javaScript以外的語言,至於後台處理頁面使用什麼程序,js是無需知道的,他只管發送數據和收到數據。
至於為何不用C++做網頁,這是因為無論C#還是java、php對網頁處理的庫都很全面,用它們做會非常方便,有好的東西,我們為何還要選擇次著呢?
感謝邀請。
首先,你說的「寫」是指什麼?
假如是你是指呈現的結果的話,那麼不用c++寫的原因是因為瀏覽器不認識。瀏覽器本質上是在解析符合格式的數據(包括支持的腳本最終還是數據),c++可以生成數據,但它不是數據。c++和網頁的關係就像是筆和文章的關係一樣。
但如果你是說生成網頁,那麼當然是可以的。但為什麼較少用c++呢?因為術業有專攻。c++很強大,但他不是為網頁設計的。對於網頁這種相對固定的需求而言,我們完全可以用專門的語言來做。那麼難道用c++不可以有專門的庫什麼的來做嗎?可以!但c++那麼多更難理解的特性你是不就得去理解了?為了這些特性付出的代價你是不是得接受?
或許你說,我封裝的好一些,暴露的少一些,只讓開發者用這一點功能,並且把不必要的代價捨棄,這不就行了嗎?bingo!不過你說的不正是現行的「寫」網頁的語言嗎?
可見,不用c++寫網頁的原因很簡單:特定場景下,合適的工具比強大的工具更好用。殺雞焉用牛刀,說的就是這個意思。
p.s 為避免不必要的爭論,我想強調一下,這裡沒有任何抬高某個語言貶低其它語言的意思,只是舉例比喻罷了。
首先C++完全可以用來寫網頁,但是C++過於非常強大,同時也就會有笨重的感覺,用來開發網頁,效率就不會很高。屬於大材小用。
現在開發東西都是效率至上,用更有針對性的專用軟體會更快,更准,更易
c++可以寫網頁,有技術實現。但沒多大意義,開發速度和維護比較難。
我了解的硬體層面,嵌入式開發支持網路服務的弄個配置頁面的,還是c實現的,類似路由器。
pc端的網站服務還是java,asp,php,python技術多一些。
編程語言就是個工具。幹什麼活順手就用什麼。
好比掃地這事,大掃帚可以,小掃帚也可以。面積小的,乾淨度要求高的用小掃帚。面積大的用大掃帚,用小的費人費事。
好了,希望對你有幫助。
首先,我們不僅用c/c++寫過網頁程序,而且寫過很多年。大約有人聽說過cgi這個詞,就是為c/c++準備的。後來iis支持的isapi和nsapi也都是可編譯語言的介面標準。再舉一個例子,我們都知道歌手林志炫出道時是「優客李林」組合的一員,而另一個成員李進就寫過一本書《cgi程序設計》,這個可是2000年前的顯學哦。
其次,c/c++沒落了。為什麼沒落?網頁程序邏輯簡單,只不過是收數據,寫數據,顯示數據,c/c++功能太多,學習不易,代碼控制不好,所以就沒落了。比如,asp一周就能寫出來實用程序,c/c++要想寫出同樣效果的程序半年都不行。2000年開始,到2007年之間,asp大行其道,隨隨便便一個人都能寫個系統,比現在的簡單多了,asp已經被國人玩爛了,現在還有很多人做項目用asp。
其三,c/c++在網頁領域不會再輝煌了。新語言層出不窮,亂戰之下,能勝php的尚未出現,何況其他。現在來說,干不翻php這個實際的王者,就只能淪為補充。
現在編寫網頁主要採用php和java還有asp等等,和他們相比,c++出現的時間更早,那時候互聯網還不為大多數人知道,所以c++並不是為編寫網頁而發明的語言。另外網頁編寫需要解決的問題是大量的html和css還有javascript等字元處理,如果是動態網頁,還有少量訪問資料庫取數據的操作,c++對字元串的原生支持不好,沒有字元串類型,沒有正則表達式,當然這一點還不足以宣判它的死刑,可以通過各種開發庫來彌補,更主要的是網頁開發需要轉換思維模式,能夠在字元串中插入代碼,而不是傳統的在代碼中處理字元串
如果是指純粹的排版的話那必須是html,沒有為什麼,他是定製的標準,你要想改為其它語言的話,首先你必須有能力讓所有生產瀏覽器的廠商添加功能,來識別你的語言,我直接告訴你,給你兩個谷歌的家產,你也改不了這個標準。
如果你意思是網頁的交互功能(伺服器端處理程序),那麼你想用C++的話,只要你願意,那必須可以,且asp,php,jsp實現不了的,你都可以實現,因為這些p也是c語言生產出來的,意思是你需要先寫好p的大部分功能(製造輪子);事實上我也確實有些項目用過C+來寫
騰訊tars開源微服務框架,很多部分都是c++開發的,http只是個協議和語言無關,但是開發web不僅僅要考慮技術棧,還要根據不同的應用場景和開發周期去選擇合適的技術棧,說白了商業模式,就不只是技術說話了,還有可能是技術主管,還有成本!
首先c++可以寫網頁,cgi web編程,十幾年前就可以了。
但關鍵是c++不是用來干這個的。網頁本質上是html標準的文本。動態網頁就是處理表單啊,表單提交啊,格式校驗啊,表格啊,一般都用jsp,asp,php等頁面前端技術實現。根據前後台隔離原則,頁面一般都不在後台寫,更不需要用c++了。要寫硬體驅動,操作系統這些倒是可以用。
推薦閱讀: