作者tinlans ( )
看板C_and_CPP
標題Re: [問題] 為何少有人用c++寫網頁?
時間Wed Apr 20 04:57:40 2011
※ 引述《truesword ( )》之銘言:
: 網頁程式大多都用php,不懂php比c++好在哪裡
直譯和便於快速開發就是 PHP 這類東西的優勢。
另一個最重要的問題在於,國外很多人的網站是租 shared host 來儲存。
這種空間大約每個月 5 美金就能租到一個不錯的,能放暗黑物的 10 美金上下也有。
shared host 一般很少開放 shell 登入,所以不會讓你編譯 C++ 程式。
就算給你進 shell,GCC 也是鎖起來不給用的,plan 上也會明確把 CGI 這項打 X。
能用到 C++ 的,最起碼要是 VPS 等級。
不過只是做個人網頁的話,想租 VPS 的人不會太多。
加上 shared host 的 plan 通常會寫明不限流量、空間 (其實太超過還是趕人),
VPS 大概 40G 空間,384 - 512MB 的 RAM,每月 500G 左右的流量就要 12 - 15 美金。
一般沒打算幹嘛的,都會租便宜的 shared host 解決。
確實 PHP 對我來說吸引力不大。
真的要玩直譯不如玩更動態一點的東西,像是 Ruby on Rails 這種就很不錯。
大部分主機商的 shared host plans 也有提供你玩這個。
但比較偏現實面的部分,就是 RoR 的 scalability 有點弱。
畢竟 ruby 是能在 runtime 新增 class 成員的語言,RoR 玩資料庫的方式又是 ORM。
人多又想跑得順,硬體方面要求絕對不能低。
有些想在兩者之間取折衷的,可能就會選 python 或 Java (我指的是 JSP)。
不過選 Java 的有些是為了其它目的,這個有點說來話長。
: 做的事情C++基本上也都能做 (C也可以但字串支援少,所以比較麻煩)
C 其實還蠻方便的。
而且因為是 null-terminated string,可以用一些小技巧加速。
比方說把想把 ab
cdefghi 中間這段傳給某 function。
你可以先暫時把 'g' 存在一個 char 變數,並修改成 '\0'。
然後丟個指在 'c' 上的 pointer 出去,等 function return 回來再把 'g' 填回去。
這樣就整整少了一次 string copy 的時間。
一些比較高階的語言使用的 string type,取 sub-string 時大都是整段複製出來。
也許有些人會說這可以用 copy-on-write 的技術避免無謂的複製...
但實際上沒有啥 string type 是這樣實作的,理由某本書有寫,哪本我忘了。
: 就算需要跟資料庫連結,我想一定也有c++的library可用吧?
有啊,第一個能想到的最起碼就有 mysql++ 可以用。
如果你覺得自己處理 httpd server 丟來的東西太麻煩,甚至還有 cgicc 這函式庫能用。
這玩意還相容 FastCGI,所以雖說是年代物,但其實也很夠用了。
近代還有啥我是沒特別注意。
如果你很懶得學 PHP,也有 C/C++ 搭 SWIG 造出 php module 來掛的做法。
甚至可以直接寫 Apache module 處理更多奇奇怪怪的事情。
這些事情倒是真的有人在做,只不過很少是直接以做網頁為目的,大都是在造新輪子用。
: 不懂為何沒有人用c++在開發網頁的
其實 UNIX 環境的 driver,AP 層有些都用 web front-end 呈現。
有些就是直接用 C/C++ 刻出來的 CGI 程式。
: 小弟百思不解,有沒有大大可以說明一下,感恩
上面講的你重新歸納一下應該就知道了。
另一個不太想明講的理由是,PHP 的入門門檻遠比 C/C++ 低很多。
這種事我們板內的人知道就好,不要傳到外面去戰語言。
--
Ling-hua Tseng (uranus@tinlans.org)
Department of Computer Science, National Tsing-Hua University
Interesting: C++, Compiler, PL/PD, OS, VM, Large-scale software design
Researching: Software pipelining for VLIW architectures
Homepage:
http://www.tinlans.org
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.160.111.100
※ 編輯: tinlans 來自: 118.160.111.100 (04/20 05:19)
推 xatier:推tinlans大精彩解說! 04/20 07:46
→ angleevil:恩,為了追求效率,還是有人用c,去寫程式.可是還是要借 04/20 08:47
→ angleevil:html的輸出才可以開發網頁,重點還是方便性和功用性吧 04/20 08:48
推 horngsh:horngsh@gmail.com 04/20 08:54
→ horngsh:上面本來要大F結果按到推文. 04/20 08:55
推 yoco315:樓上這就叫做是情不自禁的推文嗎... 04/20 09:11
→ yoco315:copy-on-write 的問題是要支援 multi-thread 很難做 04/20 09:12
→ yoco315:就算做到了效能, 效能也會爛到沒有價值 04/20 09:13
→ yoco315:不過我也忘記我在哪邊看到的,不然就是在很多地方都有看到 04/20 09:13
→ yoco315:突然想到一件事,雖然看到人家這樣說,不過我其實不知道 04/20 11:29
→ yoco315:為什麼copy-on-write在 multi-thread 會很難做.. 04/20 11:30
推 legnaleurc:推專業 ... 04/20 12:24
推 belion:強@@ 04/20 13:13
推 belion:拜讀tinlaus大大的網站了,真的很強:~ 04/20 13:15
推 tomap41017:問一下,那把字串中間填\0的作法在multi-thread不也是 04/20 15:40
→ tomap41017:會有問題嗎? 04/20 15:40
→ tinlans:如果是 stack 上的就不會有事。 04/20 15:52
→ tinlans:而且一個 http request 進來,很少有機會再開 thread 處理 04/20 15:54
推 welon:真不愧是阿路學長..... 05/11 18:20