个人总结,计算机专业从业者,尤其是工程师,需要掌握以下知识和技术:
1. 多多益善的数学功底
毋庸置疑,逻辑思维的基础,可能某些人天生适合逻辑思维,但是经过长时间的数学思维锻炼,逻辑思维一定是底子很好的!
要求程度: 第一阶段是够用,接下来是越充实越好!
如何训练:不要刻意去看书,去重新学习数学课本,方法是算法驱动,也就是看算法需要的时候再去看对应的数学知识.
2. 专业的英文阅读能力
当需要研究国外的芯片数据手册或者相关文档或者标准时候,专业的英文阅读能力是相当重要的。这个不必多说!
要求程度: 第一阶段还是够用,当然也是越多越好!
如何训练:多看、多听,多看包括英文网站,英文文档,多看就是电影咯,这个简单。
3. 计算机相关原理
方面很多,例如:计算机的计算模型,cpu、内存、硬盘之间的关系,机器指令、汇编、高级语言的关系,函数调用的原理,c++对象结构,进程调度原理,内存分页原理,内存管理,编译器原理,虚拟机原理,程序加载原理,解释器原理,面向对象原理,硬件驱动原理,专业术语理解,函数库原理,编译连接原理,GUI原理,可视化工具原理...
要求程度:第一阶段要知道的宽,接下来就是专!如何训练:积累,多学!
4. 相当熟悉一门编译类语言
不如直接说C语言,不一定非要拿C干什么事情才说要学C,而是通过理解C的方方面面,让我们对编译性语言有个整体的把握,基本类型啊,函数过程啊,头文件包含啊,库函数实现啊,操作系统调用啊,程序设计基本技巧基础认识啊...
要求程度:越熟悉越好!
如何训练:多看关于C的书,多写实用程序,多看开源代码!
5. 相当熟悉一门解释类语言
脚本类语言的高效快捷简便,是编译类语言无法比拟的,丰富的库,自由的特性,众多的工具,天生的跨平台性质,让你在手机上看到运行效果。通过熟悉解释类语言,充分理解动态语言的实现方法,扩展方法,通过对比编译类语言,自然能体会语言所提供的诸多特性的来由了!
选择很多:bash\python\perl\ruby都不错,其中python就很好,bash在linux上应用最多.
要求程序:越熟练越好!
如何训练:多看书,多写程序,多看代码!
6. 算法(数据结构)
算法以数学为基础,不过即便没有数学功底,应付非算法类工作也没问题,只要掌握了一定的算法基础即可。但是,可持续的考虑问题,一定要理解算法,理解动机。理解算法背后的内容。
要求程度:越多越好,越深越好!
如何训练:多做题,多思考,学数学,长时间积累不松懈!
7. 设计模式
这里说的设计模式,可以成为广义的不是咱们说的设计模式那本书的设计模式,而是凡是规范的,有范式的程序设计方法,都是设计模式。这个没有办法通过看书就掌握了,需要动手实践.
要求程度:越多越好!
如何训练:多看书,多写程序,多实践!
8. 整理全面理解大系统
一定要完整的理解一个软件系统,包括各个方面。推荐熟悉四类系统:
(1)单片机无操作系统,只要简单无限循环控制的简单界面的应用,掌握如何对硬件编程,如何点灯等。
(2)单片机多任务操作系统,理解多任务的概念和编程特点,当然还有操作系统的实现,框架,机制,启动方式等等。
(3)linux操作系统,理解现代操作系统的原理,实现,非常重要。
(4)Android操作系统,理解了Android系统,就理解了需要学到的计算机的大部分知识哦!
9. 自己动手写这写那
(1)每天写代码->需要的语法也看
(2)每天看算法->需要的数学也看
(3)自己写一个操作系统->简单的,五脏俱全的
(4)自己写一个编译器->简单的,能用即可
(5)自己写一个GUI->简单的,能看图片和文件即可
(6)自己写一个解释器->简单的语法即可
10. 多看多写多思考,贵在坚持
多写代码,多动手调试,多想为什么,多看开源代码,多看书,制定目标,坚持不懈!
本文完.