回 帖 发 新 帖 刷新版面

主题:转载:程序员老了怎么办?请别让它沉了。谢谢

在我觉得我老了以后!
九月十一,是我生日,全世界都在关心拉登杰作周年纪念,也是我做计算机组成试验的第一天。我在面包板上发了几块74LS34,74LS194,74LS74等等,接好线,打开电源,清零,启动,然后就看到上面的指示灯按照我设计的节拍把放在锁存器里面的数据放到自己设计的四位总线上,然后在不同的节拍送到不同的芯片,一丝不苟,跟计算机里面的时钟周期一模一样......我突然觉得,我对软件设计,失去兴趣了.
回想最当初,也就是初中,用edit做一个bat出来,也是很大的乐趣,到了高中,用javascript做html,更是可以给同学大大炫耀一番.进入计算机系,浏览大大小小的网站,两年的大学生活更开阔我的眼界.不过,我的学习热情,都是从问为什么开始的.我记得我的第一个为什么就是"计算机在起动前为什么知道启动区在磁盘的什么地方?",然后就是"为什么字符串组成的代码能够让网页动起来",接着是"既然我的编译器要在操作系统下面才可以工作,那么操作系统又是怎么写出来的呢"甚至是"汇编语言的编译器是用机器语言写的,但是没有现成的程序,怎么让计算机识别键盘的输入呢......这些问题,伴随着我的学习过程,可以说是动力的来源.因为我每次了解了一个知识点,就有新的,而且往往是更基础的知识点冒出来,源源不断.所以就不断地学,不断地深入.但是,当我看到我在实验室做的"计算机的一部分"正常工作的时候,我突然感觉,那些所谓的"为什么"都不重要了,因为计算机大不了就是这么回事.因为我已经可以用基本的三态电路做个很简单的芯片和辅助系统出来了,用手动节拍来控制它的工作.到这里,再也问不下去为什么了.因为不管什么程序不管什么系统,也就是控制这个节拍的规律.突然觉得,虽然我还有很多不懂,但是,也不是我一直在寻找的本源了!
我不知道应该对这种感觉说什么,解脱?我回忆起学程序设计语言的过程,我当初学习的动力,并不是学了要解决什么实际问题,不过是想证明我能过让他动起来而已!但等我了解多一点以后,才发现高级语言没有其他基础的服务,也是不能让我随心所欲操纵的.所以就去看汇编,看操作系统,看进程源语.最开始写dos下的程序,对自己很不满,因为我用的都是在windows下运行的.等我可以写windows程序的时候,我却发现为了支持通配符和灵活的参数我更宁愿他在命令行执行.在我学c语言的时候我向往用visual basic来化一个程序,但等我学了更多可视化编程以后,我却更愿意去分析编译出来的汇编代码.虽然学习是如此的反反复复,我还是乐此不疲,因为我的目的只有一个:我要更好地掌握他.
现在,我的目的达到了,因为,我可以说没有什么代码我看不懂了.大不了我看汇编出来的代码,再不行,我可以观察节拍脉冲了!也就是说,整个计算机的发展,我终于有了一条线,但有了线我接着要做什么呢?却突然找不到答案了!回想起我的学习过程,换来的不过是一个"了解清楚"而已,太让人觉得悲伤!突然头脑一片空白,以前看到论坛上说什么什么书好,都有想去看的欲望,现在却对自己说,没甚么了不起的,以后有时间看,难的东西不多了!于是东看看西看看,开学买的好多本书,比如<open gl>,还有网上的英文jvm的教程,都没有太多激情去看了,到是天天网上聊天关税,也其乐融融.
相信好多人跟我有类似的感觉.现在,我只能说,我们不过是一些技术爱好者而已,不过是想看看为什么的人,更本不能算是程序员,不管你写出了多少好的程序,如果是怀着这种目的在学习工作,你会有老的一天,就像我现在的感觉,因为你永远都跑不过技术的!
佛洛伊德说过"治疗的最好方法,就是把病说出来".既然我都认识到了,我想,我也有焕发青春的一天.
那一天来了.
我们寝室的特别喜欢diablo,我无聊,也加入了他们的队伍.我发现在游戏里面找东西要按着alt不放,他们当然习惯了,我却不行.不过diablo又一个外挂程序,好像可以截获游戏的消息,来作出地图的全貌.我想了想,也用一个钩子,拦截里面的键盘消息,当我在游戏里面按下一个自定义的键,程序就往游戏窗口发送一个alt WM_KEYDOWN的消息,再按一下就来一个M_KEYUP,于是我找东西的时候就爽多了.
我爸爸在当网管,说穿了就是修计算机,恢复系统.但是一个ghost文件就有2g,放不到刻录机里面的,于是只有分割成小文件,要使用的时候再恢复.我记得当初的arj.exe可以完成这个工作,但是可不可以分割成600m,就说不定.而且既然是重新装系统,也就只有dos,windows现成的程序是不能用的,于是我想了想,用c花了100行,同时解决了分割和合并的问题,而且可以指定缓冲区大小.
这两个程序的代码,不过200行,花的时间也不过一天,但是,做完后我才觉得这200行程序比我一辈子写过的程序都要多!
是他,让我知道了程序员的本质是什么:为客户服务!
我在写这两百行程序的时候,完全是全新的感受.因为里面没有继承,没有多线程,没有记不住的api,更重要的是:所有我以前写的程序,都是为了学习,都是为了试验一种技术或者证明一些语法.而这两个程序,完全没有这些,一切都轻车熟路,胸有成竹.
同时,由于我了解了整个计算机的工作过程,我有从分的理由来为自己选择编程语言,库函数,数据结构等等,以前写程序,是我为他们服务,现在,是他们为我服务!我找了一种心平气和的感觉.
我突然想到我们教授说的一句话"真正的计算机专家,是不懂java的人,因为他没有时间!"当时我很不以为然,不自己写程序,不以coding为职业,还算是专家?现在我才知道,人家根本不屑.以前崇拜写程序的,是因为是我想写代码来体验技术,而计算机的本质却是为人服务的.让他们来coding,远不如让他们去研究"模式匹配","程序证明","软件质量控制"等等算法和基础理论的帮组大,那怕做哪些工作一辈子也不能有一个自己写的程序.
我们老师也说,好的程序员在好的工作环境生活是很有规律的.当时我也以为,如果缺乏热情的程序员,可能不过是井底之蛙而已.但是现在我觉得,如果你现在的技术足够应付你的工作,现在的积累足够让你很快学习好新的技术,你根本不用着急.现在回想起以前通晓看"vc内幕",才想起如果当初先学好c++,windwos api.有很好的积累,看那本书不过是消遣而已.
等我想明白这些以后,我也就不太去关心j2ee跟.net的世纪争霸了.因为那些东西我现在用不着,他们既然是高效开发工具,以后要用学着也肯定很快.反而更去关心以前不太重视的数据结构,操作系统等等,现在看了一遍还觉得不够,还要去找点奥林匹克的题目来研究.那些东西,以前我都认为是"好学生"看的,不是有"实际能力"的学生太去注意的.
所以我突然觉得,我走了很多弯路!
然后我反观现在的论坛,讨论"技术"的太多,讨论"体系和基础"的太少,特别是在参与了两次讨论以后
http://www.copathway.com/cndevforum/subject_view.asp?subject_id=15133&forum_id=
http://www.copathway.com/cndevforum/subject_view.asp?subject_id=15139&forum_id=
我认为我们的学习方法和顺序需要改进,因为我们本来可以很省力的.因为在你花时间做好很多不能直接出成果的"基础学科"以后,再来看现在的好多开发过程,就有点像先搞清楚语法,然后查阅函数库一样的简单.而且不会被新的词语弄得昏头转向!回想起我学电脑是在1994初中,连windows95都没有的时候,一直追逐"技术"到现在,如果不是我很有决心和毅力,早就放弃了,因为在这将近10年里面,计算机程序设计上,出现了多少吸引眼球的东西!
我把我的感受写出来,是不想让更多人浪费一个5年!侯捷在<多线程程序设计>里面说提到,一个cup做多个线程,里面的同步和互斥是在6,70年代的djjiskra就解决了的!同时数据结构里面图的最短路径,也是djjiskra解决的.想起来,我浪费在自以为"动手能力"上面的时间,是多么宝贵!
话说回来,我的意思并不是学新技术就不好,而是应该分清楚主次!学用技术和打好基础本来就是辩证的关系,没有基础学技术很难,很浪费时间;没有技术的支持,基础永远都不会得到体现.但是我觉得现在好像一切都是新技术新名词,好像大家都认为所有的技术都是必须用到的,而不考虑问题本身的需求,所以把我的想法拿出来提醒大家."磨刀不误砍柴工",这句话以前我一直都没有做好!

回复列表 (共12个回复)

沙发

让更多的人看到   顶一顶吧

板凳

帮你顶

3 楼

看了这么久.说什么我还不清楚,有没有人把中心思想写下来,让我看看

我看了这么久就4个字:打好基础

4 楼

谁说老了就不能写程序了?

老了就学Bell去。。

5 楼

我们不过是一些技术爱好者而已,不过是想看看为什么的人,更本不能算是程序员

一语中的!

6 楼

没错啊.
我还没在这看到过传说中的程序..

充其量也不过就是写写数学题目

7 楼

顶啊顶啊顶
以后请楼主多分段

8 楼

你和我的想法一样,但是你懂了计算机那些最基础的东西,比如 你做的节拍器不知道对不对 就这样说吧!我也想做 ,我想了解计算机最基本的工作原理!哎!~~如果你又QQ电话什么可以告诉我吗!?我很想学习你懂的那些!我QQ250402571  我新疆人,小灵通 0991 2057969

我也是喜欢技术的人,可是还在初级的学习阶段,虽然玩电脑5 6年了  可一个语言都没懂 只是皮毛  现在在努力学习C!

如果真的又兴趣 就联系我吧  或者吧你的联系方式给我!谢谢了!

9 楼

谢谢楼主,我看过了,真的对蛮有帮助的,谢谢了!!!

10 楼

有志不在年高

我来回复

您尚未登录,请登录后再回复。点此登录或注册