Skip to content

四火的唠叨

一个纯正程序员的啰嗦

Menu
  • 所有文章
  • About Me
  • 关于四火
  • 旅行映像
  • 独立游戏
  • 资源链接
Menu

我十年学习编程的历史

Posted on 08/14/201206/23/2019 by 四火

首先,我不是标题党。其次,我只想说说十年来我自己的关于编程的故事,做过的一些乱七八糟的程序。我的成长并不快,下面这些程序已经足够让我丢脸的了,喜欢发难的朋友,尽管嘲笑我吧(当然,如果你产生了共鸣,我们或许是同龄人、好基友)。最近尤其喜欢回忆起一些以前的故事(比如这篇,还有这篇),是不是说明我越来越迂腐了?

其实接触编程,是从更早学习机上的 G-Basic 开始的。但那时的我只能说凑个热闹,回忆似乎已经模糊不清。所以这段时间实在不能算作什么历史。不过无疑学习机,以及是早些时候在同学家玩的电脑,才是真正领我进入神奇计算机世界的启蒙者。

2002 年正值我高二,学校要组织一帮人去参加编程的比赛,我还记得当时对电脑有点兴趣,买了一些电脑的书籍,看了以后就开始改学校机房的注册表。老师看到了大概觉得孺子可教,让我去参加。那时候我可真是无知者无畏啊。题目可以选 Pascal(好像是它)或者 Basic,我选了后者,但是试卷的得分估计比零分高不了多少。

不过好在我脸皮够厚,没有郁闷很久,开始学习一些关于 VB 的东西。到后来买了一本正儿八经的编程书籍,就是这一本:

vb6

这本书是我真正编程的启蒙书籍。有人说过,程序员如果学习的第一门语言是 VB,那么他不会成为一个好程序员,不相信的同学请自行搜索 Dijkstra 的博客。VB 给我的第一感觉就是拖拖拽拽就写成程序了。所以,我至今仍然尤其喜欢拖拽……

妖精之翼计算强化训练 其实到后来我还真用 VB 写出了一个发布到网上去的软件 “妖精之翼计算强化训练”,现在在天空软件园等等地方还有下载。这款软件算是标志着我我拖拖拽拽到一定级别了(汗……)。软件提供了各种各样用预置的或者随机生成的计算题来虐待莘莘学子的功能(这真是我做过的一件无比罪过的事情),比如等级挑战、统计计算、题库读写、闯关模式等等。如果你曾经听说过,甚至使用过。不如告诉我,我向你认错……

326 好在大学的第一堂程序课是 C 语言,而到了 2005 年上半年,我们团队 4 个人,也用 C 语言正儿八经地做了一个 “326 管理系统”,这个取名完全是搞笑地缘于寝室的门牌号。大学的课程可不就擅长让学生做管理系统么?内容则完全是拼凑,包括通讯录管理、飞机票管理、学生管理和员工管理四个子系统。听起来就水的很,在当时写着软件却让我感到无比的快乐,自己设计了一个密码公式,用 C 语言显示图片,还有看到同学实现了鼠标的功能,都让我激动不已。即便是现在,想想那时候学习编程的故事,都会充满动力。

image 之后是纯真的年代、装叉的年代,以及吟风弄月的年代。我赶在这个时间里开始屁颠屁颠地学习 HTML、CSS 以及 JavaScript,而且还有那些五花八门的图像处理软件,比如 Photoshop、Fireworks,还半懂不懂地搞了一把 Flash 制作。右图是我正儿八经做的第一个网站(一看标题就是文艺青年对吧……),申请了一个临时免费空间,网站主要是用 Frontpage 做的,然后摘抄一些网上文章,再把我那些热烘烘的文字贴上去(全部都是静态网页),激动地我好几宿没睡好觉。

再看看我那时候用 Photoshop 弄的图……

东北大学游泳爱好者协会 背景切换1

参加学校的社团联合会实在是让我收获很大。不是说我从中锻炼了多少,倒是实现了两个目的:1、找女友;2、学软件。我们用 IIS 维护一个网站,对于每次大的活动,我们都要做一个相应的页面来宣传,比如这个:

image

当时项目组有一位会用 ASP 的同学,我佩服他佩服得不得了。现在我还会和他聊起那个时候的故事。

接着一个耗费很大精力的考试系统,JSP+Servlet 的,我们做失败了。这算是一次比较大的失败,小组都解散了,我被老师数落得无地自容。好在后面一起做了一个 OA 系统,Struts+Spring+MySQL+Tomcat,页面是用 Dreamweaver 搞的,费尽力气总算是弄出来了(足以证明我的智商实在是不咋地),可我还是缺乏足够的审美……

clip_image002

后来也用 C++、C#,甚至汇编写了一些程序,大部分都是一些算法、解题之类的程序,反倒没给我留下非常深刻的印象,就不截图了。大学里学的东西其实还真不少,只是大部分似乎都没留下来。如果给我机会再来一次的话,我大概会把算法课再好好琢磨琢磨。

大学期间做了 N 多网站,我的毕业设计还是网站,这次使用 Groovy on Grails 来实现的。clip_image002[4]给我印象最深的就是代码量不大,但是做出来的功能却不少。学生嘛,当时就是觉得功能越多越牛叉。排行榜、搜索、过滤、评论、评分、好友、IP 封锁、网站地图……巴不得能想到的那些比较容易实现的功能全部都堆上去。

在整个过程中,我们试图按照软件开发的流程往下完成,乱七八糟的文档,还有 UT 都写了,当时也不管什么是有用的、什么是没用的,只要是有精力去完成的,就都尝试了。这段时间大概是我学生期间进步最快的时间。

最后,毕业纪念,还是做网站留念,简陋至极,就不截图了。

工作以后,第一个项目是关于彩铃系统的,也就是大家现在接触到的彩铃,当时就是我们团队维护的。整个系统分成前后两部分,前端外包给其他公司实现,后端我们自己维护,中间通过 SOAP 协议连接。终于不是网站了,我有点儿解脱的感觉。当时我负责的需求业务上有一点儿复杂,但是实现起来基本上除了写 SOAP 接口就是眼巴巴地看着 DB 牛人写那些存储过程。我对于软件工程的大部分认识,似乎就是从那时候开始的。至于学校里学的那些关于软件工程的玩意儿,基本就是过目即忘的。

之后的项目 ESG-E,一个电子节目单的系统,对外暴露接口,没有界面。看起来似乎简单易上手,很适合我们这些经验不甚丰富的程序员下手。如果你使用过联通的手机电视,那么应该有我当时的一部分印记在那里。到了北京联通总部去开局,半夜常常起来解问题,要不就干脆通宵,搞得疲惫不堪,被局方以及现场的各种领导折磨得不成人样,那段时间应该算是最苦逼的岁月。实践出真知,我的 Linux 基础知识大概是那时候获得的。

再接下去就是两个短期的小系统,一个是 iPhone 上的手机电视开发,可惜的是我们不做核心的解码器,只是用 Objective C 做外壳;还有一个是数字版权管理系统的维护,DRMC,从中我逐渐体会到了维优工作的艰辛。程序员倒是确实应该多尝试各种事情,后来发现这些苦头也算没有白吃。

我一度以为不再接触网站了,想不到又回归本行。接下去做了几年的一个基于 Portlet 的产品,就是大型电信解决方案中的一个电信门户网站。我们从网站最初的需求梳理、原型设计开始,逐步把它从一个小小的雏形发展完善成庞然大物。以至于它后来庞大得让 N 个团队一起去交付和维护,甚至有些变了形,不再清晰灵活(网站上有许多文章都源于和这个庞然大物斗争而获得的启示)。去年一年时间则花了很大精力在整个系统的性能分析和优化上,一方面这类问题尤其折磨人,另一方面也获得了一些宝贵的经验,而且还在其间结识了一些低调的牛人。

下面就是该产品的一个定制版本,中国移动手机动漫:

image

现在我开始接触一些有意思的东西,比如分布式的计算、部署自动化的框架等等;项目要求下也逐渐涉入纯后台的关于机器学习、数据挖掘的算法和程序代码,感到充满挑战,又觉得知道得太少,每天在自我鄙视和自我鼓励中爬行……

 

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》

×Scan to share with WeChat

你可能也喜欢看:

  1. 那些陪伴我的国产软件,你们都在何方?
  2. Java 多线程发展简史
  3. 编程的未来
  4. 所谓历史
  5. 历史,科学,还有艺术

4 thoughts on “我十年学习编程的历史”

  1. ffb says:
    04/16/2013 at 11:18 PM

    和我的经历有不少相似之处,有空我也写一个系列出来

    Reply
  2. Anonymous says:
    04/12/2013 at 4:44 PM

    校友啊!

    Reply
  3. 林晓唐 says:
    11/16/2012 at 8:42 PM

    C php 算法中

    Reply
  4. Joe says:
    08/14/2012 at 12:52 AM

    初三用过 Pascal,算不算十年了

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

订阅·联系

四火,啰嗦的程序员一枚,现居西雅图

Amazon Google Groovy Hadoop Haskell Java JavaScript LeetCode Oracle Spark 互联网 亚马逊 前端 华为 历史 同步 团队 图解笔记 基础设施 工作 工作流 工具 工程师 应用系统 异步 微博 思考 技术 数据库 曼联 测试 生活 眼界 程序员 管理 系统设计 缓存 编程范型 美股 英语 西雅图 设计 问题 面向对象 面试

分类

  • Algorithm and Data Structure (30)
  • Concurrency and Asynchronization (6)
  • System Architecture and Design (43)
  • Distributed System (18)
  • Tools Frameworks and Libs (13)
  • Storage and Data Access (8)
  • Front-end Development (33)
  • Programming Languages and Paradigms (55)
  • Testing and Quality Assurance (4)
  • Network and Communication (6)
  • Authentication and Authorization (6)
  • Automation and Operation Excellence (13)
  • Machine Learning and Artificial Intelligence (6)
  • Product Design (7)
  • Hiring and Interviews (14)
  • Project and Team Management (14)
  • Engineering Culture (17)
  • Critical Thinking (25)
  • Career Growth (57)
  • Life Experience and Thoughts (45)

推荐文章

  • 谈谈分布式锁
  • 常见分布式系统设计图解(汇总)
  • 系统设计中的快速估算技巧
  • 从链表存在环的问题说起
  • 技术面试中,什么样的问题才是好问题?
  • 从物理时钟到逻辑时钟
  • 近期面试观摩的一些思考
  • RSA 背后的算法
  • 谈谈 Ops(汇总 + 最终篇):工具和实践
  • 不要让业务牵着鼻子走
  • 倔强的程序员
  • 谈谈微信的信息流
  • 评审的艺术——谈谈现实中的代码评审
  • Blog 安全问题小记
  • 求第 K 个数的问题
  • 一些前端框架的比较(下)——Ember.js 和 React
  • 一些前端框架的比较(上)——GWT、AngularJS 和 Backbone.js
  • 工作流系统的设计
  • Spark 的性能调优
  • “残酷” 的事实
  • 七年工作,几个故事
  • 从 Java 和 JavaScript 来学习 Haskell 和 Groovy(汇总)
  • 一道随机数题目的求解
  • 层次
  • Dynamo 的实现技术和去中心化
  • 也谈谈全栈工程师
  • 多重继承的演变
  • 编程范型:工具的选择
  • GWT 初体验
  • java.util.concurrent 并发包诸类概览
  • 从 DCL 的对象安全发布谈起
  • 不同团队的困惑
  • 不适合 Hadoop 解决的问题
  • 留心那些潜在的系统设计问题
  • 再谈大楼扔鸡蛋的问题
  • 几种华丽无比的开发方式
  • 我眼中的工程师文化
  • 观点的碰撞
  • 谈谈盗版软件问题
  • 对几个软件开发传统观点的质疑和反驳
  • MVC 框架的映射和解耦
  • 编程的未来
  • DAO 的演进
  • 致那些自嘲码农的苦逼程序员
  • Java 多线程发展简史
  • 珍爱生命,远离微博
  • 网站性能优化的三重境界
  • OSCache 框架源码解析
  • “ 你不适合做程序员”
  • 画圆画方的故事

近期评论

  • panshenlian.com on 初涉 ML Workflow 系统:Kubeflow Pipelines、Flyte 和 Metaflow
  • panzhixiang on 关于近期求职的近况和思考
  • Anonymous on 闲聊投资:亲自体验和护城河
  • 四火 on 关于近期求职的近况和思考
  • YC on 关于近期求职的近况和思考
  • mafulong on 常见分布式基础设施系统设计图解(四):分布式工作流系统
  • 四火 on 常见分布式基础设施系统设计图解(八):分布式键值存储系统
  • Anonymous on 我裸辞了
  • https://umlcn.com on 资源链接
  • Anonymous on 我裸辞了
© 2025 四火的唠叨 | Powered by Minimalist Blog WordPress Theme