本人現在是物聯網專業學生,想要掌握一門語言,是先學python還是彙編?

覺得學會彙編基本解決了硬體編程,但是聽說python比較好入手,所以希望大家給下意見。


如果只能上述二選一,你還是學好Python把。

雖然我平時喜歡用彙編來寫晶元的底層程序。但對於一般想從事電子、嵌入式、硬體設計的人來說,彙編只要能大致讀懂就行了。是為了方便調試程序的時候查看一些反編譯的彙編指令以及某些bootload程序。

彙編這東西你是無法完全掌握的——因為不同架構的晶元,有著不同的彙編指令集。

比如我們常說的X86彙編指令(也是大部分中國大學的課程中,會教的彙編指令),8086好像有接近兩百多條指令把(原諒我已經有10年沒接觸過8086的指令了),到了奔騰的年代,Intel又增加了幾十條mmx的指令。這是CISC的,而作為RISC的ARM指令則少得多了,只有五十多條。

如果是PIC架構的8位MCU,則更少,彙編指令只有三十多條,連乘法和除法指令都沒有,在PIC8位MCU中,你想用彙編做乘法,只能是循環移位或者循環累加的方式。

而且不同架構的晶元,其彙編指令寫法也不完全相同,比如X86的數據傳送指令都是MOV,而PIC中有MOVLW和MOVWF……而TI的C2XXX系列DSP晶元中,只有內部數據區的數據塊傳送是用DMOV,有點類似X86的MOV,其他的數據轉移都用BLDD、BLPD、SPLK等指令。

彙編這東西,只有當你用到時候,查看晶元的Datasheet或者user manual就夠了。沒必要專門去學。


我覺得你應該學好c/c++以及python。物聯網專業,底層一點的涉及到嵌入式軟硬體設計,以c/c++為主,涉及到需要用彙編的如BootLoader編寫,一般晶元廠家都會提供好。應用層編寫的話,我常用qt或者pyqt吧,好像也有用csharp開發的。


基本同意 陳俊直 和 SunRising 的看法。這裡補充下Python:

堅持學Python,你可以:

1、使用爬蟲抓取女神/男神所有微博照片;

2、使用框架搭建Web伺服器

3、當一名黑客,白帽子灰帽子黑帽子沒有綠帽子;

4、使用樹莓派玩硬體;

5、做個UI應用;

6、智商牛逼的,考慮一下人工智慧/機器學習方向;

結合題主的專業,可以考慮用Python搭建一個設備端的伺服器,處理設備上傳的數據,並寫個頁面展示這些數據,或者提供個介面給別人查詢這些數據。


你說的彙編語言是哪種指令集?

你說的硬體編程是哪種硬體?


python+java 就業走互聯網線

c+verilog 就業走嵌入式路線

c++/c# 軟體應用

如其他回答說的,你一輩子也碰不到幾次硬體。

——————分割線———————

從行業發展的前景回答你這個問題,互聯網+以結合傳統行業和發展雲計算大數據等任務為主要目標。

鑒於目前就業市場的需求,建議走互聯網路線。

此外,人工智慧、HTML5的興起,讓我們進入了一種頂層思考模式,例如Google開源的人工智慧項目TensorFlow使用了python,雲計算框架OpenStack也以python作為開發語言。可見發展至今,底層基礎建設的完善使計算機行業進入了新紀元。

以Python作為編程工具我是強烈推薦的,然而計算機是什麼,原理的怎樣的,仍然值得我們去研究清楚。


你還是學好數字電路模擬電路單片機C語言吧。


怎麼看都是學c啊


如果不走硬體路線的話,彙編完全是不必要學習的,當然多學一門語言並不是壞事。從先易後難的角度考慮,先學python 要來得快。


要做晶元設計,學verilog,你要底層開發驅動,那就學c.你要做上層應用開發,python,java,c++,學個啥彙編啊。真要想做嵌入式,語言上c就夠了啊,彙編在debug的時候看的懂就好。看你這個專業名稱,估計也是往互聯網方向上走的路子。


我建議的路線是先學python,打打編程基礎,建立計算思維。

再學C,可以用嵌入式練手,提高專業能力。

再然後彙編,很難掌握的底層語言放到最後,調bug看反彙編很有用,或者有時候用彙編寫點代碼放到單片機里跑是能提高效率的。


彙編就不要學了,十幾年前硬體跑不動的時候大家還搞搞彙編,現在都往高性能跑,排在前幾的語言都是不計較性能的,面試也幾乎沒有要求彙編的,既然是物聯網,那肯定是軟硬結合的,怕C就走Python吧,隨便買塊板子,諸如樹莓派、海思之類的都能跑C+Python


還是學java ee 吧,也許畢業後能混口飯吃,物聯網這麼廣,學校里樣樣學點,走硬體還是軟體的路,自己想好!


彙編我印象是大學時候都會學的吧,同意前面同學的看法,彙編能看就可以了,物聯網這麼廣,不一定非得玩硬體,而且也不是畢業後非得干這行吧。而且其實做硬體其實已經不怎麼景氣了,就拿我司來說,其實就是披著硬體的皮做軟體的,大多數人用的都是C,而最近其實也在逐步向IT 靠攏,編程語言也在逐漸轉變中,從嵌入式的語言向適用於分散式的語言,比如Go 語言之類的變更。

因為工作的關係,接觸NBLoT 大概有半天 (被其他事情耽誤了,目測明年才能正式接觸5G 相關的東西),感覺其實物聯網其實已經逐漸再嚮應用層,所以其實即使做物聯網,接觸底層的機會也越來越少了,之後的期待的也是殺手級應用了。

還是覺得Python 跟適合一些,畢竟入門快,可以快速實現很多東西。當然C 嘛,建議還是了解下,畢竟工作了隨時換門語言都是可能的。

我自己是大學時學的C,自學的Java ,然後工作了被分配做測試去了,學了TCL,後來因為經常要寫工具就自學了Python ,然後從此一發不可收拾。至於彙編,因為一直在做安全測試,也就偶爾會用下,看懂就好了。


這兩個語言差距也太大了吧


先吐槽一下,什麼時候大學多了個物聯網專業呀。。。

開始答題

如果是物聯網的話,我的建議是著重學一下彙編,c語言吧,其中彙編的話重點放在arm彙編,mips彙編上,上面有人建議從Python入手,誠然Python簡單,但是Python編程思維方式和真實的物聯網開發的思維方式區別比較大哇,當然學下Python還是有用的,好多公司都用Python作為自動化測試腳本


有搞彙編的精力,用來學C不是更好么!


python吧,可以很快入門,玩起來,我畢設就拿python搭建了一套有前後台的伺服器監控程序~在寫代碼調試的過程中還是學到很多的東西的~


彙編,是你的專業基礎,這個是你必須會的,不過其實工作中能讀懂一般就夠了;

Python,坦誠的講,你以後做的嵌入式工作用到的相對較少,主要用於爬蟲等應用。

這兩個選一個,那肯定Python有前途啊,現在這個年代,你又能用彙編做多少東西呢?

以上是針對問題的規範回答,下面拓展拓展問題。

先拋結論:物聯網是嵌入式的一個方向,所有的編程語言中,你首先要精通的就是C語言!!!然後才是C++或Python等這些應用層語言。

舉個例子。

現在ARM內核的晶元佔了全球大部分的市場份額,其Cortex-M3內核還有面向物聯網的低功耗M4內核,有很多物聯設備在用,如智能硬體。

ST公司的stm32應該了解吧,佔了大部分的市場份額。其編程的方式有兩種,寄存器編程和固件庫編程。固件庫便是ST公司對寄存器操作的封裝。在工作中,基本上是用固件庫編程,開發效率高,程序可讀性好,後期維護成本低等等這些都是工作中選擇固件庫的原因。而寄存器編程除了用於個別要求較高的環境,其他基本是用於學習和理解。

而固件庫編程的要求只有一個——C語言。你需要能讀懂源碼,調用API,這能更深層次理解晶元。精通C語言,你能理解更快更好。

這是底層編程,往上便是應用層了,這時才會用到高級語言,如C++、Python等。但坦誠講,這都是後話了,而且有專門的人在做。

你現在還沒畢業,一定要趁畢業前打好C語言基礎。推薦你幾本書好了,C語言的必備書籍。

《C程序設計語言》(KR)、

《C Primer Plus》、

《C和指針》、

《C陷阱與缺陷》、

《C專家編程》

如果你的C語言基礎幾乎為零,那麼你可以按順序讀下來,這幾本都是很經典的C書,通俗易懂,相信我,C很簡單的。還有一點,這裡我不是黑譚老師,我並不推薦初學者去看他那本《C程序設計》,理由不說了,知乎里一大堆。

再說一遍,底層開發,C最重要!!!


學C彙編現在很少用了!不過我現在也在學python!


對剛接觸編程的人,可以先看看《計算機程序構造與解釋》。這本書想當於編程概論...


推薦閱讀:

電錶(智能)是如何聯網的?
最近礦難頻發,那麼有哪些安防產品可以用來有效保障煤礦安全生產呢?
智能家居里的布線為什麼這麼重要?
如何看待谷歌推出的新物聯網平台 Android Things?以及前景如何?
物聯網行業什麼時候能發展起來?

TAG:物聯網 | Linux開發 | 嵌入式開發 | 硬體開發 |