當前位置:商標查詢大全網 - 教育培訓 - 北大青鳥Java培訓:C語言編程技術的優缺點?

北大青鳥Java培訓:C語言編程技術的優缺點?

隨著互聯網編程技術的不斷發展,現在大部分軟件開發都是通過編程語言來實現的。今天,我們來了解壹下C編程技術的優缺點。

C語言的壹些好的經驗曾經通過閱讀POV-Ray源代碼學會了如何在C語言中實現面向對象編程。

通過閱讀GTK+源代碼,了解C語言代碼的清晰、幹凈和可維護性。

通過閱讀SIOD和Guile的源代碼,我們知道如何用C語言實現Scheme解析器。

用C語言寫GNOMEEye的初始版本,優化微文件渲染。

C語言的壹些不好的經歷我在進化組的時候,很多東西總是死機。

那個時候還沒有沃頓莊園。為了獲得Purify,妳需要購買壹臺Solaris機器。

調試gnome-vfs線程死鎖問題。

調試Mesa,但壹無所獲。

我接手了Nautilus-share的初始版本,卻發現代碼中並沒有使用free()。

我想重構我的代碼,但我不知道如何管理我的內存。

想把代碼打包,卻發現到處都是全局變量,沒有靜態函數。

但不管怎樣,我們還是來說說在Rust裏但在C語言裏沒有的東西吧。

自動資源管理Rust借鑒了C++的壹些思想,如RAII(資源獲取初始化)和智能指針,增加了值的單壹所有權原則,提供了自動決策的資源管理機制。

自動化:不需要手動調用free()。

內存會在使用後自動釋放,文件會在使用後自動關閉,互斥會在作用域外自動釋放。

如果妳想封裝外部資源,基本上妳只需要實現Drop trait。

打包的資源就像編程語言的壹部分,因為妳不需要管理它的生命周期。

決策:創建資源(內存分配、初始化、打開文件等。)然後在範圍外銷毀。

沒有垃圾收集這回事:當代碼被執行時,壹切都結束了。

程序數據的生命周期看起來像壹個函數調用樹。

如果我寫代碼的時候總是忘記調用這些方法(free/close/destroy),或者發現之前寫的代碼忘記調用了,甚至調用錯了,那麽我就不想再用這些方法了。

泛型Vec實際上是元素T的向量,而不僅僅是對象指針的數組。

編譯後,它只能用於存儲t類型的對象。

用C語言實現類似的功能需要很多代碼,不想再做了。

Trait不僅僅是壹個interfaceRust,它不是那樣的面向對象編程語言,它有壹個trait,看起來像是計算機中的壹個接口——可以用來實現動態綁定。

如果壹個對象實現了Drawable,那麽就可以確定這個對象有draw()方法。

但無論如何,特質的力量不止於此。

依賴管理之前需要實現依賴管理:手工調用g-config或者通過自動化工具宏調用。

指定頭文件和庫文件路徑。

基本上,人們需要確保安裝了正確版本的庫文件。

在Rust中,妳只需要寫壹個Cargo.toml文件,然後在文件中指明依賴庫的版本。

這些依賴庫將被自動下載或從指定的地方獲得。

用C語言測試單元測試非常困難,原因如下:內部函數通常是靜態的。

換句話說,它們不能被外部文件調用。

測試程序需要用#include指令包含源文件,或者在測試過程中使用#ifdefs刪除這些靜態函數。

妳需要寫壹個Makefile把測試程序鏈接到壹些依賴庫或者壹些代碼上。

妳需要使用測試框架,在上面註冊測試用例,並學習如何使用它們。

HygienicMacro)Rust的health宏避免了C語言宏可能出現的問題,比如宏中的某些東西會掩蓋代碼中的標識符。

Rust不要求宏中的所有符號都使用括號,比如max(5+3,4)。

沒有自動轉換。在C語言中,遼寧北大青鳥發現很多bug都是無意中把int轉換成short或者char造成的,Rust中不會出現這種情況,因為需要顯示轉換。

不會出現整數溢出,這個就不用解釋了。