• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            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 閱讀(4818) | 評論 (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 閱讀(1290) | 評論 (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噸?,F有一重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 閱讀(221) | 評論 (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 閱讀(258) | 評論 (0)編輯 收藏

                 摘要: linux目錄架構 /       根目錄 /bin         常用的命令   binary   file   的目錄 /boot     &n...  閱讀全文
            posted @ 2009-03-16 22:49 chaosuper 閱讀(139) | 評論 (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 閱讀(94) | 評論 (0)編輯 收藏

            僅列出標題
            共12頁: First 4 5 6 7 8 9 10 11 12 
            久久这里只有精品首页| 久久国产精品无码网站| 无码人妻久久一区二区三区免费丨 | 无码伊人66久久大杳蕉网站谷歌| 99久久精品免费看国产一区二区三区 | 香蕉久久一区二区不卡无毒影院 | 色婷婷久久久SWAG精品| 亚洲欧美成人综合久久久| 国产国产成人精品久久| 久久久黄片| 久久精品国产免费| 久久久久免费精品国产| 伊人久久大香线焦综合四虎| 性做久久久久久免费观看| 久久精品国产半推半就| 亚洲国产成人精品无码久久久久久综合| 亚洲精品无码久久久久sm| 久久午夜无码鲁丝片午夜精品| 久久国产乱子伦免费精品| 久久久久久国产a免费观看不卡 | 久久人人爽人人爽人人爽| 99久久婷婷国产一区二区| 久久w5ww成w人免费| 国产成人精品久久| 欧美亚洲另类久久综合婷婷| 夜夜亚洲天天久久| a高清免费毛片久久| 久久精品国产亚洲AV香蕉| 漂亮人妻被中出中文字幕久久 | 72种姿势欧美久久久久大黄蕉| 区久久AAA片69亚洲| 中文字幕无码久久精品青草 | 99久久人妻无码精品系列| 一本色道久久88—综合亚洲精品| 久久久久亚洲AV成人网| 亚洲国产香蕉人人爽成AV片久久 | 国内精品免费久久影院| 国内精品久久人妻互换| 精品久久久久久无码免费| 国产精品久久久天天影视香蕉| 久久精品国产99国产电影网|