程序员需要哪些技能

程序员需要哪些技能

------本文纯粹拙见一篇,系阅读前人真知灼见有感而发。错误之处在所难免,还望批评指正!

 

      提及程序员,很多人主观地认为程序员嘛就是编程序的人员。更有甚者,人前高呼:“昨天我请一个程序员给我修的电脑,别说修的真不赖!”,虽是笑谈,但真正的程序员究竟需要哪些技能呢?

  • 宏微观经济学

      你不免会说我又不是经济学家,学什么宏微观经济学。的确作为程序员的本职工作就是开发程序,干嘛和自己过去学什么“砖家”整天谈论什么GDP这些个看似高端实则无谓的东西。但程序员首先作为“员”,就是人员,那么就要面临社会,面临生存的问题。如果不明白经济学中的供需变化,那么有朝一日你可能发现修炼已久的技能竟然没有了社会需求,或许你辛苦数月英雄一般地开发出一款基于DOS系统的超级应用竟然无人理睬。所以学习这门知识,且不说玩转机会成本下的跳槽博弈,亦可有所针对性的为产品定价出门。好了,你是否决定和恩格斯一类的大人物对对话了呢?

  • 硬件系统的使用和维护

      你可能要说程序员的脑子有毛病了吗,难道真要为人前高呼的家伙修电脑不成。作为程序员当然没必要拿着红黑颜色的电笔点来点去,但是如果有一天你的电脑无故死机了,拿去一修,竟然只是内存条松动或者积了些灰尘,如是的小BUG难道真的是臭虫的罪过吗。或许哪一天你来到一家新的公司,IT给了你一部笔记本,怎么开机后就不动了呢,这时你还可能正拿着U盘傻等并盘算着公司这坑爹的举动。所以学习这门知识,小处咱可以把电脑化整为零带着CPU和几个小东西满世界的飘;大处咱亦能守在一堆服务器旁,看着黑屏上的跳动字串,嘴里嘀咕着你小子终于出现了看我不封了你的脉门;不大不小就是你只有光驱要系统,刻盘一张搞定,哎只有USB接口,照样U盘一个搞定,什么只有网卡,照样一根网线一部借来的电脑搞定,更极端的是什么都没有,那好给我一块正负极磁铁并卸下硬盘照样搞定!

  • 汇编一类的语言

     你又会想莫不成程序员要回到远古,整天拿着卡片刻来刻去打来打去。程序员当然不会傻到扛着自行车上路。但深入底层的语言,有助于咱理解程序究竟如何与硬件契合,程序又是如何基于硬件却又生化于硬件,在BIT位的操作更有助于我们对零和一的神奇功能有个折服级别的认识,哪天不爽了就非得写个1+1+1+1+1一类的个性表达式,没有*的世界依然玩的转。如果一不小心你走火入魔了,那就在家等着AMD或者那谁也来个三顾茅庐什么的。

  • C语言

     你也许会说我本JAVA一招鲜,何愁外包难吃饭。嗯,不能说没有道理。但是哪天你的老大叫你搞个优化,你或许会唏嘘:我去,这POINTER究竟在干个啥。且不说面向过程的编程思想如何在特定的领域发挥他的巨大威力,就是JAVA也是在C的基础之上进行了层层的包装才展现在大家面前的。学习了C的基础语法不是真的掌握了他的精髓,就像int和INT究竟又有哪些区别,也只不过是一个一楼的从窗口跳出去,在地上有了个一厘米深的脚印,而另一个三楼的从窗口跳下去,依然在地上有了个一厘米深的脚印。如是地掌握了C面向过程的编程思想,就有了解决问题的线性思考模式,比如你想从躺着的床上起身去开门,干嘛非要先想一个我,一个床,一条路,一扇门,然后我要走,要经过路,要打开门,直接我从床上起来经过路打开了门不就完活了么。还有一点那就是备受诟病的指针,确切的说应该是指针变量。这的确是个神奇的东东,不管是一维的世界或者多维的世界,我们只管拿着一个POINTER,就能够自由地穿梭于期间了。为什么玫瑰漂亮,就因为她满身的指针变量。

  • C++语言

      这回学JAVA的你大概不会说什么了,毕竟咱都是搞OOP的,但你还是会说丫的玫瑰的指针变量究竟扎到了谁,你添个.SORT能死吗。的确是这样滴,C++并没有丰富他的库函数,但这也正是他的美之所在。现代人不是更喜欢个性,更喜欢DIY,更喜欢不走寻常路吗,那么C++给足了你当游侠的机会。说的难听点,就是JAVA,对就是JAVA也还是咱C++当得垫脚石啊。实际上掌握了这门语言,我们会更好的认识封装的必要性,如何封装,当然客观上一个完全的封装根本不存在,因为只要你耍赖,照样用玫瑰的指针变量把藏在衣服里的戒指狠狠地挖掘出来。同时,我们也就更深入的了解了泛型编程的机制和必要性,说不定哪天我们对着计算机喊一句来个能聊天的妹子,根据你的需求相应的组件自行匹配整合后就诞生了一个全新的女神。继承也是不得不讲的,如果说JAVA是纯粹的OOP,那么他也是民族主义较强的讲求血统的独裁者,为嘛非得爹生儿,儿生孙,当然人家还是允许认个INTERFACE之类的干爹。而C++就大度的多了,完全网状的血统模型,够你描述这个缤纷复杂的世界了。还有一点,现在的STL也会满足大家的需求,不必为了个.SORT斤斤计较了。

  • JAVA语言

      好吧,这回算是讨好你了,JAVA战士。但这还真的不是讨好,因为每个程序员的人生路从这里才刚刚开始,因为他们已经离开父母到大千世界去远行了。什么跨系统的特性,字节流般的顺畅运行,各种大牛依然做好的标准框架,足够咱折腾的了。你想表现,那就表现的顺畅淋漓;你想控制,那就给你个希特勒般的独裁;你又想搞个处理,还是给你个超大的超便捷的可固化的模型。到了这个阶段,程序员可以思考一下人生了,因为人生的一些思想,就是打破常规有所创新的原动力。也许哪一天SSH一类的东东已然成为过去,而掘墓者就是你。

  • 操作系统,设计模式,团队管理......

     都到这里了,你完全是个可以四处征战的游侠了,祝福你,我亲爱的程序员们!!!


### 回答1: 一位优秀的嵌入式程序员需要具备以下技能: 1. 熟练掌握计算机系统原理: 包括计算机组成、系统编程、网络编程、操作系统等。 2. 精通嵌入式系统开发: 包括嵌入式系统硬件平台、嵌入式系统软件开发、嵌入式系统调试与测试。 3. 熟练掌握多种编程语言: 包括 C、C++、Python 等常用编程语言。 4. 具备良好的算法和数据结构能力: 包括算法分析、设计、实现和优化。 5. 了解通信协议: 包括常用的通信协议,如 TCP/IP、HTTP、UDP 等。 6. 具备良好的代码能力和软件工程素养: 包括代码规范、代码评审、代码版本管理、持续集成和持续交付等。 7. 具备团队合作能力和沟通能力: 包括与团队成员协作、解决问题、沟通和交流。 8. 具有不断学习和提高的热情: 包括对新技术、新工具和新方法的不断探索和学习。 ### 回答2: 一个优秀的嵌入式程序员需要具备以下技能: 1. 物理硬件知识:了解嵌入式系统的硬件结构,包括处理器、内存、外设等,并能够深入理解电子电路和模拟数字信号处理。 2. 编程语言掌握:熟练掌握至少一种嵌入式系统常用的编程语言,如C、C++或汇编语言,能够根据具体需求灵活选择合适的语言进行开发。 3. 操作系统理解:了解嵌入式操作系统的原理和常用的操作系统,如FreeRTOS、Linux嵌入式等,并能够根据项目需求选择合适的操作系统。 4. 驱动开发能力:具备硬件驱动开发的能力,能够编写底层驱动程序,实现与硬件的交互和控制。 5. 调试和故障排除:能够熟练运用各种调试工具和方法,快速定位和解决嵌入式系统中的问题和故障。 6. 通信协议熟悉:了解嵌入式系统中常用的通信协议,如UART、I2C、SPI、CAN等,并能够设计和实现相应的通信功能。 7. 项目管理能力:具备良好的项目管理能力,能够合理规划、组织和执行嵌入式项目,并能够有效地与团队成员进行沟通和协作。 8. 持续学习意识:嵌入式技术更新迭代很快,一个优秀的嵌入式程序员需要具备持续学习的意识,能够不断跟进新技术,保持自身的竞争力。 综上所述,一个优秀的嵌入式程序员需要具备硬件知识、编程语言掌握、操作系统理解、驱动开发能力、调试和故障排除能力、通信协议熟悉、项目管理能力和持续学习意识等多个方面的技能。 ### 回答3: 一个优秀的嵌入式程序员需要掌握多个技能方面。 首先,他们需要有扎实的编程能力。嵌入式系统通常会使用C或C++等低级语言进行开发,因此程序员需要熟悉这些语言的语法和特性,能够高效地编写代码,并理解如何进行内存管理和调试。 其次,他们需要了解硬件知识。嵌入式系统通常与硬件设备紧密结合,因此程序员需要了解微处理器和微控制器的工作原理,能够读取和理解芯片手册、数据手册等硬件文档。他们还应该了解外设接口和通信协议(如UART、SPI、I2C等),能够与硬件工程师合作进行硬件与软件的交互。 此外,良好的系统分析与设计能力也非常重要。一个优秀的嵌入式程序员需要能够理解系统需求和功能,根据需求设计合适的软件架构和算法。他们需要具备模块化设计思维,能够将复杂的系统划分为不同的模块,并管理模块之间的接口和通信。 另外,对于软件工程的知识也不可或缺。嵌入式系统开发一般会有严格的资源约束和实时性要求,因此程序员需要学习如何进行优化和调试,如何进行测试和验证,如何进行版本控制和团队协作等软件工程实践。 最后,持续学习和创新精神也是一个优秀嵌入式程序员所需具备的。嵌入式系统技术在不断发展,面临的挑战也日益复杂,因此程序员需要保持学习的状态,关注行业动态,并能够思考和应对新的技术和问题。 综上所述,一个优秀的嵌入式程序员需要具备扎实的编程能力、硬件知识、系统分析与设计能力、软件工程知识,以及持续学习和创新精神。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值