“呵呵,終于成了!”小P伸個(gè)懶腰,感覺(jué)舒服極了。他回過(guò)頭看老C,正在電腦前鍵盤(pán)前扣扣扣扣的不知在忙什么。
“老C……”小P把頭湊到老C的電腦旁邊,想看看老C在忙什么。
“k!你干什么,嚇?biāo)牢伊恕?#8221;老C被冷不丁的嚇了一跳,“呀呀,下回不要這么神出鬼沒(méi)的,多嚇人……”
“呵呵,騷蕊騷蕊,你這是干什么呢,這么專(zhuān)心?”
“哦,我在學(xué)習(xí)一個(gè)IDE,叫eclipse,我發(fā)現(xiàn)用它的CDT插件開(kāi)發(fā)C/C++程序還挺方便的。”
“噢?是么?這個(gè)東東和VS6.0比哪個(gè)好用啊?”
“沒(méi)有質(zhì)的區(qū)別,我感覺(jué)關(guān)鍵是個(gè)人習(xí)慣的問(wèn)題。”老C想了想,“主要是一個(gè)慢慢熟悉的過(guò)程,在開(kāi)始的時(shí)候有些不習(xí)慣,但是習(xí)慣了就感覺(jué)好很多。”
“你為什么要用這個(gè)東東啊?”小P有些奇怪。
“嗯,因?yàn)樗情_(kāi)源的啊(現(xiàn)在是2003年……),你用的是什么開(kāi)發(fā)環(huán)境啊?”老C問(wèn)。
“以前一直用的VS6.0,現(xiàn)在好像要出來(lái)VS.NET,我想試試……”
“你掏錢(qián)買(mǎi)的嗎?”
“怎么可能,當(dāng)然是破解后的啊。”
“那么就是D版啦?”
“也可以這么說(shuō),有什么問(wèn)題嗎?大家都是這么用的啊?”小P有些奇怪。
“唉,社會(huì)環(huán)境啊……”老C有些失落,“我就不和你討論知識(shí)產(chǎn)權(quán)保護(hù)的法律問(wèn)題啦,就算我們買(mǎi)正版的錢(qián)在清朝末年就已經(jīng)掏過(guò)了,但是……”老C想想應(yīng)當(dāng)怎么和小P解釋自己的想法,“現(xiàn)在環(huán)境不同了,主要的競(jìng)爭(zhēng)規(guī)則都是我們的對(duì)手制定的,但是——如果我們想積極的融入和他們的競(jìng)爭(zhēng)而不是自我封閉——我們就不得不遵守這些規(guī)則……”
“囧,看來(lái)你還是個(gè)大齡JY啊。”
“呵呵,無(wú)所謂大齡FQ或者JY,我想說(shuō)的是我們要認(rèn)清現(xiàn)實(shí),畢竟我們還是要融入國(guó)際社會(huì)的……算了,扯遠(yuǎn)了,就算是為了維護(hù)我們國(guó)內(nèi)自己的市場(chǎng),我們自己也要遵守一定的規(guī)則啊……”
“那和我有什么關(guān)系?”
“有關(guān)系啊,如果我們每個(gè)人都用D版,就會(huì)導(dǎo)致軟件市場(chǎng)規(guī)則被破壞,辛苦研發(fā)的因?yàn)檠邪l(fā)成本不得不賣(mài)高一點(diǎn)價(jià)格的產(chǎn)品就會(huì)賣(mài)不出去,那么我們畢業(yè)的時(shí)候因?yàn)槭袌?chǎng)的萎縮就可能找不到工作……”
“是么?有這么恐怖嗎?那么我用國(guó)內(nèi)的軟件就買(mǎi)正版,國(guó)外軟件用盜版就行了唄。”小P有些得意的說(shuō)。
“那是更糟糕的事情,因?yàn)镈版泛濫導(dǎo)致國(guó)內(nèi)的正版軟件賣(mài)不出去,本來(lái)我們自主的軟件可能還有一些成本優(yōu)勢(shì),如果公平競(jìng)爭(zhēng)的話(huà)也會(huì)有一席之地,但是因?yàn)镈版的盛行,我們自己的產(chǎn)業(yè)始終無(wú)法發(fā)展起來(lái),最后不得不進(jìn)行外包工作成為上游廠(chǎng)商的打工仔……算了,我們先不要討論這個(gè)問(wèn)題,再說(shuō)我的看法也不一定正確。”
“真有這么嚴(yán)重嗎?看來(lái)我要重新認(rèn)識(shí)這個(gè)問(wèn)題了。”小P有些嚴(yán)肅起來(lái),“但是不用D版我的很多正常的活動(dòng)就無(wú)法進(jìn)行了啊,比如編程,上網(wǎng)……要不我就使用文本編輯器+命令行?一步到位成為牛人?”
“呵呵,這是兩個(gè)話(huà)題。再說(shuō)不使用D版我們一樣可以生活的很好,甚至更好。”
“?”
“就比如IDE,eclipse是開(kāi)源的,我們就可以免費(fèi)的使用,而且是在規(guī)則允許之內(nèi)的。上網(wǎng)可以用firefox,文檔編輯可以用openoffice……總之我們?nèi)粘>幋a,寫(xiě)文檔的東西足夠多了,如果你股溝一下,可以找到很多類(lèi)似的開(kāi)源項(xiàng)目。”
“是嗎?”
“是啊,就算是桌面環(huán)境也可以使用開(kāi)源的啊,你看看我的桌面……”
“和我的xp很像啊……”
“嗯,我用的是kubuntu,你可以在網(wǎng)上搜索一下ubuntu。這是一個(gè)linux平臺(tái)上的開(kāi)源項(xiàng)目,我們平常工作中需要的軟件它基本上都可以提供,而且還有不錯(cuò)的多媒體播放器,聊天工具……基本上你平常在windows上可以找到的工具這里都有……”
“噢?是嗎?”
“類(lèi)似的項(xiàng)目很多的,你可以在網(wǎng)上找找,選一款你喜歡的。我就用過(guò)kubuntu,ubuntu和fedora(redhat),感覺(jué)都挺不錯(cuò)的。而且你可以在一套系統(tǒng)里面安裝多個(gè)桌面環(huán)境,我就裝過(guò)KDE和GNOME,最后因?yàn)镼t的原因選擇了kubuntu和KDE……原來(lái)用過(guò)KDevelop寫(xiě)一些小代碼,最近想換個(gè)平臺(tái)無(wú)關(guān)的,就想試試eclipse+CDT。”
“等等等等,好多東西我都沒(méi)有聽(tīng)說(shuō)過(guò),你在學(xué)校的BBS上給我發(fā)一封郵件吧,把這些東西的名字寫(xiě)下來(lái),我去網(wǎng)上搜搜。”
“呵呵,好的。這些東西都體現(xiàn)了free的精神……”
“Free?太好了,所以說(shuō)都是免費(fèi)的,而且沒(méi)有版權(quán)的問(wèn)題……”
“等等,free并不是指的沒(méi)有fee,而是一種精神。就是說(shuō)你可以修改,發(fā)布,傳播任何一個(gè)具有GPL的軟件,自己隨便怎么折騰都可以,但是,不能用于商業(yè)目的。如果用于商業(yè)的話(huà),還是需要費(fèi)用的。這就好像一幫油菜的人湊到一起來(lái)開(kāi)發(fā),在使用和修改上,大家都是不受限制的,但是要拿去賣(mài)錢(qián),那就不行!”
“不能拿來(lái)賺錢(qián)啊?”小P有些失望,“那么GPL是什么東東?”
“GPL是GNU General Public License 的縮寫(xiě),你可以到網(wǎng)上查查它的具體內(nèi)容,它的一個(gè)重要標(biāo)志就是copyleft……”
“Copyleft?”
“是啊是啊,是和copyright對(duì)應(yīng)的……”
“哈哈,沒(méi)有想到這些人還挺幽默的……”小P樂(lè)了,“不能賺錢(qián),那寫(xiě)軟件的人如何生活啊?”
“他們不靠這個(gè)賺錢(qián),一般都是業(yè)余時(shí)間搞的,或者在一些非盈利基金,要么是捐助下完成的,總之都是一些衣食無(wú)憂(yōu)的,物質(zhì)條件極大豐富的油菜人物做的事情,不是我等還在為生活掙扎的小民可以理解的……”
“哦……”小P有些明白了,“所以說(shuō)共產(chǎn)主義的基礎(chǔ)是資本主義的高級(jí)階段了!那個(gè)時(shí)候大家的物質(zhì)生活極大豐富,勞動(dòng)成了第一需要……”
老C有些吃驚的看著小P,覺(jué)得自己還需要重新認(rèn)識(shí)一下他:“沒(méi)錯(cuò),有點(diǎn)這個(gè)意思,沒(méi)想到你理解到這么高的層次……”
“哪里哪里,我只是比較……油菜……而已,哈哈。”小P審慎的謙虛了一下,“對(duì)了,剛才我說(shuō)到使用文本編輯器+命令行……”
“是的是的,”老C接道,“現(xiàn)在有些人的迷思而已,認(rèn)為牛人都是使用gedit+command line的,尤其自己動(dòng)手寫(xiě)makefile就更牛了……”
“不是么?”
“不一定是,”老C肯定的點(diǎn)點(diǎn)頭,“牛人肯定是可以這么做的,但是……你會(huì)放著現(xiàn)成的成熟工業(yè)品,比如你腳上的nike不穿,蹬著一雙手工精心打造的布鞋到處跑嗎?”
“呵呵,”小P覺(jué)得這個(gè)比喻很有趣,“我想不會(huì)吧……”
“是啊是啊,所謂文本編輯器+命令行是能力,但是具有這樣的能力并不一定要這樣做。我們可以自己造鞋,但是,有必要花費(fèi)這個(gè)時(shí)間和精力嗎?曾經(jīng)有很牛的人寫(xiě)書(shū)建議大家在項(xiàng)目開(kāi)發(fā)的時(shí)候要使用automake工具的!”(我們這個(gè)時(shí)空的C++委員會(huì)主席(還是秘書(shū)?)的書(shū),講C++編碼規(guī)范的,大家猜猜是什么書(shū)?^_^)
“那么就是說(shuō)也沒(méi)有必要學(xué)習(xí)自己寫(xiě)makefile了吧。”
“不是啊,我只是說(shuō)在項(xiàng)目開(kāi)發(fā)過(guò)程中沒(méi)有必要這樣做,但是這樣的能力——如果你想進(jìn)入更高的境界——還是需要具備的,可是,前提是,請(qǐng)你先用好自己的 IDE,寫(xiě)好自己的程序。”老C給小P解釋?zhuān)?#8220;做到熟悉你的IDE就像熟悉你家一樣,因?yàn)檐浖_(kāi)發(fā)需要一個(gè)良好的,被你熟悉的環(huán)境;而且不要經(jīng)常更換 IDE,因?yàn)樽龅绞煜ひ粋€(gè)IDE還是很費(fèi)功夫的,不要總把時(shí)間花費(fèi)到磨刀上。所以我建議你也試試eclipse+CDT吧,因?yàn)樗仁情_(kāi)源的,又是跨平臺(tái)的,這樣你不會(huì)因?yàn)椴僮飨到y(tǒng)在windows和linux之間切換而產(chǎn)生切換IDE的苦惱。”
“是啊,這樣聽(tīng)起來(lái)也挺不錯(cuò)的。”
“嗯,有空去eclipse的網(wǎng)頁(yè)看看吧,順便看看mingwin。查查相關(guān)網(wǎng)頁(yè)google一下。”老C建議道。
“好的,這樣我就有了VS和eclipse兩樣工具了。”小P有些興奮起來(lái)。
“等到我們用熟悉了,我想我們還可以研究一下emacs+gcc,”老C說(shuō)道,“江湖上有一個(gè)傳說(shuō),如果你熟悉emacs+gcc,就再?lài)L試嘗試IDE;如果你習(xí)慣于IDE,那么請(qǐng)嘗試一下emacs。”
“嗯,那應(yīng)當(dāng)是以后的事情了。”
“是啊是啊,我們不需要太著急,否則就像一個(gè)古老的神秘傳說(shuō)……”
“什么?”
“在很久很久很久久久久……以前,有一個(gè)人看到別人蓋了三層樓,心里很是羨慕,于是……”
“哈哈哈哈,老C我發(fā)現(xiàn)你也挺油菜的啊!”
“呵呵,”老C停止了和小P的說(shuō)笑,覺(jué)得下午的疲倦一掃而空,“對(duì)了,剛才你在忙什么呢?”
“喔,我在做C++的練習(xí)題目。”
“是么?這么刻苦,厲害。什么題目?”
“呵呵,還挺有趣的,說(shuō)是用C++的格式輸出cout在屏幕上輸出各種對(duì)齊的數(shù)據(jù),用*號(hào)組成一個(gè)五角星,還有……”
“天,功不是這樣用的,習(xí)不是這樣學(xué)的……”老C有些囧,“扔掉那本爛書(shū)吧,沒(méi)有這樣學(xué)習(xí)C++的。”
“?,那應(yīng)當(dāng)怎么學(xué)?”
“我們學(xué)習(xí)任何一個(gè)東西,應(yīng)當(dāng)都是先整體的過(guò)一遍,有一個(gè)整體的,居高臨下的,提綱挈領(lǐng)的全局觀,然后第二遍再深入細(xì)節(jié)。這樣才可以抓住重點(diǎn),不至于淹沒(méi)在細(xì)節(jié)的海洋中。”老C開(kāi)始諄諄教導(dǎo),“比如C++,我們開(kāi)始學(xué)習(xí)的時(shí)候應(yīng)當(dāng)先有一個(gè)總體的概念,比如說(shuō)面向?qū)ο螅?lèi),繼承和封裝,再深入一些是模版,泛型,正交,STL,TR1。而且學(xué)習(xí)的過(guò)程應(yīng)當(dāng)是迭代的——幾乎學(xué)習(xí)任何東西都是這樣——先形成一個(gè)大局觀,再在細(xì)節(jié)上深入把握。比如學(xué)習(xí)數(shù)學(xué),我們先認(rèn)識(shí)自然數(shù),然后四則運(yùn)算,如何在一定范圍內(nèi)解決問(wèn)題;然后加入了0,再學(xué)習(xí)加入0后的正整數(shù)的四則運(yùn)算,再解決一些問(wèn)題,比如簡(jiǎn)單的方程等等;然后加入負(fù)數(shù)的概念,然后是加入負(fù)數(shù)的四則運(yùn)算……最后是虛數(shù),復(fù)數(shù);最后是微積分,級(jí)數(shù),以及他們所要解決的問(wèn)題。如果一上來(lái)你就埋頭于如何解二元一次方程,請(qǐng)問(wèn)你的數(shù)學(xué)能學(xué)好嗎?你知道學(xué)習(xí)數(shù)學(xué)有什么用嗎?遇到實(shí)際問(wèn)題需要發(fā)揮你的數(shù)學(xué)功夫的時(shí)候你能解決問(wèn)題嗎?所以走路一定要正確,如果走在錯(cuò)誤的路上,花費(fèi)的功夫越多,偏離的越遠(yuǎn),反而不如不走……”
“哦,我只知道學(xué)習(xí)語(yǔ)言要多運(yùn)用,多實(shí)踐,還真沒(méi)有想過(guò)方法的問(wèn)題。”小P有些郁悶,“那么怎么學(xué)呢?”
“呵呵,你大概沒(méi)有看《Teach Yourself Programming in Ten Years》這篇文章吧……利用你的朋友,利用你的網(wǎng)絡(luò)啊。”
“?”小P突然明白了,“是不是你想讓我請(qǐng)你吃飯啊?”
“呵呵,聰明啊,”老C覺(jué)得和小P溝通起來(lái)真是通順,“包括但不限于今天的晚飯,回來(lái)我?guī)湍惆惭b一下eclipse和mingwin,我們一起來(lái)學(xué)習(xí)這個(gè)IDE,同時(shí)再給你說(shuō)說(shuō)如何學(xué)習(xí)C++。”
“好啊,走,吃飯去,我請(qǐng)!你說(shuō)是幾食堂吧。”
“太~小氣了吧,好歹也要請(qǐng)個(gè)蓋澆飯吧……”
“呵呵,我其實(shí)是開(kāi)玩笑的,我們南門(mén)口新開(kāi)了一家刀削面……”
“我暈,我倒……走吧……”
(這不是他們最后一次談?wù)撽P(guān)于C++的話(huà)題)