我与编程语言
关键字: 我与编程语言直到高中毕业,我才第一次见到电脑,那是一台奔腾x86,蓝色的屏幕上,一个光点闪闪的。第一印象是:这不就是电视?
上大学,那时我是竭力避免报计算机的,因为太火,我感觉太火的必不会长久,然后便报了个信息系,没想到信息系就是学计算机的,天意弄人。
既来,则安。大二开始,便学C语言。记得第一个例子是要编写一个max(int ,int)函数,还是照着答案写的,自己是怎么也想不出来,可见我对编程是先天就不足。那时,C语言课是本系3个班合上,130多人,满满的一个厅,每堂课都是听得迷迷糊糊,黑板字也看不到(师资跟不上,现在已成为教育的大弊,不要以为扩招仅仅是添几个学生那么简单,它将引起所有可用资源的平均下降,教室、餐厅、操场、教师资源等等),尽管如此,i=i+1 的写法,2层for循环打印九九乘法表等等还是让我大吃一惊,原来可以这么写!课程结束,C语言学习却并没结束,因为后面的数据结构,操作系统,编译原理,都用到了它。编程的魔力也越来越吸引我。印象最深的一个是写一个4*4格子,将1-16填入,横竖斜每行的和要相等。当我将暑假写好的程序在开学后将其放到机房运行的时候,看到那一闪一闪的结果,兴奋之情难以自抑。那个程序我写了大片的for嵌套,跑了2分多钟,得到7000多解。后来,数据结构写过几个算法,操作系统写过一个时间片分时处理的作业,再以后,C语言就没怎么碰过。
大四,因为放弃了考研,我便决心找份编程工作。那时,对C++产生了兴趣,图书馆的乱七八糟的C++书看过很多,不过,不是在C语言里面掺杂讲一点C++,就是一些Visual C++的书,里面wizard的屏幕截图一大片,答疑解惑是谈不上了,烦躁郁闷倒是添了几分。让我豁然开朗的是看了裘宗燕老师翻译的The C++ Programming Language 一书,我发现,原来书还分垃圾和非垃圾的。从此,我看书便开始慎重起来。这本书不单让我了解C++,还让我对面向对象有了很深的理解。(注:裘宗燕老师依然在授课,他今年——2007——的一个编程语言的讲义可以从北大数学系网站免费下载学习,很不错的)
大四冬天,便开始找工作。豁然发现,原来找份C++编程的工作是如此之难,确切的讲,原来找工作是如此之难。在第一批(99级)扩招生涌上社会之时,招聘会现场人头攒动的情景便拉开了序幕。很艰难的,我的第一份编程工作找到了,从此也有了自己一台固定的机器,能任意上网的机器,能任意写代码的机器,那时,正是大四下学期,整个中国笼罩在“非典”阴影下的时候。
刚开始工作(叫做实习),充实而快乐,在远离学校的那个小城市,告别了大学那种浮躁与空虚,如饥似渴的学习着。日子在每天7点半上班和10点下班中悄然滑过。那时,公司的项目都是VB的,我也开始了VB的学习,慢慢熟悉了这个语言。VB还是很容易上手的,尤其是GUI方面编程,十分友好。在看完一大本书后,我写了一个彩票号码分析的小系统,很感谢那时同事在技术上无保留的指导。后来,又给一个单位做了个打印发票的小系统,写起来很有趣,但我总感觉这不是我理解中的编程。
2003年7月毕业,我顺理成章的进入那个公司。公司开始了一个J2EE项目,于是便告别VB。直到2006年初,我又开始用它做了一年的项目,我以为再也不会用到它。语言和人一样,不一定在什么时候相遇,也不一定什么时候又分开。还是说这个J2EE项目,当时,我们都不熟悉这个,甚至没有像样的分析架构师,而我们所谓的J2EE项目,也不过是在Web服务器上的一些Jsp页面,页面中,写着SQL语句,现在想起来,依然很恐怖,后来,这个项目亦是失败告终。Jsp编程调试起来无比麻烦,尤其是页面、页面跳转控制和业务混杂,一旦有问题,很难定位。我记得有一次一个大小写字母弄错了,我用删除法来定位,就是把代码大段大段的删除,一直到最后剩下几行的时候才发现这个错误。项目进行的很紧张,每天依旧是加班到很晚,看书的时间也没有,不看书,就不会有提高,代码写出来就会问题多多,问题多,处理这些问题就会浪费很多时间,就需要加班。一个恶性死循环。
打破这个恶性死循环的是几个同事开始离开公司,随后,我也离开。后来听说项目失败了。不奇怪。不失败才是不正常的。离开了那个公司,也离开了那个小城市,我又回到学校所在的城市。找工作,找住处,还是和一年前一样,那么艰难。不过,同学们许多都在这里的,倒是偶尔可以聊聊天,胡侃一通。经过1个多月,工作找到了,不敢奢望能找到一个编程工作,只想早日结束这种失业状态。是一个做话音业务的公司,准备上短信平台。那两年的短信业务拯救了不少网站。刚进公司,接手一个PHP网站,网站建成8成多,我只是在增加或修改一些东西。PHP在学校时接触一些,当时作为LAMP的P来学习的,是大四的一门选修课。把当时的书翻出来,熟悉一下基本语法,便开始照葫芦画瓢的作起来。其实,任何一门语言的精进,都需要大量的读书学习和实践,二者不可偏废。我自然没有那么大的精力去学习,而且,我还是惦记着Java的学习。因此,那个网站做成之后,我就对PHP没什么印象了,直到现在。谈到Java,Java是个庞杂的体系,我在Java上花的时间也最多。开始看Thinking In Java,还是英文版(便宜,还可以锻炼英语,当时是这么想的),其实水平没达到,看得十分痛苦。然后又看Core Java,这是一本很好的入门资料,我买了一套,开始有点入门。当然,以后实践过之后再看Thinking In Java,始觉其深,这是本应该多看几遍的书。在公司搞完那个网站,我开始做为公司作一个小的考核系统,延续了上家公司的经验,用Jsp来做的。从数据库到编程,都是我自己在弄,做完后感觉还不错。谈到数据库,随后我工作的内容便是SQL编程,主要是用PL/SQL做Oracle的一些存储过程。我发现,数据库是系统最底层的部分,也是相当重要的一部分,程序+数据库才能组成系统。对于SQL我直到现在也仅仅是认识基本语句和存储过程的程度,范式啊,优化途径啊,还是懵懂状。单表一处,回到我的工作。2004年下半年是段悠闲的日子,公司业务不怎么样,老板有时还从那微薄的薪水中莫名其妙的扣掉一百,有时被派出去发小广告(公司的话音业务),不由得不想起傻强的话,“在道上混,跟老大很重要。”那时,一个朋友介绍去北京,他先去了,说北京条件不错,毫不犹豫的,我便辞掉工作去了北京。
其实截止到那时,我的Java编程经验依旧只是Jsp,虽然我不断看书,但没有了电脑,没有实践,水平依旧一般。疯狂的投简历,面试,终于,又是在一个月后,我找到了我第三个公司,这个公司我呆了2年多。那是个完整的J2EE项目,Web层是Struts框架,业务层是EJB,但只是用了Stateless Session Bean,数据持久层用的是Hibernate, very delicate.我负责前台的工作,主要是Struts框架和一部分的JS编程。直到现在,我的J2EE经验也不过如此。那时的工作对我而言很轻松,我所后悔的,便是没有细致的深入Hibernate编程部分,能有一个项目让你锻炼,学习,提高,这样的机会,并不多。这个项目在大半年后,也是无疾而终,据说是上层的问题。之后的一两个月开始空闲起来,我对Eclipse Plug-in 的开发开始感兴趣起来,编了个小的代码编辑器,也无下文。休息了一段时间,公司派我们做4GL的开发。4GL是UNIX下的字符界面开发语言,与数据库联系紧密。稍一培训,拿着用户manual ,就开始做了。这是个很有趣的东西,类似脚本语言,做了一两个月,完成之后,也是没有再接触过。
前面提到,我在不经意,又遇到了VB,就是这个时候了。4GL做完,我又开始了一个项目。这是个传统的CS架构项目,前端是VB做用户界面,后端是C做服务,因为我一直做前端工作,自然而然的,被分配到了VB组。人要争取,不能老被动的等待机会。现在回头看,有不少的机会,都被我给浪费了,这是在以后的人生中应该注意的。这个项目管理的相当失败,但无论怎样,确实是上线了。VB做起来没啥感觉,我也没兴趣去仔细研究。一个落伍的语言,还看它作甚?当时,Dot Net 都推出很久了。我所没兴趣的第二个原因是许多代码只是改,而不是我新做。从某些方面来看,这也是项目比较失败的地方。郁闷归郁闷,闲暇还是有的。我对新语言的兴趣十分强烈,有时候对一个学过的语言一知半解,却会对另一个语言产生浓厚兴趣,我到现在也不知道为什么。或许是对未知的好奇,或许是心中对计算机一直有一个梦,幻想可以用新的东西去实现它,又或许仅仅是喜新厌旧。总之,那个时候我又开始学Python了。不想去买书,便天天各个网站到处穿梭,看完Tutorial,练习了一些语法,开始找例子,自己也开始写小例子。Python的强大在于其网络连接和正则表达式处理,Google网站的大量模块是Python的。印象最深的一个是写了一个网站上桌面图片的下载,Python简直就是天生适合做这种事情。我的经验也只是停留在这个水平之上。
今年,我辞去北京的工作,来到大连。我自然还是想作为一个Java程序员,因为我在这上面花费时间和精力最多,还有一个重要的原因,作为Java的集成开发工具,Eclipse实在太好用了。因为缺乏后台经验,自然的,被当作前台人员进入一个公司。自前年开始,Web端的一个新名字Ajax, 猛然发现,Ajax的j——Javascript——被我忽略太久了。对Javascript没有好感,原因很简单:它不是一个像Java或C或C++那样的类型明确的语言,还有,潜意识中,我总认为Javascript很简单,干不了多少事情,不用系统学习。事实证明我错了。看完了《Javascript权威指南》(这是本很不错的入门书,也是网上被众人推荐的书),有了个系统了解之后,才发现,原来Javascript也可以这样有意思,原来Javascript不仅仅可以用做输入检查。学习Javascript,我最后以一个可编辑表格了事,然后学习Ajax去了。
就是到今天,我仍然对新语言新语法有种很强烈的兴趣,比如Lisp,Haskell,Cobol或者Prolog语言,也说不上为什么,就是好奇。其实,在繁杂的语言表象之下,有一种很深刻的数学上的东西,就是计算机体系得以建立的数学基础,也就是几十年前阿兰图灵、冯诺伊曼、Haskell等人的工作成就,或许这些东西才是我感兴趣的源泉,就像八年前,我一脸向往的在专业一栏填上“信息”一样。
编程感悟:
1. 英语很重要,多读原版书或原版书的翻译。计算机科学发源于西方,计算机技术,现在,也是西方一直领先,因此资料也是英文的多。
2. 学习一门语言的过程:通读一个Tutorial,熟悉其语法与库,看例程与写例程,实现一个稍大的例子,读开源的代码。“熟练的运用一个语言编程与熟练的写英文文章一样,不外乎参考优美的范文和不断的实践。” Bjarne Stroustrup
3. 语言是表象,其底层是数学。因此数学很重要。
发表评论
- 浏览: 16457 次
- 性别:

- 来自: 大连

- 详细资料
搜索本博客
我的相册
共 10 张
最近加入圈子
最新评论
-
近期英语学习计划
任重而道远 mmd 学外语真是场持久战
-- by metaphy -
从Spring MVC-step-by-ste ...
引用汗一个 教授派的吧啥意思...
-- by metaphy -
从Spring MVC-step-by-ste ...
汗一个 教授派的吧
-- by jianfeng008cn -
翻译:Java游戏开发
whycloud 写道 Nighthaven 写道 其实我觉得这书的中文 ...
-- by Nighthaven -
翻译:Java游戏开发
而且这本的中文版我看过的,总的来讲还不是特别的烂 不过支持lz自己翻译,翻译的过 ...
-- by whycloud






评论排行榜