Re: [問題] 為何少有人用c++寫網頁?
※ 引述《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,可以用一些小技巧加速。
比方說把想把 abcdefghi 中間這段傳給某 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)
推
04/20 07:46, , 1F
04/20 07:46, 1F
→
04/20 08:47, , 2F
04/20 08:47, 2F
→
04/20 08:48, , 3F
04/20 08:48, 3F
推
04/20 08:54, , 4F
04/20 08:54, 4F
→
04/20 08:55, , 5F
04/20 08:55, 5F
推
04/20 09:11, , 6F
04/20 09:11, 6F
→
04/20 09:12, , 7F
04/20 09:12, 7F
→
04/20 09:13, , 8F
04/20 09:13, 8F
→
04/20 09:13, , 9F
04/20 09:13, 9F
→
04/20 11:29, , 10F
04/20 11:29, 10F
→
04/20 11:30, , 11F
04/20 11:30, 11F
推
04/20 12:24, , 12F
04/20 12:24, 12F
推
04/20 13:13, , 13F
04/20 13:13, 13F
推
04/20 13:15, , 14F
04/20 13:15, 14F
推
04/20 15:40, , 15F
04/20 15:40, 15F
→
04/20 15:40, , 16F
04/20 15:40, 16F
→
04/20 15:52, , 17F
04/20 15:52, 17F
→
04/20 15:54, , 18F
04/20 15:54, 18F
推
05/11 18:20, , 19F
05/11 18:20, 19F
討論串 (同標題文章)