看板 C_and_CPP 關於我們 聯絡資訊
※ 引述《famayo (砝碼)》之銘言: : 因為最近開始想學程式語言 : 但是苦不知該從哪種語言開始下手 : 於是就想到了最耳熟能想的C++ : 但是又聽到有些人說C++ 是比較舊的語言 : (我也不知有什麼是新的= =) : 因此我想問問 C++能做的事情應該很多吧? : 譬如說現在有哪些系統是用C++開發的呢 : 臉書 無名小站是嗎? : 還有就是 假設我要做物理的數值模擬 : 用C++適當嗎? 因為覺得它應該比fortran matlab來得多用途 : 如果C++不是各位最推薦的語言 : 那麼哪總才最推薦呢 (數值模擬為主 搞不好還有其他需求) : 感謝各位解惑 單純討論到"快"這件事情 1. 最快仍然是核心部分直接寫組合語言 (或是inline asm) 2. C/C++有機會寫出類似組合語言的效能, 但在一般情況下, 其實C/C++有很多效能上的陷阱 為了轉換物理或是數學上的式子, 菜鳥寫出來的程式碼, 通常效能很糟糕 編譯器難以最佳化 (應該說, 要寫的"快", 就不能照翻數學式, 這需要經驗) 而且C++老手有時太過於使用OO後, C++語言的特性反而會導致效能不佳 3. Fortran語言本身非常高階, 且適合將物理/數學式, 很直覺得就用fortran的語言表達出來, 再加上本身語法上直接支援向量運算 編譯器發展了非常久, 基本上如果是物理/數學式照翻, 就算是菜鳥寫的程式碼 經過編譯器最佳化後, 效率可能非常非常的高 如果是新手~ 用fortran寫可能是又快又方便 但如果是為了求快速開發... 或許matlab更是取得一個更佳的平衡點 (有太多函數可以直接呼叫, 呼叫後極有可能是直接對應到效率很高的程式庫 整體的執行效率也可以很高, 開發又輕鬆, 個人非常推薦使用matlab) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.45.108.22
diabloevagto:用matlab就要用矩陣運算,盡量不要用for,效能差很多 04/21 01:00
kdjf:現在不是有JIT compiller了? loop也會被最佳化吧 04/21 01:58
yayarice:matlab旳for loop是致命傷… 04/21 03:15
famayo:感謝 ! 04/21 07:42
azureblaze:可是自己寫ASM不見得寫得贏compiler XD 04/21 10:42
MOONRAKER:FORTRAN也不是真的「非常」高階啦,不過他的陣列可以 04/21 11:06
MOONRAKER:割一條或一塊來計算,威力是很強沒錯。 04/21 11:06
MOONRAKER:我很欣賞他在語言階段直接支援**和複數,但是就技術而言 04/21 11:08
MOONRAKER:如今這好像也沒啥,很方便是真的。 04/21 11:08
tsaith:可以考慮 python+numpy(數學套件)+matplotlib(繪圖套件) 04/21 18:17
tsaith:若有必要,底層可用c/c++加速計算 04/21 18:18
tsaith:要是計算量真的太大,c/c++的部份可以再進一步平行處理. 04/21 18:20
WPC001:matlab請直接用矩陣或向量運算... 不要自己跑for loop 04/22 00:22