看見網上說學單片機有助於c++的學習,是這樣的嗎?
大一,有一點c++知識,想自學單片機,有用嗎?
不是這樣,他們在亂說
全平台開發者,怒答此問題。
我覺得吧,單片機學C++的確是一個方法。但是不是一個唯一的方法。學C++的方法有好多好多。在不同平台下學習,會遇到不同的問題,得到不同的提升。比如說開發伺服器會關心如何提升性能,為此大作研究。而開發性能要求不高的客戶端時,會考慮是不是可以用降低性能的代價換取更多特效,做更絢麗的界面。
本人剛學會C++就去玩Arduino了,不得不說玩Arduino的過程中,夯(hang)實了我的C++功底,而且在單片機上編程,會遇到很多非常有意思的問題,比如說:
1.如何在只用512位元組的內存,在單片機上實現數據壓縮+數據加密,然後通過TCP傳給伺服器。這是我最近在弄的,為此我寫了自己的協議,找了2個時空複雜度很低的壓縮演算法,再更具sha1做置換陣列,配合公私鑰加解密。很多寫法,如果不是為了單片機兼容,根本不會去接觸,也從來沒意識過計算速度是有多麼的重要。2.如何自己寫一個事件循環。Arduino沒有提供事件循環,代碼太面向過程化,於是我就自己寫了一個簡單的事件循環,來維護單片機輸入輸出狀態,開發起來非常的爽。其實,說到底,做單片機開發和做一般項目開發比,就是少了很多的庫、性能極差外加編譯器不支持很多特性。提升語法基礎,可以說是被動的。因為大部分問題在其他平台(桌面)是根本不存在的,而在單片機里卻需要自己造輪子,這即有趣,也麻煩。但是結果肯定是讓自己接觸了一些在桌面平台開發永遠遇不到的問題,然後去解決,然後實力提升。
考慮到題主對單片機有興趣,非常推薦題主來體驗一下Arduino。但是僅興趣程度就行了。真正的實力提升,還是需要更多的項目開發而不僅僅是單片機開發就夠了的。
ps:手機回答,沒有精美的排版,請見諒。一般都是C,即使用C++,我也不太敢用new,delete之類的。一般內存管理malloc和free都是自己寫。內存只有32K,我哪兒敢隨便用庫。
這個人一定既不懂MCU也不懂C++。
拆電腦有助於學習計算機組成原理呢,快去拆啊~
。。。。。。。。這樣說的就是誤人子弟。。。單片機是嵌入式,基本是往硬體方面玩去了。。和C++關係不大。。。
當然有用。。。大一的時候在用51單片機寫智能車。。。
單片機會培養很多程序的基本素質,了解什麼是中斷,寫一個RTOS,寫驅動,變得內存敏感。這都是一個C++程序員需要有的知識。。當然,也許你用的是C,但是學到的知識,都在你腦子裡。什麼語言不重要。首先很少會有用c++寫mcu的
其次能在mcu上跑的,嚴格來說只能算是c++的子集。如果你真的用c++寫了mcu,會不會對c++的理解有幫助呢?
答案是有的。。然後並沒有什麼卵用。學到的還不如找本inside c++ object model看這些理解對做其他方向的c++開發更是沒什麼用處。樓主還是好好閱讀c++書籍,學習那個啥三大浪漫
沒事不要寫mcu,low得很,真心的,不要想單片機這種專科寫的東西了。不同意陳豪。。。太片面了,嚴重不同意! 純搞軟體的人是無法真正體會到嵌入式的含義,更理解不了硬體上的細節!!
至於c++和單片機
我覺得學習單片機可以熟練c語言,培養興趣,然後造些輪子玩。感覺c語言上的障礙少了可以轉戰c++.學完c++後,反過來可以用面向對象的思想再來重新審視單片機程序!這時又是另外一種境界了!所以樓主先培養興趣為主! 想玩哪個就先玩哪個!想學就直接學吧,不用想那麼多。目前自動化在讀大三學生,嵌入式方向,說白了就是單片機專業。有兩年單片機使用經驗,從51到ARM。======================================================================首先回答題主的2個問題:題目問的是,學單片機有助於學C++嗎?正文問的是,C++知識有助於學單片機嗎?
答: 主體就是單片機和C++這兩者的知識網交叉關係。其實關係還是有的,不過不是很大,對你學習其中哪一個都不會產生太大好的影響或壞的影響。
單片機在編程方面主要用的是C語言,C++又在很多語法、風格和函數上相同或相近(感覺有人要跟我吐槽C和C++的關係了)。所以你有C++的知識,學C很好上手,自然在單片機編程方面也很好上手。 反過來,單片機知識對C++的學習不會有太大的直接影響。C在單片機編程中主要功能我覺得有兩點:1. 操作寄存器。這是比較底層的概念,你能想像你面前的電腦或手機的硬體功能都是通過操作某些寄存器的位寫0或寫1實現的嗎?2. 完成程序該做的事,也就是做計算,做數據處理;======================================================================下面是我學單片機的學習過程,有一些是硬體電路的基本知識,不會也沒關係,但總會覺得嵌入式、單片機學不透,掌握這些知識可以對某些操作理解得更深入。1. C語言。這是嵌入式編程使用的主力語言,主要使用的IDE軟體有KEIL、MDK、IAR,都支持C。學校安排的課程還有彙編,要我寫一個小功能可以(51系列),寫整一個大框架我寫不來。而且用的十分少,讀起來也比較晦澀,複雜,主要是用在寫啟動代碼,因為一些寄存器並沒有統一的編址,C語言操作不來。但彙編能很直觀的看到你對單片機內部寄存器,內產地址的處理。2.《51單片機C語言教程》。《新概念51單片機C語言教程:入門、提高、開發、拓展全攻略》 這是郭天祥的一本書,我覺得單片機入門基本都是51吧,用過51的應該大部分都知道郭天祥和他的這本書吧。網上還有視頻教程《十天學會單片機》,看前4天就基本能在51單片機板子實現一些基礎功能了。這確實是入門的好書,通俗講解,穿插地講一些電路知識,實例多代碼全,主要是能快速地入門。但他那塊TX-1C的板子就免了,性價比低,自己到淘寶淘一塊學習版就行了。(軟體往深點發展,就是演算法和數據結構了,主要靠多看多寫多學,寫些較大的項目,就能了解到程序的結構層次是怎樣的,怎麼安排功能,先寫什麼然後寫什麼)-------------------------------(上面我覺得已經能入門了,如果想往硬體方面發展)-------------------------------
3. 《電路分析》、《模擬電路基礎》、《數字電路設計》這是大概就是硬體電路的基礎了,我自己是偏軟體的,硬體這些學過但用的少就也忘了。4. 硬體要再往深點發展,我就不好亂提建議。看過一比較偏硬體的同學的一本書——《電子學(第2版)》 Paul Horowitz, Winfield Hill, 吳利民, 余國文, 歐陽華(只是看過封面......)比較厚,讀者自重。======================================================================本人自認才疏學淺,學得不是很地道,有錯誤望扶正,求指點!胡說了,菇涼我就是讀EE出身的,單片機用的是彙編和C,沒有c++,c++之所以會是順便學的。想學c++就認真看書敲代碼做項目,讓單片機見鬼去吧。
恰恰相反…
單片機主要是 C 語言,C++ 的特性完全不能在單片機編程中體現出來。
另外單片機編程由於受到片上存儲等條件的限制,很多時候為了壓縮生成的彙編代碼,會被迫使用一些不符合軟體工程的代碼…當然隨著編譯器的進步,這一點會漸漸得到改善。
學c++?那還是看書寫demo吧!
單片機,嵌入式,PC操作系統,可以看成是計算機的發展史,有助於你學習計算機組成原理和操作系統。至於c++,感興趣可以看看飛控源碼,四旋翼其實挺好玩的,只要不飛沒了就行!
大學裡電子設計其實挺好的,你可以了解下你們學校的相關實驗室(有興趣可以賴著臉皮跟學長一起玩)。
大一,還年輕,玩(學)的開心就好!呵呵。。。我和樓主相反,大一開始玩的單片機,現在入手c++,我發現整個過程基本上在自頂向上學習,單片機有沒有用要看自己能玩到什麼程度,我基本上是從裸機,操作系統,到小的網路協議棧,大部分人玩單片機只是51.然後跑到arm上,直接用別人寫好的程序,開發庫,協議棧什麼的,沒啥意思,我覺得不對,到底層去,看看別人驅動怎麼寫,看別人用c語言怎麼組織代碼,編程的,有限的資源(cpu,ram,rom等),才能鍛煉你編程能力,學的是想法,不要只停留在碼農的階段,不僅是所說中斷啥的概念,是程序員都知道,如果你沒啥耐心,就不要學了
有用。近距離接觸硬體能更好地理解C。對C的深刻理解能更好學習C++
這樣的回答是不靠譜的,目前單片機開發用的語言基本都是C語言,即使是32位的單片機依然是C語言的天下,如果非要說對C++有用,那也是單片機開發加深了你對C語言的理解,而C語言的精通是可以促進C++的學習速度和理解力的,因為C++是C語言的超集。