博文

程序人生(2005-12-19 19:55:00)

摘要:程序人生   创业者和经理人之外,中关村或者说中国计算机业界还活跃着另一类人,他们过着另外一种人生——程序人生。 程序是这些人生活的全部重心,他们有天分,爱编程,能吃苦,甘于寂寞。他们当中绝大多数不被人所知,像WPS求伯君、KV300王江民、CCDOS严援朝、五笔字型王永民、2.13吴晓军、四通利方王志东、CCED朱崇君、UCDOS鲍岳桥这些成名的程序员十几年来也只才产生了十来位。有才华的程序员绝不只这些,但他们没有机会。有时候,他们觉得机会就在眼前,伸手可及,但当他们扑上去将要和机会撞个满怀的时候,却每每扑了个空。在苦干了若干年之后的某一天早晨,从睡梦中醒来,他们突然发现自己除了编程能力提高之外,什么都没有改变,所写的程序是“职务作品”,所挣的工资仅能“糊口”,他们会突然感到写什么程序都没有意思。但如果不写程序,又能去做什么呢? 程序人生是智慧的人生,但我们也想描述一下这些智者心底的酸甜苦辣以及困惑不平棗自己写出的产品为公司挣了1个亿,为什么自己还是不名一文?技术入股到底是除了智慧什么都没有的程序员的出路?还是陷阱?优秀程序员成名之后,想名利双收,是不是必须不写程序,去做管理?都说个人英雄的时代已经成为过去,那么,新一代程序员还可以做笑傲江湖的英雄梦吗?…… 王江民用他的传奇告诉后来者还有机会。王江民初中毕业,38岁才开始学习计算机,两三年之内成为中国最出色的反病毒专家之一;45岁只身一人独闯中关村办公司,产品很快占据反病毒市场的80%以上;没学过市场营销,却使KV系列反病毒软件正版用户接近100万,创中国正版软件销售量之最。 都说个人英雄的时代已经成为过去,都说中关村不再相信传奇,传奇已为资本运营所代替,但王江民的传奇就发生在现在,就发生在我们身边,而且还在继续。无论这个时代多么地依赖和提倡集体协作,但个性的张扬永远不会泯灭,永远值得击节叫好,人格的魅力也永远让人激动不已,因为它代表着个人存在的价值和意义。个人也许就是为了突破各种不可能,实现各种不可思议而存在的。充盈着理想和力量的人在受到挫折的时候,可能会叹息自己身上的力量是“无能的力量”,但当每日的朝阳再次照耀在他们身上的时候,他们会再一次地被发动起来。如果说,创业者和经理人体现的是雄才伟略,那么,程序员体现的则是一种激情,这种激情有可能会在真实的现实面前被击得粉碎,但如果个人或......

阅读全文(2463) | 评论:0

学习编程的一般步骤(2005-12-19 19:36:00)

摘要:学习编程的一般步骤
3.How to Learn Progrmming Step by Step
    学习语言到应用编程,大约可以分为三步:1.学习语言的语法、标准库、思想;2.学习相关操作系统的API(应用程序编程接口);3.学习类库使用。有一定经验后,三者可以交替进行,相互加深。此外还要学习一些基础理论,像设计模式、算法与数据结构等。另外要找工作的话,操作系统,软件工程也要学习一下(从工作方面考虑). 附:另外几个常见的概念——答Andy网友问
问:标准库和类库有什么区别? 那个应用程序编程接口(API)能不能解释一下?谢谢了!   我想先说说库(Library)吧,想必这个概念诸位都有所了解,在下多罗嗦几句再说一下:所谓库,就是许多程序代码的集合:编程的时候,会有许多常用的功能,如果每个用到这些功能的程序都要从头写一遍,则会出现无谓地重复劳动;因此人们把这些常用的功能编写好,并按一定的逻辑关系组织、封装起来,便于编程时直接调用,就成为了库。
  库中的程序模块是怎么放置的呢?
  嗯,首先,我们很自然会想到把那些常用的功能封装成一个个相应的函数,这样程序要用到这些功能的时候,我们就调用相应的函数。这些函数组成的库自然可以叫做函数库,显然函数库的思想是面向过程的;
  其次,我们也可以把要实现的任务封装成一个个类(class),例如要某个库包含文件操作的功能,设计者可能会写一个File类,它或许会有open、close、reset、read、write等方法,内部也可能会有一些保存文件信息的数据结构,等等。这些由各种类组成的库称为类库,它是面向对象的。
  因此,按组织思想分,库可以分为函数库、类库等。
  至于标准库与非标准库,则是另一种分类方式。如果某个库是C++语言标准所“规定”要有的,如STL(即标准模板库,我们在C++中常用的vector、list之类的容器以及相关算法都属于STL的一部分),是语言中的一部分,则称为C++的标准库(被标准化了的,无论VC、C++ Builder还是其它什么C++编译平台,都要求包含它才算是“真正”的C++)。当然,标准库的范围比较窄,除此之外的诸如MFC、VCL、Qt等都......

阅读全文(3321) | 评论:1

编程修养(2005-12-19 19:21:00)

摘要:6、if 语句对出错的处理
———————————
我看见你说了,这有什么好说的。还是先看一段程序代码吧。
if ( ch >= '0' && ch <= '9' ){
/* 正常处理代码 */
}else{
/* 输出错误信息 */
printf("error ......\n");
return ( FALSE );
} 这种结构很不好,特别是如果“正常处理代码”很长时,对于这种情况,最好不要用else。先判断错误,如: if ( ch < '0' || ch > '9' ){
/* 输出错误信息 */
printf("error ......\n");
return ( FALSE );
} /* 正常处理代码 */
......
这样的结构,不是很清楚吗?突出了错误的条件,让别人在使用你的函数的时候,第一眼就能看到不合法的条件,于是就会更下意识的避免。
7、头文件中的#ifndef
——————————
千万不要忽略了头件的中的#ifndef,这是一个很关键的东西。比如你有两个C文件,这两个C文件都include了同一个头文件。而编译时,这两个C文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。 还是把头文件的内容都放在#ifndef和#endif中吧。不管你的头文件会不会被多个文件引用,你都要加上这个。一般格式是这样的: #ifndef <标识>
#define <标识> ......
...... #endif <标识>在理论上来说可以是自由命名的,但每个头文件的这个“标识”都应该是唯一的。标识的命名规则一般是头文件名全大写,前后加下划线,并把文件名中的“.”也变成下划线,如:stdio.h #ifndef _STDIO_H_
#define _STDIO_H_ ...... #endif (BTW:预编译有多很有用的功能。你会用预编译吗?)
8、在堆上分配内存
—————————
可能许多人对内存分配上的“栈 stac......

阅读全文(1806) | 评论:0

编程修养(2005-12-19 19:19:00)

摘要:编程修养(一) 什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了。 我认为好的程序员应该有以下几方面的素质: 1、有专研精神,勤学善问、举一反三。
2、积极向上的态度,有创造性思维。
3、与人积极交流沟通的能力,有团队精神。
4、谦虚谨慎,戒骄戒燥。
5、写出的代码质量高。包括:代码的稳定、易读、规范、易维护、专业。 这些都是程序员的修养,这里我想谈谈“编程修养”,也就是上述中的第5点。我觉得,如果我要了解一个作者,我会看他所写的小说,如果我要了解一个画家,我会看他所画的图画,如果我要了解一个工人,我会看他所做出来的产品,同样,如果我要了解一个程序员,我想首先我最想看的就是他的程序代码,程序代码可以看出一个程序员的素质和修养,程序就像一个作品,有素质有修养的程序员的作品必然是一图精美的图画,一首美妙的歌曲,一本赏心悦目的小说。 我看过许多程序,没有注释,没有缩进,胡乱命名的变量名,等等,等等,我把这种人统称为没有修养的程序,这种程序员,是在做创造性的工作吗?不,完全就是在搞破坏,他们与其说是在编程,还不如说是在对源程序进行“加密”,这种程序员,见一个就应该开除一个,因为他编的程序所创造的价值,远远小于需要在上面进行维护的价值。 程序员应该有程序员的修养,那怕再累,再没时间,也要对自己的程序负责。我宁可要那种动作慢,技术一般,但有良好的写程序风格的程序员,也不要那种技术强、动作快的“搞破坏”的程序员。有句话叫“字如其人”,我想从程序上也能看出一个程序员的优劣。因为,程序是程序员的作品,作品的好坏直截关系到程序员的声誉和素质。而“修养”好的程序员一定能做出好的程序和软件。 有个成语叫“独具匠心”,意思是做什么都要做得很专业,很用心,如果你要做一个“匠”,也就是造诣高深的人,那么,从一件很简单的作品上就能看出你有没有“匠”的特性,我觉得做一个程序员不难,但要做一个“程序匠”就不简单了。编程序很简单,但编出有质量的程序就难了。 我在这里不讨论过深的技术,我只想在一些容易让人忽略的东西上说一说,虽然这些东西可能很细微,但如果你不注意这些细微之处的话,那么他将会极大的影响你的整......

阅读全文(185) | 评论:0