My life of programming Java & Linux

来源:互联网 发布:mac文档转换成word 编辑:程序博客网 时间:2024/05/22 15:44

My life of programming Java & Linux

Written on 2014.01.24一个很无聊很无聊的晚上Modifed on 2014.03.08一个不想学习兼断网的下午Continue on 2014.03.25一个想找一件最有意义的事来做的下午

是时候该写这篇文章了,我意识到大一的大多数记忆已经开始模糊了, 剩下的一些是应该用文字记下的东西。

电脑高手

年少不去江湖老,放歌四海任逍遥。

未解前路多少事,欲与青天试比高!

一个十九岁的少年拉着行李箱来到了一个全新的城市,他想起了李逍遥当初也是这样 离开余杭小镇的,从此闯荡江湖。 不同的是李逍遥身边有个赵灵儿, 而我的身边只有个行李箱。 我想我已经进入人生的第二个阶段。 没有家人在身边,我会活的更自在,更独立。几年后,我会想李逍遥一般, 成为电脑高手。 还记的那年入学报到, 还记得那年军训, 还记的那个让我震惊的背影(不要写人,还是写技术吧)。

进入大学,本以为会遇见很多很多的电脑高手,但最后我失望了。 在开学不久, 我们学院的计算机科学学会开了一次迎接新生的会, 会上一个师兄讲了他参加ACM的经历, 特别是他的PPT,是我喜欢的风格。 这让我想起了我高中时参加NOIP的情景,我决定,大学我也要去参加ACM, 可以川师没这个环境,我也没这个能力去创造这个环境,最后便不了了之。 对当时的我来说,了解计算机的结构远远比算法来的更有趣。

十一过后, 我便把我那台历史悠久的台式机主机搬到了学校,然后买了一个液晶屏 连接上,从此就开始了学习技术。 当时我受到一个搞计算机的表叔的影响, 就给自己定下一个38计划,一天8小时睡觉,8小时看书, 8小时打电脑(当然没有做到)。在开始的一段时间, 我玩电脑的时候会开一个游戏挂机,那是我初中玩的一个游戏《快乐西游》。 后来这个游戏停止运营了,我又去玩了玩了《传奇》,觉得实在无聊, 以后就没有怎么玩游戏了(后来在毕业的时候,才发现,想玩的游戏没有玩, 想追的女生也没有追,一直引为平生遗憾)。这样,在玩电脑时, 我就把全部的精力都放在了学习编程上。 我当时的目标很明确, 在大学我只学三样东西:数学,计算机,英语。 所以,除了与这些相关的课程, 我就逃了,期末也果然被挂了。 这是我应得的, 我欣然接受。

Java

上大学我学的第一门语言是Java, 记得当时Sun还在。 Sun是一家非常理想, 值得让每一个做技术的人尊敬的公司。 由于以前有编程的基础, 我便直接去sun的官方,把关于java的文档(全英文)下载下来看, 一个是tutorial, 一个是doc。整个大一上学期,我几乎就是在看tutorial这个文档。 起初的时候,英文不是很好,需要一边查字典,一边看,有时遇到复杂的句子, 还有分析句子成分,一天最多能看三四页。tutorial的文字是学得很好的, 看了差不多一个月后,发现常用的单词就那些个,几乎就不用字典了, 一天看一节没什么困难。 以至于后来考四六级的时候都是裸考,运气好一点就过了。 大约把tutorial看了1/3左右,进度便开始慢了下来,我便去图书馆借了一本关于 java的书来看,这本书是《Object Oriented Software Development in Java》。 这本书写的太好了,上面写道:面向对象技术的三个里程碑是Java,设计模式,UML。 这本书是这三者的完美结合, 我受益无穷,我觉得我那时才开始渐渐明白什么是 面向对象,尽管以前常常在胡思乱想面向对象的优点。

在大一上学期结束的时候,我加入了学校的计算机学会,在这里,我认识很多有个性, 有魅力的人,丰富了我的大学生活。在这里,我们一起考试前复习,一起抬展板, 一起办计算机技能大赛,一起写程序,一起喝酒,一起玩杀人游戏。。。 每次提起计协, 这些便历历在目。我在协会的位置是对窗的右边的第二个位置, 左边是一个如花一般 的学Java的师姐, 右边是一台服务器。我就在这个位置上默默学习着技术, 寻找着那一种我想要的感觉:沉迷。

计协每年都会办一届计算机技能大赛,比赛里有一项比敲键盘的速度,真有趣。 我和一个兄弟xiaov一起合作写了一个键盘比赛软件,当时我还没学数据库, 所以我写的用户端,xiaov写的数据库端,我们通过socket通信,这是我们的 第一次合作。感觉棒极了,这个经历给了我强大的信心。后来xiaov开始做android应用, 他应该好像是我们学校第一个做android的人,他是一个能跟上浪潮的程序员,我觉得。 我和他又合作了一次,写了一个android游戏,感觉依然很棒,和他一起写程序, 就没有写不出来的程序。在这这两次合作之间,我一个人写过项目,都挺失败的, 感觉很不爽。合作开发有趣多了,我想这也是想在开源社区蓬勃发展的原因。

大约大二上学期我感觉JavaSE学的差不多了,开始进军JavaEE,当时的版本6已经问世了。 我比较相信官方,所以最开始就去看JavaEE 6 Tutorial,里面好多新概念,斗都看大了。 里面很多的特性都要依赖appliation server. 这条路实在难走,我转向了SSH (Spring, Struts, Hibernate)。 学了Spring, 我才真正知道了什么是面向接口编程; 写了struts2,我第一次学着去看源代码。后来我还看了一个文档,J2EE Blueprint, 这是一个很好的文档, 我看了它关于web的讲解,我才明白servlet原来是这样用的。 以前写网站,我一直是一个jsp对应一个sevlet,还洋洋得意:自己做到了逻辑与表示层 的分离。哎,见识少了。至此,我便很少关注java了。 还有一件事,或多或少的很java 有点关系。在大二的下学期, 一个计协的兄弟介绍我去一家flash公司做兼职, 我答应去了。当时,我一点也不会as3,我当时只用3天,就可以开始着手做公司给的 小项目了。 我觉得我能在这么快的上手,是建立在我学习java的经历上的。 在公司兼职的期间,我有两个收获,一是我向自己证明了我完全有了独立的能力; 二是我有点累,我被剥削了,我想休息,去静静的想一想什么是才是我所追求的技术。

从各个方面来看,Java是值得我去铭记的。

Linux

大一上学期的计算机导论这门课是我另一个故事的开端(或者说是一个)。 我记得,有一次, 这门课的作业是问我们想做一个什么软件, 我记得当时的回答是要做一个面向对象的操作系统。其实在高中的时候, 我就对操作系统特别感兴趣,当时我买了一本很贵的关于操作系统(我妈给我买的) 的书来看,可惜看不懂。

真正意义上,我用的第一个gnu/linux操作系统是ubuntu发行版,一个学java的师兄 介绍给我的。以前总是在网上看到,说真正的黑客都用linux,为此,高中时, 我还买了一套redhat9.0的光盘来玩,可是没有能把它安装在电脑上。 而ubuntu的安装简直太简单了,而且安装时间很快。 我慢慢的从windows转移到了 ubuntu上来操作。我了解到了opensource,我了解linux的发展,我了解到了gnu, 我了解到了apache,好多好多新鲜的东西。这个大一的下学期,我都在ubuntu上玩, 我在上面写java代码,在上面学习bash, linux用户空间编程。我慢慢的尝到了 linux的甜头,我开始对microsoft的东西不屑一顾。

随着对技术的渐渐了解,我对编游戏不那么狂热,对java的好奇心也没那么强烈了, 我决定开始着手我的下一个目标,写一个操作系统。说做就做,在大一的暑假, 我去书店买了一本书《自己动手写操作系统》,照着上面的代码写。 还记得开始的例子都是汇编的,用的nasm汇编器。最开始照着书上的步骤写了个启动扇区, 这是我写的第一个能在裸机上运行的程序,当我看见那行hello,world的时候, 我兴奋不已。

接着我跟着这本书学习了intel的安全模式,这是TMD的什么东西,差点让当时的我 走火入魔。我硬着头皮照着书上的代码敲这代码,虽然很多代码我都不认识。 程序依然正常,但已经失控了。我继续着下一章,继续照着书上的代码敲着, 我可以不懂,我只是想看看屏幕上结果,没有亲自敲下每个代码,我始终不放心。 可是,这一次程序没有按照书上的执行,我望着满屏的汇编代码,有种无从下手的感觉。

我决定从基础学起。我一直相信一句话,对于天才来说,基础决定了你与其他天才的差距。 于是我学习汇编,学习操作系统原理。学习这些后,发现自己依然不能写出一个操作系统。 要写一个操作系统还要学习与计算机硬件相关的知识, 于是我有学习计算机组成原理, 看intel 386的文档。但是我还是感觉我不能写出一个操作系统,我是典型的中国人, 没创造力,于是我想去山寨linux。后来,我学习了linux的内核, 学习gnu/linux系统是怎么启动起来的(强烈建议去看看lfs,linux from scrach)。 但还是山寨失败,我又去重新学数字电路(以前上课学过)。我突然发现, 要成为一个真正的技术人员,我还差远了。当我把这些基础课程了解的差不多的那天, 已经是大三下学期了。其实整个大三的一年,我学习技术的节奏明显变慢了, 我看了很多杂七杂八的书,想了很多杂七杂八的事情。原来编程是需要平台的, 就像《几何原本》一样, 证明是需要公理作为基础的,所谓的各种应用开发和内核开发 只不过是大家站的平台不一样罢了。技术不仅仅是编程。还有好多好的感受。 是不是无聊之人的感受特别多?

不想写了

大四是实习的阶段。由于我被保研,大四的节奏依然像大三一样,我很悠闲的看着我想看 或没看完的各种书。说实话,我去过三家小公司,没有做过一个真正意义上的项目, 不过接触了很多各种各样的应用,比如GIS,ASP.NET,PHP,网络数据包截获,等等。 这就是我对我大四实习的总结。最后的毕业设计,我做的是一个8086的反汇编器,很简单。 说来惭愧,我的毕业设计文档是翻译intel的8086官方文档写出来的,这让我节约了 很多时间来做其他的事情。本科就这样结束了。我还要在这里呆三年,天啊!

大四是一个总结的阶段。回首这三年的程序生涯,我积累了很多的经验。在最后一年里, 我看了两本书:《Structure and Interpretation of Program》和 《The unix programming environment》。这两本书把那些经验都消化了, 变成了哲学。 有些东西,越是清晰,越是在乎,越不知道该以什么结构来表达。 还是不写了, 反正字数也够了。

0 0
原创粉丝点击