加工中心解鎖

18230062509發表於2020-11-12

加工中心解鎖首先,在嵌入式領域,C語言的專案很多,很多大名鼎鼎的GUI數不勝數,不僅擁有著大量的使用者,同時也擁有十萬,百萬級的程式碼量;群主相信這些程式碼都是非常精煉高效的,開發者要完全掌握,必須完全理解程式碼含義,否則踩坑之路永遠沒有盡頭。

群主覺得C語言是相對容易掌握的語言,但由於出現的時候太早,對今天的新情況往往缺乏足夠的重視。所以從單個函式,語法來看,C確實很親民;但在組織資料和方法上面就有點吃力。相信大家在開發完一個系統後,最惱人的,肯定不是某些語句,而是越來越難以理清的程式碼邏輯–俗稱“屎山”。

所以能用C語言編寫出簡練,清晰的程式碼本身是件很有挑戰的事情。即使是Linus這樣的大神,寫出的Linux程式碼絕對屬於質量上層的“迷魂湯”,三碗不過崗的同學,請在下面留言證實一下群主所言非虛。

所以,群主的想法是:在100行規模的軟體裡面,C語言一定是宇宙第一首選;但在超過2千行的規模,則會讓讀者吃力,吃灰。

換一種開發語言,行嗎?
但是,群主,你說的我都懂,但我真得離不開C呀,即使有時間學習新語言,我也會選擇Go,也不會選擇宇宙第一難度的C++!

請你一定相信群主,不僅C語言能製造“屎山”,Go也是可以;“屎山”的高度取決於開發者對語言的熟練程度。千萬不要指望一門新的語言解決“屎山”問題。你對新語言的好感,僅僅只能持續2千行左右;過了2千行,C語言專案中遇到的所有問題,一個不少的都會過來找你。不要輕易說你喜歡誰,相處2千個小時,再問自己你喜歡她/他什麼?

所以,群主覺得,既然新語言解決不了老問題,還不如繼續用C!騙子呀,說了半天C的壞話,結果還是在跪C語言

且慢吐槽,在下的意思是99%的使用C語言風格,但加入1%的C++特性,也就是:C with Class;好了群主好像又聽到了新一輪的吐槽:low?

實用主義放光芒:
請回答一個問題,太空火箭,宇宙飛船上用什麼晶片?相信很多人(包括群主)的答案是:高可靠,高抗干擾,可抵禦宇宙射線,中微子干擾的超牛、超貴的特種CPU晶片!好吧,這麼高,超,牛,貴的字眼,我就不信有人敢不同意!

結果還真有一個摳門王,號稱二手貨真香的“老馬斯克君”不被所動,老馬袖子一擼:有柺杖了,還要啥自行車?什麼特種CPU,我連二手火箭都要再用5次,你讓我花這錢,不是敗家玩意嗎?就用我家電腦上的intel cpu就可以了;6個一組,同時計算,計算結果一致便罷,一旦不一致,少數服從多數!臥槽,不愧是摳門王,宇宙射線,和不穩定問題就這樣給解決了。。。

相信,大家也知道群主要說啥了:最聰明的辦法往往與金錢,技術高低沒啥關係,關鍵還是看你怎們用。

99% C + 1% C++:
所以,既然你喜歡C,就繼續用吧,相信你現在已經有的系統,驅動都是C語言編寫的,我們是來解決問題的,不是讓你推倒重建。相反,你要充分利用現有的東西和知識。

而關鍵的一味調料就是1%的C++,即Class和虛擬函式這2個基本屬性。相信很多同學覺得這很低階,但這正是C++語言發明的初心。這種特性讓你完全告別的了函式指標;當然很多C的高手,就是用函式指標實現了C++的所有特性。首先為高手點贊,但作為普通韭菜的我們要明白它的代價就是一大堆函式指標;只要函式指標的大量存在,程式碼的可讀性就大大降低,而C with Class就能用最優雅的方式消滅所有的函式指標,雖然你覺得它很low,但它就能讓你的程式碼量大大縮小;而且它對編譯器的支援極好,任何微控制器編譯器都能支援這種簡單的C++特性。

作為開發者,程式設計思想遠遠比語法糖重要的多。C with Class是程式設計思想的進步,雖然在語法難度上面它不值一提。記住,這裡說的是程式設計思想,即使這麼簡單地語法,現在還是被濫用了,完全不考慮實際需要,上來就是一個class,完全不顧及class發明者的初衷。class是在高level重整程式碼結構,而不是用class汙染每一個細節,每一行程式碼;還是那句話,用的好,4千行就能解決很多問題;用的不好,還不如不用,還是用最擅長的語言更高效的汙染程式碼吧。

GuiLite是C with Class的最大受益者。國內外很多圍觀GuiLite的同學,多是因為炫酷的介面吸引過來看看熱鬧的;但真正能留住大家的還是4千行能讀懂,能馬上上手的程式碼。很多小白同學,一邊戰戰兢兢的說自己什麼都不會,一邊把各種例項成功的移植到各種硬體上面。群主想問:你們真是小白嗎?簡單、易用、不添亂、讓開發者自己完全掌握命運是GuiLite初衷,只是大家不要太過分,總想著再給GuiLite減減程式碼量。要知道4千行的程式碼量已經很給以龐大著稱的GUI框架丟臉的了。。。

誠然,C++是全宇宙最難的開發語言,但好在是它的很多難以操作的特性,都被嵌入式,桌面UI這些應用場景完美的避開了,對這一點有興趣的同學,可以參看另一篇在知乎的回答(https://www.zhihu.com/question/374663834)但它的思想精髓和主要作用在嵌入式方面絕對大有可為。群主一向鼓勵不要憑空學習;而是:用多少,拿多少;別浪費自己寶貴的時間,去驗證最難,而且對自己毫無用處的語法特性。

開源的力量:你的支援
最後,陰差陽錯的,GuiLite要去跟一批優秀的JavaScript專案去競爭“前端軟體”的TOP 10,既來之則安之,不求金榜題名,但求不要輸得太難看。如果你覺得本文對你有些所啟發,也請隨手投票支援一下

相關文章