Re: [討論] 為什麼不要用c++寫網站
※ 引述《brucetu (sec)》之銘言:
: 現代網站開發一定有框架
: 幾乎所有的操作都有現成的函數讓你用
: 也是就說
: 就算用c++開發也只是在call框架的API
: 把資料丟來丟去而已
: 有人覺得python / .net 寫網站比較簡單
: 但其實框架包得好
: 就算是c++也沒有什麼不同吧?
: 例如 python 的 list comprehension
: 或是 .net 的 linq
: 都可以包成一個套件來做啊
: 在 c++ 也就只是一行 function call 而已了
: 那為什麼不用c++開發網站就好了?
如果是我的話也許寧願選擇用 C 也不太會選擇用 C++ 開發網站。
C 和 C++ 的好處在於沒有節操,大部分軟體工程師講得出來的程式語言,都會有記憶體範圍保護以及垃圾回收的設計。
但是 C 和 C++ 沒有,C 和 C++ 覺得這是工程師應該要負責的事情。
而大部分的 HTTP 伺服器,如果是使用 nginx 或是 apache 的話,基本上這兩套都是純C 下去開發的,在更底層的 Linux 或是 Windows 的 TCP 演算法原則上也是 C 開發的
居多。
資料庫的部分 Postgres 是 C, MongoDB 是 C++,所以其實大多數組件都是 C 開發的,只是一般的軟體開發團隊比較不會真的去重新編譯這些東西,但是如果是做路由器相關
的 HTTP Server 的話,或是物聯網相關的,那就有可能真的是用 C 直接輸出 HTML。
回到正題。
在工程上選擇要用什麼語言或是更精確來說要用什麼技術來開發,原則上取決於專案預期獲利以及死線大概在哪邊。哪個語言有相對多的函式庫或者是範例通常就會用哪個語言,但更現實的是前人留下來的東西是什麼語言通常就是那個語言。
Meta =FB 現在還有部分 PHP, 畢竟老闆以前就是用 PHP 的。
然後如果是手機 APP, 因為 Apple 給的範例就是 Obj-C, 所以雖然可以用 C++ 來寫,但是可能不會是太愉快的體驗。
接著談到框架,大部分的框架都會降低執行期效能。
降低執行期效能等於增加上線後伺服器資源費用也等同於消耗更多電力或者是說不環保。同時執行期效能降低也會增加反應時間降低使用者體驗。
但是在十到二十年前,大部分的效能並不是卡在商業邏輯的部分。
同樣是 printf("<html ...... 使用 C 和 PHP 並不會差到哪裡去,大部分的效能差異
會在使用者 56K 的數據機以及 SAS 硬碟的轉速上面。
所以與其用 C 去改善商業邏輯,不如多投資一些頻寬或者是磁碟陣列,甚至是記憶體。
但是現在的狀況稍微不太一樣,畢竟 Redis 興起,資料庫可以直接放在記憶體做 IMDB
網路速度是 10Gbps 起跳,已經超過普遍伺服器 CPU 3GHz 的速率了,因此商業邏輯
的常數效能是不是仍然不重要這點可以重心評估。
另外雖然 Python 有助於讓大眾可以接觸到 AI,很快速的兜出模型出來,但畢竟他還是有一些記憶體保護上的矜持,所以效能注定沒辦法超越 C / C++ ,因此也有出現像是
LLAMA.cpp 這樣的專案,那麼他也是有 HTTP Server 的,所以說千萬不要說死說不可能用C / C++ 去做的這種事。
那不過通常寫 C / C++ 的工程師必須要能夠保持很多好習慣,例如玩具玩玩要收好,
malloc 用完要做 free,我的瀏覽器分頁數量證明了我很難保持這種習慣,所以基本上
我都是用 Golang 這類型有垃圾回收機制的語言來做開發。
順帶一提,「把 C 包裝起來這樣就可以有 C 的效能而且還可以快速開發」的想法很多工程師都想過,所以我們才會有了各式各樣的程式語言,包括 PHP, Python, Ruby ... ...
大概除了 JAVA 以外大致上都是因為這樣所以開發了一個框架語言出來。
如果說一點都不在乎有可能發生 Stack overflow 或是 memleak 的話,那還是可以試試看用 C 開發,否則現在的話或許會比較推薦可以用 Rust 做開發。
至於開發速度而言,目前已經是 Copilot 的時代了,開發速度原則上取決於在心中想像架構以及如果遇到問題除錯的速度,打字或是變數命名交給 IDE 處理就行了。
使用 C 但是卻無視掉記憶體複製造成的成本的話,那可能就和使用其他語言的狀況差不多,甚至會更糟,但是如果在每個設計都仔細考慮記憶體複製的成本的時候,那麼整體
的設計速度就會稍微下降了,大概是這樣。
--
此篇文章以 CC BY-SA 4.0 發表。
咖啡是一種豆漿,
茶是一種蔬菜湯。
--
好慘,一個不懂c++的人說c比c++適合...
作為一個搞底層出身的人我覺得這篇很中肯啊,
一樓的覺得人家不懂的話要不要自己回一篇?
看到節操我笑了...要你什麼姿勢就什麼姿勢。這是C的魅力
用C寫web,都不用考慮相容性了嗎...更新改死你
請問原po覺得rust未來趨勢?是否很多C的情景都可以
改用rust
聽說目前 rust 社群有個迷因,打算把全世界都用 rust 改寫過。 但也有可能是這個原因,現在還找不太到只有 rust 版本的專案。 再來目前我測試的 Benchmark 結果 rust 的效能還沒辦法和 C 真的做比較,在某些狀況 下可以勝過 Golang, 但是 rust 沒有 GC, 在 Benchmark 的場景中不一定會觸發 Golang 的 GC 事件,再加上 rust 剛開始,所以很多部分還有最佳化空間,Golang 也是經過了 幾年的最佳化,所以一些東西真的不好說。 然後從我的觀點看來,rust 導入的擁有權概念是比較新的概念,但是對高中生來說可能 沒差,反正所有東西都是新的。所以他們可能不會覺得 rust 特別難。 目前 rust 的開源程式碼有比較少,這部分也導致 copilot 寫 rust 的準確度沒有那麼高 回到問題上,Linux 整個改寫成 rust 我認為難度太高,但是你可以先觀察 RTOS
https://arewertosyet.com/對於 C 的信仰差不多是常數效能等於一切,因此只要在某個平台上 C 沒辦法在效能上 超過 rust,那大概就滅教了吧...
我是覺得 CPU 3GHZ 跟 10Gbps 的關係比較奇怪啦
純推分頁開一堆
用cpython技術上來說也是用c寫web
認真來說 cpython 的程式碼因為那些矜持,所以只是能用 C 編譯器編譯,效能而言沒有 到一般寫 C 的工程師的基本水準。
效能真的沒人在乎啦,看electron寫出來體驗爛到爆還不
是只能繼續用
趕快寫出來讓老闆能拿出去賣錢實在
C++ smart pointer 表示
C++ RAII表示
確實不可能 這跟市佔扯上關係了
除非不同語言做串接
讚
推
rust不論編譯耗時還是硬碟佔用都很多 整天被編譯器整
蠱時間都沒了
一些底層的程式 連malloc都沒 記憶體自己管理的
應該是沒有用 rust 的必要
老是有人愛說別人不懂C++, 那自己又懂了什麼
不太喜歡new完不知道什麼時候會delete掉的感覺
喜歡沒有節操這句 XDD害我在手機面前笑出來
推,長知識了謝謝分享
第三句就看得出來原 Po 半毛 C++ 都不懂,這樣都不能噓?
你來給我教 15 分鐘會的 C++ 可能比原 Po 還多
能請樓上教兩句,我最近正好在學
給樓上,去看智慧指標
三小有幫你寫好的GC比較有節操?
我的頭開始痛了。
我覺得很多lib都用c開發跟從c c++中選c這兩者沒有關聯,
原PO的確沒說理由
26
首Po現代網站開發一定有框架 幾乎所有的操作都有現成的函數讓你用 也是就說 就算用c++開發也只是在call框架的API 把資料丟來丟去而已10
: : 在 c++ 也就只是一行 function call 而已了 : : 那為什麼不用c++開發網站就好了? :21
CGI 這東西,看了這麼多人回,都沒人講出來,表示這邊的都是高手了。 資O會,以前某套內部的系統是CGI 當底的,後面接的是C。 但當我看到它每一個取char * 傳進來的字串長度是用sizeof 時,就該明白....讚啦。 還好它只是檢查它長度是否大於0。 鬼扯哪麼久,回到正題,用C 接http request,有什麼好處呢?3
其實也沒有那麼陌生,經歷過php, Rails時代的人都有被cgi折磨過 只不過現代server side都轉向JavaEE那個樣子,類似Asp.net那樣依附個CGI還是 蠻少見的。 現代的web無論是spring還是go那邊都是走向自己從network connection開始管。 (我知道Spring有內置Tomcat)
40
Re: [請益] 資策會Java與C#選擇Hi 你好,小弟我學店數學系, 目前在軟體公司擔任前端的小主管, 算是有點自學軟體轉職成功的經驗, 不嫌棄的話跟您分享一下。 雖然技術跟經驗比不上板上的大大,34
[討論] Java持續失寵排名被C++超越首度落至第4名Java持續失寵,12月TIOBE Index排名被C++超越首度落至第4名 TIOBE Index 12月程式語言受歡迎排名,Java被C++超越首次落到第4名,而這也是C++自 2003年以來,再度有望成為年度語言 文/李建興 | 2022-12-07發表 程式語言排名TIOBE Index在2022年末,公布12月最受歡迎的程式語言排名,前三名分別20
Re: [討論] 刷leetcode的語言選擇最近剛好有在指導一些學生練習,可以來回應一下這個問題 一般最常見語言有三個:C, JAVA, Python 也是最容易找到範例 code 的三個語言 各有不同優點,可以看你的狀況選擇 首先,如果未來有一天17
Re: [請益] php web 轉職建議TL;DR 我會選 1,換個語言。 最後我也選了這個。 --- 我跟你的經歷差不多:7
[心得] ChatGPT協助軟體開發的指令集近來寫程式時大量試用ChatGPT 剛好使用golang開發side project, 所以在各種情況下遇到的問題,都試著問ChatGPT 真的覺得超好用的! 網頁好讀版:附上心智圖、完整範例(有些範例太長,PPT沒有辦法完整呈現)7
Re: [問卦] 資工的第一個語言該學C++ JAVA python?其實我會推薦選簡單的 所以是應該python 當過老師都知道 你教的東西學生只要能學會80%就很厲害了 不用去想說一般學生在大學的時候學C或C++可以完全理解 因為不可能 大部分人都是隨隨便便交差了事 不求甚解1
Re: [討論] 請大家聊聊 JavaScript的缺陷小弟介紹自己語言的圖譜。 1.寫 Java 三年(沒在寫了)。 2.被公司逼寫 Nodejs 寫了五年(現在還在寫)轉換成本半年。 3.被公司逼 TS 四年(現在還在寫)轉換成本一個月。 4.被公司逼 GO 兩年(現在還在寫)轉換成本兩周。