首先,我不是标题党。其次,我只想说说十年来我自己的关于编程的故事,做过的一些乱七八糟的程序。我的成长并不快,下面这些程序已经足够让我丢脸的了,喜欢发难的朋友,尽管嘲笑我吧(当然,如果你产生了共鸣,我们或许是同龄人、好基友)。最近尤其喜欢回忆起一些以前的故事(比如这篇,还有这篇),是不是说明我越来越迂腐了?
其实接触编程,是从更早学习机上的G-Basic开始的。但那时的我只能说凑个热闹,回忆似乎已经模糊不清。所以这段时间实在不能算作什么历史。不过无疑学习机,以及是早些时候在同学家玩的电脑,才是真正领我进入神奇计算机世界的启蒙者。
2002年正值我高二,学校要组织一帮人去参加编程的比赛,我还记得当时对电脑有点兴趣,买了一些电脑的书籍,看了以后就开始改学校机房的注册表。老师看到了大概觉得孺子可教,让我去参加。那时候我可真是无知者无畏啊。题目可以选Pascal(好像是它)或者Basic,我选了后者,但是试卷的得分估计比零分高不了多少。
不过好在我脸皮够厚,没有郁闷很久,开始学习一些关于VB的东西。到后来买了一本正儿八经的编程书籍,就是这一本:
这本书是我真正编程的启蒙书籍。有人说过,程序员如果学习的第一门语言是VB,那么他不会成为一个好程序员,不相信的同学请自行搜索Dijkstra的博客。VB给我的第一感觉就是拖拖拽拽就写成程序了。所以,我至今仍然尤其喜欢拖拽……
其实到后来我还真用VB写出了一个发布到网上去的软件“妖精之翼计算强化训练”,现在在天空软件园等等地方还有下载。这款软件算是标志着我我拖拖拽拽到一定级别了(汗……)。软件提供了各种各样用预置的或者随机生成的计算题来虐待莘莘学子的功能(这真是我做过的一件无比罪过的事情),比如等级挑战、统计计算、题库读写、闯关模式等等。如果你曾经听说过,甚至使用过。不如告诉我,我向你认错……
好在大学的第一堂程序课是C语言,而到了2005年上半年,我们团队4个人,也用C语言正儿八经地做了一个“326管理系统”,这个取名完全是搞笑地缘于寝室的门牌号。大学的课程可不就擅长让学生做管理系统么?内容则完全是拼凑,包括通讯录管理、飞机票管理、学生管理和员工管理四个子系统。听起来就水的很,在当时写着软件却让我感到无比的快乐,自己设计了一个密码公式,用C语言显示图片,还有看到同学实现了鼠标的功能,都让我激动不已。即便是现在,想想那时候学习编程的故事,都会充满动力。
之后是纯真的年代、装叉的年代,以及吟风弄月的年代。我赶在这个时间里开始屁颠屁颠地学习HTML、CSS以及JavaScript,而且还有那些五花八门的图像处理软件,比如Photoshop、Fireworks,还半懂不懂地搞了一把Flash制作。右图是我正儿八经做的第一个网站(一看标题就是文艺青年对吧……),申请了一个临时免费空间,网站主要是用Frontpage做的,然后摘抄一些网上文章,再把我那些热烘烘的文字贴上去(全部都是静态网页),激动地我好几宿没睡好觉。
再看看我那时候用Photoshop弄的图,是不是还是可以稍微装一装的?
参加学校的社团联合会实在是让我收获很大。不是说我从中锻炼了多少,倒是实现了两个目的:1、找女友;2、学软件。我们用IIS维护一个网站,对于每次大的活动,我们都要做一个相应的页面来宣传,比如这个:
当时项目组有一位会用ASP的同学,我佩服他佩服得不得了。现在我还会和他聊起那个时候的故事。
接着一个耗费很大精力的考试系统,JSP+Servlet的,我们做失败了。这算是一次比较大的失败,小组都解散了,我被老师数落得无地自容。好在后面一起做了一个OA系统,Struts+Spring+MySQL+Tomcat,页面是用Dreamweaver搞的,费尽力气总算是弄出来了(足以证明我的智商实在是不咋地),可我还是缺乏足够的审美……
后来也用C++、C#,甚至汇编写了一些程序,大部分都是一些算法、解题之类的程序,反倒没给我留下非常深刻的印象,就不截图了。大学里学的东西其实还真不少,只是大部分似乎都没留下来。如果给我机会再来一次的话,我大概会把算法课再好好琢磨琢磨。
大学期间做了N多网站,我的毕业设计还是网站,这次使用Groovy on Grails来实现的。给我印象最深的就是代码量不大,但是做出来的功能却不少。学生嘛,当时就是觉得功能越多越牛叉。排行榜、搜索、过滤、评论、评分、好友、IP封锁、网站地图……巴不得能想到的那些比较容易实现的功能全部都堆上去。
在整个过程中,我们试图按照软件开发的流程往下完成,乱七八糟的文档,还有UT都写了,当时也不管什么是有用的、什么是没用的,只要是有精力去完成的,就都尝试了。这段时间大概是我学生期间进步最快的时间。
最后,毕业纪念,还是做网站留念,简陋至极,就不截图了。
工作以后,第一个项目是关于彩铃系统的,也就是大家现在接触到的彩铃,当时就是我们团队维护的。整个系统分成前后两部分,前端外包给其他公司实现,后端我们自己维护,中间通过SOAP协议连接。终于不是网站了,我有点儿解脱的感觉。当时我负责的需求业务上有一点儿复杂,但是实现起来基本上除了写SOAP接口就是眼巴巴地看着DB牛人写那些存储过程。我对于软件工程的大部分认识,似乎就是从那时候开始的。至于学校里学的那些关于软件工程的玩意儿,基本就是过目即忘的。
之后的项目ESG-E,一个电子节目单的系统,对外暴露接口,没有界面。看起来似乎简单易上手,很适合我们这些经验不甚丰富的程序员下手。如果你使用过联通的手机电视,那么应该有我当时的一部分印记在那里。到了北京联通总部去开局,半夜常常起来解问题,要不就干脆通宵,搞得疲惫不堪,被局方以及现场的各种领导折磨得不成人样,那段时间应该算是最苦逼的岁月。实践出真知,我的Linux基础知识大概是那时候获得的。
再接下去就是两个短期的小系统,一个是iPhone上的手机电视开发,可惜的是我们不做核心的解码器,只是用Objective C做外壳;还有一个是数字版权管理系统的维护,DRMC,从中我逐渐体会到了维优工作的艰辛。程序员倒是确实应该多尝试各种事情,后来发现这些苦头也算没有白吃。
我一度以为不再接触网站了,想不到又回归本行。接下去做了几年的一个基于Portlet的产品,就是大型电信解决方案中的一个电信门户网站。我们从网站最初的需求梳理、原型设计开始,逐步把它从一个小小的雏形发展完善成庞然大物。以至于它后来庞大得让N个团队一起去交付和维护,甚至有些变了形,不再清晰灵活(网站上有许多文章都源于和这个庞然大物斗争而获得的启示)。去年一年时间则花了很大精力在整个系统的性能分析和优化上,一方面这类问题尤其折磨人,另一方面也获得了一些宝贵的经验,而且还在其间结识了一些低调的牛人。
下面就是该产品的一个定制版本,中国移动手机动漫:
现在我开始接触一些有意思的东西,比如分布式的计算、部署自动化的框架等等;项目要求下也逐渐涉入纯后台的关于机器学习、数据挖掘的算法和程序代码,感到充满挑战,又觉得知道得太少,每天在自我鄙视和自我鼓励中爬行……
文章系本人原创,转载请注明作者和出处
注:本博客已经迁移到个人站点 http://www.raychase.net/ ,欢迎大家访问收藏,本ITEye博客在数日后将不再更新。
相关推荐
以下是对文档【标题】:"我和LabVIEW(PDF版)——一个NI工程师十年的编程经验(1).pdf"中【部分内容】提到的知识点的详细说明: 1. LabVIEW编程的便捷性与图形化概念 LabVIEW的核心特点在于其图形化编程的概念,即...
ASP.NET编程宝典(C#)十年典藏版是一本涵盖了ASP.NET技术的全面教程,尤其适合C#开发者深入学习和参考。此书的十年典藏版代表了自ASP.NET技术诞生以来的重要发展和最佳实践的汇总,对于了解该领域的历史变迁和最新...
总之,《我和LabVIEW——一个NI工程师的十年编程经验》不仅是一本LabVIEW的学习指南,更是一部融入了作者多年实践经验的宝典。无论是LabVIEW新手还是有一定基础的开发者,都能从中学到宝贵的知识和技巧,提升自己的...
### LabVIEW:一个NI工程师的十年编程经验 #### LabVIEW概览 - **起源与发展**:LabVIEW(Laboratory Virtual Instrumentation Engineering Workbench)是由美国国家仪器公司(National Instruments,简称NI)研发...
这本书是资深游戏程序员云风所著,记录了他十余年来的游戏编程感悟,通过作者自身的学习和实践经验,带领读者全面探索游戏开发的各个环节。云风以其扎实的技术背景和丰富的工作经历,将游戏开发的全景知识体系,从...
云风将自己十余年的游戏编程经验,包括面对不同时代的技术挑战、与内存空间和显卡的斗争、在网游时代与网速和外挂的斗争等,详尽记录并形成了这本著作。书中不仅有实用的技术经验分享,更传递了研发过程中的理念和...
自幼学习编程,十数年从未间断,对程序设计有所领悟。大学时代开发的游戏图像引擎“风魂”曾用于多家游戏公司的游戏项目。参与过《大话西游》系列、《梦幻西游》、《网易泡泡游戏》的开发。现从事新一代网络游戏引擎...
【标题解析】 "中科大华为杯首届编程比赛(2010年6月27日举行)" 这个标题揭示了本次编程竞赛的重要信息。...对于后来的研究者或学习者,回顾这场比赛的历史资料,可以从中汲取经验,了解十年前编程比赛的风格和重点。
这些知识点在编程学习中都非常重要,它们涵盖了基本的数据结构、函数定义、时间处理、字符串操作以及逻辑判断等核心概念。掌握这些知识将有助于解决类似的实际编程问题,并在编程比赛中取得好成绩。在教育和考试环境...
《电脑报十年珍藏版》作为历史的见证,记录了信息技术从早期的探索到初步成熟的转变,它不仅包含了大量的技术知识,也反映了社会变迁与科技进步的交织。对于IT爱好者和历史研究者来说,这是一个深入了解中国IT行业...
马云曾经说过,如果我们继续以前的教学方法,对我们的孩子进行记、背、算这些东西,不让孩子去体验,我可以保证,三十年后孩子们找不到工作!因此,编程教育成为了未来的关键。 编程,不仅赋予了逻辑思维与创造力,...
《Java Web编程宝典-十年典藏版》是Java Web开发领域的一本经典教程,它深入浅出地讲解了如何使用Java技术进行Web应用程序的开发。这个源码包包含了作者精心设计的实例代码,旨在帮助读者更好地理解和掌握Java Web...
"蓝桥杯大赛青少年创意编程组比赛C++组资料集" 概述: 蓝桥杯大赛青少年创意编程组比赛C++组 资料集是一个综合性的...该资料集为青少年编程爱好者和初学者提供了一个系统的学习资源,旨在提高他们的编程能力和知识。
- **发展历史**:自2007年第一代iPhone发布以来,iOS已经经历了多次重大更新,不断引入新特性以适应市场和技术的发展需求。 #### 二、SDK简介 - **定义**:SDK(Software Development Kit)即软件开发工具包,包含...
Python大数据分析与机器学习商业案例实战_员工离职预测模型_编程实例课程教程.pdf 本文档主要围绕Python语言展开,涵盖了Python语言的历史发展、语言特点、应用领域等方面。 Python语言的历史发展 Python语言由...
清华大学唐教授在其报告《人工智能下一个十年》中回顾了人工智能的发展历史,并展望了未来十年的发展趋势,同时深入探讨了第三代人工智能的理论体系。本报告将详细阐述以下几个方面的内容:人工智能的发展浪潮、关键...