Sunday, July 9

我的编程语言之路

我主页的自我介绍说,89.10,第一次摸到Computer。当时学Basic,Logo,还学了苹果机6502的汇编。
后来,学C,大学几年主要是用Turbo C/Borland C for DOS来玩。毕业后变得第一个大程序也是BC编一个在机车上的应用。
一不小心,进了“文曲星”那家公司,用6502汇编;3个月试用期没结束就跑出来,进入了Windows编程的时期。当然了用的是Visual C,做一些控件。
再后来,在网络潮最热的时候进入一家网络公司,用ASP/SQL Server从无到有实现了整个网站(当然不是我一个人,而是开发部4-5人一起做),经历了公司从20人膨胀到70人,最后缩小到5人的过程,其实也就是半年时间。
我又回到Visual C上面了。当前,前面半年我也没有放下VC,而是自己做一些小程序玩,比如说“脚气一贴灵”、“Tips Everyday”等。现在,我工作的内容是语音卡、电信通信等的编程,从driver到网络通信到数据库都有涉及。在一个程序中使用的Oracle数据 库数据量还特别大,每天增加几十万条数据,我还专门编两个月trigger来对付这些数据。
在这家公司里,印象最深的是一次我正在忙,对面两个程序员讨论什么问题,嘀嘀咕咕。忽然,有一个说“我们问Ben吧。”每个人都对自己的名字敏 感一些,我也不例外,所以我就听见这句话了,抬起头来,茫然地看他们;另一个程序员回答说:“别,再想想。确实找不到方法了再找他。”
你看,我就是这样一个“救火员”的角色。
开始学Java之后,发现Java是很纯正的面向对象的语言;许多应用如果用Java来表达,概念非常清晰。独自做了一个作业,用一个类来表示操 作系统,一个类来模拟cpu的运作;操作系统把应用程序调进内存之后,按照机器语言的规则一一送入cpu类,而cpu取得命令和数据,比如Add A, 3, 顺序操作寄存器。每个部件用分别的类来实现,很容易理解、修改。后来增加一个打印机的类,几乎不用修改现有的程序。
所以,在读研究生期间,我还跑到北京做了一段时间的基于Java的搜索引擎。Java不适合做小型客户端程序,因为它调入慢,运行也慢;但是作为服务端程序,它确实有许多优势。
自己还学了perl。比如说去年所做的新语丝的RSS,就是用perl实现的。
写程序到最后,基本上是算法的问题。最后,我毕业论文所写的基本上是算法的研究,用Java来计算BioInformatics中一些图上结点之间的逻辑距离。可是算法问题是学术问题,工业上只需要编程民工就足够了。洗脚说“唯手熟耳”,就是这个意思。

我并不是只懂编程序。比如说,做Java的搜索引擎的时候,我需要安装Linux服务器,安装Apache/Tomcat/Ant/CVS,设定域名,dns指向,全程都一手包办了。

我对各种语言都有学习,对于各种应用也做了不少,包括工业控制、网站设计、网络应用、甚至搜索引擎。但现在碰到的问题是:我无所适从,不知道自己该选择哪个方向:
  • Visual Basic: 对于VC程序员来说,VB几乎就是搭积木,就是考验手快不快而已。没有挑战性。
  • Visual C: 现在市场都变成C#了么?其实有许多应用程序不需要Web Service,不需要分布式计算的,C#根本就是浪费。
  • C for Unix: 我是向往open source的,羡慕跟microsoft作对的行列。可是给unix编程需要太多东西要学了:QT, XWindows, 安全权限...
  • Java:我没有这方面的深厚经验,而且对那些常用的swt类不熟。况且,现在的struts, hibernate等工具好像使用新的思路来实现网站设计。
  • Perl: 这个东西可以用做短短的工具,用来完成一个企业级的应用太勉为其难了。这个是系统管理员的工具,而不应该成为一个编程语言。
  • 数据库程序员:其实我蛮想做的。操作数据是我的兴趣,标准SQL我也练得纯熟。可是这世界上只有数据库管理员...

自己确切做过的完善的整个项目,一个是上面所说的操作系统的作业,用java模拟出操作系统、cpu、内存、外部设备;另一个是个dynamic dns系统,用vc写客户端的报告ip的软件,用asp+access写服务器端软件来解释dns请求。更重要的是:我完全独立构思出来,一年之后有兴趣 了,写完这个系统,发给几个朋友做beta测试,朋友才反馈说最近有这么一个dynamic dns系统跟你这个系统很相像。现在国内比较出名的“花生壳”,我都怀疑是参考我的思路写的the finger smiley

至于其他做的东西,大多数是修修补补,拿别人的程序来增加删改一些功能。当然,这样做很锻炼跟踪程序debug的能力。

项目负责、系统分析是我的努力方向,只是需要一些成绩来证明我的能力。而且,做哪方面的项目、系统,也是我需要寻找的。

我是什么都会干的万能手, 但是没有公司要这样的人,他们只要c#程序员,或者java程序员,或者网站程序员。所以我需要好好想想自己真正的路。

Labels: