这个这个……就是要持续不断的学习,能通过自己努力解决的问题,尽量先自己解决,不要一点基础都还没有的时候,动不动就问别人,这时候没有基础,对于问题都描述不清楚,甚至可能你自己想做什么你都描述不清楚;所以,要向别人请教,首先要能够描述清楚自己的问题。英语要学好,很多器件资料都是英文的,很多中文资料,除了由厂家直接提供的和少数几个出版社出版的作为教材的书籍,大多漏洞百出,错误不断;所以能直接看原厂资料,最好看原厂资料,不要被那些无良翻译出的书误了,还要浪费时间去发现他的错误。
一开始我自学的是模拟电路,到现在道行还是不深,只知道基本原理,然后上学是机械行业的学校,在学校时,为了想给家里的老电视机加个遥控,开始琢磨数字电路,74系列,MCS-48,MCS-51;最后未果,但是学到了一些这方面的知识;当时感觉最麻烦的一件事情就是做板子,一直到最近都还是有这个困扰,不是太复杂的电路都用线飞了,为了一块实验用的电路做块PCB,太没必要了。 工作后,因为有朋友折腾电子垃圾,里面有各种各样的单片机,MC68000,8086各种外围,然后又想弄电视机遥控器(最后还是未果,直到现在还是未果,呵呵),开始深入学,51的汇编。当时收入特差,在武汉一家公司邮购(当时还没有淘宝)两块光板,板上用的两块GAL16V8(没能力复制,所以买俩),和一块带固件的27256,然后其他片子就都是从电子垃圾里面找的,自己焊板子,用DVCC-51单板机复制27256,调试程序都没舍得买,直接就是一块裸机;所有的书都来自图书馆,每本书最少都通篇看过两遍;没有数据线,所有的程序编好后都是将输出文件抄下来,直接在DVCC键盘上直接输入机器码,最熟练的时候,可以直接在DVCC上以机器码直接修改程序,包括跳转指令等,现在想起来,真是被逼出来的啊。 工作两年后,成高学计算机,开始学高级语言,最深入的就是C了。其实总结下来,所有的高级语言都是一样的,区别在于接口,子程序之间的接口,和操作系统的接口,和程序员的接口,和最终用户的接口,如果项目组织得好,可以只要求编码的功能,然后各个模块可以用不同的语言(高级语言,汇编)编写,编译成目标文件,最后汇总在一起链接成可执行文件。
由于英语不好,学习起来非常困难,买了一本牛津英汉词典,一个单词一个单词的翻,有些是砍头去尾,然后又拼在一起的,就只有用猜了;反正开始的时候,都要小小的出一点汗的,真的非常困难;至今、我的英语水平90%都是得益于编程过程中的学习,所以,要感谢计算机,让我稍微有了点英语知识。
其实学编程语言,最重要的是要有一个完善的编程语言系统环境,他不止要提供编译、链接功能,还要提供一系列的参考文档,让你不用离开工作另外去翻阅资料,这样就可以节约很多时间,能够及时查找问题所在;到现在为止,我还很怀恋微软的MSC7.0,虽然他是很原始的字符型窗口界面,但是他的帮助系统非常好用,你可以在程序中任意一个位置用鼠标右键点击语句中的元素,直接就弹出对应的帮助条目;MSC7.0的平台还能将其他如汇编、帕斯卡、BASIC这些编程语言集成在一起,相应的语言也提供对应的文档;最后一个界面统一操作,适合多种语言融合在一起开发软件;因为一开始就是从51的汇编学起,所以学C的时候,在X86平台下,跟踪调试都很是得心应手,可以很迅速的判断问题出在哪里。
后来有一段时间,因为需要处理一些类似电子书籍的图像格式,还摆弄过IDA pro,进行反向工程;这些又需要将汇编语句处理成C语言,便于分析程序流程;所以对编程语言之间的联系又有了更深一步的认识和理解;同时还对各个公司编译代码的效率有了一定的了解。
现如今,除了学到一堆编程知识,编过一些小程序出来解决比较容易处理的问题,就没啥成果了;找个借口,可能是我的工作本身就不是能出这方面成果的那个环境吧^_^
说了一大堆的口水话,希望能对大家的工作和学习有点帮助,本来就没啥写作水平,大家别见笑!
小编点评:
从小编跟程工的交流中发现程工是个低调奢华有内涵的人啊!理工科的人都知道,不管是读书还是工作都得勤动手,因为只有在动手制作的过程中才能发现和解决问题。当然就像程工分享的一样很多事情都是逼出来的,人不逼自己一把,永远都不会知道自己的能耐有多大。所以大家一起持续不断的学习吧!!!加油!