C 的 OO 特性提供的靈活性和支援底層操作的高效,在工程上多大程度可以用 C 指令碼語言混合實現取代?

時間 2021-05-30 20:18:09

1樓:johnson

好問題,正好我是做過的人,lua+c測試裝置api,js+C#,lua+C#各種框架。我來說一下。這個思路是個好思路,但有幾點處理起來比較麻煩:

1.你需要乙個懂指令碼語言特性,懂c的特性,另外對設計模式了解,對業務邏輯熟悉,可以將業務邏輯抽象出來的架構師,給你開發出基礎架構,這方面人太少了;

2.指令碼語言基礎特性是否適合c。最簡單例子,byte *處理,在lua,python,js中都是很麻煩的。

最後某個專案,於指令碼層對接的所有byte*,我都改為HexString。另外c的指標函式,結構體,在指令碼層面很難處理。都要想好好如何轉化(lua有light userdata);

3.糾結記憶體管理。這點其他答案已經闡述,我理解沒他們深入,但確實是個問題。

由於行業複雜業務邏輯一般在1分鐘以內能夠完成,時間長的也是簡單邏輯流程。我在進行完乙個邏輯後,會重啟指令碼引擎,以減少記憶體管理問題;

4.沒有斷點除錯。習慣使用vs進行斷點除錯,但指令碼引擎很難提供完備的斷點除錯(lua現在比較好的注入進城下斷點,js的v8現在只有基於cef 的devtool可以除錯)。

只能print找錯,練習自己的除錯能力。ps:如果你的框架是指令碼引擎加多程序,你會發現除錯錯誤,會讓你痛苦死。

風雲部落格處理lua有乙個debug類,很好用。

當然,指令碼也有很多優勢:

1.框架搭好了,只需招幾個會寫指令碼的人,寫業務邏輯,就可以了。畢竟寫指令碼技術門檻低,好招人,工資低;

2.核心程式人員做好核心,專注程式本身;

3.熱更新;

4.寫好的指令碼庫,移植方便;

轉某大神的話:單會用lua或者單會用c設計出來的程式不是好程式,如果你能平衡lua與c,用兩個語言特性的優勢彌補語言劣勢,那才是好的lua程式。你也就出師了。

2樓:汪周洋

到頭來你就會明白這個太理想化,簡單的東西可以,複雜的會讓你苦不堪言。跨語言本來就是一種妥協的處理方法,居然還有這麼多人推崇這種方式,光是看到lua的c API那種出棧入棧的處理方法就讓人蛋疼了,很容易出錯,又不好維護。簡單的業務,底層穩定用這種方式到是不錯。

3樓:徐辰

誰告訴你C++的OO底層操作高效了?明明就比直接把函式指標放到struct裡慢了好多,所以Linux核心都用後一種方式。

4樓:noname

說個實際點的,即使方案設計的再好,也難保豬隊友的存在攪黃你的計畫,什麼?把豬隊友移出隊伍?迫於時間和進度壓力,你必須接受豬隊友,而更少的語言,更彪悍的語言C++正是為了解決這個問題。

多數軟體公司並不像ms google那樣大牛雲集,更多的時候,是要做妥協。

5樓:pansz

其實指令碼語言 + C 的模式是個很好的模式,也是我長期以來主推的模式。只不過目前這方面並不非常普及。

C++ 的優勢就是大量的庫,如果你需要依賴乙個用 C++ 提供的庫或者框架(例如 Qt),那麼顯然直接用 C++ 更合適。

如果不是那樣,完全可以指令碼 + C 嘛,只要你使用的指令碼功能夠強,它也是完全可以支援 OO 的。

6樓:劉典

這是相當優秀同時也很難掌控的乙個方案。優秀是因為這是一種自底向上的設計方法,提供很好的靈活性,並有效的控制複雜度。難點是如何對系統進行劃分,哪些應該用c寫,哪些應該用指令碼寫。

一般的方法是用c提供系統的「原語」,用指令碼組合這些「原語」,原語的設計要足夠的簡潔(元素盡可能的少),又要靈活(他們組合起來能夠完成系統的各種功能)。做到這一點並不容易,甚至可以說是一門藝術。

靈活性用工的實際使用?

工貓管家 回答這個問題之前,工貓管家想先跟大家談一下,靈活用工是什麼?靈活用工等同於 靈活派遣 Flexible Staffing 是人才派遣服務領域的成長型產品,它由派遣公司承擔全方位的法定雇主責任,在派遣人數確定 派遣週期 派遣人才的篩選方面都非常靈活的一種用工形式。用人不管人,管人不用人 是派...

如何提高自身舌頭的靈活性?

靠說話生活 這個問題可以說說,我自己就是從唇舌力度不夠一直走到今天,自認為這個問題解決的還可以。舌頭的靈活性本身不是乙個很明確的問題,需要明確的是如何靈活,或者哪些音發的不靈活,這個需要先搞明白。比如有些人發dt等音比較拙,不是很靈活,這主要是唇舌力度不夠的緣故。最有效的方法就是從調到敵島打特盜等繞...

健身如何系統的建立穩定性和靈活性?

Icey 負責穩定性關節 足 膝 腰椎 肩胛骨 肘。負責靈活性關節 踝 髖 胸椎 頸椎 肩 腕。每乙個穩定性的關節上下會連著兩個靈活性的關節,每乙個靈活性的關節上下會連著兩個穩定性的關節。這樣相互作用才會讓人保持乙個比較平衡的狀態。從損傷方面講,有乙個關節出現問題,他都會影響著上下兩個關節。像有時打...