chaosuper85

C++博客 首页 新随笔 联系 聚合 管理
  118 Posts :: 0 Stories :: 3 Comments :: 0 Trackbacks

#

1. 匹配"[10]:dddddd"和"[9]:abcdegf"但不匹配"[a]:xfdf"的正则表达式。

2. int a[5]={1,2,3,4,5};

    printf("%d\n", *((int*)(&a+1)-2);

    输出是什么。

    答:4.    分析:(int*)(&a+1)=a+5=&a[5]

编程题:

1. 给定一个int型数组array[n],写一个函数sort(int array[], int n),n为数组长度。使得数组中不大于零的元素在前,大于零的元素在后,要求时间复杂度O(n)。

2. 有1001个球。甲乙两人交替取球,每次可取1、2、4个球,谁拿到最后一个球就算输。如果甲先拿,问他有没有必胜的把握?为什么?

   答:有。

          第一次甲拿1个球,以后每次:

          i. 乙拿1个,甲拿2个;

         ii. 乙拿2个,甲拿1个或4个;

         iii. 乙拿4个,甲拿2个。

         最后肯定剩一个,并轮到乙拿。

3. 实现atoi()和itoa()

4. 给定一个int型数n,写一个尽可能简单的函数判断n是否为2的幂,不能用循环。

   答:bool foo(int n)

          {

                int a=n;

               if(n<=0) return false;

               a=((a&0xAAAAAAAA)>>1)+(a&0x55555555);

               a=((a&0xCCCCCCCC)>>2)+(a&0x33333333);

               a=((a&0xF0F0F0F0)>>4)+(a&0x0F0F0F0F);

               a=((a&0xFF00FF00)>>8)+(a&0x00FF00FF);

               a=((a&0xFFFF0000)>>16)+(a&0x0000FFFF);

               if(a==1) return true;

               else return false;

           }

简答题:

1. 哪些方法可以避免或减少锁的使用?

2. release版本的可执行程序为什么非常大?

3. 使用C++赋值运算符应注意什么地方?

4. strcpy()为什么会造成缓冲区溢出?可用哪个函数替代?

5. 阻塞模式的recv在没受到数据的情况下如何返回?(不能将socket修改为非阻塞)

8. 有红、绿、蓝三色球分别3,2,1个。取任意两个不同颜色的球都会使它们变成第三种颜色的两个球。问最少取多少次,可使这些球都变成同一种颜色?

   答:无论多少次,都不可以使这些球变成同一种颜色,分析:

         一、对于(R,R,R,G,G,B)即(3,2,1),有:

                i.   (R,G) ---> (B,B,B,R,R,G)即(3,2,1)

                ii. (R,B)   ---> (G,G,G,G,R,R)即(4,2)

                iii. (G,B) ---> (R,R,R,R,R,G)即(5,1)

          二、对于(G,G,G,G,R,R)即(4,2),有 :

                i. (R,G) ---> (G,G,G,B,B,R)即(3,2,1)

          三、对于(R,R,R,R,R,G)即(5,1)有 :

                i. (R,G) ---> (R,R,R,R,B,B)即(4,2)

          因此,只有三种状态(3,2,1), (4,2)和(5,1),不可能出现(6,0)这种情况。   

9. 哪些方法可让一个进程仅有一个实例运行?

10. exit()和_exit() 的区别。

11. 红黑树比AVL树的优势在哪?

12. 软件开发过程包含哪些阶段?各阶段质量保证措施是什么?

posted @ 2009-03-27 23:56 chaosuper 阅读(4804) | 评论 (0)编辑 收藏

二、笔试经验
2.1 中兴软件笔试题
公共部分(50 分)
1:作业调度程序从处于( )状态的队列中选择适当的作业的作业投入运行。(3 分)
A 运行 B 提交 C 完成 D 后备
2:SQL 语言中,删除一个表的命令是( )(3 分)
应届生求职大礼包2009——中兴篇应届生求职网 YingJieSheng.COM
应届生求职网 http://www.yingjiesheng.com 第 7 页共 16 页
A CLEAR TABLE B DROP TABLE
C DELETE TABLE D REMOVE TABLE
3:ATM 采用的线路复用方式为( )(3 分)
A 频分多路复用
B 同步时分多路复用
C 异步时分多路复用
D 独占信道
4:数据库中只存放视图的( )(3 分)
A 操作
B 对应的数据
C 定义
D 限制
5:什么是虚拟设备?为什么在操作系统中引入虚拟设备?(10 分)
6:TCP 为何采用三次握手来建立连接,若采用二次握手可以吗,请说明原因?(16 分)
7:什么是分布式数据库?(12 分)
C++部分(50 分)
1:设有“int w[3][4];”,pw 是与数组名w 等价的数组指针,则pw 的初始化语句为
________________(3 分)
2:要使引用pr 代表变量“char *p”,则pr 的初始化语句为__________________(3 分)
3:“零值”可以是0,0.0,FALSE 或者“空指针”。例如int 变量n 与“零值”比较的if 语句为:
if(n==0),则BOLL flag 与“零值”比较的if 语句为______________;float x 与“零值”比较的if
语句为:______________。(6 分)
4:社有如下语句:(3 分)
Int x;
()
*px=0;
则选择以下哪条语句可将x 值置为0。
A int *px; B int const *px=&x;
C int const px=&x; D const int *px=&x;
5:设viod f1(int *m,long&n);int a;long b;则以下调用合法的是( )(3 分)
A f1(a,b) B f1(&a,b)
C f1(a,&b) D f1(&a,&b)
6:请写出如下代码的运行结果(6 分)
Int main()
{int a,b,c,d;
a=0;
b=1;
c=2;
d=3;
printf(“%d”,a+++b+c+++d++);}
7:写出下面函数的功能(12 分)
Template<class Type>
Void WE(Type a[],Type b[],int n){
for(int i=0;i<n;i++) b[n-i-1]=a;}
8 写一段代码判断一个单向链表中是否有环。(14 分)
应届生求职大礼包2009——中兴篇应届生求职网 YingJieSheng.COM
应届生求职网 http://www.yingjiesheng.com 第 8 页共 16 页
给出如下结构
Struct node
{steuct *next;
};
Typedef stuct node Node;
JAVA 部分(50 分)
1:判断下列对的是哪个( )(3 分)
A short s1=1;s1=s1+1
B short s1=1;s1+=1
C short s1=1;s1=s1-1
D short s1=1;s1=s1*1
2:main 方法是Java Application 程序执行的入口点,关于main 方法的方法头以下哪项是合法的
( )(3 分)
A public static void main ()
B public static void main (String args)
C public static int main (String []arg)
D public void main (String args)
3:设float x=1,y=2,z=3,则表达式y+=z--/++x 的值是( )(3 分)
A 3.5 B 3
C 4 D 5
4:Math.round(11.5)=_______
Math.round(-11.5)=_______(4 分)
5:假设x=10,y=20,z=30;计算下列表达式的值(6 分)
A x<10||x>10__________
B !(x<y+z)||(x+10<=20)___________
C z-y==x&&Math.abs(y-z)!=x_____________
6:方法重建Overload 和方法的重写Overriding 的区别。Overload 的方法是否可以改变返回值
的类型?(10 分)
7:谈谈HashMap 和Hashtable 的区别(6 分)
8:构造一个类来描述屏幕上的一个点,该类的构成包括点x 和y 两个坐标,以及一些对点进行
的操作,包括:取得点的坐标值,对点的坐标进行赋值,编写应用程序生成该类的对象并对其进行
操作。(15 分)
2.2 中兴笔试--数据结构
(其实这些大公司的笔试不难,也不就是如此,只要学一下数据结构就可以搞定!)
排序及查找方法
#include <malloc.h>
#include<stdio.h>
#define N 11
/*用监视哨查找*/
int search(int array[],int n,int k)
{int i;
应届生求职大礼包2009——中兴篇应届生求职网 YingJieSheng.COM
应届生求职网 http://www.yingjiesheng.com 第 9 页共 16 页
i=n-1;
array[0]=k;
while(array!=k) i--;
return(i);
}
/*折半查找法*/
int halfsearch(int array[],int n,int k)
{int i,j,mid;
i=1;j=n;
while(i<=j)
{mid=(i+j)/2;
if(k==array[mid]) return(mid);
else if(k<array[mid]) j=mid-1;
else i=mid+1;
}
return(0);
}
/*冒泡排序法*/
void mpsort(int array[])
{int i,j,a;
a=0;
for(i=1;i<N;i++)
for(j=i+1;j<N;j++)
if(array>array[j])
{a=array;
array=array[j];
array[j]=a;}
}
/*直接插入排序*/
void insertsort(int array[])
{int i,j;
for(i=2;i<N;i++)
{array[0]=array;
j=i-1;
while(array[0]<array[j])
{array[j+1]=array[j--];
array[j+1]=array[0];
}
}
}
/*建立*/
void creat(int array[])
{int i;
printf("enter the array:\n");
应届生求职大礼包2009——中兴篇应届生求职网 YingJieSheng.COM
应届生求职网 http://www.yingjiesheng.com 第 10 页共 16 页
for(i=1;i<N;i++)
scanf("%d",&array);
}
/*显示*/
void print(int array[])
{int i;
printf("The numbers after sort is:\n");
for(i=1;i<N;i++)
printf("%d ",array);
printf("\n");
}
main()
{int a[11],i,x,chang;
/*printf("enter the array\n");
for(i=1;i<11;i++)
scanf("%d",&a);*/
aga:
printf("\nchang:1: use watching method finding\n 2:use half method finding\n 3: use
directness intsert method sort\n 4:use bubble up method sort\n 5:exit\n");
scanf("%d",&chang);
switch (chang)
{case 1:
{creat(a);
printf("Please int the search number:\n");
scanf("%d",&x);
printf("The number station is:%d\n",search(a,N,x));
goto aga;
}
case 2:
{ creat(a);
insertsort(a);
print(a);
printf("Please int the search number:\n");
scanf("%d",&x);
printf("The number station is:%d\n",halfsearch(a,N,x));
goto aga;
}
case 3:
{creat(a);
insertsort(a);
print(a);
应届生求职大礼包2009——中兴篇应届生求职网 YingJieSheng.COM
应届生求职网 http://www.yingjiesheng.com 第 11 页共 16 页
goto aga;
}
case 4:
{creat(a);
mpsort(a);
print(a);
goto aga;
}
case 5:{ printf("exit!\n");break;}
default:{printf("Error!\n"); goto aga;}
}
}
二、线性链表的存储实现
struct LNODE{
ElemType data;
struct LNODE *next;
};
typedef struct LNODE LNode;
typedef struct LNODE * LinkList;
1 初始化操作
Status Init_L(LinkList L){
if (L=(LinkList *)malloc(sizeof(LNode)))
{L->next=NULL;return 1;}
else return 0;
}
2 插入操作
Status ListInsert_L(LinkList &L,int i,ElemType e){
p=L,j=0;
while(p&&j<i-1){p=p->next;++j;}
if(!p||j>i-1) return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
}//ListInsert_L
3 删除操作
Status ListDelete_L(LinkList &L,int i,ElemType &e){
p=L,j=0;
应届生求职大礼包2009——中兴篇应届生求职网 YingJieSheng.COM
应届生求职网 http://www.yingjiesheng.com 第 12 页共 16 页
while(p&&j<i-1){p=p->next;++j;}
if(!p->next||j>i-1) return ERROR;
q=p->next;p->next=q->next;
e=q->data;free(q);
return OK;
}//ListDelete_L
4 取某序号元素的操作
Status GetElem_L(LinkList &L,int i,ElemType &e){
p=L->next,j=1;
while(p&&j<i){p=p->next;++j;}
if(!p||j>i) return ERROR;
e=p->data;
return OK;
}//GetElem_L
5 归并两个单链表的算法
void MergeList_L(LinkList &La,LinkList &Lb,LinkList &Lc){
//已知单链线性表La 和Lb 的元素按值非递减排列
//归并后得到新的单链线性表Lc,元素也按值非递减排列
pa=La->next;pb=Lb->next;
Lc=pc=La;
while(pa&&pb){
if(pa->data<=pb->data){
pc->next=pa;pc=pa;pa=pa->next;
}else{pc->next=pb;pc=pb;pb=pb->next;}
}
pc->next=pa?pa:pb;
free(Lb);
}//MergeList_L
头指针与头结点的区别:
头指针只相当于结点的指针域,头结点即整个线性链表的第一个结点,它的数据域可以放数据元素,
也可以放线性表的长度等附加信息,也可以不存储任何信息。
2.3 笔试题目
1>某人在某个市场某个商家买了某台电脑,请用你熟悉的计算机语言表达出里面的关系.
其中有商家类,买家类,商品类。还要有买方法,卖方法。
2>一个完整的单例模式
3>曹操南下攻打刘备,刘备派关羽守锦州,关羽派张飞去守城门。刘备又派诸葛亮去向孙权求援。
孙权派兵攻打曹操!
应届生求职大礼包2009——中兴篇应届生求职网 YingJieSheng.COM
应届生求职网 http://www.yingjiesheng.com 第 13 页共 16 页
请画出 UML 图
三、面试经验
3.1 应聘上海中兴的要点
前两*人在中兴公司的招聘中有些体会,现在中兴马上要在交大,东南开招聘会了,希望我说的这些
对想去中兴的人会有些帮助。不过话说回来,中兴也算不上什么太好的公司。只是中兴上海研究所
地理位置不错,工资与深圳持平,在上海想要找一个比上海中兴好很多的公司是比较难了。当然上
海本地人除外。
一。个人简历要简明明了,不要在乎什么美观不美观。比如说学历,专业最好写在很醒目的位置。
因为简历交上去后,公司首先分拣出研究生,其次通信,计算机专业的优先面试。
二。初试时资料准备要充实。比方说自荐信,推荐信,科研介绍等等,最好中英文,还有各种证明,
成绩单等。这些都会影响你初试的成绩和印象。
初试时仪表,谈吐很重要。因为初试总分15 分,其中教育5 分,专业4 分,谈吐仪表各3 分。一般
说教育都是5 分,专业不光是你论文里的东西,你知识面要广,主要是针对通信方面的,专业哪满
分基本上也没问题,关键是谈吐仪表,如果各扣1 分,那你复试时很可能就排在后面了,这时每分
必争。
初试时要争取满分,复试时是根据初试的成绩来排队的。要去上海当然要排在前面。否则入沪指标
用完了,就没戏了。
初试时千万不要直接了当的说你想去上海中兴,公司会很反感的,主要是僧多粥少的缘故使它们为
难吧!
坚持两点有助与你进上海中兴。
1。强调你是江浙沪人,因为上海中兴主要是为江浙沪人准备的。如果你不是江浙沪人它们一般是让
你去深圳的。不过有一点,如果你不是江浙沪人,你瞎编一下你祖籍是这儿或者你父母亲戚在这儿,
也没关系,面试时全凭你的一张嘴,签约后谁会去查呀。中兴在这方面还是很有人情味的。
2。专业方向。上海中兴主要搞接入网(AN),CDMA,ATM 这几个方向。如果你说你对程控交换,
SDH,图象处理感兴趣那可就完了,那你就被很礼貌的推荐到南京或深圳中兴,在那里可能更适合
你。专业方向非常重要,如果你单纯是计算机应用专业它很可能不要,现在一切以通信专业为主。
但是你对上海中兴搞的项目有所了解是很有帮助三,复试一般不问什么问题,只问你到底签哪里。
必须坚持自己的原则不变,只要你不是太差中兴一般会妥协的。但这要早,晚了就没戏了。不过中
兴最后招不满的话,它还会放几个名额,但这基本上100%的要通信与电子系统专业了。而且你必
须有耐心的在那等,中兴的人还是比较心慈手软的,你等久了,他会觉得你很有耐心,我的一个同
学昨天晚上今天上午一直在那里磨,最后在公司代表去上海之前终于签下了。不过他是通信与电子
系统的并且是混合班的。
最后祝即将成为上海中兴同事的各位一切顺利!
3.3 中兴面经
一面:技术面
1。写个c 函数,随机性很强,而且
2。问个人基本情况,问成绩,证书来历等等
3。问项目经历,问得很细,突出你做的工作
二面:英语面(3-6 人一起)
1.一问一答式,不过在其他人答时你要仔细听可能下一个问题和他们刚交流的内容有关
2 group discussion 给一个topic,每人发言不超过30 秒,总共3 分钟,尽量说情自己观点
可以相互反驳
三面:综合素质面
1.聊天20 分钟
内容包括你理想的职位,职业规划,目标城市,自身优势之类,主要了解应聘者交流表达
和性格特点
希望对 xdjm 有用,做个rp 佳的人不技术更重要!!
posted @ 2009-03-27 23:50 chaosuper 阅读(1287) | 评论 (0)编辑 收藏


1、瓶子里装着桔子水,瓶口塞着着软木塞,既不准打碎瓶子,弄碎软木塞 ,又不准拔出软木塞,怎么才能喝到瓶子里的桔子水?

2、某列车驶进隧道,奇怪的是,该火车既没有发生事故,也没有出现其他故障,开过隧道中间点后,就不能再进去了,为什么?

3、有一棵树,树下面有一头牛被用一根两米长的绳子牢牢地栓着鼻子,牛的评价把饲料放在离树5米的地方就走开了,牛很快就将饲料吃了个精光。牛是怎么吃到饲料的呢?绳子并没有断,也没有一点被解开的痕迹。

4、一只网球,使它滚一小段距离后完全停止,然后自动反过来朝相反方向运动,既不允许将网球反弹回来,也不允许用任何东西击打它,更不允许用绳把球系住。怎么办?

5、有10只玻璃杯排成一行,左边5只内装有汽水,右边5只是空杯,现规定只能动两只杯子,使这排杯子变成实杯与空杯相间排列。移动哪两只杯子?

6、某人的衬衣纽扣掉进了已经倒入咖啡的杯子里,他赶紧从杯子里拾起纽扣,不但手不湿,连纽扣也是干的。这是怎么回事?

7、某人昨天碰到一场雨,他下好未戴帽子,也未打雨伞,头上什么也没遮盖,结果衣服全部淋湿,可头发却没有一根湿的,这是怎么回事?

8、怎样使火柴在水下燃烧?

9、有人说,在合适的一天,他将能在河面上走10分钟面不沉入水中,后来他果然这样做了,他是怎么做到的?

10、有一天晚上,老高正在读书,他的小孩突然把电灯关了。尽管一团漆黑,可老王仍继续读书。这是怎么回事?

11、一位学生考了三门功课(语文、数学、英语),这三门功课的成绩分别是“米”字、“杂”字、“白”字,猜猜看这三门功课是多少分?

12、一个古币收藏家说,他有一枚标有“公元前459年”的银币,他在说谎吗?为什么?

13、钉子上挂着一系在绳子上的玻璃杯,如何剪断绳子而不使杯子落地?

14、把10枚硬币分放在三个杯子里,要求每个杯子里都放奇数,如何放法?

15、有1、2、3、4、5、6、7这七个数,用几个加号可使它们的和等于100?

16、在某个晴天,老师给两个学生一盒卷尺,要求他们在不登高的情况下,量出一幢高层建筑的高度(高层建筑周围是宽广的平地),他们能否量出高层建筑的高度?

17、请你思考找出规律,快速心算)
1+2+3+……+198+199+200=?

18、今有一艘平底木船,最大载重量为5.0吨。现有一重5.1吨的大石板,想用此船从一条又宽又深的河流的这边运到对岸,你认为可以吗?如果可以,用什么方法?

19、两个聪明人闲来无事,邀他们的秘书玩这样一个游戏:秘书在2和100之间选两个数,把和给一个人,乘积给另一个,让他们算出这两个数。于是有了下面的对话:

- 光凭这个乘积,我算不出来。
- 我已经知道你算不出来。
- 那... 我算出来了。
- 那... 我也算出来了。

聪明的你,是否也算出来了?

20、邮电局更换电话号码。不过,这个新的电话号码很不错。有三个特点使新的电话号码很好记:首先,原来的号码和新换的号码都是四个数字;其次,新号码正好是原来号码的4倍;再次,原来的号码从后面倒着写正好是新的号码。
新号码究竟是多少?

21、有10箱罐头,每箱20瓶,每瓶1000克。由于工作失误,有一箱每瓶都少装50克,要求只称一次,并且只允许打开九箱,将超重的那箱找出来,用什么办法?

22. 请找出下列字母的规律性:BOCEHEK

23. 请你找出一个字,它们分别与下列五个字组成词组:路理德喜具

24. 今有四个小杠杠,你可用它们做任意摆放,但无论怎样摆放,使其所表示的算式值等于1。

25.有一个装满葡萄酒的8升罐子,另有一个3升,一个5升的空罐子,问怎么倒可以把葡萄酒分成两个4升的? 最多倒7次。

26.四点钟与五点钟之间,什么时候长短针在一条直线上?

27.有十枚硬币,其中一枚是伪币而且不知道轻重,现有天平一只,请问如果只能称两次能够找出伪币吗? 为什么?

28.有四个直径不同的圆,要使每个圆都与其它圆相切,可能有多少种图形?(试画画)

29.有一根绳子,一刀把它剪断,成了几根绳子?

30.五只猫用五分钟捕捉到五只老鼠,请问:需要多少只猫才能在100分钟内捕捉到100只老鼠?

31.使用四个9,能不能组成结果为100的算式?

32、你能从18里减去几次3?

 

 

 

posted @ 2009-03-27 21:37 chaosuper 阅读(218) | 评论 (0)编辑 收藏

什么是高级C++?

——软件工业化时代的C++价值观
孟岩
《程序员》杂志社


开门见山

主要论点:
    1. C++本质上是一种重“创新”而轻“生产”的语言,到目前为止仍然是主流语言中最适合技术创新的一个;
    2. 1995年之前,整个软件产业处于“创新为王”的阶段,C++是最适合这个阶段的语言,这是C++红极一时的大背景和根本原因。
    3. 1995年发生了一系列影响深远的事件,软件产业整体上转向工业化,为了支持工业化,创新的重点由技术创新转向体系创新。然而C++没有能够迅速适应这一变化。
    4. 今天,C++应当准确定位,弥补不足,有针对性地发展,它将仍然是最重要的几种工业级语言之一。


从一本书说起
James Coplien,Advanced C++ Programming Styles and Idioms, Addison Wesley, 1991
—— 市面上唯一一本名副其实的“高级”C++书(Scott Meyers)
 ●面向对象特性的运用和把握
 ●面向对象的程序风格
 ●动态特征的运用和超越
 ●符号语言模拟
 ●设计模式

    这本书代表了当时专家们对于“高级C++”的理解,换句话说代表了当时C++社群的一个审美价值取向。我们看到了什么?技术、技巧、风格、模式,但没有与工程相关的东西。更有意思的事情是,这本书的中文版12年后被剽窃出版,此时书中对于C++面向对象能力发挥到了我当时没有想到的程度。这说明即使在 template被广泛应用之前,C++语言的技巧性就达到了如此的高度。然而耐人寻味的是,书中最高深的技巧从来就没有在C++实践中流行过。

另一本书...
Scott Meyers, Effective C++ ,1991年第1版,1998年第二版,2005年第三版。
 ●来自教学经验
 ●最初想开发一个代码扫描工具
 ●包含实际工程建议
 ●历史上最重要的C++著作之一

    这本书出版的同时,还有一本在C++历史上影响更大的书问世——Scott Meyers的Effective C++。这本书并没有过多地探索语言技巧,而是探讨实践中应当遵循的规则,或者换句话说,探讨怎样在应用这种语言的同时保持软件的质量,提高开发效率。这本书的内容被整个C++社群熟知并吸收,至今仍在翻新,影响着更多的人。

还是在1991年...
 ●“按照1991年3月C++程序员增长的速度计算,到1996年5月,全世界每一个人都将成为C++程序员。此后我们将不得不教外星人学习C++。”
 ●问题:当时人们为什么如此疯狂地学习一种新语言?
    答案很有趣:大部分人是盲从。但他们所追随的人并非等闲之辈,几乎所有在AT&T Bell Labs、Sun、Borland、IBM、Microsoft的C语言大师都转向C++(Brain Kernighan,Jon Bentley,Peter van der Linden)。而这些人转向C++,不是因为他们知道Effective C++,而是因为他们知道Advanced C++。什么意思呢?就是说人们转向C++,是因为C++充满了令人兴奋的新技巧和未知的创新空间。


1991年...
 ●5000行C代码可以写一个完整的应用程序,获得数万$的回报;
 ●一个TSR式的Help程序可以以shareware的方式通过磁盘发行,开发者银行户头里会收到大量汇款;
 ●John Carmark和Michael Abrash正在各自擅长的方向上不断创新。Doom发行后,id获得收入一度超过微软销售额。

C++历史选择中“创新”压倒“生产”
“相信程序员”;
Be an enable language;
Zero overhead;
STL投票的通过;
偏特化的引入
多继承
Generic/Generated/Meta
IOStream库的设计
Loki/Boost

counted_ptr被否决
可选GC方案被否决
加入类似delegate的对象方法指针提议未引起关注;
virtual关键字
exception机制
缺乏Thread, Network, Regex, DB...等标准库
没有ABI规范
孱弱的RTTI

    并不是事后诸葛亮式的谴责,这就是C++的历史选择,无所谓对错。

    C++重创新轻生产,重技巧轻规范,语言上的创新试验直到1996年ANSI C++标准草案落地才结束。直到2001年Modern C++ Design出版,人们还不断地发现新的语言运用技巧。我们每个人都经历过这个阶段,在实践中发现一个问题,想方设法用尽各种语言技巧来克服它,成则欣喜,败不气馁。我们都曾经相信,C++中一切问题都可以优雅地解决,只有想不到,没有做不到。问题是,从Advanced C++到Modern C++ Design,许许多多令人第一眼看上去无比惊喜的技术,最后在实践中被大范围推广运用的少之又少。C++大师们说这是教育问题,真的是这样吗?

C++社群的价值观
 ●用优雅的技巧解决复杂问题
 ●自己动手,丰衣足食
 ●决不让运行时效率蒙受半点损失
 ●妙者为王
    “管理一群C++程序员就像放牧一群骄傲的猫。”——B. Moo
    “C++程序员是高速公路上穿着短皮茄克,带着墨镜,抽着雪茄,挥舞着铁链的英勇无畏的摩托骑士。” ——VC产品经理

1995年:转折点
 ●Windows 95问世:GUI时代、保护模式操作系统时代、多线程时代的到来,是推动软硬件规模迅速膨胀;
 ●Netscape Navigator vs. Internet Explorer: Web的兴起将人类一下子拖入互联网时代, 个人与企业应用软件网络化;
 ●Java诞生:提供了网络时代、跨平台时代优于C++的企业应用软件开发语言;
 ●COM时代到来
 ●Delphi诞生:创新与工程原则平衡的典范;


1995年:C++全盛时代
 ●C++标准草案接近完成,语言基本稳定;
 ●C++工具大战结束:来自商业竞争的动力消失,MFC获胜;
 ●很多主流软件厂商转向C++,C++开始在大范围内被用于大规模软件开发;
 ●一切迹象表明,软件产业的重点将有创新转向生产。但是:C++社群在指导思想上并没有发生相应的变化。


我们的历史失误
 ●C++社群从来没有联合起来支持任何一个跨平台的二进制组件标准(如COM/SOM/CCM)和基础库(如Apache APR、ACE OS Wrapper);
 ●C++社群从来没有联合起来支持任何一个跨平台的C++虚拟机、解释器、内存检测工具和错误录像工具,也从来没有促成过一个安全的库;
 ●Boost出现于1999-2000年,而在此之前的跨平台C++库都没有获得广泛的支持;
 ●钟情于用C++语法(无论多么复杂和稀奇古怪)完成所有的任务,却丢掉了老祖宗C语言的看家法宝——Little Language;
 ●对于风格争论不休,对于明显的技术进步拒不接受,对于很多后来被证明并不实用的技巧趋之若鹜。

    没有跨平台的基础库,就没有跨平台的动态模块加载机制;
    John Spencer夭折的书《The Art of C Programming》,GoF的Interpreter模式;Little Language实际上具有反映计算机本质的一些东西,现在却成了很少为C++程序员所采用和熟悉的工具。

 

2005年,C++的现实处境
 ●在系统编程领域仍然强势;
 ●套装软件主流开发语言之一;
 ●嵌入式开发领域进展较快;
 ●游戏引擎开发主力;
 ●科学计算方面略有一席之地
 ●遗留项目的维护;
 ●在企业应用开发领域快速收缩;
 ●Web开发中的影子语言;
 ●从高校主流教学中退潮;
 ●整体水平仍然不高,很多企业急于摆脱;
 ●最致命的:真正了解和熟练掌握C++的人太少;

案例:1. 国外一家公司花高薪聘人,要么能维护目前百万行规模的代码,要么把它转成Java;
          2. IBM Workplace,项目一开始C++/Java并重,之后C++比重越来越小;
          3. 微软与中国电信合作一个项目,客户端软件本来要用C++写,后来赶到产品化周期太长,改用C#,后发先至。 


问题何在
 ●当前的软件产业发展的主要矛盾——各行各业对软件生产标准化、规模化、高质量要求与慢节奏、低效率、低质量的软件开发之间的矛盾。
 ●解决这个矛盾的关键:组件化体系,成熟的软件生产工具和环境,不断的创新精神。
 ●C++在外部环境已经发生根本变化的近十年时间里,没有抓住这个主要矛盾。


重新评估我们的C++价值取向
    重新评估“高级C++”的现实含义:
        - 简洁有效优于惊世骇俗;
        - 开放灵活优于保守固执;
        - 帮助他人优于凸现自己;
        - 领域创新优于卖弄技巧;


六个建议
 ●学会与现实和谐共处;
 ●尽快面向不同领域建立跨平台构件标准;
 ●支持各领域已经形成的基础库不断完善;
 ●支持相关工具厂商,迅速完善工具链;
 ●支持动态语言的发展;
 ●面向产业挑战创新发展;

 

与现实和谐共处
 ●承认C++只适合这个世界的一部分工作,快乐地与其他语言共同协作;
 ●告别妄自尊大和保守傲慢;
 ●尊重其他社群的专业能力和成绩;
 ●坦率承认C++在很多场合并非理想选择;
 ●在C++擅长的领域保持锐意。


跨平台构件标准
 ●C++迈向未来的关键技术步骤;
 ●尽可能支持现有的成熟方案;
 ●在不同尺度的平台上可能需要不同的标准;

 

支持成熟的基础库
 ●基本组件:STL和Boost(部分)
 ●网络和系统编程:ACE
 ●分布式计算:ICE
 ●GUI:Qt
 ●Windows:MFC/ATL/WTL
 ●科学计算:MTL

 

完善工具链
 ●C++用的GC;
 ●Code Review工具;
 ●内存错误排查工具;
 ●测试工具;
 ●MDA工具;
 ●文档工具;
 ●持续集成工具;
 ●运行录像工具


支持动态语言
 ●动态语言是软件技术发展的一个重要方向,几年后会成为主流。
 ●目前几个流行动态语言天生与C/C++具有亲缘关系;
 ●加强对动态语言的友好性,是C++未来发展的一项重要任务;
 ●从这个角度来看待C++/CLI,我们应该持积极态度;
 ●Little Language问题;


迎接产业新挑战
 ●多核CPU带来根本性挑战,C++有责任挺身而出,为其他语言铺平前进道路;
 ●安全性问题,C/C++实际上是给整个产业拖了后腿,对此我们应当充分关注,积极改进;
 ●将STL思想精华发扬光大。
posted @ 2009-03-27 13:31 chaosuper 阅读(255) | 评论 (0)编辑 收藏

     摘要: linux目录架构 /       根目录 /bin         常用的命令   binary   file   的目錄 /boot     &n...  阅读全文
posted @ 2009-03-16 22:49 chaosuper 阅读(129) | 评论 (0)编辑 收藏

http://www.python.org
posted @ 2009-03-11 01:11 chaosuper 阅读(120) | 评论 (0)编辑 收藏

为了查找学习Linux的资料,特列举了一些学习Linux的网站如下:

中国IT实验室 http://www.chinaitlab.com

OKLinux 中文社区 http://www.oklinux.cn

Ubuntu 中文社区 http://www.ubuntu.org.cn
posted @ 2009-03-09 23:17 chaosuper 阅读(93) | 评论 (0)编辑 收藏

仅列出标题
共12页: First 4 5 6 7 8 9 10 11 12