博文

老程序员十年生涯黯然总结 (转载,下)(2005-11-23 02:50:00)

摘要:老程序员十年生涯黯然总结 (转载,下一) 下篇 曲折的实践之路

1.希特勒地堡与CIH病毒

 99年4月,我来到北京参加研究生复试。复试完了之后就不回去了,我拿着一张光盘,里面刻着我用VB和Authorware3.5编的一个Cool 3D的教学软件,到处参加招聘会,开始了在北京的打工生涯。

 说句实话,我心中真是一点底也没有。北京人才济济,我一个三流大学的毕业生,又不是计算机专业的,有人要我吗?

 我在北京无依无靠,没有任何一个亲戚在北京,住成了大问题。北京这地方,钱太不经花,生活费用太高,我四处寻找便宜的地方住。后来,我在北京化工大学对面的招待所中租了个床位,每晚20元,地下室。这个招待所的地下室非常大,每天回去的时候,都要走过长长的曲曲折折的通道,加上那昏黄的灯泡,每次我都有走进了希特勒地堡的感觉。地下室里潮湿阴暗,不见天日。地下室里人员很杂,什么人都有,永远没有一种安全的感觉,所幸的是我也是个穷光蛋,光脚的还怕穿鞋的?别人能呆我也能呆,唯一让我担心的是钱,没钱,在北京连流落街头都不够格,立马被收容去昌平筛沙。呵呵,我没这种经历,这是当时住一块的一个外地要考北京中医药大学的博士生说的(我俩居然住到了一个屋里,大家都没钱,只能挤地下室,只是他老兄晚上打呼,我可真受了不少罪)。

 日子一天天过去,袋里的钱一天天少了,但工作还是没着落,心中越来越慌,除去学费,来京时父母给我2000元,大哥资助我的1000元就是我当时的全部资金(3000元在北京能呆多久?!)。我当时订了个计划,留下500元保底,打死都不能动,要靠它作路费回家的。我当时说,一定得找到一家公司,再少的钱都干,只要有口饭吃,有张床让我睡我就满足了。

 我一共应聘了四五家公司,最具传奇色彩的是到西单附近一家公司的应聘经历。那时,我带去了我的作品,公司项目经理要看,于是我给他们演示,很奇怪,程序一打开就死机,一连两台电脑都一样,末了,两台电脑都启动不起来了。用瑞星一查,CIH病毒——那天正是4月26日!于是,CIH破坏了电脑主板的同时,也无情地摧毁了我的就业机会。还算老板可怜我,没要我赔。其实我当时快到山穷水尽的地步了,真要我出钱,我可能连家都回不了啦。陈盈豪(CIH病毒的作者),你小子这么的聪明做什么不行,偏要去做病毒,害......

阅读全文(5279) | 评论:1

老程序员十年生涯黯然总结 (转载、中)(2005-11-23 02:47:00)

摘要: 老程序员十年生涯黯然总结 (转载、中) 二 漫长的理论学习时期

   1.从电脑培训班开始

   我毕业后的第一个工作单位是一个非常差的企业,我在那儿见识了几乎所有中国差的企业的弊端:人浮于事,拉帮结派,暗箭伤人,损公肥私……。可以想见,在这样的企业工作,人是多么的颓废。我在无聊之中过了大半年的时间。1994年4月的一天我去桂林新华书店买书,看到桂林电子工业学院老师举办一个电脑培训班,教打字、排版、常用DOS命令等电脑使用基础,反正也没事,不如上个班学点东西吧。不曾想就是这样一个培训班,却根本影响了我的人生之路。

   我清楚地记得当我第一次上机时,连电脑开关在哪都找不到,老师拿着一张五寸软盘,插入软驱,打开电源,在一阵“吱吱”的声音之后,屏幕上开始有英文字符出现,然后,教师在键盘上敲入几个键,电脑沉默一会,突然在屏幕上跳出一个小人,出现一行字:快快乐乐学电脑,还传出了音乐。我当时真是惊呆了,电脑怎么还会唱歌?现在想起来,那个软件其实是台湾松岗系列教学软件,而我一个大学本科生,在毕业之后居然对电脑无知到这个地步,我真不知道是该哭还是该笑……!

   俗语说:“一见钟情”。我是相信这种事的,因为就是这第一次上机,让我产生了搜索这一神秘世界的强烈兴趣,从此就再难与电脑分开了。

   当时,有两位电子学院的老师:尹老师和陈老师。他们给我们讲DOS,讲汉字输入,讲他们如何修改天汇汉字系统使它能在一张软盘上运行,讲打字排版……,一个月之后,我不满足,又学了一个月。

   在上培训班的时间里,我向老师要来了桂林电子工业学院计算机应用专业本科四年的培养方案,回到家中,列出了所有本科课程,再根据书上的先修课程介绍,绘制了一张巨大的课程树,从树根开始,决定一本本地啃,从头开始学计算机技术。计算机科学的学习有较强的系列性,想一步到位很可能会学不懂,但循序渐进又无法跟上技术发展的速度,这是一个非常突出的问题。我现在想起来,觉得好的学习方式是:学理论打基础,在实践中逐步理解理论,多思多悟,就会发现层出不穷的新技术中有许多一直不变的东西存在。把握这种东西,就可以以不变应万变。这种“不变......

阅读全文(4645) | 评论:0

如何使用google解决问题(来自《程序员》杂志)(2005-11-22 18:18:00)

摘要:   如何使用google解决问题 redguardtoo著 文章选自2004年《程序员》杂志第8期P56 前面收集了篇如何问问题的文章就是《学会提问》http://blog.programfan.com/article.asp?id=7207,觉得很不错,这里继续有关如何解决问题,安安注 本文介绍了使用google解决难题的一些高级技术,重点讲述了如何选择关键字,如何分析过滤信息等等。 目录 (目录及一些声明还有最后提供的技巧是网上热心读者,安安注) 1. 声明 2. 本文所面向的读者 3. 如何使用google解决各种问题 3.1. 不可能完成的任务 3.2. 如何快速解决具体技术问题 3.3. 如何解决复杂抽象的问题 4. 如何提高自己的搜索能力 4.1. 态度决定一切 4.2. 疯狂搜索法 4.3. 如何提高“搜索素养” 5. 相关的工具、资源 1. 声明 请读者不要使用本文所介绍的技巧从事违法、不道德的事情。我对于本文所导致的任何后果概不负责。 2. 本文所面向的读者 本文介绍了使用google解决难题的一些高级技术,重点讲述了如何选择关键字,如何分析过滤信息等等。通过阅读本文,你会明白在极大的时间压力下快速解决高难度问题的技巧。你也能了解如何对一些复杂的问题进行调查并给方案。 (任何对解决问题有兴趣的人都适合阅读本文,只要: 你不相信“软件蓝领”的说法。你相信解决问题的能力是人的本能。你相信任何问题的本质都是一样的。你相信解决问题需要的能力是想象力和举一反三的能力。 说的明白一点,我希望读者是有职业荣誉感的工程师,或者是能够理解这种荣誉感的人。有些人害怕自己即将被技术的进步所淘汰,于是试图通过贬低技术人员的地位来获得安全感。由于他们不能否认技术所取得的伟大成就,于是使用一些政治手腕来间接地达到目的。最常用的手段就是虽然技术是伟大,但是工程师是分等级的(是不是封建残余思想作怪?),低级的工程师就是蓝领,而中国需要的是大量的蓝领,等等。这种有封建残余思想的人是不可能学习新东西的,当然也不可能理解本文,因为要成为google高手,就必须具备开发的头脑和丰富的想象力。) 上面括弧里面的不是原文内容,可能是网上读者所加,安安注 ......

阅读全文(7951) | 评论:1

论程序设计方法(转载)(2005-11-21 21:05:00)

摘要:论程序设计方法(转载) (转载的)其中有些观点你可能不同意,我也不是全部赞同。你不同意的可以提出来我帮你分析分析

作者:杨老师

如果你是初学者----------------请不要阅读;
但有志成为中高级程序员--------请务必阅读;
如果你是中级程序员------------请务必阅读;
如果你高级程序员--------------请批评指正。
  本文是我在“软件工程师班”开学第一节课的讲义,和“计算机软件设计发展”讲座上的内容整理而成。写作本文的目的是引导学生从更高的层次来看待程序设计方法,为将来成为高级程序员而做好理论准备。

一、计算机硬件环境对软件设计方法的限制
  计算机的发明到现在已经60年了,计算机程序设计方法也伴随着计算机硬件技术的提高而不断发展。硬件环境对软件设计既有严重的制约作用,也有积极的推动作用。
  在我的大学母校(此处删除6个字),数学系的一些老师,有幸成为了我国第一代的计算机DIY一族。呵呵,不要以为是组装PC机呦,他们组装的可是小型机。一人多高铁皮柜大小的主机,加上纸带机(后期改进为读卡机),组装好后,除了供学校自己的科研使用外,还在全国各地销售了十几台。当时(七十年代)一台的售价是10几万元人民币,如果换算到今天,相当于价值大约为100多万元,非常高档的小型计算机了。下面大家猜猜,这么高档的计算机,它的内存是多少那?(都把嘴闭好了,我要公布答案了)—— 4K。
一块50公分见方的内存板,
插入到主机箱中,好了------ 1K;
再插一块内存板,好了------ 2K;
再插一块内存板,好了------ 3K;
再插一块内存板,好了------ 4K;
再......不行了,插不起了,太贵了!这就是当时的环境。这样的环境下,用什么写程序那?当然只有机器码了。先用汇编写,然后翻阅手册手工改写为机器码,然后打卡或穿纸带,输入运行。可以想象,在当时的条件下,什么叫好的程序那?什么叫优秀的程序那?—— 技巧!
  程序设计的最初始阶段,是讲究技巧的年代。如何能节省一个字节,如何能提高程序运行的效率,这些都是要严肃考虑的问题。而所谓的程序的易读性,程序的可维护性根本不在考虑范围之内。
  今天,35岁以上的学习......

阅读全文(3797) | 评论:0

请不要做浮躁的人(转)(2005-11-21 20:04:00)

摘要:请不要做浮躁的人(转载)
请自己识别其中跟自己相关的内容 1.不要看到别人的回复第一句话就说:给个代码吧!你应该想想为什么。当你自己想出来再参考别人的提示,你就知道自己和别人思路的差异。
2.初学者请不要看太多太多的书那会误人子弟的,先找本系统的学,很多人用了很久都是只对部分功能熟悉而已,不系统还是不够的。
3.看帮助,不要因为很难而自己是初学者所以就不看;帮助永远是最好的参考手册,虽然帮助的文字有时候很难看懂,总觉得不够直观。
4.不要被对象、属性、方法等词汇所迷惑;最根本的是先了解最基础知识。
5.不要放过任何一个看上去很简单的小问题——他们往往并不那么简单,或者可以引伸出很多知识点;不会举一反三你就永远学不会。
6.知道一点东西,并不能说明你会写脚本,脚本是需要经验积累的。
7.学脚本并不难,JSP、ASP、PHP等等也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.看再多的书是学不全脚本的,要多实践。
9.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
10.学习脚本最好的方法之一就是多练习;
11.在任何时刻都不要认为自己手中的书已经足够了;
12.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
13.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
14.请把书上的例子亲手到电脑上实践,即使配套光盘中有源文件;
15.把在书中看到的有意义的例子扩充;并将其切实的运用到自己的工作中;
16.不要漏掉书中任何一个练习——请全部做完并记录下思路;
17.当你用脚本到一半却发现自己用的方法很拙劣时,请不要马上停手;请尽快将余下的部分粗略的完成以保证这个代码的完整性,然后分析自己的错误并重新编写和工作。
18.别心急,写脚本确实不容易;水平是在不断的实践中完善和发展的;
19.每学到一个脚本难点的时候,尝试着对别人讲解这个知识点并让他理解----你能讲清楚才说明你真的理解了;
20.记录下在和别人交流时发现的自己忽视或不理解的知识点;
21.保存好你做过的所有的源文件----那是你最好的积累之一;
22.对于网络,还是希望大家能多利用一下,很多问题不是非要到论坛来问的,首先你要学会自己找答案,比如goo......

阅读全文(3464) | 评论:1

【转】提问的智慧(How To Ask Questions the Smart)(2005-11-20 13:56:00)

摘要:【转】提问的智慧(How To Ask Questions the Smart)
文章链接:http://linuxmafia.com/faq/Essays/smart-questions.html 原文见附录,别人翻译的,特表示感谢.

图谱化理解::       每个人,都希望得到帮助或帮助别人。但是大家的时间都很宝贵,不管是平常学习还是网络论坛,都应该学会提问问题,大家在提问之前请先看看这篇文章。相信对你会很有帮助,也为给你回答问题的人省去大可不必的麻烦!!希望提问的人能够遵循以下原则,将会事半功倍。

     在黑客世界里,当提出一个技术问题时,你能得到怎样的回答?这取决于挖出答案的难度,同样取决于你提问的方法。本指南旨在帮助你提高发问技巧,以获取你最想要的答案。

首先你必须明白,黑客们只偏爱艰巨的任务,或者能激发他们思维的好问题。 如若不然,我们还来干吗?如果你有值得我们反复咀嚼玩味的好问题,我们自会对你感激不尽。好问题是激励,是厚礼,可以提高我们的理解力,而且通常会暴露我们以前从没意识到或者思考过的问题。对黑客而言,“问得好!”是发自内心的大力称赞。

尽管黑客们有蔑视简单问题和不友善的坏名声,有时看起来似乎我们对新手,对知识贫乏者怀有敌意,但其实不是那样的。

我们不想掩饰对这样一些人的蔑视--他们不愿思考,或者在发问前不去完成他们应该做的事。这种人只会谋杀时间--他们只愿索取,从不付出,无端消耗我们的时间,而我们本可以把时间用在更有趣的问题或者更值得回答的人身上。 我们称这样的人为“失败者”(由于历史原因,我们有时把它拼作“lusers”)。

我们在很大程度上属于志愿者,从繁忙的生活中抽出时间来解惑答疑,而且时常被提问淹没。所以我们无情的滤掉一些话题,特别是抛弃那些看起来象失败者的家伙,以便更高效的利用时间来回答胜利者的问题。

如果你觉得我们过于傲慢的态度让你不爽,让你委屈,不妨设身处地想想。我们并没有要求你向我们屈服--事实上,我们中的大多数人最喜欢公平交易不过了,只要你付出小小努力来满足最起码的要求,我们就会欢迎你加入到我们的文化中......

阅读全文(14168) | 评论:0

学习经验(转载)(2005-11-02 16:44:00)

摘要:转载 做为一名大四的学生,我面试过不少的单位,有成功的也有失败的,但是对我来说所有的失败在某种意义上都是一种成功,特别是我下面写的这些,写这篇文章的时候,我已经签了南京的一家软件公司,但是想起今年2月21日我面试苏州台湾的IT公司的经历联想到我们现在 学习编程的一些情况我真的深有感触,这次面试使我深深的体会到了失败但也收获了很多。我要说的将分成三部分, 1.是我面试的具体经过 2.是由面试想到的 3.现今我应该做的。当然这些话很大程度上是我个人的意见,不可能完全得到大家的赞同,所以 在某些观点上如果哪位朋友觉得跟我的有很大出入,请不要介意,也不要对我攻击,就当我没有说过,欢迎和我联系共同探讨这些问题!我的EMAIL:wutao8@263.net 1.面试经过
大约在年前我接到了台湾瑞晟(Realtek)苏州公司的面试通知,通知我2月21日到苏州工业园区面试,接到面试后的几天我把一些专业 课温习了一遍,特别是C++和数据结构,由于大学几年里,我一直专研这些方面,加上通过了高级程序员的考试,对于一些常用的算法 我差不多也达到了烂熟于胸的地步,当时的感觉是如果问了我这些方面的问题我应该是没有问题的! 21日那天我被安排在4:30面试,由一位技术人员单独给我面试,在问了一些简单的问题之后他给我出了一道编程题目,题目是这样的:
(由于具体面试的题目比较烦琐,我将其核心思想提取出来分解成了两个独立的简单的问题,有可能问题分解的不当,请大家见谅,实际面试了一个的问题但比其复杂很多,而且涉及一些高等数学变换)
1) 写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n
哼,我的心里冷笑一声!没想到这么简单,我有点紧张的心情顿时放松起来!
于是很快我给出我的解法:
long fn(long n)
{
long temp=0;
int i,flag=1;
if(n<=0)
{
printf("error: n must > 0);
exit(1);
}
for(i=1;i<=n;i++)
{
temp=temp+flag*i;
flag=(-1)*flag;
}

阅读全文(4497) | 评论:1

编程之道(转)(2005-11-02 16:40:00)

摘要:编程之道 转载 前些日子在CSDN看到一篇文章,虽然是写笔者的人生经历,但里面提及的技术让我目瞪口呆(呆了半天说不出话来),(高中生的写尼姆达病毒源代码析,清华研究生写了Linux服务器集群系统,Lion 是四年制中专生.....),嗨,想想这些,再看看自己,都20来岁了,想想在这方面不可能有多大建树了,真是有些伤感。静下心来,参考了一些资料,总结了一些专家点评再加上一点个人的感悟,写了这篇文章希望能对后来者有些帮助使后来者少走些弯路:
   
    曾几何时,为了一段程序的通过,翻阅了不知多少本册子,设置了不知多少个断点,耗费了不知多少个时辰,流了不知多少的汗水,哦,忘记了吃饭,忘记了睡觉。累乎?
    曾几何时,当调试窗口出现 0 Error 0 Warning ,程序按照意图通过,一切的一切,全然不在话下,征服的快感顿生,哦,忘记了吃饭,忘记了睡觉。乐乎?
      要学习编程是要有很大恒心和毅力的,首先你要明确自己的目标,想好自己编程是为了干什么。如果你学习仅仅只是一时想编出QUAKE和成为比尔盖次的冲动,那么我劝你还是应该不要开始学习,因为这样的目标很难支持你日后大量的学习。而且你的年龄不能太大(最好是中学或者大学生)。
 
1     无论学习编程还是计算机的其它方面,首先是培养兴趣,这点非常重要,如果有兴趣,编程会使你有强烈的兴奋感,你自然就有了强烈的求知欲。不然它就会是一份枯燥的工作,你也不可能深入学习下去。一开始可以看一些计算机软硬件杂志比如说<<电脑报>>,对于里面提及的计算机操作技巧尽量动手试试,这样会使你有些成就感,这很好,要的就是这个。其实学习一些“Crack技术”也是培养兴趣的一条捷径,上网看看,或去书店找找《黑客,就这么几招》之类的东东看看(想想这些"漫画书":->的作用这就于限此吧),当你发现开始对计算机产生兴趣后,那么就开始学习专业知识吧,上面提及的东东可以不用再看了,你可能觉得从中学了不少知识,但要清楚的是这些都是一些三流的非专业知识。你还有很长的路要走,得赶快上路,不要在上面浪费时间了! 2 &nbs......

阅读全文(3057) | 评论:0

给新生的建议(转载)(2005-10-03 00:43:00)

摘要:来自北大软件学院bbs,未经同意请勿转载。题目是我替作者加上的。 前面那个看的头都晕了(指《三朝元老经验谈》http://blog.programfan.com/article.asp?id=5587  ),太长了。简单说说吧:
1。脚踏实地再脚踏实地
2。认真认真再认真
3。努力努力再努力 对于1:经常听到有的同学在讨论:XXX公司今年进世界500强了吗??华为现在能打的过外企嘛??cisco要不行了。微软真没前途。。。等等等等。这些问题真是太没意义了,作为一个年轻人,这些问题距离我们太遥远了,与其考虑这些问题,不如关心一下哪个公司给我的钱多福利好?我能去哪个公司?再穷的地方也有光拿钱不干活的,再富的地方也有光干活不拿钱的。脚踏实地,考虑清楚自己才是关键。 2:对于知识,要“精”。不要整天忙于讨论“架构、模型、管理”什么的,年轻人到了公司里面,都是从最基层的做起,了解一些上层的固然好,但这个时候对基本语法的熟练往往更有用。不要想着用的时候再查书,很多时候是老员工站在身后看着你做,这个时候甭说看书了,思考都来不及,靠的就是平时的熟练。 3:努力,这是老生常谈的问题。02入学的时候,不少兄弟都是工作过几年来上学的,有一种“老牛自知夕阳晚,无需扬鞭自奋蹄”的感觉,再加上4w学费,以及辞职的压力,都很自觉的抓紧时间学。社会竞争激烈,容不得半点偷懒。从后来的工作情况可以看到,凡是努力的人,结果都不太差,而上学期间忙着游戏人生的,只好自求多福了。这里还要说一点,究竟要努力到什么程度,才叫努力?我觉得基本就是发挥到你的极限,充分利用所有时间,同时做事的动作快到不能再快为止。须知,这是一个竞争的社会,“我今天努力了2个小时,明天再继续”,这样的想法是不行的。最重要的一点是,别把软院这3年当成本科4年来上。本科可以是混过来的,但这里不行,这里你要随时面对就业市场。 再说一个新生最关心的问题:
1。软院的学生到底好不好找工作?告诉你,好找。但前提是你做到上面说的这几条。现在确实有人因为没有学历、因为学费而歧视我们,但这些都不重要。虽然一些政府机关和大国企会看中这个,但是绝大多数外企和民营企业不重视这个,损失的机会不大。只要前面的技术、素质面试过关了,HR一般不会卡。这时候你只要说明情况,办完手续,进了公司就没人再纠缠你这个问题了。公......

阅读全文(4025) | 评论:0

 我的嵌入式学习之路(好文推荐)(2005-10-02 23:48:00)

摘要: 我的嵌入式学习之路(好文推荐) 前言
这个题目很大,给人一种感觉我好像很成功,其实不然。实际上自己水平不高,甚至很低,但是做过了一些曲折的学习道路,同时把自己真实的学习历程表达出来,希望对后来者有借鉴的意义,甚幸!
工作三年、几成废人!
我2000年毕业于华中地区的一个理工科大学,专业是机械电子,我当时已经签了一家内陆某个省级机关工作,家里八辈是农民,并且很偏远,能够进入这样的地方是祖坟有风水。但在毕业前夕有个进入it的机会,我本想进去的,家里人极力反对,阻力可想而知。同时要交4000元的违约金,对我来说是天文数字。大学里的费用很多是借的,几乎将近一半的费用是在大学勤工俭学挣的,为了省钱,高中一个学期回家一次,大学一年回去一次。并且我个人也有特殊的人生背景(悲景更确切),这里不多说了,写十篇也写不完,同时偏离主题。这样我就参加了工作。一张报纸一杯茶的日子,几乎下班后有种很空虚和恐慌的感觉。在工作中虽然是与自己专业有点关系,但是很少。专业几乎荒废。我自己也思考,如果再不出去,自己将会成废人,只好让国家养了。两年后决定出去,但是几成废人,谁要呢,只好到学校去镀金。这是中国教育和社会的悲哀!
至于专业就改为计算机方面,听说好找工作,我说实话不是很对计算机特别感兴趣,生存第一需要。不要笑我,哈哈!
考研成绩出来,超过了国家线几十分。那个方向要两个,我第三,但是那年非碘,不面试就按分数来排,自然我落选了。其实给我面试机会也不一定要我,哈哈,自己几斤几两很清楚。
最后调剂到另外一个学校,交钱,咬咬牙,交吧!现在仍然债台高筑!
进入学校前夕
为什么要把这段列出,看后就知道了。
单位有网络,经常上网查些英语资料,在那里唯独英语没有丢很多。于是我就在网上查资料,学什么好呢,最后确定学嵌入式把,听说跟硬件相对比较紧密!而我在大学里多少学习了数字电路,单片机等,所以多少也有所利用,不会真的一无所知。当然在这之前也自学过数据结构,计算机组成原理等。C 语言在大学就学了。哈哈这就是我的家底。
我知道自己的基础差,于是我就拿操作系统,数据库、数据结构、c++来看,机关有这个好处,空余时间多,于是平常就看书,很痛苦,没有人请教。
另外就上网到论坛上去,我就到各个专业的技术论坛,其实是电子论坛......

阅读全文(23301) | 评论:22