當前位置:成語大全網 - 書法字典 - C語言編程技術的優缺點?

C語言編程技術的優缺點?

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

C語言的壹些好經驗

閱讀POV-Ray源代碼壹次,了解如何用C語言實現面向對象編程。

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

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

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

C語言的壹些不好的經歷

當我在進化團隊時,許多事情總是崩潰。那個時候Valgrind還不存在。為了獲得Purify,您需要購買壹臺Solaris機器。

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

調試臺面,卻壹無所獲。

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

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

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

但無論如何,讓我們談談在Rust中但在C語言中沒有的東西。

自動資源管理

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

自動化:您不需要手動調用free()。內存會在使用後自動釋放,文件會在使用後自動關閉,互斥體會在範圍外自動釋放。如果妳想封裝外部資源,基本上妳只需要實現Drop trait。打包的資源就像編程語言的壹部分,因為您不需要管理它的生命周期。

決策:創建資源(內存分配、初始化、打開文件等。)然後在範圍外銷毀。沒有垃圾收集這回事:代碼執行時壹切都結束了。程序數據的生命周期看起來像壹個函數調用樹。

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

無商標消費品

Vec實際上是元素T的向量,而不僅僅是對象指針的數組。編譯後,它只能用於存儲t類型的對象。

實現類似的功能需要大量的C語言代碼,所以我不想再做了。

Trait不僅僅是壹個接口。

Rust不是那樣的面向對象編程語言。它有壹個特點,看起來像壹個接口——在計算機中——它可以用來實現動態綁定。如果壹個對象實現了Drawable,那麽它可以確定該對象有壹個draw()方法。

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

依賴性管理

以前,需要實現依賴管理:

手動或通過自動化工具宏調用g-config。

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

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

在Rust中,您只需要編寫壹個Cargo.toml文件,然後在文件中指明依賴庫的版本。這些依賴庫將自動下載或從指定位置獲取。

試驗

用C語言進行單元測試非常困難,原因如下:

內部函數通常是靜態的。換句話說,它們不能被外部文件調用。測試程序需要用#include指令包含源文件,或者在測試過程中使用#ifdefs刪除這些靜態函數。

您需要編寫壹個Makefile來將測試程序鏈接到壹些相關的庫或壹些代碼。

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

健康宏觀(衛生宏觀)

Rust的health宏避免了C語言宏可能出現的問題,比如宏中的某些東西會掩蓋代碼中的標識符。Rust不要求宏中的所有符號都使用括號,例如max(5+3,4)。

沒有自動轉換

在C語言中,北京北大青鳥發現許多bug是由無意中將int轉換為short或char引起的,這在Rust中不會發生,因為它需要進行顯示轉換。

不會有整數溢出

這個沒必要解釋。