博文
如何成为一名优秀的程序员 (2005-12-19 19:57:00)
摘要:如何成为一名优秀的程序员
一位仁兄说的“程序员写的程序不是算法+语法 ,而是要能够满足用户需求的工 具”我非常赞同,要想达到用户需求就必须从各个方面来考虑如业务、人机交互 、效率等方面,而不只是一个语言(语法)的问题,语言(语法)只是工具,只 知语法不知其他那就真是编程机器了! 编程机器在印度高中生经过几个月培训,按照严谨的软工方法,加上较高的管理 ,就可以胜任了!大家相信吗,我是相信的!谈到这里我就不禁说到了国内教育 界最近在探讨的问题“计算机科系的毕业生特别是本科大专生到底出来干啥、如 何适应社会要求”,大家也看到了很多计科系大学生说精通N种语言,熟悉N种工 具,不知道学校里的其他知识到那里去了,甘愿做编程机器,浪费了人民的纳税 ,干高中生能干的事,比较可惜吧!在国内现在就是这样了,看过一则帖子:清华的计科系毕业声在建筑院里搞开发还不如建筑专业的毕业生。说着说着就岔道 了,国内的软件开发业到底是需要那些人:如果仅仅是编码机器,那我估计中国 硅谷还是做梦去吧!
社会似乎也需要编码机器,翻翻招聘广告,做应用开发的都要求精通某某语言, 熟悉某某工具,很少需要懂管理懂软工的人。以我个人一点偏激的想法,民族软 件产业要腾飞,更需要的是能管理使用编码机器的人,即管理人员、国内软件产 业编码机器已经很多了。希望不要惹怒了那些编程高手! system develop与Application develop在国内到底哪个能养活你,能赚钱,诸位 仁兄想必也知道,况且俺也没发现几家水平高的公司招这方面的人,毕竟OS,DB MS,COMPILER都被国外做了、另外也别跟我谈LINUX,毕竟还是少数烧钱的人做的 事情,我先喂饱肚皮再说。我手下的很多搞4GL语言的程序员都想转行学VC等所谓 的更低级的语言,我总是说“在XX城市,先用4GL工具生存,以后再学习VC吧!” ,说的简单一点先解决肚子问题。如何判断自己是否是编程机器?
1、面对需求不考虑用户,只是考虑用那些程序技术展示自己的语言语法技巧 .
2、学习了N种语言 .
3、从来不学习或实践软工 .
4、语法语言水平在众人中遥遥领先、特别是一些稀奇古怪的语法 凭着兴趣和创造力去干,却重复繁琐的劳动。 做着没有意义-唯一意义是赚钱,而且真是出了半斤力, 拿不足八两。 终日劳累,却不能学自己想学的。最终结果......
程序人生(2005-12-19 19:55:00)
摘要:程序人生
创业者和经理人之外,中关村或者说中国计算机业界还活跃着另一类人,他们过着另外一种人生——程序人生。
程序是这些人生活的全部重心,他们有天分,爱编程,能吃苦,甘于寂寞。他们当中绝大多数不被人所知,像WPS求伯君、KV300王江民、CCDOS严援朝、五笔字型王永民、2.13吴晓军、四通利方王志东、CCED朱崇君、UCDOS鲍岳桥这些成名的程序员十几年来也只才产生了十来位。有才华的程序员绝不只这些,但他们没有机会。有时候,他们觉得机会就在眼前,伸手可及,但当他们扑上去将要和机会撞个满怀的时候,却每每扑了个空。在苦干了若干年之后的某一天早晨,从睡梦中醒来,他们突然发现自己除了编程能力提高之外,什么都没有改变,所写的程序是“职务作品”,所挣的工资仅能“糊口”,他们会突然感到写什么程序都没有意思。但如果不写程序,又能去做什么呢? 程序人生是智慧的人生,但我们也想描述一下这些智者心底的酸甜苦辣以及困惑不平棗自己写出的产品为公司挣了1个亿,为什么自己还是不名一文?技术入股到底是除了智慧什么都没有的程序员的出路?还是陷阱?优秀程序员成名之后,想名利双收,是不是必须不写程序,去做管理?都说个人英雄的时代已经成为过去,那么,新一代程序员还可以做笑傲江湖的英雄梦吗?…… 王江民用他的传奇告诉后来者还有机会。王江民初中毕业,38岁才开始学习计算机,两三年之内成为中国最出色的反病毒专家之一;45岁只身一人独闯中关村办公司,产品很快占据反病毒市场的80%以上;没学过市场营销,却使KV系列反病毒软件正版用户接近100万,创中国正版软件销售量之最。
都说个人英雄的时代已经成为过去,都说中关村不再相信传奇,传奇已为资本运营所代替,但王江民的传奇就发生在现在,就发生在我们身边,而且还在继续。无论这个时代多么地依赖和提倡集体协作,但个性的张扬永远不会泯灭,永远值得击节叫好,人格的魅力也永远让人激动不已,因为它代表着个人存在的价值和意义。个人也许就是为了突破各种不可能,实现各种不可思议而存在的。充盈着理想和力量的人在受到挫折的时候,可能会叹息自己身上的力量是“无能的力量”,但当每日的朝阳再次照耀在他们身上的时候,他们会再一次地被发动起来。如果说,创业者和经理人体现的是雄才伟略,那么,程序员体现的则是一种激情,这种激情有可能会在真实的现实面前被击得粉碎,但如果个人或......
学习编程的一般步骤(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等都......
编程修养(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......
编程修养(2005-12-19 19:19:00)
摘要:编程修养(一)
什么是好的程序员?是不是懂得很多技术细节?还是懂底层编程?还是编程速度比较快?我觉得都不是。对于一些技术细节来说和底层的技术,只要看帮助,查资料就能找到,对于速度快,只要编得多也就熟能生巧了。
我认为好的程序员应该有以下几方面的素质:
1、有专研精神,勤学善问、举一反三。
2、积极向上的态度,有创造性思维。
3、与人积极交流沟通的能力,有团队精神。
4、谦虚谨慎,戒骄戒燥。
5、写出的代码质量高。包括:代码的稳定、易读、规范、易维护、专业。
这些都是程序员的修养,这里我想谈谈“编程修养”,也就是上述中的第5点。我觉得,如果我要了解一个作者,我会看他所写的小说,如果我要了解一个画家,我会看他所画的图画,如果我要了解一个工人,我会看他所做出来的产品,同样,如果我要了解一个程序员,我想首先我最想看的就是他的程序代码,程序代码可以看出一个程序员的素质和修养,程序就像一个作品,有素质有修养的程序员的作品必然是一图精美的图画,一首美妙的歌曲,一本赏心悦目的小说。
我看过许多程序,没有注释,没有缩进,胡乱命名的变量名,等等,等等,我把这种人统称为没有修养的程序,这种程序员,是在做创造性的工作吗?不,完全就是在搞破坏,他们与其说是在编程,还不如说是在对源程序进行“加密”,这种程序员,见一个就应该开除一个,因为他编的程序所创造的价值,远远小于需要在上面进行维护的价值。
程序员应该有程序员的修养,那怕再累,再没时间,也要对自己的程序负责。我宁可要那种动作慢,技术一般,但有良好的写程序风格的程序员,也不要那种技术强、动作快的“搞破坏”的程序员。有句话叫“字如其人”,我想从程序上也能看出一个程序员的优劣。因为,程序是程序员的作品,作品的好坏直截关系到程序员的声誉和素质。而“修养”好的程序员一定能做出好的程序和软件。
有个成语叫“独具匠心”,意思是做什么都要做得很专业,很用心,如果你要做一个“匠”,也就是造诣高深的人,那么,从一件很简单的作品上就能看出你有没有“匠”的特性,我觉得做一个程序员不难,但要做一个“程序匠”就不简单了。编程序很简单,但编出有质量的程序就难了。
我在这里不讨论过深的技术,我只想在一些容易让人忽略的东西上说一说,虽然这些东西可能很细微,但如果你不注意这些细微之处的话,那么他将会极大的影响你的整......
学习c++的50条忠告(初学者必看)(2005-12-19 19:03:00)
摘要:学习c++的50条忠告(初学者必看)
1.把C++当成一门新的语言学习(和C没啥关系!真的。);
2.看《Thinking In C++》,不要看《C++变成死相》;
3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;
4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门语言;
5.不要放过任何一个看上去很简单的小编程问题——他们往往并不那么简单,或者可以引伸出很多知识点;
6.会用Visual C++,并不说明你会C++;
7.学class并不难,template、STL、generic programming也不过如此——难的是长期坚持实践和不遗余力的博览群书;
8.如果不是天才的话,想学编程就不要想玩游戏——你以为你做到了,其实你的C++水平并没有和你通关的能力一起变高——其实可以时刻记住:学C++是为了编游戏的;
9.看Visual C++的书,是学不了C++语言的;
10.浮躁的人容易说:XX语言不行了,应该学YY;——是你自己不行了吧!?
11.浮躁的人容易问:我到底该学什么;——别问,学就对了;
12.浮躁的人容易问:XX有钱途吗;——建议你去抢银行;
13.浮躁的人容易说:我要中文版!我英文不行!——不行?学呀!
14.浮躁的人容易问:XX和YY哪个好;——告诉你吧,都好——只要你学就行;
15.浮躁的人分两种:a)只观望而不学的人;b)只学而不坚持的人;
16.把时髦的技术挂在嘴边,还不如把过时的技术记在心里;
17.C++不仅仅是支持面向对象的程序设计语言;
18.学习编程最好的方法之一就是阅读源代码;
19.在任何时刻都不要认为自己手中的书已经足够了;
20.请阅读《The Standard C++ Bible》(中文版:标准C++宝典),掌握C++标准;
21.看得懂的书,请仔细看;看不懂的书,请硬着头皮看;
22.别指望看第一遍书就能记住和掌握什么——请看第二遍、第三遍;
23.请看《Effective C++》和《More Effective C++》以及《Exceptional C+......
打字程序=<支持BackSpace键+准确率+每分钟打字数>(2005-12-19 16:14:00)
摘要:#include<stdio.h>
#include<conio.h>
#include<time.h>
char Article[] = "I,LOVE YOU. longjiaolan.Over eleven years of extensive computer/electronics"
" experience.Versed in both digital and analog electronics with"
" specific emphasis on computer hardware/software.Special expertise"
" in system and component evaluation.Network supervisor responsible "
" for installing/maintaining Arcnet LAN system.";
void main()
{
int i, right = 0;
char ch;
int Len = sizeof(Article);
time_t begin, end;
clrscr();
printf("%s\n\n", Article); /*输出你定义好的字符*/
begin = clock();
for (i=0; i<Len; i++){
ch = getch();
if (ch == 8){
putchar(......
Talk with my teacher(2005-12-18 13:05:00)
摘要:
陈福华 11:52:36
寒假在家准备有什么打算,好像有一个月的时间了
Andy ¢ 11:57:30
打算将数据结构,网络知识 --写点Program.
- 下个学期要考三级网络
编译原理想看看,但是看的不怎么懂.....
英语也要看看.......
C++先自己学学,下个学期有这门课程.
陈福华 11:57:54
安排倒是很充足了,不过看得出来你很用功
陈福华 11:58:32
有没有想过自己主攻方向
Andy ¢ 12:01:00
C跟C++.
陈福华 12:01:06
C++ 如果是自己的方向的话,最好学好一个工具VC
Andy ¢ 12:02:05
VC是个工具..?
陈福华 12:02:25
至于C的话,如果你想作为方向,最好能学习一个单片机嵌入式开发
陈福华 12:03:12
用C++作为基础的可视化编程工具,跟VB有点类似,但库很丰富
Andy ¢ 12:04:42
前天看焦点访谈,是说江西师大90%以上的学生找不到工作噢!
单片机嵌入式开发 要学什么东西?
陈福华 12:05:17
主要是用C语言为主构了
陈福华 12:06:04
还有就是单片机原理
Andy ¢ 12:06:52
老师你说现在当程序员好,还是搞网络好呀.?
要不要用到物理知识,我物理学得不怎么行...
Andy ¢ 12:07:43
单片机在深圳哪边好找工作.
陈福华 12:07:23
看你是偏硬,还是偏软了
比如网络方向就是偏软的,作为这一方向可以根本不用了解硬件构架了
陈福华 12:08:12
是的,广东地区,很好找工作,不过要有一定的硬件编程知识,或者对硬件构架很熟悉了
陈福华 12:09:04
前天看焦点访谈,是说江西师大90%以上的学生找不到工作噢!
你从哪里看来的
Andy ¢ 12:09:42
硬件构架,是不是要学电路之类的知识呢.
Andy ¢ 12:09:55
CCTV -1
陈福华 12:09:21......
万年历(C描述)(2005-12-17 21:16:00)
摘要:pro1.
#include"stdio.h"
main()
{int k,y,m,min,max,temp,w,z=2;
int a[12]={31,28,31,30,31,30,31,31,30,31,30,31};
long total;
char b[8];
loop:printf("\n\nPlease input year ,month:"); /*请输入年,月*/
scanf("%d,%d",&y,&m);
if (y%400==0||(y%100!=0&&y%4==0)){a[1]=29;strcpy(b,"Run Nian");} /*判断是平年还是润年*/
else {a[1]=28;strcpy(b,"PingNian");}
if (y>=1980){min=1980;max=y;k=1;}
else{min=y;max=1980;k=-1;}
total=0;
for (temp=min;temp......