写一下1到100的源代码

女朋友 0 30

写一下1到100的源代码,第1张

写一下1到100的源代码
导读:一个IT人士的个人经历,给迷失方向的朋友 这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,

一个IT人士的个人经历,给迷失方向的朋友

这些日子我一直在写一个实时操作系统内核,已有小成了,等写完我会全部公开,希望能够为国内IT的发展尽自己一份微薄的力量。最近看到很多学生朋友和我当年一样没有方向 ,所以把我的经历写出来与大家共勉,希望能给刚如行的朋友们一点点帮助。

一转眼我在IT行业学习工作已经七年多了,这期间我做过网页,写过MIS、数据库,应用程序,做过通信软件、硬件驱动、协议栈,到现在做操作系统内核和IC相关开发,这中间走了很多弯路,也吃了不少苦。

我上的是一个三流的高校,就连同一个城市的人多数都不知道。因为学校不好也就没有指望能靠学校名气找一个好工作。所有的希望都寄托在自己的努力上了,大一开学前的假期我就开始了学习,记得我买的第一本书是《计算机基础DOS30》,大家别吓着了,其实当时已经普及了DOS622了,只是我在书店里看到了DOS40,50,60的书,以为像英语那样是第四、五、六册,记得当时到处找DOS10,现在想想也幸好我没有找到:)开学前我学完了PASCAL,那时既没有计算机也没有人可以请教,我连程序是什么的概念都没有,只好死记硬背代码,然后拿纸写,我一直到大三才有了一台486,在这之前用纸写了多少程序我也记不清楚了,只知道最长的一个我拿A4大小的草稿纸写了30多页,我的C语言、C++、VC都是在这样的条件下入门的。所以说条件是可以克服的,希望我的经历多少给条件艰苦的同学们一点信心。第一次上机是在我姐夫的机房,我的心情激动的无与伦比,但是一上机我立刻傻了眼,他们用的是英文版的Win31,我的那点DOS知识都见了鬼,上机提心吊胆的一阵瞎摸,一不小心把Word弄成了全屏,怎么都还不了原,当时真是心急如焚,我以机器被我弄坏了。第一个C语言程序,就是那个经典的HelloWorld,我调了几个星期,上机机会非常少,也没有书告诉我开发环境(TC20)需要设置,而且开始我都不知道有编译器,我甚至自作聪明把写好的程序扩展名从c改成exe,结果可想而知。

大一学完了C、X86的汇编、数据结构、C++。由于精力都花在自学上了,大一下四门课挂了彩,三类学校就是这点好,挂上一二十门也照样毕业。不过扯远点说,我那么刻苦都及不了格,可见我们国家的计算机教育有多死板。

大二准备学VC和BC,当时难以取舍,后来选了VC,不为别的,只为书店里两本书,VC那本便宜6块钱。我的努力在班上无人能及,学的日夜不分,大三有了计算机后更是如此,很多次父亲半夜教训我说我不要命了,我一直觉得自己基础差,记忆又不行,条件也不好 ,所以觉得只有多花点时间才能赶上别人。居然后来有许多朋友说我有学计算机的天赋,让我哭笑不得。我用的是486,16M内存,1G硬盘,当时同学们的配置都是P166MMX,我安装一个Windows NT40需要一个通宵,编译一个BC50向导生成的程序需要近两个小时,我的显示器是个二手的,辐射非常大,开机屏幕冒火花,看起来很酷的:),有一次程序写的太久,觉得怎么白色的编辑器背景变成了紫色,以为显示器坏了,后来才发现眼睛不行了,不过说来也奇怪,到今天我的视力还能保持15,真是个奇迹。但是就是那台破机器陪伴我两年,让我学会了VC、Delphi、SQLServer等。后来那台机器给我阿姨打字用,据她说一天她正打的开心,一股青烟夹着火苗从显示器钻出来,之后它才寿终正寝。

大三假期找了个机会在一个计算机研究所实习,与其说实习不如说是做义工,工作了两个月一分钱没有拿。但是这两个月对我的发展帮助很大,让我早一步了解了社会,刚去的时候我当然是一窍不通,在那里我熟悉了网络,学会了Delphi和Oracle。由于工作很认真,得到了比较好的评价,在一位长者的引荐下,我开始和他们一起做项目,这使我在大三大四就有了自己的收入,大四又找了两家MIS公司兼职,虽然钱不多,但是在学生期间有1000多的收入我已经非常满足了,我终于用自己赚的钱把计算机换了。大四下开始找工作,这时我的工作经验已经比较多(当然现在想想非常幼稚),开始听父母的想去那个研究所,实习过那个部门也希望我能去,但是不知道为什么最后不了了之,这种单位就是比较官僚,我一气之下就到了我兼职的一个公司做MIS的TeamLeader。在大三到毕业一年的时间,做过了各种MIS,从煤气、烟厂、公安、铁路、饮食到高校,什么有钱做什么,工作也很辛苦,经常加班和熬通宵,从跟客户谈需求到设计、编码、测试、交付都要上。那时觉得很有成就感,觉得自己还不错,现在想想真是很肤浅。

刚走上工作岗位的学生很容易被误导,各种开发工具让人眼花缭乱,同时也觉得很受公司器重,但这样工作永远是一个低层次的开发者。不要跟我说什么系统分析有多么多么重要,多么多么难。你以为自己跟用户谈需求做设计就是系统分析和设计了吗,国内又有几个公司能够做的很到位很规范?我是ISO9000内审员,也在Rational公司受过多次培训,拿了4个证书,还有一个公司让我去做CMM。这些我听过很多,但是很多事情到内就变了性质,一个公司不是通过了ISO9000或者CMM就能规范了,我现在在一家有几十年历史的外企工作,里面的管理不是一般国内企业能及的。作为一个毕业不久以前没有步入过社会的学生,几乎不可能在很短的时间掌握系统分析和设计,面向对象、UML只是一个工具,关键是人本身的思想,不是说你熟悉了C++、Rose就能够做出好的设计,相反如果你具备了很高的素质,你可以用C写出比别人用C++更加模块化的程序。

话说远一些,国内软件开发行业有一个怪圈,很多人觉得VC > Delphi > VB,真是很搞笑。这几个软件我都做过开发,说白了他们都是工具,应该根据应用的需要选择采用哪个,而不是觉得哪个上层次。如果你因为用某个开发工具很有面子而选择的话,只能说明你很浅薄。如果说层次,那么这些工具都不上层次,因为它们用来用去都是一些系统的API,微软的朋友不会因为你记住他们多少个API或者多少个类就会觉得你很了不起,你永远只是他们的客户,他们看重的是你口袋里的银子。我也做过系统内核,我也封装过很多API,同样我也不会看重那些使用这些API做二次开发的客户,除非他能够作出自己独到的设计。

至于有人认为C++ > C那更是让人笑掉大牙,不妨你去打听一下,现在有几个操作系统内核是用C++写的,又有几个实时系统用的是C++,当然我也不是说C++不好,但是目前的内核和实时系统中C++还无法与C匹敌,至于说C++适合做应用系统的开发那是另外一回事。所以我的观点是不在于你用什么工具和语言,而在于你干什么工作。你的设计体现了你的技术层次。

这样干了一年我觉得非常苦闷,做的大多数都是熟练工种的活,个人技术上没有太多的提高也看不到方向。所以决定离开这个城市去上海,寻求更好的发展,并且打算放弃我以前的MIS转到通信行业。

写到这里不能不提到我女朋友,我们是在来上海前半年认识的,她大四在我公司实习,公司派她给我写文档,我们的感情发展的很快。她告诉我很多事情,她家原本是改革开放的第一批暴发户,她母亲爱打牌,输掉了几百万,还欠了很多债,她有男朋友,但是她对他没有感情,只因为他给了她母亲两万多块钱,后来还强迫她写了四万块的借条,她男朋友背叛过她并且不止一次打她,现在逼她结婚不然就要她还钱。这人居然还是一个高校的老师!她母亲把父亲给她的学费花了,因为拖欠学费她没有办法拿到毕业证。她母亲现在有病需要钱,我拿出了自己的一点积蓄并且跟朋友们接了一些,替她交了学费并给她母亲看病(后来才知道看病的钱又不知所终,就连她母亲是不是有病我都不知道,但她也是没有办法)。这个时候我家知道了一些事情,坚决反对我和她在一起,她原来的男朋友也极力破坏。无奈之下我们决定早一定离开这个伤心的城市,并且瞒着我们家。由于时间仓促,我只准备了4000块钱,她仅有的几百块钱也被她母亲要去了,我买了三张票,一张是中午的,两张是晚上的,中午我的家人把我送上船,他们一离开我就下了船,我和她乘坐晚上的船离开了这个我和她生活了很多年的城市,带走的只是一身债务。没有来过上海的我们两个性倔强,都不愿意去麻烦同学和朋友。来到上海是傍晚6点半,我们都不知道该去哪里,我们找了一个20块钱的旅馆,这个房间连窗户都没有,7月份的天气酷热难耐,房间里非常闷热。第二天我们开始租房子,因为身上的钱不多,我们基本都是步行,花了一个星期时间,不知道在浦东转了多少圈后找到了一个400块的房子,但是我们都 不了解上海是付三压一,还要付半个月的中介费,买了一些锅碗瓢盆后,我们身上只有800块钱了,工作都还没有着落,这800块钱要支持到我们拿到第一个月工资,为了省钱我们自己做饭,每天买菜只花两块钱,她非常喜欢吃(也可能她在大学经常挨饿的愿意),看到她现在这样省吃俭用我真的很不忍心。她以前的男朋友也没有放过她,经常打电话来骚扰,并且来上海看她,还说了不少恐吓她的话,她过于善良,说他以前毕竟帮助过她,叫我不要与他一般见识。以后的每天在家就是苦等面试通知,原本我想迅速找一家MIS公司解决眼前的困难,但是她坚持让我不要放弃自己的理想,终于功夫不负有心人,我找到了一家通信公司,4000块的工资虽然赶不上MIS公司给我开出的价位,但也够在上海生存。她也找到了工作,第一天上班她哭了,这是她来上海第一次流泪,我心里很难受也很感动。

由于是全新的行业,我把自己降到了零点,我学的VC、Delphi、数据库派不上用场,摆在我面前的是嵌入式、协议、信令一些我从未接触过的知识。我知道我没有退路,于是拼命的学习,我把自己当做一个应届毕业生一样,一分努力一分收获,半年过去我终于熟 悉了工作,并且得到了公司的表彰,薪水也加了一级。后面的日子里我们省吃俭用,把欠朋友的1万多块钱还了,日子终于上了正轨。这时女朋友告诉我她想考研究生,我也很支持,于是她辞职在家备考。

另外,在这里我要感谢我的ProjectManager,他原来是一个大通信公司的产品经理,对人非常和善,我从他那里学到了很多知识,而且他也给了我许许多多无私的帮助。在工作上他给我充分的空间和信任。记得公司安排我维护一个接入服务器软件,由于代码量不算太小(5万行),资料和文档都不齐全,我维护起来非常吃力,所以想重新把它做一遍,公司领导不太支持,可能觉得工作量太大,但是他极力支持我,私下里他让我放手去做,我的维护工作他挤时间做。在他的支持下,我花了半年时间完成了接入服务器的软件,并 且实现了一个相对完整的TCP/IP协议栈。在这里我学会了嵌入式系统设计、驱动开发、TCP/IP和很多通信的知识,我花了一年时间终于使自己从MIS开发转到了通信行业,并且站稳了脚跟。我的开发大量是对硬件的直接操作,不再受微软的操作系统,VC、Delhpi这些开发工具的约束,我终于看到了另外一片天空。

我做事情喜欢追根问底,随着开发的深入,软件开发与硬件联系越来越紧密,硬件知识的匮乏又对我的发展产生了障碍,而且芯片技术基本上掌握在国外公司的手里,这对做系统级设计是一个非常大的制约,一个新产品出来,第一道利润(也往往是最丰厚的利润)常常都被IC公司如Intel、Motorola赚去了,国内的厂商只能喝点汤。所以我决心解决自己的硬件技术障碍,并打算离开通信行业,进入IC设计相关领域。

当然我明白如果我对硬件了解的非常少,没有哪家IC公司会仁慈到招我这样一个一窍不通的人来培训。所以我必须努力打好基础,学一些相关知识为以后做准备。就像我开始从MIS转到通信一样,我看过大量通信方面的书,并且给一个ISP做过RADIUS计费分拣台,在这样的背景下这家通信公司才给了我这个机会。我在的通信公司是做系统设计的,有不少PCB Layout硬件人员,平常我就注意向他们学习,由于我做的是软件,在公司看硬件资料不好意思,所以开始只好在家看,刚来上海工作我连续一年都在加班,后来不加了,因为我要挤出时间学习,通常我12点左右睡,第二天5点半起,我上班比较早,地铁上如果人不多 我也用来看书。学习当然不会是一帆风顺的,有些实在不懂的问题就积累起来问硬件人员,他们的帮助使我学习进度快了很多,因为在没有人点拨的情况下自学,我的一半时间是 花在解决疑难问题上,但这种问题经常是别人的一句话就可以让我豁然开朗,我非常庆幸我有这样的学习环境。在后面的一年里,我学会了看硬件原理图,学会了简单的硬件设计

(模拟电路方面还有不小的差距),事情就是这样的,当你安安份份做软件,别人永远认为你是软件开发人员,在你开始学习硬件时别人未必会认同,有位中兴通讯的朋友还对我说过,一个人不可能把所有东西都学完。我也明白这一点,但我希望自己做的更好。但当你熟悉硬件后大家又会觉得你好像原本就是软硬件都懂的,同事们也都习以为常了。这个时候我可以把硬件资料堂堂正正的拿到公司看,没有人再大惊小怪了。让我比较自豪的是我通过自己的努力做了一个IAD(软交换的终端设备)系统方案,包含软硬件的选型、设计等内容,这

个方案得到了公司和同事们的认同,让我感到非常欣慰。

技术是相辅相成的,当我的硬件有了一定的进步后,我的软件设计也有了很大的提高 ,我可以从更深层次理解问题,我做的接入服务器CPU是Motorola PowerPC860,熟悉的朋 友都知道860 QMC与软件的批量数据传输通常采用BD表的方式,硬件人员做驱动的时候习惯 采用固定BD表,每接收或发送数据都将数据从BD表拷贝到用户Buffer,或从用户Buffer拷 贝到BD表,由于理解的比较深入,我自己重新实现了这个过程,采用动态BD表的方式,驱动从一个网口接收数据,提交给我的软件进行三层交换,直至从另外的接口发送出去,没 有进行一次拷贝。这样的设计大大提高了性能,使系统的指标接近理论值。软硬件的结合使我的设计水平上了一个台阶。我现在写的这个操作系统,编译后我把程序反编译成汇编,找出其中不优化的代码,然后在C程序中进行调整。举个例子,很多CPU没有专门的乘法指令,这个大家应该都知道,在这种CPU上进行一个乘法操作常常会花费大量的指令周期,有的朋友会说这个我知道,我会尽量避免采用×号,但是事情往往不是那么简单,你知道 C语言中数组的下标操作是怎么实现的吗?仔细看看反汇编的代码你就会明白,同样是通过下标的定位操作,C编译器会有时候会产生位移指令,但有时候会用乘法实现,两者效率往往是天壤之别,所以明白这些问题你才能将系统性能提升到极致。这些问题就不多说了,有兴趣的话以后可以共同探讨。

话说远一点,我由衷的希望在软件上做的比较深入的朋友们有机会学学硬件以及其它 相关知识,尤其是做底层开发和嵌入式设计的。这对软件技术的提高有非常大的帮助,否 则很多事情你只知道该这样但不会明白为什么该这样。我这个观点在我现在的IC公司Proj ect Manager那里也得到了验证。他告诉我们公司现在80211芯片产品的软件经理原本是 做该芯片硬件设计的,某某某原本是做软件的,现在在做IC,类似的例子还有很多,只是在国内这样的风气不是非常流行。

我有一些心得体会与大家分享,只有当我干好本职工作后,我才会学习与工作关系不 大的技术,这样公司的上司才不至于反感,在入门阶段的问题我通常不去问那些资深人士 ,而是问一些资历比较浅的朋友,比如刚毕业不久的学生,因为他们往往会跟你详细的讲 解,而资深人士通常觉得你的问题太简单,所以回答的也很简单,我又不好意思多问。等 技术上了一定的层次后我才会问他们,他们也能给你比较深入的回答。另外,有些朋友说我机会比较好,他们也希望能从事新的工作可惜没有机会,我听了只有苦笑,我的机会了 解的人都应该知道,我没有出生在什么IT世家:)也没有谁一路提拔我,所有的路都是自 己走出来的,我母亲去世比较早,我的后母(我叫她阿姨)看着我努力过来的,一次她看我大年30还在写程序,她说像我这样努力木头都能学出来。

我的最终目的是IC而不是PCB,所以我下一步的准备开始学习IC设计的知识。公司的同 事没有懂IC设计的,后面的路又要靠自己了,我买了不少相关的书,在网上也查了很多的 资料,我花了大量的时间去学习VHDL,并且用软件进行了一些简单的设计和仿真(没有设 计ASIC,只是针对FPGA),随着学习的深入,我渐渐明白了IC设计的基本流程,同时也明 白了这条路的艰辛。这个时候我已经做好了跳槽的准备,我向一家业界又一定知名度的IC设计公司投了简历,并通过了漫长的面试(4个多小时)。其他的一切我都比较满意,唯独薪资差强人意,我也明白原因,因为我是这个行业的新人,我没有经验,我再一次将自清零了。公司老板问我6000多一个月能不能接受,我知道他也是照章办事。想想我通信行业的朋友们,基本上都是年薪10万以上,月薪过万的也比比皆是,朋友们也帮我介绍了不 少待遇不错的公司,我该怎么选择,当时我很犹豫,我热爱我的事业,我向往我的追求,但我也是一个普通的人,我也需要养家糊口,我也想早一点买房买车。生活给我出了一道难题。

爱因斯坦在63岁时说过"一个人没有在30岁以前达成科学上的最大成就,那他永远也不会有。"这句话给了我很大的压力和震动,我马上就26岁了,离30只有四年时间,我必须抓紧这几年宝贵的时间,努力达到我技术上的最高峰。为了这个理想,为了能离自己的梦更近一些,我选择了这家IC公司,我明白自己的薪资和公司刚进来的硕士研究生相差无几,但为了今后的发展只能忍受,一切又得重新开始。换行业是一个非常痛苦的过程,尤其从一个春风得意的位置换到一个陌生的岗位,感觉象从温暖的被子里钻出来跳进冰水中,让人难以接受。在原来那家通信公司,我是唯一两年时间涨了五次工资的员工,公司和同事 都给了我极大的认可,工作上也常常被委以重任。但现在这一切都成了过去,在新的公司 我只是一个新人,没有人知道也没有人在意我过去的成绩。我决定重新开始,我把自己看作 新毕业的学生,我要用自己的努力得到公司的认可。进入新的行业是非常痛苦的,我告诉自己必须忍受这一切,虽然外面有很多诱惑,但是既然作出了选择我就不允许自己轻易放

弃。

我现在已经在这家新公司上了一个多月的班,开始非常艰难,现在慢慢适应了。第一 个月结束时,Team Leader找我谈话,说我是新进员工中最优秀的一个,我心里很欣慰,这也算对我努力的一个肯定吧。在这里还要感谢我的女朋友,她给了我很大的支持和鼓舞, 每次在我动摇的时候她都在鼓励我,让我坚持自己的理想,刚来上海是她让我不要勉强去 做MIS,这次也是她让我顶住了月薪过万的诱惑,没有她我可能不会有今天的成绩。现在的公司有自己的操作系统,自己的CPU、DSP和其它芯片,在这里我能学到世界上 最先进的技术,我们的设计开发不再完全依赖别人的硬件和系统,这让我很开心。我打算等工作步入正轨后,全力学习新的知识,实现我的理想。

在后面的两年里我给自己定下了几个目标:

一努力做好本职工作,在工作上得到公司和同事们的认同;

二努力学习IC硬件设计知识,多向同事请教,并利用一切机会多实践;

三实现我的实时操作系统的主要部分,完成TCP/IP协议栈模块,并免费发布源代码;

四和我女朋友结婚并买一套小房子,这是最重要的,因为我明白事业是可以重来的,但是珍贵的感情很难失而复得。

在这里提一下我现在开发的操作系统,它是一个实时嵌入式系统,目前支持以下特性:

a支持时间片轮转调度和基于优先级调度,最多64个优先级;

b抢占式实时内核;

c为了便于移植,主体用标准C实现;

d汇编代码非常少,不到100行;

e支持任务管理,各任务有独立的堆栈;

f进程同步和通信目前完成了Semaphore,Message Queue正在调试;

g实现了定时系统调用;

h可以在windows上仿真调试

我还打算下一步实现优先级反转保护,Event Flag,Data Pipe,内存管理(以前实现过) 、驱动接口等。在这之后我还会努力完善它,比如加入文件系统,协议栈、调试接口等。希望朋友们提出自己的意见和建议,在此不胜感激!

后记:

就像有的朋友说的,我的经历或许会给一些朋友产生误导,在这里我必须说明一下。我来上海以前学习过于拼命,常常晚上只睡3个多小时,我身高1米71,那时只有108斤(我 现在130多),家人也说我这样拼命活不过60岁,但是当时的我太固执,我对他们说只要能 实现理想活50岁我就够了。那时的拼命使我的身体受到了影响,有一次早上突然腰肌剧痛难忍,痛的我倒在床上站不起来。虽然我现在已经比较注意,但有时候还会隐隐作痛。后来在女朋友说服了我,来上海以后我不再如此。我经常引用父亲的一句话"身体是革命的本钱"。

而且我也发现拼命不是办法,我可以熬一两个通宵,最多的一次我连续工作了三天三夜, 但是我半个月都没有恢复过来,这样是不是得不偿失?学习工作应该是一个长期的过程, 像马拉松而不是百米冲刺。我现在非常注意调整学习和工作的强度,我要保证每天尽量有 相对充沛的精力,一些年轻的朋友觉得自己也应该拼命努力,这让我多少有些担心,如果我的故事能让你在学习工作上多一点兴趣,我会感到很开心,但如果误导了某些朋友,让你做一些不值得的付出,我会感到很内疚。

技术没有贵贱只分,我以前换行业是因为自己的兴趣所致,而不是对哪个行业有什么偏见。我希望我的经历不要给朋友一个错误的导向,觉得我始终向更高的技术发展。其实各行各业做到顶尖都是很困难的。话又说回来虽然技术没有贵贱,但是门槛是有高低的,无论如何,做IC的门槛要比做网页的高,这一点无可否认。国家各种人才都是需要的,但是作为个人奋发向上的想法还是应该有的,努力在自己喜欢的行业上做的更好,而不应该停留在比较肤浅的层次上。

我是一个自己觉得比较有自知之明的人,或许我最大的优点就是知道自己有很多缺点 :)。我的故事中很多的曲折和错误都是由我的缺点造成的,希望大家用审慎的眼光看待 我的经历,不要被我的"花言巧语"所迷惑。我学习有些随心所欲,这给我带来了无尽的麻烦,也大大阻碍的我的发展。记得我小时候成绩比较出色,但是后来学习严重偏科,导 致我中学成绩一再滑坡,也没有考上什么好的学校,小时候的一个朋友,当时的成绩和我相仿,但是没有我这个缺点,她上了清华,后来在去了美国深造,在一个著名导师手下研究理论科学,这未尝不是一条更好的出路。另外我的学习方法也是在不断改善中的,过去的学习过于讲究数量和时间,那样学习既苦而已效率不高,现在我非常注意学习的效率和技巧,这样才是学习的捷径(当然不是指投机取巧),比如说学一相对陌生的技术,如果有条件,不妨问一问有经验的人,不需要问很多,往往他不经意的几句话会给你非常大的帮助,甚至超过你看一个星期的书。带着这样的思想再去学习你会节省很多时间,这样何乐不为呢?这些年中我学了不少的东西,由于开始非常盲目,所以学的东西杂乱无章,现在回想起来让我啼笑皆非,我把大量的时间浪费在一些没有必要深入了解的知识上,毕竟一个人的精力是有限度的。很多朋友很我一样都背过五笔字形,的确它是个不错的输入法,但是对一个研发人员它绝对不值得你去背,你的时间应该花在有价值的地方。我这样的事情还做过很多,我背过CCED、WPS的命令和快捷键,在dBase基本退出历史舞台后我还花了很多时间去学习它的使用。所以我的学习在前期缺乏规划,没有明确的短期目的、中期目标,只有一个虚无飘渺的长期的理想。这就像做设计一样,好的设计是从需求抽象到代码有很多过程,而不能得到了需求就立刻开始开始编码。

当然这么些年的学习和工作多多少少有些收获,下面我说说我的一些学习的心得,这些方法未必正确,我也在不断探索和改进中。我的学习和工作有相对明确的目标,我不会一时心动而去学习某一技术,在下决定之前我会考虑很多,包括长期的发展,个人路线的规划,需要付出的代价、可能遇到的困难及解决的办法等等,在决定后还会制定更加明确 的计划,包括短期、中期和长期的,身边可以利用到的资源(包括好的书籍、资料、软硬件环境,也包括有经验的朋友或者师长),以及每一个阶段是怎么过渡到高一阶段的计划 ,往往在一个学习阶段一旦上路后会走的相对顺利,但是跨阶段通常比较麻烦,比如从学 习基础知识转到实践。另外我买书也有自己的方法,现在世面上高质量的书远不如低质量书多,对于一个陌生的技术,往往在第一次买书会选择错误,即使买到一本好书但是它的方向也未必适合你,所以我通常会先在网上查找一些该技术的介绍,有了一点点概念后再去买一本比较薄、相对便宜并且内容相对泛泛而谈的书,这是国内作者最善于写的书:) ,再把它浏览一遍后我就会基本明白这门技术的要点,后面买书和制定计划就会明确的多 。否则一开始就想找本好书往往比较困难,而且买回来后努力学习,有时候学了一半才发现是本低质量的书或者是相对过时技术,让人非常懊恼。另外让有经验的人帮你介绍,通常也是一个不错的选择。

有些朋友想学通信、嵌入式开发,但总觉得自己没有软硬件环境,我就按我的了解给 大家介绍一下怎

《源代码》的结局是:男主还活着,因此是男主通过实验改变了未来,也改变了自己(在现实中以另外一个身份活了下来)。

短信中有提到等中尉醒来的时候告诉他:一切都会慢慢好起来的,这也许是另外一个故事的开始,无限的去扮演另外一个自己,拯救更多的人,找到另外一个自己。

《源代码》讲述了一位在阿富汗执行任务的美国空军飞行员柯尔特·史蒂文斯,醒来时发现自己正处在一辆前往芝加哥的火车上,并就此经历的一系列惊心动魄的事件。

扩展资料:

主要角色介绍

1、史蒂文斯

演员 杰克·吉伦哈尔

美军上尉,男一号。在阿富汗执行任务的美国空军上尉,一次又一次出现在神秘的高速列车上,身份一度变成一位名叫肖恩的历史教师,而列车也一次次地神秘爆炸。

2、克里斯蒂娜

演员 米歇尔·莫娜汉

肖恩的朋友,女主角之一,在高速行驶的列车上,坐在科特·史蒂文斯身边与之谈话的神秘女子。

3、古德温

演员 维拉·法米加

与封闭在太空舱里的科特·史蒂文斯进行视频、文字的单向对话并要求他报告列车上情况的女军官,女主角之一,**里有大量她和史蒂文斯的对话。

-源代码

送女友:

1

化妆镜:每一个女人都需要一面漂亮的镜子,将最美的镜子送给最爱的女人,让她一见倾心,与她始终相随。

2

金玫瑰:如果我是一个循规蹈矩的人,我一定送金玫瑰给她。一朵朵金光闪闪的玫瑰和晶莹剔透的水晶瓶,她不感动死才怪呢。

3

牛奶杯灯:触动记忆中的温暖,将光芒月浪漫完美柔和,深夜的浪漫

4

卡通花束:如果我是一个浪漫的人,我会送她卡通花束。一起看着浪漫的卡通花束和可爱的玩具,陶醉在两人都喜欢的故事里该是一件多美妙的事,希望她不要因为太感动了而睡不着。

5

爱情宣言:爱情宣言

可以在每一个节日为我们留下美好、真实的见证,人会慢慢变老,但是我们爱的足迹、爱的故事却会永久保存,永远记录着我们那一段美好的时光。将你们的爱情宣言,若配上一首浪漫的歌曲,尤其在加上你对她想说的话。在她生日之际一同回忆你们在一起的点点美好回忆!

6

珍珠项链:开启“月光宝盒”后,你会发现一个含有“爱之珠”的母蚌。在亲手取出“爱之珠”后,为你心爱的人戴上,让她感动不已,让她戴上幸福

7

情侣手链:优质天然晶石,表面圆润,净化身体污气,落实主见,令人开朗,抗病气。要浪漫,更要健康!

8

卡通公仔:集创意、纪念、观赏、收藏于一体,会让受赠者感动、惊喜,印象深刻,相信会是您最佳的选择!

9

浪漫满屋:送女友最浪漫的温柔小屋!自己动手组装,为她制造一份惊喜吧!

10声控蜡烛:想让时光静止,只剩烛光闪动着的美丽,享受只属于你们的宁静,与她在一起共度浪漫的烛光时刻

11爆笑娃娃:它是那么的天真无邪、那么投入、那么歇斯底里、那么的动人心魄沁人心脾!结果是,让人不由得会心一笑,或是,挥手一锤…

实在是哄女友开心不可多得的小玩意儿

12魔幻睡衣:送睡衣,体现出你对女友无微不至的关怀,美丽的睡衣如同你们的爱情一样甜美!

13阳光储蓄罐:这是一个神秘的罐子,它能收集阳光。白天把它放到窗台上收集阳光,晚上就能发出美丽的光芒!

14遥控月亮灯:恋爱中的男孩女孩,仍然在重复着有关月亮的誓言吗?“你要什么,我都可以给你,就算是天上的月亮!”傻傻地感动着她,也感动着自己但是现在,给恋人送个月亮完全变成了可能!

15变色水龙头:它可以自由的将你的洗手盆变得奇光异彩,并会随着温度变换颜色,流出的水柱满是晶莹剔透的光泽,你的洗手渐渐将变成梦幻的世界,波光鳞鳞

16彩虹投影仪:风雨之后的彩虹给人是一种心旷神怡,一种安慰,一种美好,但是很少有人为了瞬时的美丽愿意接受风雨的洗礼,那么将这种惟有天上有的美丽带回去吧,送给她最美丽的彩虹

17巧克力日记本:散发着浓郁醇厚的巧克力香味,是你们爱情的象征,让它记录下你们甜美的爱情

18梦幻发光抱枕:散发着精晶莹剔透的幻彩光源,天生就被赋予浪漫与温馨的气息,独特天成、温馨浪漫的它一出场就被评为最能打动女孩心扉礼物!

这是一部超牛的科幻片,倒不是说**提出了什么了不起的科学理论,而是**的构思相当奇特,震撼人心。不妨你把自己当作一位编剧,要编一部穿越**的剧本,你会怎么编,才能如此惊心动魄?

首先,**竟然把故事围绕现实世界早就发生了的“八分钟”来结构故事,反复让主角穿入其中,身临其境地进行破案;而破案的目的,竟然是为了阻止马上就要发生的惊天动地的核武攻击恐怖案件(警察和科学家们是如何知道会有核武攻击芝加哥城线索的?是不是歹徒提出了警告?没看明白,希望看明白的告知一声)。由此,**就变得十分紧张而刺激,虽然影片时长并不短,但因为情节浓缩在这八分钟里而反复破案,一次揭开一点谜底,观众也参与其中思索,也就变得十分有趣了。

其次,主角竟然是一段源代码,其所穿越进去的世界,竟然是电脑虚拟的“过去世界”!这个想法太牛了。**虽然语焉不详,没有给我们说清楚主角之外的人的信息是如何搞到的,如何变成电脑程序中的活人的,并且还有不少人是还活在现实中的(比如中途下车的那些人以及那个歹徒),他们并没有死去,如何在电脑中模拟?但通过虚拟世界来虚拟地运行“历史真实”、并在这个“历史真实”中寻找逻辑和证据破案,还有比这更刺激的么?

再次,影片的结尾竟然形成了平行世界——真实的世界里,主角仍然是一具尸体(或曰半具,**中展示了“生存”在箱子中的这半具尸体),并且列车爆炸已经发生了,但城市核爆案被阻止;可是,主角通过在源代码中的努力,救下了列车,可这,只能存在于虚拟世界中了。于是,**到最后,就用了“主角在虚拟世界发送一段短信给现实世界中的女上尉”这么个有趣的情节,联通了虚拟与现实,这看上去很荒诞,可是很有趣。或许留作续集的线索?

最后,就是**围绕爱情来写故事,着重点在写人性,就此让**变得十分感人。其中的父子情、男女情、生命的眷恋等等方面,都写得很成功,所以,并不是一部充满花里胡哨CG动画的科幻片,而是一部充满紧张激烈节的以描绘人性为中心的好**。

————————

看到大家热烈参与讨论,很是感谢。上述原文我未改动,现在把问题简化一下提出来,供大家释疑解惑:

影片中的科学家提示说,列车上午爆炸后,还有六个小时会发生脏弹攻击芝加哥,因此才进行了这次源代码程序运行,以便找出即将攻击芝加哥的凶手,阻止他用脏弹(也就是核武)攻击芝加哥。**也通过源代码程序运行,让主角数次进入已经发生过的上午八分钟里,终于调查出凶手是谁,还成功地阻止了脏弹攻击芝加哥,截获了凶手的车辆,抓住了凶手。

问题是,科学家是如何知道芝加哥即将遭到脏弹攻击的?

同样地,还有一个问题就是:按照**情节,倒数第二次进入八分钟,成功调查出凶手并阻止了凶手,抓获了他的车辆,那么,就说明现实中芝加哥没有发生脏弹攻击,已经安全了。但是,最后那次女上尉私自启动源代码程序运行,主角成功地解除了虚拟世界中的列车爆炸之后,我们看到主角仍然报警说凶手及其装满脏弹的车辆在什么什么地方,让警察去抓获。不是倒数第二次进入八分钟已经解除了芝加哥危险了么?芝加哥不是已经安全了么?那么,为什么还要把凶手及其车辆报告给警察呢?假如他不报警,应该也不会发生脏弹攻击芝加哥的,因为那个凶手已经在上一次进入八分钟里给调查出来,警察已经在现实世界中抓获他了啊(现实世界中的电视报道)。大家不是已经看到科学家都去庆功了么,所以才放松警惕,导致女上尉有机会私自启动最后一次的。

————————

刚刚我又看了一遍。这次是仔细看的,特殊地方我都是暂停,仔细阅读字幕的,可惜有不少地方的字幕有些提前或者拖后,导致第一次看的时候造成混乱的。现在把情节理清一遍,供大家参考:

先说现实世界发生的事情:

柯尔特上尉已经在两个月前牺牲在阿富汗战场,并给追授功勋,他的葬礼也举行完毕了。在他牺牲前曾经跟父亲吵了一架,因此父亲对他的死,感到很内疚。

柯尔特牺牲后,他的半截遗体给保存下来并利用生理科学手段让其大脑和半截身体存活下来,以用来科学试验——用来试验源代码程序,利用人死后大脑会存留最后八分钟记忆残像的原理,来穿越到过去八分钟,解决现实世界的问题。这一天,上午七点四十八分在美国芝加哥联合车站发生一列通勤列车爆炸事故,车上的200多人全部死亡。但警方通过一些渠道得到一个重要情报:爆炸列车的凶手,还将制造更大的恐怖案件,这就是:凶手将在列车爆炸的六小时后,用脏弹来攻击芝加哥城区。为此,警方只得立即疏散芝加哥城里的民众。但这个疏散谈何容易!芝加哥可是人口超过200万的城市,并不可能在脏弹攻击前全部疏散完毕的。

在疏散芝加哥市民的同时,美国军方的一个秘密机构——CANCO-N,一个空军的秘密科学试验机构——决定启动源代码程序,让柯尔特遗体的大脑进入源代码程序,借用上午列车爆炸案中已经死亡的一位中学教师的记忆残留,来调查凶手,找到凶手,并找到攻击芝加哥的脏弹厢车。为此,柯尔特被多次置入列车爆炸前的最后八分钟,历尽辛苦,终于找到了凶手,警方顺利地在芝加哥城区一个正在修建的公路上,抓获了凶手,缴获了他的作案车辆,芝加哥安全了。科学家和柯尔特的大脑取得了重大的胜利。

按照科学家原定计划,柯尔特一旦完成调查任务,科学家允诺让柯尔特的半截遗体死亡,让柯尔特的意识真正死去,好让柯尔特安息。柯尔特也盼望着自己安息,自己的大脑和意识不再受这个折腾。但是,真正解决危机之后,科学家食言了,决定让柯尔特继续活着,好等待以后再使用他穿越。理由是,他太好用了。

但古德温上尉并不赞同这个残忍的改变。她觉得应该让柯尔特安息,让其维生系统关闭,让他死亡。于是,古德温上尉冒险地私自启动了最后一次穿越,让柯尔特去列车爆炸前的最后八分钟里解救列车上的所有人。然后,到八分钟完毕之后,古德温上尉并不知道柯尔特究竟成功解救出来列车没有,但她依照原来的约定,关闭了柯尔特维生系特,柯尔特顺利死亡了。

再说虚拟世界中发生的事情:

柯尔特上尉醒来,发现自己身在美国的列车上,并且样子变了,而且还有一位女朋友在对自己喋喋不休且含情脉脉。晕了脑袋的他经过跟现实世界中操控源代码程序的空军女上尉古德温交流,才得知自己早就在两个月前的阿富汗战场牺牲了,自己目前不过是被科学家利用自己的大脑来穿越这天上午发生的列车爆炸案前的最后八分钟,来调查出爆炸案的凶手,并找到凶手即将开始的脏弹攻击芝加哥作案手段和爆炸物。

柯尔特上尉经过了很多次来来回回的穿越,才搞明白这一切的。期间,他的人性的意识曾经强烈地对抗过这个并不人道的科学试验,有好几次的穿越他几乎一事无成,空手而归。好在,他毕竟是战士,有强烈的责任感,虽然明白自己不过是一段源代码在穿越过去,但最后终于决定承担起士兵的责任,为国家和民众的安全,找到凶手。他在倒数第二次穿越的时候,把凶手找到了,使现实世界的警察们终于抓获了凶手,缴获了脏弹,芝加哥安全了。

但柯尔特上尉在穿越过程中爱上了他借用身体的那位中学教师(尚恩)的女友——那位喋喋不休的克里斯蒂娜。她要去改行考律师,还要去印度修行。倒数第二次穿越的时候,柯尔特虽然完美地完成了现实世界中古德温交给的调查任务,终止了芝加哥攻击案发生,但他无法忍受通勤列车上面的人都被炸死的事情发生。虽然这个事实已经发生过了,在古德温上尉的现实世界里无法改变了,但源代码程序的原理提醒了柯尔特:柯尔特认为自己可以阻止列车爆炸,并使自己和全列车的人——包括克里斯蒂娜在内——在平行世界里存活下去。

随后,柯尔特上尉要求古德温上尉来进行最后一次穿越,他要救出来列车上的所有人。但这个事实已经发生了,怎么可能救成功呢?但古德温上尉理解柯尔特的善良,决定满足其心愿,于是,古德温就没有听从科学家的命令,私自启动了源代码,让柯尔特进行了最后一次八分钟穿越。柯尔特在这最后八分钟里,成功地解除了列车炸弹,还抓获了凶手,并报了警,保证了他所在的平行世界里不会发生芝加哥攻击。同时,他还用尚恩的口气,跟自己的父亲通了话,请求父亲对自己的谅解。父子的那场手机对话,让人热泪盈眶。

然后,列车没有爆炸,柯尔特在平行世界活下去了,而在现实世界的他则被古德温上尉终结了。柯尔特还给古德温上尉发送了短信,告诉她,如果看到这段短信,说明古德温其实存在于平行世界中,并且会发生列车爆炸案,发生使用柯尔特遗体进入源代码调查凶手的事件。果然,平行世界里的古德温上尉刚刚上班的时候,就接到了这段短信,深感疑惑。但她并不知道怎么回事,可也没告诉任何人,只是看了看维生系统中的还没启用的半截柯尔特。

柯尔特在短信中告诉她,如果一旦启用了源代码程序,用他来调查案件的时候,别忘了给自己配合,等等。那么,接下来的事情应该是,会发生柯尔特上尉被置入源代码程序,不过,这应该是另一个平行世界的故事了。由此,就形成了镜像式的两面镜子互相映像,永无止境的无限循环平行世界状态。

在柯尔特救下列车的那个平行世界里,柯尔特跟克里斯蒂娜活了下来,走在芝加哥的街头,最后看着那个大脑雕塑(镜面镀光的圆蛋),幸福地在平行世界存在下去了,只不过,他的样子是那位教师,也就是克里斯蒂娜原来的男友,名字叫尚恩。我们在圆蛋雕塑映像里看到了他的教师模样

我和我的伴侣是在大学时代认识的,我们都是学习计算机科学的学生,性格相近,爱好相投,很快就相爱了。我们在一起经历了很多快乐和难忘的时光,也有过一些争吵和误会,但我们总能互相理解和包容,感情越来越深。在我们的感情生活中,有很多让我感动的事情,但我觉得最让我感动的有以下三件:

第一件:他为我写了一个程序

这件事发生在我们大二的时候,那时候我们有一门课叫做数据结构与算法,老师布置了一个很难的作业,要求我们用C语言实现一个排序算法,并且要求时间复杂度和空间复杂度都尽可能低。我对编程不太擅长,花了很多时间也没能写出一个正确的程序,而且还经常出现各种错误和bug。我很沮丧,觉得自己不配学计算机科学,也不配做他的女朋友。

他看出了我的心情,就安慰我说:“别担心,我会帮你写一个程序的。”我说:“不用了,这是我的作业,我应该自己完成。”他说:“没关系,这是我对你的爱的表达。”说完,他就开始在电脑上敲打起键盘。他用了一个小时左右就写出了一个完美的程序,不仅实现了排序算法,而且还加了一些注释和图形界面,让程序更加易懂和美观。他把程序运行了一遍给我看,然后把源代码发给了我。

当我看到他为我写的程序时,我感动得眼泪都快掉下来了。他用他最擅长的方式为我解决了一个困难,并且还把它做得如此完美。他让我感受到了他对我的爱、关怀、尊重、信任。他让我对他产生了更深的感激、敬佩、依赖、信任。他让我对我们之间有更强的亲密感、归属感、安全感、幸福感。他让我对我们之间有更大的认同感、尊重感、欣赏感、支持感。这件事对我们的关系有着非常重要的意义。

第二件:他为我唱了一首歌

这件事发生在我们大三的时候,那时候我们有一门课叫做人工智能,老师布置了一个很有趣的作业,要求我们用Python语言实现一个简单的聊天机器人,并且要求能够与用户进行自然语言交流。我对这个作业很感兴趣,就开始了我的编程之旅。我用了一个星期的时间,终于写出了一个能够回答一些基本问题的聊天机器人,我很开心,就把它发给了他,让他帮我测试一下。

他很快就回复了我,说:“你的聊天机器人很棒,但是有一个问题。”我问:“什么问题?”他说:“它不会唱歌。”我说:“唱歌?这有什么关系?”他说:“有关系,因为我想听你唱歌。”我说:“我不会唱歌,而且这不是作业的要求。”他说:“没关系,我会帮你唱歌的。”说完,他就给我打了一个电话。

当我接通电话时,我听到了他为我唱的一首歌,那是我们最喜欢的一首歌,叫做《你是我的眼》。他用他最动听的声音为我唱出了那首歌的每一个字,每一个音符。他用他最温柔的方式为我表达了他对我的爱、关怀、尊重、信任。他让我感受到了他对我的爱、关怀、尊重、信任。他让我对他产生了更深的感激、敬佩、依赖、信任。他让我对我们之间有更强的亲密感、归属感、安全感、幸福感。他让我对我们之间有更大的认同感、尊重感、欣赏感、支持感。这件事对我们的关系有着非常重要的意义。

第三件:他为我买了一本书

这件事发生在我们大四的时候,那时候我们即将毕业,面临着找工作或者考研的选择。我们都想继续深造,但是我们想报考的学校和专业不同,如果我们都被录取了,我们就要分隔两地。这让我们都很矛盾和纠结,不知道该如何抉择。我们经常为此争吵和冷战,感情也变得有些生疏和紧张。

有一天,他突然给我送来了一本书,那是一本叫做《算法导论》的书,是计算机科学领域的经典教材,也是考研必备的参考书。他说:“这本书是我为你买的,希望你能好好看看,准备考研。”我问:“你呢?你不考研了吗?”他说:“我也考研,但是不考你想去的学校和专业。”我问:“为什么?”他说:“因为你想去那里,那里就是最好的地方。”我问:“那你呢?你不想去那里吗?”他说:“不想,因为你在那里,那里就是最好的地方。”

当我听到他这样说时,我感动得无法言语。他用他最无私的方式为我做出了牺牲和改变,并且还鼓励和支持我实现我的梦想。他用他最伟大的方式为我表达了他对我的爱、关怀、尊重、信任。他让我感受到了他对我的爱、关怀、尊重、信任。他让我对他产生了更深的感激、敬佩、依赖、信任。他让我对我们之间有更强的亲密感、归属感、安全感、幸福感。他让我对我们之间有更大的认同感、尊重感、欣赏感、支持感。这件事对我们的关系有着非常重要的意义。

首先,我理解你可能会感到困惑和挫败。但是,这个情况并不一定意味着你无法继续追求这位女生。以下是一些建议:

1 尊重她的决定:她有权决定是否接受你的礼物。尽管这可能让你感到失望,但是尊重她的决定是一种尊重和成熟的表现。

2 沟通:尝试与她进行开放、诚实的沟通。询问她对你的感觉和压力的来源,这可以帮助你更好地理解她的立场,同时也可以让你有机会解释你的意图和行为。

3 理解她的感受:她说有压力可能是因为她对你的感情还没有达到接受礼物的程度,或者她可能觉得接受礼物会破坏你们之间的平衡。尝试去理解她的感受,这可以帮助你更好地应对这种情况。

4 调整你的行为:如果她的压力来源是因为你过于追求她,那么你可以考虑调整你的行为,例如给她更多的空间或者降低你的积极性。但是,你需要确保你的行为不会让她感到不舒服或者误解你的意图。

5 保持冷静:无论她的决定如何,保持冷静和成熟是非常重要的。不要过度反应或者变得情绪化,这可能会加剧她的压力感。

最后,记住,追求一个人需要双方的共同努力和尊重。尽管这种情况可能会让你感到挫败,但是不要放弃,继续努力并保持耐心,你仍然有机会赢得她的心。