前段时间,有亲戚家正在上大一的工科小孩问我要不要学习单片机,我不知怎么建议。因为我自己上大学期间,学习过一段时间单片机,自学真的很难很枯燥,慢慢兴趣减弱,最后就没有坚持下去。因此,对亲戚家小孩的提问,便一直没有给出回应。
  近日,闲逛知乎,无意看到了一篇关于《穷X就别学单片机开发了》的文章。看完后,感觉文章语言风格有点犀利,内容上有值得采纳的地方,也有值得反思的地方,不可一味盲从。
12.jpg1596x745 137 KB


原作者:知乎专栏——立党说
链接:https://zhuanlan.zhihu.com/p/24600717
  考虑到面包板社区,这里有许多电子行业的大牛,工程师,学生等人士。于是把此文转载到面包板社区,希望得到大家的意见和建议。面包板社区的网友们也非常热心,下面将一些真挚的建议整理出来,大致分了几个不同的组别,与君共勉!

    劝退组:

  @Evan.i:嗯 我也刚刚劝退了一位朋友。
  劝退失败组:

  @潜龙思瑞:看了楼主的贴子,更想学单片机了,原因很简单明知山有虎偏向虎山行!
  @雨中漫步:坚持玩,一百年不动摇!
    寻求真相组:

  网友Darcy就文章中的51单片机的薪资问题表示震惊和疑惑。下面是网友Darcy的回复。
  @Dracy:
  
原文观点:“现在学51单片机,大概一个月能赚3000左右。”
  不是吧,我以为会单片机怎么着也能有个大几千的。
  有人说51过时了之类的,那我来告诉各位51非但没有过时,而且一直是MADE IN CHINA 的低阶产品的最爱。因为它便宜,而且生产厂商(包括中国厂商)众多。
  比如你日常用的热水壶,电饭煲, 微波炉之类的小电器,如果是那种低阶傻瓜型的,十之八九里面用的都是51单片机。(而且以中国厂商的操行,用单片机都觉得浪费了。我见过最烂的烤面包机,里面就是一个机械的定时器,没有单片机)。为啥?因为这些产品的售价低,销量大。许多产品年销量都在百万台以上。所以如果BOM COST 降一块钱,每年就是多100万的毛利。前面还有说用汇编写51单片机过时之类的。呵呵,深圳的老板们可不这么想。
  因为如果用汇编,把原先需要8KB内存的程序减少到4KB,那么单片机选型的时候,就可以选择同类产品里更低的一档,BOM COST 可能有可以减少5毛钱。按照每年百万的销量,每年可以多50万的利润。而且这类产品不象手机更新这么快,一款产品可以吃上3到4年,这样进出就有200万以上了。而如果按照工程师月薪2万计算,让一个工程师花上一个月的时间用汇编优化,就可以换得200万以上的回报。这样的投资回报率,为啥不去干呀。这年头大家都喊着要工匠精神。能静下心来优化代码,为企业获得利润,体现工程师的价值,这个才是真正的工匠精神吧。当然,200万在北上广土豪的眼里也许连半个卫生间也买不下来。但是对知乎上的许多人来说,200万可能就是他们10年的基本工资了吧。另外,还有一个原因,也是中国厂商特别喜欢51的原因。因为中国的几乎所有的大学都教授51单片机,所以非常容易招人,不需要再另外培训。而员工的试错培训费用,实际上可能是最昂贵的隐形开销。
  这里说2万, 是不是水了些。
  所以真相到底是什么,不明真相的小白求大神指点~!
    善解人意组:

  网友2523太正能量啦!回答很善解人意。
  @2523:
  
1、大一不要学单片机,好好的打基础,可以留到大三、大四学。
2、学习单片机不能光会走几个流水灯、复制粘贴几段程序就行了,需要学习算法、操作系统等更加深入的东西。
3、学习单片机的大一新生,很多半途而废,想要学会就要坚持下来。
4、即使学会了单片机,也不能说自己牛逼的不得了,因为这才是刚刚开始!
    事实分析组:

  @忆轻狂:
基础打好了,学起来就是好很多了,能理解很多细节的东西。但是现在的开发环境下,做技术的难以深入,都会被挣钱多的行业吸引过去。
  @john:
目前想聘请会写8-位单片机的工程师,越来越难,懂会编更难,在我们公司里写8-位单片机的工程师工资,都比写ARM工资高,我们发现越来越多8位单片机功能很强,单价很有优势,用电功率很低,又可以接蓝牙芯片,性价比很高。
  @mymj:
单片机学习精通一样可以作许多极复杂的系统最重要的就是,要把基础电子学,电路学,数字电路,微处理机,界面电路,程序设计,数据结构,专题制作每一样都弄懂到精通,只要精通,从51到32位单片机或崁入式系统,甚至作手机或大系统,转一下再努力一下就可以了。
奉劝有志学习的同学,好好把基本功练好。
发表"穷逼就别学单片机开发了!"的大哥,片面说法,没讲清楚。
  @4762:
这个太偏激了。51可以做的非常复杂。也可以接各种设备。主要是便宜。年薪不够是因为你做的不够深入。做什么都有工资高和工资低的。和做什么没有关系,和做的事情是否复杂没有关系。
举个简单的例子,打篮球简单吧,只要把球投进去就好了。
但是你的年薪有几个可以超过NBA,甚至CBA的球员。专注做好一件事,够聪明,做什么都一样。
    最有态度组:

  面包板社区有来自台湾的网友 frank来表明态度,就原来文章中的几个观点一一剖析,表明自己的态度和看法。
  @ frank:
  
原文观点1:关于“学51单片机,大概一个月能赚3000左右。”
  评论:3000只是菜鸟的起薪, 单片机玩个一年还无法过渡到嵌入式系统, 或者产品找不到方向,没有创意,那身价当然上不去!
  
原文观点2:"连数电和微机原理都没上过,就硬要上单片机这种跨领域的东西,简直是囫囵吞枣,自取其辱"
  评论:那是不是没学过芯片设计VHDL/Verilog也都不要用芯片了? 不知道发动机原理也不要开汽车了?我在台湾教小朋友用Arduino+Scratch玩机器人, 就两个月小朋友也能写些简单机器人跳舞的程序啊! 要让学习的学生维持高度的学习兴趣最重要, 不要动不动要从数电微机原理开始, 当学生被一堆理论挡在前面, 还能维持多高的兴致学习单片机? Arduino之风行全世界, 就是因为他把芯片控制的一些缓存器设置包其来, 简化使用,程序一开始不用去设置那些缓存器, 怎样把这个pin设成I/O模式, 然后昰输入还是输出, 输出到底昰push pull 还是open drain? 如果要一个单片机入门者都搞清楚这些设置的所有缓存器, 那要多久? clock设置internal 或external, internal的内部RC clock是不是又要从仿真电路开始教起?
  这年头知识发展太快, 我都不信所有用ARM M0/M3的人都知道其芯片内部流水线有几级,差异何在? 我也不信所有用ARM仿真器的人能了解ARM内部仿真区块工作的原理! 这年头, 设计就像堆积木, 有很多积木内部原理, 我们不可能一一都了解, 但只要知道输入/输出规格, 能应用才是重要! 用MCU设计系统, 跟设计MCU昰两回事!
  学单片机, 先会玩, 喜欢玩, 再来一步步深入了解内部原理才是循序渐进的好方式!
  
原文观点3:“叔叔推荐给你三本书:CSAPP,Deep Learning,Introduction to Algorithms”
  评论:喜欢玩单片机要从这三本书看起??? 这叫知识的武断, 大叔另外建议你另三本, 比较偏硬件的, 但是你得先学过数电/微机原理!
  
1.C Programming Language(K & R经典),
2.MCS@51 MICROCONTROLLER FAMILY USER’S MANUAL, Intel 8051使用手册
3.ARM System-on-chip Architecture, ARM内部架构,
  这三本书是我这个大叔建议的, 是给想走单片机偏硬件方面的人看的! 跟楼主建议的不同, 因为楼主所建议的很明显昰偏软件的. 如果你单片机是用在车用/家电/自动控制上, 很明显的我建议的会比楼主建议的有用多了!
  学海浩瀚无穷, 但学单片机, 建议都从8051开始, 把Intel 8051使用手册K个熟透, 每一张图/每一行字/每个指令都要知道意义, 要会写简单的汇编, 但大部分的程序可以用C写, Keil 8051C的优化能力已不输人工手写汇编, 不信的话你写个case的指令, 用Keil C optimize最高的compiler option去编一下, 再看看他翻出来的汇编, 看看你手写是不是能如此巧妙的利用8051指令.
  谈到C语言入们, 就是原始设计者的书最好, 语言风格简洁有力, 是C入们最好的一本书, 没有之一, 书中习题挑一些来作, 语言一定要写, 有实作才能真正吸收.
  要由8位过渡到32位, 想深入了解ARM, ARM System-on-chip Architecture是原始设计者之一所写, 讲的是ARM 内部架构, 及指令集,建议要玩嵌入式的人要看. 因为8051跑不了linux, 而须要ARM 这类能力较强的MCU.
  至于软件方面, 因为小弟是硬件工程师, 用的只是C, 很少用到C++! C++是用在IC设计的simulation用, 真正单片机/嵌入式系统我都只用到C, 因此在RTOS上要看些什么, 这不是我内行的地方, 得另外问高手.
  但就我的应用, 光无OS的应用都够我维生. 以电子鸡的案例, 这也是8位的玩具, 这是台湾厂商OEM给日本万代的, 这小玩具能大卖靠的是创意, 软硬件都不复杂!
  创意远比能力重要, 尖端产品, 大公司时时刻刻都在盯者, 不只比设计能力, 更比量产规模及市场能力, 但所有单片机设计都得往手机/智能家电/智能驾驶高端应用方面走吗?
  有多少作单片机的人须要了解MACHINE LEARNING呢? 我的控制方式比较烂, 不是optimised, 优化是 order(n), 我写的烂order (10n), 所以优化10us完成, 我花了100us完成, 但我的系统1ms中断一次, 我只要在1ms中完成即可, 那有没有optimize, 于此也不是很重要啊. Algorthms能了解很好, 但对单片机而言,非必须品!
  对大一新生建议
  大一的学生, 应该多方面尝试, 看看哪一方面的科目, 自己觉得有兴趣, 而且玩起来适合自己能力范围比较重要, 不是高技术就能高收入, 作Dram的技术够高了吧! 台厂/日厂不也倒了一堆?
  知道电子鸡给那家台商赚多少钱? 上亿台币, 估计是他当初资本额10倍以上! 电子鸡这样的单片机产品, 不也只是一个8位单片机含液晶驱动, 加个液晶片一个蜂鸣片,三个橡胶按键, 一个电池而已呢?这需要高数、线代、概率吗?
  技术很重要, 但产品方向跟创意更重要! 杀的是鸡时, 就用不找牛刀!不用了解引擎原理, 再来学开车!
  理论很重要, 但支持你的学习兴趣更重要! 一个让你赚很多钱但不开心的工作, 跟一个让你赚的不很多但作起来很开心的工作, 你选哪样? 要我, 我要过的开心些, 就算是茅草秋风破, 山村小过活也行, 我要开心的过日子, 我不要爆肝的生活!
  坚持支持大家一起来玩单片机一百零一年不动摇!
    如果您看到这篇讨论,希望您加入讨论,分享你的智慧,提出你宝贵的意见和建议,不胜感激!
  文/面包板社区整理