• <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>

            2009年11月1日

            c++之父之一席之談(也許是笑話,但不要僅僅當(dāng)成笑話)

            在1998年的元旦,Bjarne Stroustrup(C++之父)接受了IEEE《計(jì)算機(jī)》雜志記者的專訪。編輯很自然的認(rèn)為他會(huì)對于過去七年來使用他創(chuàng)建的語言進(jìn)行面對對象設(shè)計(jì)做一個(gè)歷史性的回顧。而在這個(gè)專訪中,記者獲得了更有價(jià)值的新聞,但是最后編輯決定為了整個(gè)IT產(chǎn)業(yè),這個(gè)稿子不能發(fā)表,但是就像其它被砍掉的新聞,往往還是弄得路人皆知的。
            這一篇適當(dāng)時(shí)專訪的完全拷貝,沒有被編輯、刪改或者做過什么潤色處理,也沒有發(fā)布過,可能看起來不像常見的雜志文章,但這是實(shí)情。

            你會(huì)發(fā)現(xiàn)真正引人入勝的地方... ...

            記者: 您在幾年前你改變了軟件設(shè)計(jì)世界的面貌,現(xiàn)在再回首往事您有什么感想?

            Stroustrup: 事實(shí)上我在你到來之前的這些天里一直在考慮這件事,你還記得幾乎所有的人都在寫 C程序那會(huì)兒嗎?麻煩的是這些人寫得太好了,而且那些個(gè)大學(xué)也都在努力的傳授 C編程技術(shù)。的確他們是十分的成功——我要特別的指出"成功"這個(gè)詞——因?yàn)檫@種顯著的 C程序員的培養(yǎng)效率,這就是產(chǎn)生問題的原因。

            記者: 這難道是個(gè)問題嗎?

            Stroustrup: 當(dāng)然,你記得大家都在用Cobol語言寫程序的時(shí)候嗎?

            記者: 哦,當(dāng)然,當(dāng)時(shí)我也一樣。

            Stroustrup: 在一開始的時(shí)候,這些人簡直象半個(gè)上帝似的拿著高工資,享受著貴族一樣的待遇。

            記者: 唉,那些日子多么的讓人懷念,是吧?

            Stroustrup: 當(dāng)然了。但是接著發(fā)生了什么?IBM覺得這樣不舒服,就投資了數(shù)百萬來培養(yǎng)程序員,直到程序員多得一毛錢就可以雇一打。

            記者: 這就是為什么當(dāng)時(shí)我撤出來了,工資在一年里就降到人們在說做個(gè)記者都比程序員強(qiáng)的地步。

            Stroustrup: 對啦!那時(shí)侯相同的事情發(fā)生在了C程序員身上了。

            記者: 這個(gè)我明白了,可是您要說的是......

            Stroustrup: 有一天,我坐在辦公室里就在想如何能把這件事挽回一些。我想知道如果有一種特別復(fù)雜而且難以學(xué)會(huì)的語言,是否就沒有人可以又把程序員們搞到市場的泥潭里去呢?我用了從X10里了解到的東西,,噢,就是X-Windows,真是一個(gè)該死的圖形系統(tǒng),只能運(yùn)行在那些個(gè)SUN 3/60的機(jī)器里,哈!它具有所有我想要的特征:可笑而復(fù)雜的語法,含混的功能描述,還有偽裝的OO結(jié)構(gòu),就算是在現(xiàn)在,還是沒有人愿意用那些東西,如果你不想發(fā)瘋的話,Motif才是唯一解決方案。

            記者: 你是在開玩笑嗎?

            Stroustrup: 沒有,事實(shí)上還有另外的一個(gè)問題,UNIX是用C寫的,就是說任何一個(gè)C程序員都可以很容易的成為系統(tǒng)程序的開發(fā)者。還記得一個(gè)大型的主機(jī)系統(tǒng)應(yīng)用的開發(fā)者通常能掙多少錢嗎?

            記者: 你肯定是知道我當(dāng)時(shí)就是干這個(gè)的。

            Stroustrup: 好吧,因此這個(gè)新的語言一定要通過隱藏所有的系統(tǒng)調(diào)用來和UNIX分離開來,這樣可以使那些個(gè)就只是知道DOS的人也可以活得很體面。

            記者: 我不大相信您說的這個(gè)......

            Stroustrup: 而且到現(xiàn)在時(shí)間也夠長的了,我相信有很多的人已經(jīng)指出了C++是對時(shí)間的浪費(fèi),我要說的是,這個(gè)過程比我想象的要長的多了。

            記者: 那么您又是如何做到的呢?

            Stroustrup: 那只是一個(gè)玩笑,我真的沒有想到人們會(huì)對那本書那么認(rèn)真。任何人只要長了半個(gè)大腦也應(yīng)該明白面對對象編程是荒謬而不合邏輯的,而且效率低下。

            記者: 什么?

            Stroustrup: 再說代碼重用,你什么時(shí)候聽說過有公司重用他的代碼?

            記者: 事實(shí)上從來沒有,但是......

            Stroustrup: 那么我提醒你一下,在早期有很多的例子。哦,有一家叫Menter Graphics的俄勒岡州公司,我認(rèn)為他們應(yīng)該是感冒了,竟然在90年或者是91年把所有的代碼用C++重寫了一遍,對不起,我實(shí)在是想不起確切的時(shí)間了,我看大家應(yīng)該從這個(gè)事件中吸取教訓(xùn)。

            記者: 沒有人真正的吸取了教訓(xùn)嗎?

            Stroustrup:

            沒有,而且還有很多公司犯同樣的錯(cuò)誤,還向他們的股東解釋說那3億美圓的損失是正常的,他們就是做了這樣的事情。

            記者: 真的?可是這也只能證明OO方法是能夠工作的,不是嗎?

            Stroustrup: 也許吧,執(zhí)行文件是那么大,在一臺(tái)有128M內(nèi)存的HP工作站上只是裝載到內(nèi)存中就要用5分鐘時(shí)間,然后將象毛毛蟲爬樹一樣的運(yùn)行。事實(shí)上我在第一個(gè)禮拜就發(fā)現(xiàn)了這個(gè)缺點(diǎn),奇怪的是好象沒人在乎這個(gè),Sun和HP好象只在乎買出那些功能強(qiáng)大的各種玩意兒,而不在乎在上面跑什么程序。在AT&.T的時(shí)候我編了一個(gè)"Hello World"程序,簡直是難以置信,執(zhí)行文件有2.1M。

            記者: 那么大?是啊,就是從那時(shí)候開始的編譯程序產(chǎn)生大個(gè)的文件的。

            Stroustrup: 就是這個(gè)樣子,如果你不信的話,可以用最新版的g++試一下,你得到的東西不會(huì)小于0.5M,而且就在最近也有一些在各個(gè)國家的例子,比如在British Telecom公司發(fā)生的災(zāi)難,但是幸運(yùn)的是他們把原來的計(jì)劃廢棄了,又重新開始,他們就比Australian Telecom公司幸運(yùn),現(xiàn)在我又聽說Siemens公司又在造"恐龍"了,他們目前是越來越擔(dān)心要用來加速執(zhí)行軟件所要使用的昂貴的高速硬件,難道你真的認(rèn)為那些個(gè)多態(tài)繼承是一種樂趣嗎?

            記者: 噢,但是C++的確是一種可靠的語言啊!

            Stroustrup: 你是真的相信的,對吧?你有沒有真的坐下來用C++開發(fā)過項(xiàng)目?我來告訴你會(huì)發(fā)生什么:首先,我會(huì)加入足夠的缺陷來讓那些微不足道的模塊先執(zhí)行,讓工作超載,在工程掃尾的階段,你回發(fā)現(xiàn)幾乎所有的模塊都會(huì)有這種缺陷,這是因?yàn)槿藗円詾榫褪菓?yīng)該這樣做,因?yàn)樵贑++的教程中就是這樣寫的。在相同的模塊中執(zhí)行不同對象的相似操作意味著:有一些東西在各個(gè)模塊中是完全不相同的。當(dāng)你有了互不相同的上百個(gè)這樣的模塊,就可以把他們集成在一起了。其次,我再說說所謂的數(shù)據(jù)隱藏,上帝啊,當(dāng)我聽說了有的小組實(shí)現(xiàn)了什么對象協(xié)同通信,我真的是憋不住想笑!我看,OO方法中的"協(xié)同"這個(gè)詞可以把項(xiàng)目經(jīng)理的肋條累斷。

            記者: 我不得不說著太可怕了!你還說這是用來提高程序員的工資,這太齷齪了!

            Stroustrup: 齷齪?不是這樣的,任何人都有選擇的權(quán)利。我是并不想讓事情發(fā)展成這個(gè)樣兒的。不管怎么說,我基本上還是成功的。C++現(xiàn)在已經(jīng)不行了不是?而且程序員現(xiàn)在還是能掙到高工資的——特別是那些還要維護(hù)這些該死的"++"東西的那些程序員。你應(yīng)該明白如果你去維護(hù)一個(gè)不是由你開發(fā)的C++模塊是不可能的。

            記者: 怎么會(huì)這樣的?

            Stroustrup: 你糊涂了?還記得typedef嗎?

            記者: 噢,當(dāng)然。

            Stroustrup: 知道要在頭文件里發(fā)現(xiàn)象'RoofRaised'這樣的變量是一個(gè)雙精度數(shù)要用多長的時(shí)間嗎?想象一下要在一個(gè)工程里所有的類定義里尋找那些typedefs
            ... ...
            ... ...

            記者: 那么你為什么認(rèn)定你已經(jīng)成功了呢?

            Stroustrup: 還記得一般一個(gè)C程序項(xiàng)目要多長時(shí)間嗎?一般是6個(gè)月。這對于一個(gè)要養(yǎng)活妻子孩子的程序員是不夠的。如果是一樣的項(xiàng)目,但是用C++來開發(fā),會(huì)怎么樣呢?我告訴你:要一兩年才能做完!這不好嗎?就是一個(gè)小小的編程語言選擇的決定,語言程序員就不會(huì)輕易的下崗了不是?而且那些個(gè)大學(xué)已經(jīng)很久沒有傳授C了,現(xiàn)在是對C程序員的短缺。特別是對UNIX編程熟悉的程序員。在使用了這么多年的"new"以后,而且一直以來一直都不用擔(dān)心返回值的問題。還有多少程序員知道使用"malloc"?事實(shí)上,大多數(shù)的C++程序員舍棄了返回值,無論什么樣的結(jié)果,甚至于返回了"-1",其實(shí)用不著什么'throw'、'catch'、'try'之類的東西,至少你應(yīng)該知道產(chǎn)生了錯(cuò)誤。

            記者: 但是繼承的確不是可以節(jié)省很多時(shí)間的嗎?

            Stroustrup: 是嗎?你注意過C項(xiàng)目計(jì)劃和C++的項(xiàng)目計(jì)劃之間的不同嗎?在進(jìn)行了三次系統(tǒng)功能分解后,要確定所有的東西都可被繼承到,如果沒有那么說明還是有錯(cuò),但是有誰在C編程里聽說過存儲(chǔ)滲漏這個(gè)說法?現(xiàn)在你可以在業(yè)界的大廠商的產(chǎn)品中發(fā)現(xiàn)了!有很多的公司不得不放棄了,并且把工程轉(zhuǎn)包出去,他們知道最后可能象篩沙子似的把內(nèi)存站用完,他們才不想遭那份罪呢!

            記者: 也有一些工具來......

            Stroustrup: 大多數(shù)的防滲漏的工具不還是用C++寫的。

            記者: 果把這些東西發(fā)表了,我們可能在這個(gè)行業(yè)里無法立足了,你知道嗎?
            Stroustrup: 我不相信,就象我所說的,現(xiàn)在C++已經(jīng)是在垂死掙扎了。任何公司只要清醒,就會(huì)認(rèn)識(shí)到用C++來做項(xiàng)目簡直是一場災(zāi)難。如果還沒認(rèn)識(shí)到這些,那就是活該!有一段時(shí)間我使勁的勸Dennis Ritchie用C++重寫UNIX。

            記者: 啊?天哪!他是怎么說的?

            Stroustrup: 我不得不承認(rèn)他的洞察力,我想他和Brian在很早的時(shí)候就清楚的明白了我的意圖,但是從來沒有說出來,他說如果我愿意的話,他可以幫我用C++寫
            個(gè)DOS。

            記者: 那么你寫了嗎?

            Stroustrup: 事實(shí)上,我寫了,我完成后可以給你一個(gè)DEMO,我在機(jī)房里的一臺(tái)4個(gè)CPU的Sparc 20上做的,運(yùn)行得特別的快,而且只占了70M的硬盤空間。

            記者: 有For PC的版本嗎?

            Stroustrup: 現(xiàn)在你在開玩笑了,難道你沒見過Windows 95嗎?我認(rèn)為它是我成功標(biāo)志之一,

            記者: 我也總是在想關(guān)于Unix++,還是有人在試著搞這么個(gè)東西的。

            Stroustrup: 那是因?yàn)樗麄冞€沒有看到這個(gè)采訪手跡。

            記者: 對不起,不過依我看,我們恐怕不會(huì)刊發(fā)這些東西的。

            Stroustrup: 但是這是個(gè)世紀(jì)故事,我只是想讓我的程序員伙伴們記住我為他們做了什么,你知道這些個(gè)日子里C++程序員可以掙多少錢嗎?

            記者: 我所聽說的是一個(gè)頂尖的C++程序員一小時(shí)可以掙到70~80美圓。
            Stroustrup: 知道了吧!而且我打賭他肯定可以掙那么多!!單步跟蹤我放在C++里面的那些gotcha,并不是容易的事了。在在項(xiàng)目中使用C++的所有特性即使是有經(jīng)驗(yàn)的程序員也會(huì)感到困惑. 事實(shí)上有時(shí)侯我也是覺得挺難受的,雖然這個(gè)特性是為我的初衷而做的,我?guī)缀跸矚g上了這個(gè)語言。
            記者: 你的意思是說你以前是不喜歡的?

            Stroustrup: 我是狠它的!難道你不同意它是挺笨重的嗎?但是當(dāng)那本書的版稅源源不斷的...... 我想你能夠明白這些。

            記者: 等一下,關(guān)于參數(shù)的定義,請您一定要回答,您是否真的改良了C的指針。
            Stroustrup: 呵,我也是總是想知道這個(gè)。一開始我認(rèn)為我做了,但是有一天我和一個(gè)剛開始學(xué)習(xí) C++的程序員討論了這個(gè)問題。他說:"他從來就不知道他的變量是否被引用了,所以我還是在使用指針,那個(gè)星號(hào)總是在提醒我。"
            記者: OK,一般在這個(gè)時(shí)候我一般是說:"Thank you very much.",但是現(xiàn)在用在這里好象還是不夠。

            Stroustrup: 答應(yīng)我一定要發(fā)表。

            記者: 好的,我會(huì)通知您的,但是我已經(jīng)知道了我的編輯會(huì)說什么了。

            Stroustrup: 誰會(huì)相信呢?你能把這盤錄音帶給我拷一個(gè)嗎?

            記者: 可以。
            正文完

            posted @ 2009-11-01 14:08 Randy 閱讀(581) | 評論 (2)編輯 收藏

            2009年6月2日

            Google單元測試框架(轉(zhuǎn))

                 摘要: Google Test是Google C++ Testing Framework的一種非正式的稱謂,是google最近發(fā)布的一個(gè)開源C++測試框架。 Google測試框架是在不同平臺(tái)上(Linux,Mac OS X,Windows,Cygwin,Windows CE和Symbian)為編寫C++測試而生成的。它是基于xUnit架構(gòu)的測試框架,支持自動(dòng)發(fā)現(xiàn)測試,豐富的斷言集,用戶定義的斷言,dea...  閱讀全文

            posted @ 2009-06-02 11:19 Randy 閱讀(2353) | 評論 (0)編輯 收藏

            2009年5月18日

            C++界面庫 - Xtreme Toolkit Pro[轉(zhuǎn)載]

            C++界面庫 - Xtreme Toolkit Pro[轉(zhuǎn)載]
            原文轉(zhuǎn)自:http://blog.csdn.net/vbvan/archive/2007/11/23/1899282.aspx

            一套擴(kuò)展MFC的界面庫,可以很方便的實(shí)現(xiàn)各種界面風(fēng)格。不過話說VC2008的MFC即將集成它競爭對手的產(chǎn)品BCGControl,呵呵

            官方網(wǎng)站:http://www.codejock.com/products/toolkitpro

            最新的11.20版本已經(jīng)支持VC2008了,所以編譯沒有太大的問題。要注意的一點(diǎn)是,源文件的注釋有一些非GBK字符,編譯的時(shí)候命令行里最好加上/wd4819

            使用的時(shí)候,只需要在StdAfx.h中加入下面的語句即可

            #include <XTToolkitPro.h>

            如果你選擇static link,那么可以使用宏把不需要的部分排除掉,這樣能減少最終生成的EXE的大小

            //#define _XTP_EXCLUDE_COMMON
            #define _XTP_EXCLUDE_TABMANAGER
            #define _XTP_EXCLUDE_GRAPHICLIBRARY
            //#define _XTP_EXCLUDE_CONTROLS
            //#define _XTP_EXCLUDE_COMMANDBARS
            //#define _XTP_EXCLUDE_DOCKINGPANE
            //#define _XTP_EXCLUDE_PROPERTYGRID
            #define _XTP_EXCLUDE_REPORTCONTROL
            #define _XTP_EXCLUDE_CALENDAR
            #define _XTP_EXCLUDE_TASKPANEL
            #define _XTP_EXCLUDE_SHORTCUTBAR
            #define _XTP_EXCLUDE_SKINFRAMEWORK
            #define _XTP_EXCLUDE_RIBBON
            #define _XTP_EXCLUDE_SYNTAXEDIT

            另外值得注意的一點(diǎn)是,如果你選擇static link,那么需要將XTP的資源導(dǎo)入你的工程之中。比如要使用中文資源,那么把下面的代碼加入工程的rc2文件的最后

            #define _XTP_RESOURCE_LANGUAGE zh_CN
            #include <XTToolkitPro.rc>

            同時(shí),你還需要修改一下XTP附帶的XTToolkitPro.rc中的內(nèi)容
            將最后的LANGUAGE_DEFAULT(TaskPanel)改成LANGUAGE_LOCALIZED(TaskPanel)
            然后在TaskPanel\res目錄下將Resource.rc復(fù)制成Resource_zh_CN.rc,并將其中的編碼改成中文

            #if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_CHS)
            #ifdef _WIN32
            LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED
            #pragma code_page(936)
            #endif //_WIN32
            #endif

            否則你之后include的資源會(huì)變成默認(rèn)的英文

            ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
            產(chǎn)品介紹:http://blog.csdn.net/componentcn/archive/2007/04/19/1570086.aspx

            posted @ 2009-05-18 18:55 Randy 閱讀(3395) | 評論 (0)編輯 收藏

            2009年5月4日

            關(guān)于設(shè)計(jì)

             

            關(guān)于設(shè)計(jì)

            設(shè)計(jì)是一項(xiàng)把需求轉(zhuǎn)換為編碼方案的活動(dòng)。設(shè)計(jì)在軟件開發(fā)中是必定存在的,無論何種情況下,我們都需要把需求轉(zhuǎn)化為編碼方案。
            設(shè)計(jì)是一個(gè)不斷完善的過程,設(shè)計(jì)的缺陷可能在設(shè)計(jì)之初無法被發(fā)現(xiàn),直到設(shè)計(jì)完成時(shí)才被察覺到,這導(dǎo)致了再次設(shè)計(jì)的需要。注意,我們在首次設(shè)計(jì)時(shí)應(yīng)該盡可能的避免缺陷的出現(xiàn),而不是視而不見以求下次解決。
            設(shè)計(jì)上的付出是必要的,在設(shè)計(jì)階段發(fā)現(xiàn)錯(cuò)誤并改正比編碼后發(fā)現(xiàn)相同錯(cuò)誤并改正的代價(jià)低的多,如果設(shè)計(jì)的錯(cuò)誤拖延到維護(hù)階段,那就更加不堪設(shè)想。
            設(shè)計(jì)存在優(yōu)劣,必須明確這一點(diǎn)。敷衍的進(jìn)行設(shè)計(jì)后果是很嚴(yán)重的(雖然偶爾也能更加快速的產(chǎn)生產(chǎn)品),糟糕設(shè)計(jì)的最大特點(diǎn)是無法響應(yīng)需求變更。但也應(yīng)該注意,優(yōu)秀的設(shè)計(jì)有多種,糟糕的設(shè)計(jì)也有多種。
             
            事物的本質(zhì)屬性是一件事物必須具有的,如果不具有則就不在是該事物。事物的偶然屬性是不起解決性作用的屬性。例如,車總有輪子,沒有了輪子就不在是車,那么輪子就是本質(zhì)屬性,但是輪子可能有 4 個(gè),也可能有 3 個(gè),無論多少個(gè)輪子依然是車,那輪子的數(shù)目就是偶然屬性。
            本質(zhì)復(fù)雜度源于需求,無論采取何種手段,何種技術(shù)都不會(huì)對本質(zhì)復(fù)雜度造成任何影響,所以有人才會(huì)說,軟件開發(fā)本身就很復(fù)雜(無論使用何種技術(shù)開發(fā)都是復(fù)雜的)。我們需要管理好偶然復(fù)雜度(偶然性的復(fù)雜度),例如,需求是開發(fā)一個(gè)可用的計(jì)算器程序(圖形界面可有可無),這時(shí),開發(fā)命令行的計(jì)算器就比開發(fā) GUI 的計(jì)算器的偶然復(fù)雜度小,用 C++ 進(jìn)行開發(fā)其偶然復(fù)雜度就比用 Dephi 高。敏捷開發(fā)和 Unix 中都強(qiáng)調(diào) KISS,而敏捷開發(fā)更加強(qiáng)調(diào)應(yīng)該使用簡單的技術(shù)和工具,這都是為了避免偶然復(fù)雜度過高帶來額外的成本開銷。

            設(shè)計(jì)者應(yīng)該真正理解偶然復(fù)雜度,如果設(shè)計(jì)出來的框架,在進(jìn)行開發(fā)時(shí)需要開發(fā)人員關(guān)注于系統(tǒng)的每個(gè)細(xì)節(jié),那么對于程序員來說偶然復(fù)雜度是高的,相比下,對于每個(gè)功能的開發(fā),程序員只需要關(guān)心當(dāng)前編寫的任務(wù),那么偶然復(fù)雜度是低的(COM 的設(shè)計(jì)非常強(qiáng)調(diào)的一點(diǎn)是封裝,而不是復(fù)用)。

             

            設(shè)計(jì)的基本的原則:

            1)盡量降低偶然復(fù)雜度。如果可以簡單的解決問題,那為什么不這么做了?另外某些角度來說:

            模塊化的系統(tǒng)(系統(tǒng)對“模塊”一詞有確切的定義),在一定程度上偶然復(fù)雜度較低,模塊化的系統(tǒng)讓程序員只需要關(guān)心當(dāng)前開發(fā)的部分。

            2)盡量保持高內(nèi)聚,低耦合。高耦合的系統(tǒng)懼怕變動(dòng)(動(dòng)一處而牽動(dòng)全身),變動(dòng)帶來的問題通過關(guān)聯(lián)進(jìn)行傳遞。高耦合的系統(tǒng)的關(guān)鍵點(diǎn)在于:系統(tǒng)組成部分的關(guān)聯(lián)過多,導(dǎo)致過多的相互影響,當(dāng)關(guān)聯(lián)數(shù)量到一定程度,整個(gè)系統(tǒng)就會(huì)很不穩(wěn)定。

            具體來說:

            <1> 集成的困難:高耦合的各個(gè)程序組成部分需要花費(fèi)較多時(shí)間進(jìn)行集成。

            <2> 測試的困難:一個(gè)部分的問題通過與其他部分關(guān)聯(lián)傳遞到其他部分,那么意味著一個(gè)部分的變動(dòng)可能導(dǎo)致整個(gè)系統(tǒng)的重新測試。

            低耦合:在類這個(gè)層次上來說,除了底層的工具類(例如 STL)之外(工具類允許和系統(tǒng)中的大部分類發(fā)生關(guān)聯(lián)),應(yīng)該盡可能的減少類之間的關(guān)聯(lián)。

            3)可擴(kuò)展。可擴(kuò)展的一個(gè)標(biāo)志是,無需改變系統(tǒng)底層,即可增加新的功能。

            4)可移植性。可移植性非常特別(似乎違背低偶然復(fù)雜度原則),它不同于軟件的其他的特性,除非你保證你的項(xiàng)目永遠(yuǎn)無需移植到其他的環(huán)境中去,否則,你應(yīng)該注意這點(diǎn),因?yàn)橥ǔ碚f,時(shí)間越長,越難移植,甚至最后只能重寫,代價(jià)非常之高。

            5)分層。分層的系統(tǒng)相對來說偶然復(fù)雜度較低,關(guān)聯(lián)較少。每層都有每層的工作,相互影響較小。

             

            另外,類的粒度也比較重要,大粒度的類間關(guān)聯(lián)少,但是不可避免的就是類自身過于復(fù)雜。小粒度的類自身很簡單,易于開發(fā)和維護(hù),但是類間關(guān)聯(lián)變多,通訊太頻繁。粒度過大和過小都會(huì)帶來較多的問題,應(yīng)該根據(jù)經(jīng)驗(yàn)作合理設(shè)計(jì)。

            在 C++ 中使用巨大的類無異于使用 C 語言進(jìn)行編程,這意味著你拋棄了 C++ 強(qiáng)大的抽象能力。含有巨類的系統(tǒng)中的一個(gè)顯著的標(biāo)志是:含有大量重復(fù)代碼或者相似代碼(這歸結(jié)于 C 語言不夠強(qiáng)大的抽象能力和項(xiàng)目在時(shí)間上的壓力)

             

            最后要說的一句是:KISS 和敏捷給太多人以誤解,請仔細(xì)斟酌它們的含義(有幾個(gè)人懂得 KISS 的真正含義)。設(shè)計(jì)是不可避免的,好的設(shè)計(jì)是至關(guān)重要的。好的設(shè)計(jì)在一定程度上控制了軟件的成本,即使你的老板并不明白,但是你應(yīng)該這么做。

             

            author: killercat

            posted @ 2009-05-04 20:38 Randy 閱讀(273) | 評論 (0)編輯 收藏

            2009年5月3日

            22條商規(guī) - 艾﹒里斯和杰克﹒特勞特

            01領(lǐng)先定律

            成為第一勝過做得更好

            在中國市場上,茅臺(tái)是第一種高檔白酒;中華是第一種高檔香煙;健力寶是第一種運(yùn)動(dòng)飲料;三槍是第一個(gè)內(nèi)衣品牌;脈動(dòng)是第一種維生素水;康師傅是第一種高檔方便面和瓶裝綠茶;金龍魚是第一個(gè)調(diào)和油品牌;東方紅是第一個(gè)拖拉機(jī)品牌。今天,除健力寶因企業(yè)內(nèi)部原因?qū)е缕放扑ヂ渫猓瑯O大多數(shù)品牌都仍然占據(jù)各自領(lǐng)域的第一位置。

            02品類定律

            如果你無法在現(xiàn)有品類中成為第一,那么就創(chuàng)造一個(gè)新的品類使自己成為第一。

            中國橙汁飲料市場的例子很好的說明了這一定律;匯源成為高濃度果汁的第一品牌之后,鮮橙多開創(chuàng)了低濃度果汁品類,并成為該品類第一;酷兒開創(chuàng)了兒童低濃度果汁品類;美汁源則開創(chuàng)了果肉果汁(果粒橙)品類,成為該品類第一。這些品牌都因開創(chuàng)了一個(gè)新品類而獲得成功。

            03心智定律

            在心智中成為第一勝過在市場中成為第一。

            喜之郎并非國內(nèi)第一個(gè)果凍品牌。在喜之郎之前,金娃等品牌已經(jīng)率先進(jìn)入市場,但從全國來看,顧客心智中并沒有一個(gè)公認(rèn)的果凍品牌,也就是說,首先進(jìn)入市場的果凍品牌并未進(jìn)入顧客心智。于是喜之郎依靠突出的形象,并率先在CCTV等大眾媒體上進(jìn)行廣告宣傳,成功搶先占據(jù)心智,從而收獲了果凍市場50%以上的份額。

            后來,喜之郎公司又故伎重演,推出了美好時(shí)光海苔,試圖通過大眾媒體搶占方便海苔品類,不同的是,方便海苔品類中已經(jīng)有波力等品牌先入為主,因此美好時(shí)光投放了大量廣告也沒有取得預(yù)期效果。

            2003年年初,長富出現(xiàn)在央視黃金時(shí)段,正式吹響了進(jìn)軍全國的號(hào)角。

            長富宣稱其牛奶“綠色天然”,是“真正順滑香濃的好奶”。為了證明其“高品質(zhì)奶源”,長富召開新聞發(fā)布會(huì),展示其地處福建武夷山區(qū)據(jù)稱是中國最大最好的奶源基地。后來,長富更是不惜血本,在廣東展開“買24送15”的促銷活動(dòng),盡管長富投入了9200萬元的廣告費(fèi),但市場并不為其所動(dòng),全國乳業(yè)市場的格局并沒有因?yàn)殚L富的加入而被打破,甚至連長富最為看重、投入最多的廣東市場,也沒有實(shí)現(xiàn)其市場占有率10%的目標(biāo)。

            擁有一流產(chǎn)品以及廣告投入巨大的長富為什么會(huì)折戟沉沙呢?

            原來,在消費(fèi)者的心智中,“最好的奶源來自內(nèi)蒙古大草原而不是武夷山”。之一觀念早就隨著“天蒼蒼,野茫茫,風(fēng)吹草低見牛羊”的詩句深入人心。加之蒙牛、伊利此前早就在合力宣揚(yáng)“內(nèi)蒙古牛奶好”。所以,盡管長富說“如今的內(nèi)蒙古大草原水土流失嚴(yán)重,日益風(fēng)蝕沙化,而武夷山處于北緯27度,有中國‘澳洲’之稱”,但畢竟勢單力薄,無法改變消費(fèi)者心目中“最好的奶源來自內(nèi)蒙古”這一認(rèn)知。

            統(tǒng)一與康師傅在中國大陸市場競爭的實(shí)質(zhì)就是一場先入為主的戰(zhàn)爭,康師傅進(jìn)入大陸市場之前在臺(tái)灣默默無聞,統(tǒng)一則是臺(tái)灣食品飲料領(lǐng)域的領(lǐng)導(dǎo)者,康師傅率先進(jìn)入大陸市場推出了中高檔方便面,統(tǒng)一隨后進(jìn)入,但康師傅已經(jīng)先入為主,因此在大陸市場上,實(shí)力更強(qiáng)大的統(tǒng)一在方便面領(lǐng)域一直落后于康師傅。之后,康師傅又搶先推出瓶裝綠茶、冰紅茶等產(chǎn)品,這些產(chǎn)品的市場份額都無一例外的領(lǐng)先于統(tǒng)一。統(tǒng)一唯一的翻身機(jī)會(huì)在于率先推出了低濃度果汁“鮮橙多”,后來,康師傅跟進(jìn)推出低濃度果汁品牌“鮮的每日C”,其銷量當(dāng)然是遠(yuǎn)遠(yuǎn)落后于“鮮橙多”。

            04認(rèn)知定律

            市場營銷不是一場產(chǎn)品之戰(zhàn),而是一場認(rèn)知之戰(zhàn)。

            歷史總在不斷的重演,可口可樂和百事可樂所做的實(shí)驗(yàn),中國的非常可樂也做過,非常可樂也曾經(jīng)宣稱:經(jīng)過上千次配方改進(jìn),測試證明非常可樂更適合中國人的口味。遺憾的是,非常可樂更好的口味無法阻擋可口可樂和百事可樂在中國市場取得成功。

            張?jiān)8杉t葡萄酒在國內(nèi)大部分地區(qū)以“百年張?jiān)?#8221;的歷史資源來向人們推廣“國產(chǎn)高檔葡萄酒”的認(rèn)知,但在廣東地區(qū),張?jiān)F放茀s更多地代表低端白蘭地。原因在于,張?jiān)5投税滋m地在該地區(qū)有較長的銷售歷史、極高的知名度和占有率。這種強(qiáng)烈的認(rèn)知也影響到張?jiān)5母叨烁杉t在該區(qū)域難以打開局面。

            05聚焦定律

            市場營銷最重要的是在潛在顧客心智中占據(jù)一個(gè)字眼。

            在美國市場,佳潔士以聚焦“防蛀”概念而成為第一,但在進(jìn)入中國市場之初,佳潔士因擔(dān)心“防蛀”市場有限,轉(zhuǎn)而宣傳口氣清新、美白等概念,被一直處于第二的老對手高露潔抓住機(jī)會(huì),搶先聚焦于“防蛀”概念。等佳潔士重新聚焦于“防蛀”之時(shí),高露潔已經(jīng)先入為主,成為“防蛀”牙膏的代名詞,并一直領(lǐng)先于對手。

            在中國市場的研究表明,大部分購買高露潔的顧客,真正的目的并非為了“防止蛀牙”,而是高露潔專注于“防止蛀牙”而建立起的專家形象,讓顧客認(rèn)為這個(gè)品牌的牙膏更先進(jìn)、更科學(xué)、更能保護(hù)牙齒。這就是“光環(huán)效應(yīng)”的體現(xiàn)。

            曾經(jīng)被譽(yù)為“中國魔水”的健力寶,錯(cuò)過了“聚焦定律”的機(jī)會(huì),它當(dāng)時(shí)有條件聚焦于“運(yùn)動(dòng)飲料”的概念,舍棄各種汽水、果汁、水、茶等產(chǎn)品,通過極力推廣運(yùn)動(dòng)飲料而使品類做大做強(qiáng)。隨著人們生活水平的提高,對運(yùn)動(dòng)的投入程度也越高,運(yùn)動(dòng)飲料的前景本來一片光明,可惜健力寶企業(yè)卻推出了定位不明的新品牌“第五季”,還分兵進(jìn)入酒業(yè),離正道越來越遠(yuǎn)。

            06專有定律

            兩個(gè)公司不可能在潛在顧客心智中擁有同一個(gè)字眼。

            金龍魚因開創(chuàng)了調(diào)和油品類而成為國內(nèi)食用油的領(lǐng)導(dǎo)品牌,因此金龍魚成了“調(diào)和油”的代名詞。但隨著市場的發(fā)展,新的單一油種不斷興起,金龍魚品牌開始推出花生油、葵花籽油、菜籽油、玉米油等多個(gè)品類。但在這些品類中,魯花已經(jīng)代表花生油、多力已經(jīng)代表葵花籽油,金龍魚無法將已經(jīng)被這些品牌在顧客心智中注冊的字眼和概念占為己有,還面臨“調(diào)和油”的認(rèn)知被稀釋,最后淪為混沌品牌的危險(xiǎn)。

            07階梯定律

            市場營銷戰(zhàn)略取決于你在潛在顧客心智階梯中的層級。

            階梯定律背后蘊(yùn)涵的營銷真諦是:在營銷中,心智決定市場;品牌的心智地位決定市場地位;心智份額決定市場份額;蒙牛品牌創(chuàng)立之初,面對強(qiáng)大的伊利,并未采用正面進(jìn)攻的方式與之競爭,而是打出“創(chuàng)內(nèi)蒙乳業(yè)第二品牌”的口號(hào),在顧客心智中與內(nèi)蒙古第一品牌伊利直接產(chǎn)生關(guān)聯(lián),達(dá)到了迅速有力地提升了蒙牛品牌的心智地位的功效。同時(shí)蒙牛很默契地與伊利共同推廣“草原奶”的概念,推動(dòng)了自身品牌的高速增長。

            08二元定律

            長遠(yuǎn)來看,任何一個(gè)市場都會(huì)演化成“兩匹馬賽跑”的局面。

            行業(yè)巨頭的二元化局面在中國企業(yè)中已經(jīng)初步顯現(xiàn):茶飲料領(lǐng)域是康師傅和統(tǒng)一;高檔白酒領(lǐng)域是茅臺(tái)和五糧液;乳業(yè)市場是伊利和蒙牛;內(nèi)衣市場是三槍和宜而爽,……可以預(yù)見,隨著競爭的加劇,尤其是中國加入WTO以后,競爭壁壘逐漸打破,二元定律在各個(gè)領(lǐng)域開始顯現(xiàn)出威力,“兩匹馬競爭”的局面將廣泛存在于各個(gè)行業(yè)中。

            09對立定律

            若想成為市場第二,那么你的戰(zhàn)略應(yīng)由第一決定。

            “鮮橙多”在低濃度果汁市場上取得成功之后,匯源、哇哈哈、康師傅紛紛跪進(jìn)退出相應(yīng)的模仿產(chǎn)品,但真正成為低濃度果汁領(lǐng)域中第二的品牌并非以上跟進(jìn)者,而是遵循了對立定律的“酷兒”。與“鮮橙多”面向大眾不同,“酷兒”將顧客群定義為“兒童”,并在配方中加入“鈣”,從而成為兒童首選的低濃度果汁。

            廣州報(bào)業(yè)市場上,《廣州日報(bào)》依靠開國內(nèi)市民報(bào)之先河獲得迅速發(fā)展,成為國內(nèi)廣告收入第一的報(bào)紙。面對強(qiáng)大的《廣州日報(bào)》和老牌的《羊城晚報(bào)》,《南方都市報(bào)》在面市之初采取了對立面戰(zhàn)略,針《廣州日報(bào)》的大版面、權(quán)威、穩(wěn)重的特點(diǎn),《南方都市報(bào)》采用小版面突出新銳、時(shí)尚、從而獲得了年輕白領(lǐng)的青睞,一舉成為廣州第二大報(bào)。

            最近三年里,QQ成為奇瑞汽車最為暢銷的車型,并一舉超越奧托成為小型經(jīng)濟(jì)型轎車的代表。QQ用時(shí)尚、活力、現(xiàn)代的品牌概念一舉將奧托定義成老舊、過時(shí)、缺乏活力。QQ成功的關(guān)鍵在于成為原先領(lǐng)導(dǎo)者奧托的對立面。

            10分化定律

            長期來看,每個(gè)品類都將分化成兩個(gè)或更多品類。

            微軟在3C計(jì)劃上浪費(fèi)了數(shù)十億美金,沒有任何結(jié)果。在中國,3C融合一直被家電企業(yè)當(dāng)做必然的趨勢,TCL就是一個(gè)典型。從20世紀(jì)90年代中期開始,TCL為3C計(jì)劃投入了巨資,并為此挖來了有“打工皇帝”之稱的微軟前中國區(qū)總裁吳士宏,最終卻以信息家電失敗、吳黯然辭職而收場。

            分化在各個(gè)品類中時(shí)有發(fā)生,以啤酒行業(yè)為例,最初是普通啤酒,后來分化出淡啤、清啤、純生、無醇、黑啤等很多個(gè)品類;再如瓶裝茶飲料,最初是綠茶,后來分化出冰紅茶、冰綠茶、紅茶、烏龍茶、茉莉花茶;電視機(jī)分化為:CTR、液晶、等離子等品類,甚至空調(diào)也分化為中央空調(diào)和家用空調(diào),家用空調(diào)則進(jìn)一步分化為臥室空調(diào)和客廳空調(diào)等種類。

            11長效定律

            市場營銷的改革需要從長期來看。

            詮釋長效定律最好的反面例子莫過于春蘭空調(diào)。1994年春蘭空調(diào)銷售額達(dá)53億,居國內(nèi)第一,1995年春蘭確定了2000年銷售額達(dá)到180億的目標(biāo),為了達(dá)到該目標(biāo),春蘭進(jìn)入了彩電、冰箱、洗衣機(jī)、摩托車、卡車等領(lǐng)域,銷售額實(shí)現(xiàn)快速增長。到了2000年,春蘭空調(diào)銷售額達(dá)到185億,但利潤開始下滑。到了2005年,春蘭多元化的惡果開始顯現(xiàn),持續(xù)出現(xiàn)虧損,最終被迫退出股市。

            在中國白酒行業(yè)里,大量的投入和促銷并沒有建立起新的強(qiáng)勢品牌,而高額的促銷、返利、終端費(fèi)用拖垮了越來越多的企業(yè),行業(yè)的領(lǐng)先品牌依舊是幾乎從不做促銷的茅臺(tái)、五糧液、劍南春。

            12延伸定律

            產(chǎn)品越多,市場越大,陣線越長,賺的錢反而越少。

            娃哈哈品牌從AD鈣奶延伸到瓶裝水、果汁、綠茶、方便面、牛奶、童裝等領(lǐng)域,并在短期內(nèi)實(shí)現(xiàn)了銷量的增長。哇哈哈的品牌延伸一度被國內(nèi)部分營銷人士稱為品牌延伸的的典范,并以此為據(jù)反駁定位理論。但實(shí)際上,娃哈哈的品牌延伸稀釋了人們對該品牌的認(rèn)知,娃哈哈在延伸領(lǐng)域幾乎沒有一個(gè)處于“數(shù)一數(shù)二”的位置,利潤也大幅下滑,這也成為其被迫與達(dá)能合資的主要原因。

            國內(nèi)許多企業(yè)均成長于需求高漲的特殊時(shí)期,憑借制造能力和渠道能力,很容易涉足多產(chǎn)品領(lǐng)域,現(xiàn)在比較成功的企業(yè)幾乎都是一個(gè)品牌橫跨多個(gè)行業(yè),造成了品牌延伸容易做大做好的錯(cuò)覺。隨著各行業(yè)競爭增強(qiáng),企業(yè)要普遍承受“延伸定律”帶來的壓力。看看中國最優(yōu)秀的一些企業(yè),像海爾、康佳、娃哈哈、春蘭,都在進(jìn)行品牌延伸,這種情形著實(shí)堪憂。雖然它們目前仍然“成功”,但就像一架不符合力學(xué)原理的飛機(jī)一樣,飛得越高越讓人擔(dān)心。

            在汽車領(lǐng)域,東風(fēng)也建造了一頂巨大的帳篷,東風(fēng)曾經(jīng)代表卡車,如今東風(fēng)品牌不僅代表重卡、中卡、輕卡、小卡、面包車、客車,還代表法國轎車(東風(fēng)標(biāo)志)、日本轎車(東風(fēng)日產(chǎn))、韓國轎車(東風(fēng)悅達(dá)·起亞)、國產(chǎn)MPV(東風(fēng)風(fēng)行),這就是東風(fēng)品牌最致命的營銷問題。重卡和輕卡分別被專家品牌占據(jù)了兩個(gè)品類的主導(dǎo)位置,東風(fēng)處境尷尬。

            13犧牲定律

            你如果想取得成功,就必須犧牲一些東西。

            中國傳統(tǒng)的老八大名酒中,茅臺(tái)、五糧液、劍南春三個(gè)品牌發(fā)展成了全國性的領(lǐng)導(dǎo)品牌,并占據(jù)了行業(yè)的前三名,其余汾酒、古井貢等五個(gè)品牌則發(fā)展成了區(qū)域性品牌,在同一起跑線上的品牌為何有不同的結(jié)果呢?進(jìn)一步對比就可以發(fā)現(xiàn),三個(gè)全國性品牌共同的特征是聚焦于一個(gè)檔次——很短的產(chǎn)品線;五個(gè)區(qū)域性品牌的共同特點(diǎn)則恰恰相反,全都有多如牛毛的產(chǎn)品,產(chǎn)品覆蓋高中低檔。以汾酒為例,汾酒的產(chǎn)品多達(dá)800多個(gè),其營銷負(fù)責(zé)人還聲稱“還遠(yuǎn)不夠,還無法滿足需求”。

            紅河卷煙廠依靠聚焦于一個(gè)品牌——紅河,同時(shí)紅河品牌聚焦于3-10元之間的中低檔香煙市場,從而獲得了巨大的成功,紅河品牌很快成為國內(nèi)香煙銷量最大的三大品牌之一。其后,紅河不再滿足于低端市場,他先后推出了價(jià)格超過70元的紅河V8、并在10元以上市場先后推出了紅河88、紅河V6等產(chǎn)品,這些產(chǎn)品無一例外地以失敗而告終,同時(shí)也使紅河喪失了成為“中國萬寶路”的絕好機(jī)會(huì)。

            14特性定律

            想要成功,就必須有自己獨(dú)特的認(rèn)知或特性,并以此為中心展開營銷。

            王老吉涼茶以“預(yù)防上火”的特性獲得成功之后,國內(nèi)飲料企業(yè)紛紛推出各種涼茶品牌。雖然表面看來這些品牌都有“賣點(diǎn)”,如:“老翁”宣傳的“臺(tái)灣涼茶”概念;“鄧?yán)?#8221;則先后宣傳“中國涼茶道”和“時(shí)尚涼茶”;“何其正”宣傳“清火氣、養(yǎng)元?dú)?#8221;等,實(shí)際上這些品牌都未能聚焦有效特性,更未能從王老吉的對立面發(fā)掘出針對性這一特征,從而也未能成為涼茶領(lǐng)域的“百事可樂”。

            15坦誠定律

            使自己產(chǎn)品深入人心的最有效方法是,首先承認(rèn)自己的不足,之后再將其轉(zhuǎn)變?yōu)閮?yōu)勢。

            在營銷中使用“坦誠”定律需要極大的勇氣,中國企業(yè)在此方面的實(shí)踐案例較少。當(dāng)企業(yè)面臨危機(jī)的時(shí)候,坦誠往往是必須的。三聚氰胺的危機(jī)使三鹿這個(gè)國內(nèi)奶粉領(lǐng)域的領(lǐng)導(dǎo)品牌在一夜之間化為烏有,甚至影響到了整個(gè)乳品行業(yè),如果在危機(jī)到來的第一時(shí)間三鹿想到了坦誠定律并付諸行動(dòng),及時(shí)向大眾承認(rèn)問題,并召回產(chǎn)品,承擔(dān)責(zé)任的話,三鹿本可以避免這場滅頂之災(zāi)。

            16唯一定律

            大多數(shù)情況下,你的競爭對手只有一個(gè)容易攻破的薄弱環(huán)節(jié),正是這個(gè)環(huán)節(jié),應(yīng)該成為你全力攻擊的焦點(diǎn)。

            可口可樂在中國瓶裝茶市場上進(jìn)行過六次嘗試,先后推出過“天與地”茶飲料、藍(lán)楓日式蜂蜜綠茶、陽光冰爽果茶、雀巢“西式冰爽茶”、茶研工坊“草本茶飲料”,都以失敗而告終,最近推出的“原葉”系列雖耗資巨大,但也前景黯淡。可口可樂要在茶飲料上有所作為,就必須找到競爭對手最易攻破的薄弱環(huán)節(jié),否則一切都將徒勞無功。

            17莫測定律

            除非是你為競爭對手制定計(jì)劃,否則你無法預(yù)測未來

            在競爭最為激烈的家電行業(yè),對未來的預(yù)測和判斷直接影響到中國品牌的整體表現(xiàn)。90年代,中國企業(yè)逐步掌握CRT彩電的核心技術(shù),在中國CRT電視機(jī)市場中,中國彩電企業(yè)更曾占據(jù)98%以上的份額,索尼、東芝等品牌的CRT產(chǎn)品一度撤出中國。但中國彩電企業(yè)都未能預(yù)料到CRT將迅速衰退,液晶顯示很快成為市場主流。2005年開始,索尼、夏普、LG\三星等日韓彩電企業(yè)憑借液晶平板產(chǎn)品卷土重來,迅速占領(lǐng)了中國內(nèi)地一二線城市市場,中國家電品牌鮮有液晶面板生產(chǎn)能力,被迫集體退守三四級市場。

            即使在新技術(shù)的發(fā)展方向,彩電企業(yè)一度普遍認(rèn)為等離子大屏幕彩電將成為市場主流,于是松下、富士通、NEC以及中國的長虹等大批企業(yè)則押寶等離子技術(shù),夏普、三星等企業(yè)則大力投入研發(fā)液晶平板計(jì)數(shù)。如今,市場證明最初不被看好的液晶顯示屏成為了主流。

            18成功定律

            成功經(jīng)常導(dǎo)致自大,而自大導(dǎo)致失敗。

            企業(yè)因?qū)Wⅰ⒕劢苟晒Γ坏┏晒透杏X無所不能,擯棄最初的成功經(jīng)驗(yàn)。從某種程度上講,大部分國內(nèi)知名企業(yè)都經(jīng)歷了盲目擴(kuò)張、多元發(fā)展然后陷入困境這一幾乎必然的過程。從聯(lián)想、海爾、TCL、長虹、奇瑞等各個(gè)企業(yè)身上都可以看到“成功定律”的影子。打破“成功定律”的宿命或許是中國企業(yè)面臨的最大挑戰(zhàn)。

            19失敗定律

            面對失敗,更佳的戰(zhàn)略是盡早發(fā)現(xiàn)錯(cuò)誤并及時(shí)采取措施以停止損失。

            如果失敗無可避免,那么及時(shí)撤退可以起到亡羊補(bǔ)牢的效果。聯(lián)想出售手機(jī)業(yè)務(wù)、創(chuàng)維以2元的低價(jià)出售手機(jī)業(yè)務(wù)都屬于此類舉措。所以,無論是聯(lián)想還是創(chuàng)維,消息宣布之后,股市都以大幅反彈作為回應(yīng),證明及時(shí)放棄屬于重大利好已是共識(shí)。

            20炒作定律

            實(shí)際情況往往與媒體宣傳的相反

            CCTV黃金時(shí)間廣告招標(biāo)的首屆標(biāo)王秦池可謂闡釋“炒作定律”的最佳案例,借助大規(guī)模的廣告投放以及“標(biāo)王”效應(yīng)帶來的大量媒體報(bào)道,在較短時(shí)間內(nèi),秦池的知名度和關(guān)注度空前提升,這同時(shí)也為后來負(fù)面新聞的產(chǎn)生及迅速擴(kuò)散累積了巨大的勢能,最終導(dǎo)致了無可挽回的結(jié)果。

            21趨勢定律

            通過淡化時(shí)尚,就能使產(chǎn)品流行的時(shí)間延長,從而使它更像是一種趨勢。

            與趨勢定律相悖,很多企業(yè)追逐的恰恰是成為時(shí)尚與潮流。健力寶推出的“第五季”飲料正是希望通過時(shí)尚和潮流來推動(dòng)品牌的成長,該品牌涵蓋了可樂、茶飲料、純凈水、果汁等品類,口號(hào)為“現(xiàn)在流行第五季”。在一陣風(fēng)潮之后,第五季幾乎一無所剩。

            22資源定律

            就算是世界上最好的想法,如果沒有啟動(dòng)資金,它也不會(huì)成為現(xiàn)實(shí)。

            如何使市場第一成為心智第一,充分的資源是必須的,國內(nèi)企業(yè)界流傳的“萬燕悖論”:先驅(qū)者往往成為先烈;從某種意義上正是說明了資源的重要性。萬燕發(fā)明了VCD,但是愛多和步步高卻通過大規(guī)模的廣告?zhèn)鞑ヂ氏葥屜日紦?jù)了顧客心智,最終,萬燕只能以失敗收場。因此,對于創(chuàng)業(yè)家而言,找到好的戰(zhàn)略與找到足夠的錢同樣重要。

            營銷領(lǐng)域的黃埔軍校,國內(nèi)洗化領(lǐng)域的領(lǐng)導(dǎo)者寶潔公司深諳資源法則的重要性,保潔一直是國內(nèi)最大的廣告主,每年有多達(dá)16個(gè)億以上的廣告預(yù)算,每一個(gè)新產(chǎn)品的推出都有龐大的預(yù)算提供有力的支持。

            posted @ 2009-05-03 17:57 Randy 閱讀(258) | 評論 (0)編輯 收藏

            2009年3月23日

            C++ 枚舉類型的思考

            至從C語言開始enum類型就被作為用戶自定義分類有限集合常量的方法被引入到了語言當(dāng)中,而且一度成為C++中定義編譯期常量的唯一方法(后來在類中引入了靜態(tài)整型常量)。
            根據(jù)上面對enum類型的描述,有以下幾個(gè)問題:
            1.到底enum所定義出來的類型是一個(gè)什么樣的類型呢?
            2.作為一個(gè)用戶自定義的類型其所占用的內(nèi)存空間是多少呢?
            3.使用enum類型是否真的能夠起到有限集合常量的邊界約束呢?
            4.大家可能都知道enum類型和int類型具有隱示(自動(dòng))轉(zhuǎn)換的規(guī)則,那么是否真的在任何地方都可以使用enum類型的變量來代替int類型的變量呢?

             1. 到底enum所定義出來的類型是一個(gè)什么樣的類型呢?
             在C++中大家都知道僅僅有兩種大的類型分類:POD類型(注(1))和類類型。
             enum所定義的類型其實(shí)屬于POD類型,也就是說它會(huì)參與到POD類型的隱示轉(zhuǎn)換規(guī)則當(dāng)中去,所以才會(huì)出現(xiàn)enum類型與int類型之間的隱示轉(zhuǎn)換現(xiàn)象。
             那么也就是說enum所定義的類型不具備名字空間限定能力(因?yàn)椴粚儆陬愵愋停渌x的常量子具備和enum類型所在名字空間相同的可見性,由于自身沒有名字限定能力,所以會(huì)出現(xiàn)名字沖突現(xiàn)象。
             如:
                       struct CEType
                       {
                           enum EType1 { e1, e2 };
                           enum EType2 { e1, e2 };
                       };
                   上面的例子會(huì)出現(xiàn)e1、e2名字沖突編譯時(shí)錯(cuò)誤,原因就在于枚舉子(e1、e2)是CEType名字空間中的名字,同樣在引用該CEType中的枚舉子時(shí)必須采用CEType::e1這樣的方式進(jìn)行,而不是CEType::EType1::e1來進(jìn)行引用。

                注(1)POD類型:
             你可以將 POD 類型看作是一種來自外太空的用綠色保護(hù)層包裝的數(shù)據(jù)類型,POD 意為“Plain Old Data”(譯者:如果一定要譯成中文,那就叫“徹頭徹尾的老數(shù)據(jù)”怎么樣!)這就是 POD 類型的含義。
             其確切定義相當(dāng)粗糙(參見 C++ ISO 標(biāo)準(zhǔn)),其基本意思是 POD 類型包含與 C 兼容的原始數(shù)據(jù)。
             例如,結(jié)構(gòu)和整型是 POD 類型,但帶有構(gòu)造函數(shù)或虛擬函數(shù)的類則不是。
             POD 類型沒有虛擬函數(shù),基類,用戶定義的構(gòu)造函數(shù),拷貝構(gòu)造,賦值操作符或析構(gòu)函數(shù)。
               為了將 POD 類型概念化,你可以通過拷貝其比特來拷貝它們。此外, POD 類型可以是非初始化的。

             2. 作為一個(gè)用戶自定義的類型其所占用的內(nèi)存空間是多少呢?
                   該問題就是sizeof( EType1 )等于多少的問題,是不是每一個(gè)用戶自定義的枚舉類型都具有相同的尺寸呢?
             在大多數(shù)的32位編譯器下(如:VC++、gcc等)一個(gè)枚舉類型的尺寸其實(shí)就是一個(gè)sizeof( int )的大小,難道枚舉類型的尺寸真的就應(yīng)該是int類型的尺寸嗎?
             其實(shí)不是這樣的,在C++標(biāo)準(zhǔn)文檔(ISO14882)中并沒有這樣來定義,
             標(biāo)準(zhǔn)中是這樣說明的:“枚舉類型的尺寸是以能夠容納最大枚舉子的值的整數(shù)的尺寸”,
             同時(shí)標(biāo)準(zhǔn)中也說名了:“枚舉類型中的枚舉子的值必須要能夠用一個(gè)int類型表述”,
             也就是說,枚舉類型的尺寸不能夠超過int類型的尺寸,但是是不是必須和int類型具有相同的尺寸呢?
             上面的標(biāo)準(zhǔn)已經(jīng)說得很清楚了,只要能夠容納最大的枚舉子的值的整數(shù)就可以了,那么就是說可以是char、short和int。
             例如:
                       enum EType1 { e1 = CHAR_MAX };
                       enum EType2 { e2 = SHRT_MAX };
                       enum EType3 { e3 = INT_MAX  };
                   上面的三個(gè)枚舉類型分別可以用char、short、int的內(nèi)存空間進(jìn)行表示,也就是:
                       sizeof( EType1 ) == sizeof( char  );
                       sizeof( EType2 ) == sizeof( short );
                       sizeof( EType3 ) == sizeof( int   );
                   那為什么在32位的編譯器下都會(huì)將上面三個(gè)枚舉類型的尺寸編譯成int類型的尺寸呢?
                   主要是從32位數(shù)據(jù)內(nèi)存對其方面的要求進(jìn)行考慮的,在某些計(jì)算機(jī)硬件環(huán)境下具有對齊的強(qiáng)制性要求(如:sun SPARC),
                   有些則是因?yàn)椴捎靡粋€(gè)完整的32位字長CPU處理效率非常高的原因(如:IA32)。
                   所以不可以簡單的假設(shè)枚舉類型的尺寸就是int類型的尺寸,說不定會(huì)遇到一個(gè)編譯器為了節(jié)約內(nèi)存而采用上面的處理策略。
                3. 使用enum類型是否真的能夠起到有限集合常量的邊界約束呢?
                   首先看一下下面這個(gè)例子:
                       enum EType { e1 = 0, e2 };
                       void func1( EType e )
                       {
                           if ( e == e1 )
                           {
                               // do something
                           }
                           // do something because e != e1 must e == e2
                       }
                       void func2( EType e )
                       {
                           if ( e == e1 )
                           {
                               // do something
                           }
                           else if ( e == e2 )
                           {
                               // do something
                           }
                       }
                      
                       func1( static_cast<EType>( 2  ) );
                       func2( static_cast<EType>( -1 ) );
                   上面的代碼應(yīng)該很清楚的說明了這樣一種異常的情況了,在使用一個(gè)操出范圍的整型值調(diào)用func1函數(shù)時(shí)會(huì)導(dǎo)致函數(shù)采取不該采取的行為,而第二個(gè)函數(shù)可能會(huì)好一些他僅僅是忽略了超出范圍的值。
                   這就說明枚舉所定義的類型并不是一個(gè)真正強(qiáng)類型的有限常量集合,這樣一種條件下和將上述的兩個(gè)函數(shù)參數(shù)聲明成為整數(shù)類型沒有任何差異。所以以后要注意標(biāo)準(zhǔn)定義中枚舉類型的陷阱。
                  (其實(shí)只有類類型才是真正的強(qiáng)類型)
                  
                4. 是否真的在任何地方都可以使用enum類型的變量來代替int類型的變量呢?
                   通過上面的討論,其實(shí)枚舉類型的變量和整型變量具有了太多的一致性和可互換性,那么是不是在每一個(gè)可以使用int類型的地方都可以很好的用枚舉類型來替代呢?
                   其實(shí)也不是這樣的,畢竟枚舉類型是一個(gè)在編譯時(shí)可區(qū)分的類型,
                   同時(shí)第2點(diǎn)的分析枚舉類型不一定和int類型具有相同的尺寸,這兩個(gè)差異就決定了在某些場合是不可以使用枚舉類型來代替int類型的。
                   如:
                       第一種情況:
                           enum EType { e1 = 0, e2, e3 };
                           EType val;
                           std::cin >> val;
                       第二種情況:
                           enum EType { e1 = 0, e2, e3 };
                           EType val;
                           std::scanf( "%d", &val );
                   上面的兩種情況看是基本上屬于同一種類型的問題,其實(shí)不然。第一種情況會(huì)導(dǎo)致編譯時(shí)錯(cuò)誤,
                   會(huì)因?yàn)閟td::cin沒有定義對應(yīng)的枚舉類型的重載>>運(yùn)算符而出錯(cuò),這就說明枚舉類型是一種獨(dú)立和鑒別的類型;
                   而第二種情況不會(huì)有任何編譯時(shí)問題,但是可能會(huì)導(dǎo)致scanf函數(shù)棧被破壞而使得程序運(yùn)行非法,為什么會(huì)這樣呢?
                   上面已經(jīng)分析過了枚舉類型變量的尺寸不一定和int類型相同,這樣一來我們采用%d就是說將枚舉類型變量val當(dāng)作4字節(jié)的int變量來看待并進(jìn)行參數(shù)壓棧,
                   而在某些編譯器下sizeof( val )等于1字節(jié),這樣scanf函數(shù)就會(huì)將val變量地址中的后續(xù)的三字節(jié)地址也壓入棧中,
                   并對其進(jìn)行賦值,也許val變量后續(xù)的三個(gè)字節(jié)的地址沒有特殊含義可以被改寫(比如是字節(jié)對齊的空地址空間),
                   可能會(huì)認(rèn)為他不會(huì)出現(xiàn)錯(cuò)誤,其實(shí)不然,在scanf函數(shù)調(diào)用結(jié)束后會(huì)進(jìn)行棧清理,
                   這樣一來會(huì)導(dǎo)致scanf函數(shù)清理了過多的地址空間,從而破壞了外圍函數(shù)的棧指針的指向,從而必然會(huì)導(dǎo)致程序運(yùn)行時(shí)錯(cuò)誤。

            由上面的說明枚舉類型有那么多的缺點(diǎn),那我們怎樣才能夠有一個(gè)類型安全的枚舉類型呢?實(shí)際上,在最新的 C++0x 標(biāo)準(zhǔn)草案中有關(guān)于枚舉作用域問題的提案,但最終的解決方案會(huì)是怎樣的就無法未卜先知了,畢竟對于象 C++ 這樣使用廣泛的語言來說,任何特性的增刪和修改都必須十分小心謹(jǐn)慎。

            當(dāng)然,我們可以使用一些迂回的方法來解決這個(gè)問題(C++ 總是能給我們很多驚喜和意外)。

            例如,我們可以把枚舉值放在一個(gè)結(jié)構(gòu)里,并使用運(yùn)算符重載來逼近枚舉的特性:

            struct FileAccess {
                enum __Enum {
                    Read = 0x1,
                    Write = 0x2
                };
                __Enum _value; // 枚舉值

                FileAccess(int value = 0) : _value((__Enum)value) {}
                FileAccess& operator=(int value) {
                    this->_value = (__Enum)value;
                    return *this;
                }
                operator int() const {
                    return this->_value;
                }
            };

            我們現(xiàn)在可以按照希望的方式使用這個(gè)枚舉類型:

            FileAccess access = FileAccess::Read;

            并且,因?yàn)槲覀兲峁┝说?int 類型的轉(zhuǎn)換運(yùn)算符,因此在需要 int 的地方都可以使用它,例如 switch 語句:

            switch (access) {
                case FileAccess::Read:
                    break;
                case FileAccess::Write:
                    break;
            }

            當(dāng)然我們不愿意每次都手工編寫這樣的結(jié)構(gòu)。通過使用宏,我們可以很容易做到這一點(diǎn):

            #define DECLARE_ENUM(E) \
            struct E \
            { \
            public: \
                E(int value = 0) : _value((__Enum)value) { \
                } \
                E& operator=(int value) { \
                    this->_value = (__Enum)value; \
                    return *this; \
                } \
                operator int() const { \
                    return this->_value; \
                } \
            \
                enum __Enum {

            #define END_ENUM() \
                }; \
            \
            private: \
                __Enum _value; \
            };

            我們現(xiàn)在可以按如下的方式定義前面的枚舉,并且不比直接寫 enum 復(fù)雜多少。

            DECLARE_ENUM(FileAccess)
                Read = 0x1,
                Write = 0x2,
            END_ENUM()

            DECLARE_ENUM(FileShare)
                Read = 0x1,
                Write = 0x2,
            END_ENUM()

            posted @ 2009-03-23 18:16 Randy 閱讀(6365) | 評論 (7)編輯 收藏

            2009年3月11日

            關(guān)于團(tuán)隊(duì)決策

            版權(quán)聲明:轉(zhuǎn)載時(shí)請以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
            http://spelldev.blogbus.com/logs/11066253.html

            關(guān)于團(tuán)隊(duì)決策

            轉(zhuǎn)載請注明作者和出處,如有商業(yè)用途請聯(lián)系作者kingcrimson at tom.com 

            目前的企業(yè)中,團(tuán)隊(duì)決策已經(jīng)成為一個(gè)必不可少的環(huán)節(jié)。團(tuán)隊(duì)決策具有以下幾個(gè)好處:(1)信息量不斷擴(kuò)大,知識(shí)隨之增長;

            (2)多種不同的觀點(diǎn)在一起擦出更多火花;

            (3)團(tuán)隊(duì)成員執(zhí)行時(shí)更愿意接收;

            (4)眾人決策比個(gè)人決策更具有準(zhǔn)確性、權(quán)威性、合理性;

            (5)大家共同達(dá)成結(jié)論,分享和擴(kuò)散責(zé)任。

            迅速而有效的做出決策,是現(xiàn)代化企業(yè)的一個(gè)必備的要求。如何做出合理而有效的決策,如何統(tǒng)一團(tuán)隊(duì)意見,減少分歧,是團(tuán)隊(duì)決策中要面臨的首要問題。

                   在日常工作中,我們經(jīng)常會(huì)遇到以下情景的問題:會(huì)議拖沓冗長,問題懸而未決,與會(huì)人員各抒己見,大家沒精打采,甚至發(fā)生口舌之爭……像這樣的問題,對于企業(yè)的工作進(jìn)度是十分有害的。在通常的工作進(jìn)度中,有數(shù)量眾多的問題需要團(tuán)隊(duì)成員達(dá)成一個(gè)解決辦法。如果不能進(jìn)行有效的團(tuán)隊(duì)決策,將會(huì)對整個(gè)項(xiàng)目造成嚴(yán)重影響。

                   例如,長時(shí)間未解決問題,會(huì)使團(tuán)隊(duì)成員的心理產(chǎn)生焦慮情緒,破壞他們的積極性。團(tuán)隊(duì)成員會(huì)對工作環(huán)境及決策人產(chǎn)生質(zhì)疑。時(shí)間久了,團(tuán)隊(duì)的凝聚力會(huì)下降,同時(shí)工作質(zhì)量也會(huì)急速下降。另一方面,迅速的解決問題,卻沒有有效的解決問題,也是對團(tuán)隊(duì)工作的一個(gè)危害。比如,團(tuán)隊(duì)的意見沒有達(dá)成一致,但決議已經(jīng)確定。一些團(tuán)隊(duì)成員找不到合理的理由來相信這種決策,他們就會(huì)在工作中不能有效的貫徹這個(gè)決議。團(tuán)隊(duì)工作是一項(xiàng)發(fā)揮每個(gè)人的作用的工作方式,只要一個(gè)環(huán)節(jié)出了差錯(cuò),就可能會(huì)導(dǎo)致全盤皆負(fù)。同時(shí),這種工作狀態(tài)也會(huì)影響到團(tuán)隊(duì)配合和整體士氣。

                   因此,對團(tuán)隊(duì)決策的要求最重要就在于“效率”。不僅要做出合理而有效的決策,還要迅速、敏捷,減少工作進(jìn)度的延誤。

             

                   為了達(dá)成此目標(biāo),可以參照以下的解決方案。

                   首先,在進(jìn)行團(tuán)隊(duì)決策之前,必須存在一個(gè)主持人,或者協(xié)調(diào)者。他最好不是決策者,并且不帶有主觀意向。主持人的工作將是團(tuán)隊(duì)決策的關(guān)鍵部分,貫穿于整個(gè)流程。團(tuán)隊(duì)決策的工作模式,和其它工作一樣,都是按照提出問題、分析問題、解決問題的流程進(jìn)行的。以下便是團(tuán)隊(duì)決策的簡單流程:

             明確問題,對問題進(jìn)行評估。

            作為發(fā)起團(tuán)隊(duì)決策的主持人,在初期準(zhǔn)備階段,必須先明確問題,對問題進(jìn)行評估。主持人應(yīng)該制定出問題的重要等級,以便于采取何種方式來進(jìn)行團(tuán)對決策。如果是一個(gè)復(fù)雜的問題,需要將問題轉(zhuǎn)化為若干的小問題,以減少?zèng)Q策中的復(fù)雜度。在這個(gè)階段,還要收集與問題有關(guān)的相關(guān)資料,這樣可以使決策過程更有據(jù)可循,加快決策流程。總之,準(zhǔn)備工作做的越充分,對于之后的決策流程是越有利的。

             制定合理的決策人選。

            這個(gè)步驟也是非常重要的。對于主持人來說,他可能不具備制定人選的權(quán)力。(這部分一般是顯而易見的或者由團(tuán)隊(duì)領(lǐng)導(dǎo)來決定)但是主持人可以對決策人選進(jìn)行編排和搭配。一般對于小規(guī)模的團(tuán)隊(duì),問題可能不是很大。但是大規(guī)模的團(tuán)隊(duì),如果不進(jìn)行合理的編排,將會(huì)使決策過程的變得混亂而拖沓。這里,可以采取幾個(gè)有效的方式來編排決策人員。比如,按職能劃分,按個(gè)人對于問題的重要程度劃分等。常見的做法是,把一個(gè)大的團(tuán)隊(duì)劃分成若干小組,每個(gè)小組盡可能達(dá)成一致意見,最后再統(tǒng)一達(dá)成決策。

             選擇合適的決策方式。

            一般的決策方式就是會(huì)議。不管是何種類型的會(huì)議,都是決策過程中必不可少的過程。作為主持人,需要制定用何種方式來進(jìn)行會(huì)議。以下有一些可以參考的方式:

            1.         頭腦風(fēng)暴法

            頭腦風(fēng)暴法的一般步驟:

            (1)所有的人無拘無束提意見,越多越好,越多越受歡迎。

            (2)通過頭腦風(fēng)暴產(chǎn)生點(diǎn)子,把它公布出來,供大家參考,讓大家受啟發(fā)。

            (3)鼓勵(lì)結(jié)合他人的想法提出新的構(gòu)想。

            (4)與會(huì)者不分職位高低,都是團(tuán)隊(duì)成員,平等議事。

            (5)不允許在點(diǎn)子匯集階段評價(jià)某個(gè)點(diǎn)子的好壞,也不許反駁別人的意見。

            研究表明,大家在無拘無束、相互激蕩的情形下匯集的點(diǎn)子往往比一般方法所匯集的點(diǎn)子多70%

            2.         德爾菲法

            德爾菲法又叫專家群體決策法,就是由一群專家來達(dá)成團(tuán)隊(duì)的決策。

            (1)德爾菲法的特點(diǎn)

            讓專家以匿名群眾的身份參與問題的解決,有專門的工作小組通過信函的方式進(jìn)行交流,避免大家面對面討論帶來消極的影響。

            (2)德爾菲法的一般步驟

            由工作小組確定問題的內(nèi)容,并設(shè)計(jì)一系列征詢解決問題的調(diào)查表;

            將調(diào)查表寄給專家,請他們提供解決問題的意見和思路,專家間不溝通,相互保密;

            專家開始填寫自己的意見和想法,并把它寄回給工作小組;

            處理這一輪征詢的意見,找出共同點(diǎn)和各種意見的統(tǒng)計(jì)分析情況;將統(tǒng)計(jì)結(jié)果再次返還專家,專家結(jié)合他人意見和想法,修改自己的意見并說明原因;

            將修改過的意見進(jìn)行綜合處理再寄給專家,這樣反復(fù)幾次,直到獲得滿意答案。

            德爾菲法用于團(tuán)隊(duì)決策可以進(jìn)行一些變通:比方說將專家換成團(tuán)隊(duì)成員、加入外部專家、為了減少成本,提高效率可以不采取信函方式,而直接溝通。

            3.         異地思考法

            異地思考法就是讓團(tuán)隊(duì)離開原來的工作環(huán)境,擺脫日常事物的干擾,到另外的地方進(jìn)行專門研究。比方說企業(yè)領(lǐng)導(dǎo)把管理人員和專業(yè)技術(shù)人員請到鄉(xiāng)村別墅,住上兩天,專門研究企業(yè)發(fā)展中出現(xiàn)的重大問題。讓參與決策的人離開辦公室,到一個(gè)新的環(huán)境討論問題,使他們擺脫工作環(huán)境中上下級界限的問題,隔離繁瑣事情的干擾。由于大家暢所欲言、思想活躍,就可以提出一種高水平的構(gòu)想,最后做出高水平的決策。

             

            這些方式只是簡單的模板或示例。不管采用哪一種方法。對于主持人來說,必須做到:組織良好的決策流程,控制決策流程的實(shí)施,協(xié)調(diào)決策過程中的氣氛。

             整理決議,結(jié)束決策過程。

            這個(gè)步驟是一個(gè)關(guān)鍵,標(biāo)志著決策的成形。在團(tuán)隊(duì)決策中,一般會(huì)存在一個(gè)最終決策人的角色。他可能是團(tuán)隊(duì)的領(lǐng)導(dǎo),或者是這個(gè)問題的最大成分負(fù)責(zé)人。而主持人的工作,就要協(xié)調(diào)好最終決策人和團(tuán)隊(duì)成員的關(guān)系,并輔佐最終決策人做出決策。最終決策人對于問題有自己的意見,同時(shí)他也可能是問題解決方案的最終制定者。為了避免最終決策人對團(tuán)隊(duì)決策造成不利的影響,比如團(tuán)隊(duì)成員因?yàn)槟承┰虿辉富虿桓野l(fā)表自己的意見,主持人需要控制好最終決策人的參與方式。這需要注意幾個(gè)問題:

            1.                  不要讓最終決策人過早的參與到團(tuán)隊(duì)決策中。這并不時(shí)是說在時(shí)間方面,而是不要讓最終決策人的意見干涉到團(tuán)隊(duì)成員制定決策的過程。如果最終決策人過早的給出了自己的意見,其它團(tuán)隊(duì)成員可能會(huì)被限制住思考的界限,或者失去決策的動(dòng)力。

            2.                  不要讓最終決策人與問題分離太遠(yuǎn)。作為最終決策人,必須付出比團(tuán)隊(duì)成員更多的精力去了解問題和分析問題,才能保證決策的正確實(shí)施。如果對問題了解不充分,會(huì)使團(tuán)隊(duì)成員對最終決策產(chǎn)生懷疑和抵觸。

            3.                  明確責(zé)任承擔(dān)方式。這是團(tuán)隊(duì)決策中一個(gè)敏感部分。主持人和最終決策人必須制定出合理的責(zé)任承擔(dān)方式,并告知團(tuán)隊(duì)成員。這個(gè)過程可能比較艱難,但一定要評估出決策帶來的風(fēng)險(xiǎn),并制定出后續(xù)的解決方案,盡量使風(fēng)險(xiǎn)帶來的損失減少到最小。

             

            以上便是團(tuán)隊(duì)決策一個(gè)簡單流程。真正的實(shí)施,還要根據(jù)具體情況做出合理的應(yīng)用和變化。團(tuán)隊(duì)決策中,會(huì)面臨著很多問題,使團(tuán)隊(duì)決策變得艱難而緩慢。其中最容易出現(xiàn)的兩個(gè)誤區(qū),就是團(tuán)隊(duì)偏極(group polarization集一思考(groupthink

            團(tuán)隊(duì)偏極是指團(tuán)隊(duì)的綜合決策偏向極端化。1961年,美國麻省理工大學(xué)做過一項(xiàng)研究,分兩階段進(jìn)行:第一階段是問卷方式調(diào)查工業(yè)屆從業(yè)人員對某些后果不確定問題的態(tài)度。第二階段是邀請受調(diào)查者出席一場座談會(huì),要他們面對調(diào)查問卷上同樣的問題,并做出決策。最后比較兩階段的決策時(shí)發(fā)現(xiàn)團(tuán)體決策遠(yuǎn)較個(gè)人決策為極端,個(gè)人決策比較謹(jǐn)慎,團(tuán)體決策比較冒險(xiǎn)。后來又經(jīng)過心理學(xué)家反復(fù)研究發(fā)現(xiàn)團(tuán)體決策具有極端化傾向,但是極端化的方向不僅限于冒險(xiǎn)激進(jìn)的一端,而是也可能出現(xiàn)在謹(jǐn)慎保守的另一端。如果團(tuán)體成員多數(shù)是屬于冒險(xiǎn)激進(jìn)分子,那么他們所做出的決策就會(huì)更為冒險(xiǎn)激進(jìn),如果團(tuán)體成員多數(shù)屬于謹(jǐn)慎保守者,那么他們所做出的決策就會(huì)更為謹(jǐn)慎保守。團(tuán)體偏極的現(xiàn)象在社會(huì)生活中是很常見的。社會(huì)上有不同團(tuán)體社團(tuán),有的保守,有的激進(jìn),經(jīng)常可見的現(xiàn)象是你與保守派中的個(gè)人接觸,他未必保守,你與激進(jìn)派中個(gè)人接觸,他未必激進(jìn),可是一經(jīng)團(tuán)體決策,就馬上體現(xiàn)出很強(qiáng)的保守或激進(jìn)性了。所以現(xiàn)在很多人回想起當(dāng)年文化大革命中做紅衛(wèi)兵的一些經(jīng)歷,怎么都不會(huì)相信,以自己的個(gè)性當(dāng)年會(huì)做出那么離譜的事情,這大體也是因?yàn)閳F(tuán)體決策的關(guān)系。

            對于團(tuán)隊(duì)偏極的另一個(gè)解釋是是:參與決策者由于生怕被別人認(rèn)為自己是極端主義者,個(gè)人在決策時(shí)往往會(huì)回避一些自己認(rèn)為是比較理想(極端)的立場。然而在小組討論各成員將自己個(gè)人看法與其他人的立場比較時(shí),會(huì)發(fā)現(xiàn)別人的意見更加接近于自己心目中的理想,也就是說可能聽到別人所持的理由更優(yōu)于自己。這種發(fā)現(xiàn)加重了他自己態(tài)度上原本極端的程度,促使他(她)改變原先決定而選擇相比之下更加理想(極端)的決定,從而整體上使意見更加偏向極端。

            相對于團(tuán)隊(duì)偏極,集一思考的害處更大。所謂的集一思考是指某項(xiàng)團(tuán)隊(duì)決策是在全體成員毫無異議的情況下達(dá)成的。本來任何問題的取決或多或少都會(huì)有所爭議,就事而言有利有弊,就人而言,見仁見智。總不至于團(tuán)體討論時(shí)全數(shù)通過毫無疑義。但是集一思考這種現(xiàn)象是確實(shí)存在的,專政社會(huì)里集一思考不足為奇怪,這里就不列舉了,但是像美國這樣的民主社會(huì),也還是屢見不鮮,甚至往往還是牽涉到國家興亡的大事。比如1942年羅斯福總統(tǒng)任內(nèi)的日軍偷襲珍珠港事件,1961年肯尼迪總統(tǒng)任內(nèi)秘密訂立的突襲古巴豬玀灣方案,甚至1972年尼克松總統(tǒng)任內(nèi)的水門事件無一不是有智囊團(tuán)所作的團(tuán)隊(duì)決策所致。

            由于要取得意見一致的壓力太大從而壓制了決策成員對行動(dòng)計(jì)劃的客觀評估的思維方式。由于要努力地維護(hù)團(tuán)隊(duì)的凝聚力和取得意見一致,成員們不自覺地放棄了挑剔的想法和對行動(dòng)計(jì)劃的優(yōu)缺點(diǎn)進(jìn)行檢討。然而所放棄的恰恰是科學(xué)決策的必須過程。因此“集一思考”的典型結(jié)果就是考慮不周的決定。

            在四種處境下“集一思考”發(fā)生的可能性比較大:危機(jī)處境,高度團(tuán)結(jié)的團(tuán)隊(duì),缺乏局外人的判斷和檢視,以及過于強(qiáng)調(diào)自己意見的團(tuán)隊(duì)領(lǐng)導(dǎo)。

            要避以上兩個(gè)誤區(qū),需要團(tuán)隊(duì)決策主持人嚴(yán)謹(jǐn)?shù)呢瀼貓F(tuán)隊(duì)決策流程,并制定出面對問題的不同解決方案。主持人可以在團(tuán)隊(duì)決策進(jìn)行前,進(jìn)行幾次假想的模擬或試驗(yàn),考慮到不同問題出現(xiàn)的可能性,并制定出相應(yīng)的解決辦法。并且在團(tuán)隊(duì)決策進(jìn)行中,主持人可以根據(jù)不同的情形,對決策過程進(jìn)行相應(yīng)的調(diào)整。

             

            綜上所述,團(tuán)隊(duì)決策是一項(xiàng)技術(shù),也是一門藝術(shù)。以上只是關(guān)于團(tuán)隊(duì)決策的一個(gè)籠統(tǒng)的概述和討論。不管采用何種方式,對團(tuán)隊(duì)決策高度重視并有效的控制,將是企業(yè)創(chuàng)造高效率工作方式的資本。

                

            King Lee

            2007-1-14

            posted @ 2009-03-11 12:07 Randy 閱讀(503) | 評論 (0)編輯 收藏

            2008年12月24日

            Visual Studio 2005常用快捷鍵

            調(diào)試快捷鍵

            F6: 生成解決方案
            Ctrl+F6: 生成當(dāng)前項(xiàng)目
            F7: 查看代碼
            Shift+F7: 查看窗體設(shè)計(jì)器
            F5: 啟動(dòng)調(diào)試
            Ctrl+F5: 開始執(zhí)行(不調(diào)試)
            Shift+F5: 停止調(diào)試
            Ctrl+Shift+F5: 重啟調(diào)試
            F9: 切換斷點(diǎn)
            Ctrl+F9: 啟用/停止斷點(diǎn)
            Ctrl+Shift+F9: 刪除全部斷點(diǎn)
            F10: 逐過程
            Ctrl+F10: 運(yùn)行到光標(biāo)處
            F11: 逐語句

            編輯快捷鍵

            Shift+Alt+Enter: 切換全屏編輯
            Ctrl+B,T / Ctrl+K,K: 切換書簽開關(guān)
            Ctrl+B,N / Ctrl+K,N: 移動(dòng)到下一書簽
            Ctrl+B,P: 移動(dòng)到上一書簽
            Ctrl+B,C: 清除全部標(biāo)簽

            Ctrl+I: 漸進(jìn)式搜索
            Ctrl+Shift+I: 反向漸進(jìn)式搜索
            Ctrl+F: 查找
            Ctrl+Shift+F: 在文件中查找
            F3: 查找下一個(gè)
            Shift+F3: 查找上一個(gè)
            Ctrl+H: 替換
            Ctrl+Shift+H: 在文件中替換
            Alt+F12: 查找符號(hào)(列出所有查找結(jié)果)
            Ctrl+Shift+V: 剪貼板循環(huán)

            Ctrl+左右箭頭鍵: 一次可以移動(dòng)一個(gè)單詞
            Ctrl+上下箭頭鍵: 滾動(dòng)代碼屏幕,但不移動(dòng)光標(biāo)位置。
            Ctrl+Shift+L: 刪除當(dāng)前行
            Ctrl+M,M: 隱藏或展開當(dāng)前嵌套的折疊狀態(tài)
            Ctrl+M,L: 將所有過程設(shè)置為相同的隱藏或展開狀態(tài)
            Ctrl+M,P: 停止大綱顯示
            Ctrl+E,S: 查看空白
            Ctrl+E,W: 自動(dòng)換行
            Ctrl+G: 轉(zhuǎn)到指定行
            Shift+Alt+箭頭鍵: 選擇矩形文本
            Alt+鼠標(biāo)左按鈕: 選擇矩形文本
            Ctrl+Shift+U: 全部變?yōu)榇髮?br>Ctrl+U: 全部變?yōu)樾?br>
            代碼快捷鍵

            Ctrl+J / Ctrl+K,L: 列出成員
            Ctrl+Shift+空格鍵 / Ctrl+K,P: 參數(shù)信息
            Ctrl+K,I: 快速信息
            Ctrl+E,C / Ctrl+K,C: 注釋選定內(nèi)容
            Ctrl+E,U / Ctrl+K,U: 取消選定注釋內(nèi)容

            Ctrl+K,M: 生成方法存根
            Ctrl+K,X: 插入代碼段
            Ctrl+K,S: 插入外側(cè)代碼

            F12: 轉(zhuǎn)到所調(diào)用過程或變量的定義

            窗口快捷鍵


            Ctrl+W,W: 瀏覽器窗口
            Ctrl+W,S: 解決方案管理器
            Ctrl+W,C: 類視圖
            Ctrl+W,E: 錯(cuò)誤列表
            Ctrl+W,O: 輸出視圖
            Ctrl+W,P: 屬性窗口
            Ctrl+W,T: 任務(wù)列表
            Ctrl+W,X: 工具箱
            Ctrl+W,B: 書簽窗口
            Ctrl+W,U: 文檔大綱

            Ctrl+D,B: 斷點(diǎn)窗口
            Ctrl+D,I: 即時(shí)窗口
            Ctrl+Tab: 活動(dòng)窗體切換
            Ctrl+Shift+N: 新建項(xiàng)目
            Ctrl+Shift+O: 打開項(xiàng)目
            Ctrl+Shift+S: 全部保存
            Shift+Alt+C: 新建類
            Ctrl+Shift+A: 新建項(xiàng)



            F5是用調(diào)試模式運(yùn)行,對于程序拋出的異常會(huì)進(jìn)行檢查的,有些異常調(diào)試器會(huì)忽略,有些異常會(huì)談出對話框。哪些異常忽略,哪些談出對話框是可以設(shè)置的。
              
            Ctrl+F5是直接運(yùn)行程序,調(diào)試器完全不管程序運(yùn)行狀態(tài),所以所有未被俘獲的異常都回導(dǎo)致程序直接退出。

            posted @ 2008-12-24 17:32 Randy 閱讀(441) | 評論 (0)編輯 收藏

            2008年11月22日

            開源日志系統(tǒng)log4cplus

                 摘要: ### 簡介 ### log4cplus是C++編寫的開源的日志系統(tǒng),前身是java編寫的log4j系統(tǒng).受Apache Software License保護(hù)。作者是Tad E. Smith。log4cplus具有線程安全、靈活、以及多粒度控制的特點(diǎn),通過將信息劃分優(yōu)先級使其可以面向程序調(diào)試、運(yùn)行、測試、和維護(hù)等全生命周期; 你可以選擇將信息輸出到屏幕、文件、NT event log、甚至是遠(yuǎn)程...  閱讀全文

            posted @ 2008-11-22 12:16 Randy 閱讀(1770) | 評論 (0)編輯 收藏

            2008年11月14日

            gtest

            斷言:
            ASSERT_TRUE(condition); EXPECT_TRUE(condition); condition為真
            ASSERT_FALSE(condition);    EXPECT_FALSE(condition);    condition為假

            ASSERT_EQ(expected, actual);    EXPECT_EQ(expected, actual);    expected == actual
            ASSERT_NE(val1, val2);  EXPECT_NE(val1, val2);  val1 != val2
            ASSERT_LT(val1, val2);  EXPECT_LT(val1, val2);  val1 < val2
            ASSERT_LE(val1, val2);  EXPECT_LE(val1, val2);  val1 <= val2
            ASSERT_GT(val1, val2);  EXPECT_GT(val1, val2);  val1 > val2
            ASSERT_GE(val1, val2);  EXPECT_GE(val1, val2);  val1 >= val2

            ASSERT_STREQ(expected_str, actual_str); EXPECT_STREQ(expected_str, actual_str); 兩個(gè)C字符串有相同的內(nèi)容
            ASSERT_STRNE(str1, str2);   EXPECT_STRNE(str1, str2); 兩個(gè)C字符串有不同的內(nèi)容
            ASSERT_STRCASEEQ(expected_str, actual_str); EXPECT_STRCASEEQ(expected_str, actual_str); 兩個(gè)C字符串有相同的內(nèi)容,忽略大小寫
            ASSERT_STRCASENE(str1, str2);   EXPECT_STRCASENE(str1, str2);   兩個(gè)C字符串有不同的內(nèi)容,忽略大小寫

            ASSERT_*版本的斷言失敗時(shí)會(huì)產(chǎn)生致命失敗,并結(jié)束當(dāng)前函數(shù)。EXPECT_*版本的斷言產(chǎn)生非致命失敗,而不會(huì)中止當(dāng)前函數(shù)。通常更推薦使用EXPECT_*斷言,因?yàn)樗鼈冞\(yùn)行一個(gè)測試中可以有不止一個(gè)的錯(cuò)誤被報(bào)告出來。但如果在編寫斷言如果失敗,就沒有必要繼續(xù)往下執(zhí)行的測試時(shí),你應(yīng)該使用ASSERT_*斷言。

             因?yàn)槭〉腁SSERT_*斷言會(huì)立刻從當(dāng)前的函數(shù)返回,可能會(huì)跳過其后的一些的清潔代碼,這樣也許會(huì)導(dǎo)致空間泄漏。根據(jù)泄漏本身的特質(zhì),這種情況也許值得修復(fù),也可能不值得我們關(guān)心——所以,如果你得到斷言錯(cuò)誤的同時(shí),還得到了一個(gè)堆檢查的錯(cuò)誤,記住上面我們所說的這一點(diǎn)。

             要提供一個(gè)自定義的錯(cuò)誤消息,只需要使用<<操作符,或一個(gè)<<操作符的序列,將其輸入到框架定義的宏中。下面是一個(gè)例子:

            ASSERT_EQ(x.size(), y.size()) << "Vectors x and y are of unequal length";   
            for (int i = 0; i < x.size(); ++i) {   
              EXPECT_EQ(x[i], y[i]) 
            << "Vectors x and y differ at index " << i;   
            }
              
            任何能夠被輸出到ostream中的信息都可以被輸出到一個(gè)斷言宏中——特別是C字符串和string對象。如果一個(gè)寬字符串(wchar_t*,windows上UNICODE模式TCHAR*或std::wstring)被輸出到一個(gè)斷言中,在打印時(shí)它會(huì)被轉(zhuǎn)換成UTF-8編碼。

            如果需要將信息輸出到XML中。在參數(shù)中使用:
            --gtest_output=xml:test.xml
            就可以了

            posted @ 2008-11-14 22:54 Randy 閱讀(907) | 評論 (0)編輯 收藏

            僅列出標(biāo)題  下一頁
            <2025年6月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            導(dǎo)航

            統(tǒng)計(jì)

            常用鏈接

            留言簿(3)

            隨筆檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            久久久精品国产| 九九久久精品国产| 一本一道久久综合狠狠老 | 久久最新精品国产| 久久青青草原亚洲av无码 | 97久久超碰国产精品2021| 久久精品中文字幕久久| 无码任你躁久久久久久老妇| 偷窥少妇久久久久久久久| 久久久女人与动物群交毛片| 久久国产午夜精品一区二区三区| 人妻无码精品久久亚瑟影视| 久久久久免费精品国产| 亚洲精品无码久久久久AV麻豆| 久久天堂AV综合合色蜜桃网| 国产精品VIDEOSSEX久久发布| 久久综合久久综合亚洲| 97久久精品人人澡人人爽| 漂亮人妻被中出中文字幕久久| 99久久国产免费福利| 久久精品国产亚洲AV香蕉| 狠狠色丁香婷婷综合久久来来去| 无码AV波多野结衣久久| 久久久久国色AV免费看图片| 国产成人综合久久综合| 亚洲va久久久噜噜噜久久狠狠 | 久久www免费人成精品香蕉| 亚洲精品蜜桃久久久久久| 欧美久久亚洲精品| 亚洲精品高清久久| 久久91亚洲人成电影网站| 模特私拍国产精品久久| 久久久久18| 无码乱码观看精品久久| 久久一区二区免费播放| 欧美与黑人午夜性猛交久久久| 国产999精品久久久久久| 94久久国产乱子伦精品免费| 久久久久久免费一区二区三区| 久久中文字幕一区二区| 久久精品国产亚洲欧美|