程序员的底气从何而来?

      做人要有骨气,做程序员要有底气,是否有底气,有多大的底气要靠自己对软件的深入了解程度。

      举个例子,做Windows Native编程的人,如果只会用MFC,ATL之类的框架,而不了解框架下面发生的事情,那就没有底气了,遇到了框架解决不了的问题,或者一些莫名的错 误就不知道如何解决了。框架也是人编的,必然有这样或者那样的Bug;好了,你了解了框架的架构思路,查看了框架的源码,了解了Win32 API,这回比以前有点底气了,但是不要高兴得太早,如果你想实现一些Win32 API不提供的功能,想开发点内核程序,那么就需要了解内核的运作原理了,就需要精通汇编与二进制调试了,就要学点“歪门邪道”了,搞点内核级别的 Hook,当然并不是只有恶意的程序才需要保护自己。从逆向工程中,你会看到Windows系统每一个运作细节。这个知识就远比Win32 API来得要慢,需要时间的积累;这时候你会觉得自己对Windows编程成竹在胸,但是也别高兴太早,你要思考的已经是如果让你编写操作系统你要怎么做 的问题,如果不这样做还能怎样做的问题,吃别人剩下的东西总是受制于人。一个比较现实的问题就是很多Windows程序员不知道如何“安全编程”,总留下 缓冲区溢出漏洞,如果你了解Windows下程序的运作机制以及如何进行缓冲区溢出,你也就知道如何在编程中避免给别人留下后门了。
   
     再举一个例子,做Java的人,目前已经被SSH给毒害不浅了,不是说SSH(Spring+Struts+Hibernate)不好,而是说这样“方便 的”框架让程序员越来越懒,越来越不爱动脑思考问题,从生产力角度衡量这个可能是好处,毕竟对程序员的要求越来越低,但是万事万物都有一个规律,容易得到 的东西也容易被抛弃,价值也就不够大,程序员的价值实际上也在贬值,所以,做Java的人千万不要满足于熟练使用框架,那样你的发展前景就大事不妙了,我 们要学会透过框架追寻本质,程序员就要明白程序的本质。比如Web框架,ORM框架,实际上是基于什么技术的,WEB基于Servlet/JSP规范 的,ORM基于JDBC规范的,那么框架做的是一个设计模式以及一些经验的总结。那你就要深入的了解一下规范的事情,看看用基础的 Servlet,JDBC如何编写实际应用,但这仅仅是一个小小的开始,整个Java的API体系是比较庞大的,有些API是跟具体操作系统无关的,这些 主要是容器、算法相关的API,而跟具体操作系统有关的,最终都要通过JNI规范调用系统Native API,如进程、线程、网络、GUI等等。特别对GUI编程,Java世界内目前的AWT/Swing,SWT两大阵营,你要通过分析源码实现,就知道他 们的实现原理了。因为Java要封装使用操作系统原生的支持,如GDI,OpenGL,DirectX等,那么你也可以学习一下自己如果编写一个中间抽象 层的话,如何用一直的API接口来封装这些调用。到这里还不够,你得深入了解Java虚拟机了,Java虚拟机的好处是有个规范可循,你可以看看一个实际 的Java程序是如何运行的,这里要关注内存分配与回收,也就是Java的垃圾回收机制,指令可以通过JIT加快执行效率,但是内存如果需要动态分配与回 收就是一个影响性能的主要课题,了解了它的工作原理,你也就不至于面对JVM的内存溢出或者程序性能调优茫茫然不知所措了,你就有了很大的底气了。
   .NET大体上跟Java平台还是类似的,可以按照同样的思路去深入了解。
   总之,作为程序员,在需要抽象的时候你能抽象得上(熟练的算法掌握),需要深入的时候,了解为什么的时候你能探究为什么会这样的话,那么你就活得舒服多了,有尊严多了,有底气了,腰板也硬多了。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值