linux 下的iconv命令可以把Windows默認(rèn)GBK編碼的文件轉(zhuǎn)成Linux下用的UTF-8編碼。
Example: $ iconv -f GBK -t UTF-8 file_name -o file_name
1. 安裝命令行版的texlive: sudo apt-get install texlive-full
2. 安裝一個(gè)比較有幫助性的編輯器: sudo apt-get install texmaker
3. 安裝中文環(huán)境: sudo apt-get install latex-cjk-all
A useful webiste http://chixi.an.blog.163.com/blog/static/29359272201262952120729/
To install/upgrade to TeX Live 2012:
- Open a terminal with Ctrl+Alt+T
Add the texlive-backports PPA by typing the below (enter your password when prompted):
sudo apt-add-repository ppa:texlive-backports/ppa
Then type:
sudo apt-get update
Installation:
If you are installing TeX Live for the first time, type:
sudo apt-get install texlive
If you already have TeX Live installed and are upgrading, type:
sudo apt-get upgrade
Warning: this will also upgrade all other packages on your Ubuntu system for which upgrades are available. If you do not wish to do this, please use the previous sudo apt-get install texlive
instead.
轉(zhuǎn)自:http://blog.csdn.net/lsg32/article/details/8058491
posted @
2013-02-02 15:27 Seraphi 閱讀(286) |
評(píng)論 (0) |
編輯 收藏
在新版本的UBUNTU里不支持WINDOWS的wubi安裝,要用如下方式:
Ubuntu 12.04 wubi的安裝
一、在12.04里,在Windows內(nèi)安裝那個(gè)選項(xiàng)被禁用了,只能通過(guò)以下指令開(kāi)啟,X為光驅(qū)盤(pán)符:
代碼:
X:\wubi.exe --force-wubi
posted @
2013-02-01 12:27 Seraphi 閱讀(257) |
評(píng)論 (0) |
編輯 收藏
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]
@="Internet Explorer"
"InfoTip"="@C:\\WINDOWS\\system32\\zh-CN\\ieframe.dll.mui,-881"
"LocalizedString"="@C:\\WINDOWS\\system32\\zh-CN\\ieframe.dll.mui,-880"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\DefaultIcon]
@="C:\\Program Files\\Internet Explorer\\iexplore.exe,-32528"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\NoAddOns]
@="在沒(méi)有加載項(xiàng)的情況下啟動(dòng)"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\NoAddOns\Command]
@="C:\\Program Files\\Internet Explorer\\iexplore.exe about:NoAdd-ons"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\Open]
@="打開(kāi)(O)"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\Open\Command]
@="C:\\Program Files\\Internet Explorer\\iexplore.exe"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\屬性(R)]
@=""
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\Shell\屬性(R)\Command]
@="Rundll32.exe Shell32.dll,Control_RunDLL Inetcpl.cpl"
[HKEY_CLASSES_ROOT\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}\ShellFolder]
@=""
"Attributes"=dword:00000010
"HideFolderVerbs"=""
"WantsParseDisplayName"=""
"HideOnDesktopPerUser"=""
@="C:\\WINDOWS\\system32\\ieframe.dll,-190"
"HideAsDeletePerUser"=""
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]
@="Internet Explorer"
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace\{B416D21B-3B22-B6D4-BBD3-BBD452DB3D5B}]
@="Windows Media"
posted @
2013-01-06 15:13 Seraphi 閱讀(179) |
評(píng)論 (0) |
編輯 收藏
set tags=tags;
set backspace=indent,eol,start
set shiftwidth=4
set tabstop=4
set expandtab
set encoding=utf8
set fileencodings=utf8,gbk
set nocompatible "去掉討厭的有關(guān)vim一致性模式,避免以前版本的一些bug和局限.
set number "顯示行號(hào).
set background=dark "背景顏色暗色.(我覺(jué)得不錯(cuò),保護(hù)眼睛.)
syntax on "語(yǔ)法高亮顯示.(這個(gè)肯定是要的.)
set history=50 "設(shè)置命令歷史記錄為50條.
set autoindent "使用自動(dòng)對(duì)起,也就是把當(dāng)前行的對(duì)起格式應(yīng)用到下一行.
set smartindent "依據(jù)上面的對(duì)起格式,智能的選擇對(duì)起方式,對(duì)于類(lèi)似C語(yǔ)言編.
set tabstop=4 "設(shè)置tab鍵為4個(gè)空格.
set shiftwidth=4 "設(shè)置當(dāng)行之間交錯(cuò)時(shí)使用4個(gè)空格
set showmatch "設(shè)置匹配模式,類(lèi)似當(dāng)輸入一個(gè)左括號(hào)時(shí)會(huì)匹配相應(yīng)的那個(gè)右括號(hào)
set incsearch
"搜索選項(xiàng).(比如,鍵入"/bo",光標(biāo)自動(dòng)找到第一個(gè)"bo"所在的位置.)hi Comment ctermfg=darkmagenta
hi String ctermfg=darkred
hi Number ctermfg=darkblue
"是否生成一個(gè)備份文件.(備份的文件名為原文件名加“~“后綴
"(我不喜歡這個(gè)備份設(shè)置,一般注釋掉.)
"if has(“vms.
" set nobackup
"else
" set backup
"endif
關(guān)于注釋字體顏色的修改,可以參考:http://blog.csdn.net/a670449625/article/details/48051249
posted @
2012-11-09 19:44 Seraphi 閱讀(193) |
評(píng)論 (0) |
編輯 收藏
http://www.coli.uni-saarland.de/~csporled/page.php?id=tools
這個(gè)站點(diǎn)列舉出了幾乎所有NLP和IR領(lǐng)域能夠直接使用的好用的工具包~
posted @
2012-10-29 10:25 Seraphi 閱讀(303) |
評(píng)論 (0) |
編輯 收藏
轉(zhuǎn)載自:cool shell,作者:陳皓
From:http://coolshell.cn/articles/7992.html
先說(shuō)明一下,我不希望本文變成語(yǔ)言爭(zhēng)論貼。希望下面的文章能讓我們客觀理性地了解C++這個(gè)語(yǔ)言。(另,我覺(jué)得技術(shù)爭(zhēng)論不要停留在非黑即白的二元價(jià)值觀上,這樣爭(zhēng)論無(wú)非就是比誰(shuí)的嗓門(mén)大,比哪一方的觀點(diǎn)強(qiáng),毫無(wú)價(jià)值。我們應(yīng)該多看看技術(shù)是怎么演進(jìn)的,怎么取舍的。)
事由
周五的時(shí)候,我在我的微博上發(fā)了一個(gè)貼說(shuō)了一下一個(gè)網(wǎng)友給我發(fā)來(lái)的C++程序的規(guī)范和內(nèi)存管理寫(xiě)的不是很好(后來(lái)我刪除了,因?yàn)楫?dāng)事人要求),我并非批判,只是想說(shuō)明其實(shí)程序員是需要一些“疫苗”的,并以此想開(kāi)一個(gè)“程序員疫苗的網(wǎng)站”,結(jié)果,@簡(jiǎn)悅云風(fēng)同學(xué)直接回復(fù)到:“不要用 C++ 直接用 C , 就沒(méi)那么多坑了。”就把這個(gè)事帶入了語(yǔ)言之爭(zhēng)。
我又發(fā)了一條微博:
@左耳朵耗子
: 說(shuō)C++比C的坑更多的人我可以理解,但理性地思考一下。C語(yǔ)言的坑也不少啊,如果說(shuō)C語(yǔ)言有90個(gè)坑,那么C++就是100個(gè)坑(另,我看很多人都把C語(yǔ)言上的坑也歸到了C++上來(lái)),但是C++你得到的東西更多,封裝,多態(tài),繼承擴(kuò)展,泛型編程,智能指針,……,你得到了500%東西,但卻只多了10%的坑,多值啊。
結(jié)果引來(lái)了更多的回復(fù)(只節(jié)選了一些言論):
- @淘寶褚霸也在微博里說(shuō):“自從5年前果斷扔掉C++,改用了ansi c后,我的生活質(zhì)量大大提升,沒(méi)有各種坑坑我。”
- @Laruence在其微博里說(shuō): “我確實(shí)用不到, C語(yǔ)言靈活運(yùn)用struct, 可以很好的滿(mǎn)足這些需求.//@左耳朵耗子: 封裝,繼承,多態(tài),模板,智能指針,這也用不到?這也學(xué)院派?//@Laruence: 問(wèn)題是, 這些東西我都用不到… C語(yǔ)言是工程師搞的, C++是學(xué)院派搞的”
那么,C++的坑真的多么?我還請(qǐng)大家理性地思考一下。
C++真的比C差嗎?
我們先來(lái)看一個(gè)圖——《各種程序員的嘴臟的對(duì)比》,從這個(gè)圖上看,C程序員比C++的程序員在注釋中使用fuck的字眼多一倍。這說(shuō)明了什么?我個(gè)人覺(jué)得這說(shuō)明C程序員沒(méi)有C++程序員淡定。

不要太糾結(jié)上圖,只是輕松一下,我沒(méi)那么無(wú)聊,讓我們來(lái)看點(diǎn)真正的論據(jù)。
相信用過(guò)C++的程序員知道,C++的很多特性主要就是解決C語(yǔ)言中的各種不完美和缺陷:(注:C89、C99中許多的改進(jìn)正是從C++中所引進(jìn)的)
- 用namespace解決了很C函數(shù)重名的問(wèn)題。
- 用const/inline/template代替了宏,解決了C語(yǔ)言中宏的各種坑。
- 用const的類(lèi)型解決了很多C語(yǔ)言中變量值莫名改變的問(wèn)題。
- 用引用代替指針,解決了C語(yǔ)言中指針的各種坑。這個(gè)在Java里得到徹底地體現(xiàn)。
- 用強(qiáng)類(lèi)型檢查和四種轉(zhuǎn)型,解決了C語(yǔ)言中亂轉(zhuǎn)型的各種坑。
- 用封裝(構(gòu)造,析構(gòu),拷貝構(gòu)造,賦值重載)解決了C語(yǔ)言中各種復(fù)制一個(gè)結(jié)構(gòu)體(struct)或是一個(gè)數(shù)據(jù)結(jié)構(gòu)(link, hashtable, list, array等)中淺拷貝的內(nèi)存問(wèn)題的各種坑。
- 用封裝讓你可以在成員變量加入getter/setter,而不會(huì)像C一樣只有文件級(jí)的封裝。
- 用函數(shù)重載、函數(shù)默認(rèn)參數(shù),解決了C中擴(kuò)展一個(gè)函數(shù)搞出來(lái)像func2()之類(lèi)的ugly的東西。
- 用繼承多態(tài)和RTTI解決了C中亂轉(zhuǎn)struct指針和使用函數(shù)指針的諸多讓代碼ugly的問(wèn)題。
- 用RAII,智能指針的方式,解決了C語(yǔ)言中因?yàn)槌霈F(xiàn)需要釋放資源的那些非常ugly的代碼的問(wèn)題。
- 用OO和GP解決各種C語(yǔ)言中用函數(shù)指針,對(duì)指針亂轉(zhuǎn)型,及一大砣if-else搞出來(lái)的ugly的泛型。
- 用STL解決了C語(yǔ)言中算法和數(shù)據(jù)結(jié)構(gòu)的N多種坑。
(注意:上面我沒(méi)有提重載運(yùn)算符和異常,前者寫(xiě)出來(lái)的代碼并不易讀和易維護(hù)(參看《
恐怖的C++語(yǔ)言》后面的那個(gè)示例),坑也多,后者并不成熟(相對(duì)于Java的異常),但是我們需要知道try-catch這種方式比傳統(tǒng)的不斷地判斷函數(shù)返回值和errno形成的大量的if-else在代碼可讀性上要好很多)
上述的這些東西填了不知有多少的C語(yǔ)言編程和維護(hù)的坑。少用指針,多用引用,試試autoptr,用用封裝,繼承,多態(tài)和函數(shù)重載…… 你面對(duì)的坑只會(huì)比C少,不會(huì)多。
C++的坑有多少?
C++的坑真的不多,如果你能花兩到三周的時(shí)候讀一下《Effecitve C++》里的那50多個(gè)條款,你就知道C++里的坑并不多,而且,有很多條款告訴我們C++是怎么解決C的坑的。然后,你可以讀讀《Exceptional C++》和《More Exceptional C++》,你可以了解一下C++各種問(wèn)題的解決方法和一些常見(jiàn)的經(jīng)典錯(cuò)誤。
當(dāng)然,C++在解決了很多C語(yǔ)的坑的同時(shí),也因?yàn)镺O和泛型又引入了一些坑。消一些,加一些,我個(gè)人感覺(jué)上總體上只比C多10%左右吧。但是你有了開(kāi)發(fā)速度更快,代碼更易讀,更易維護(hù)的500%的利益。
另外,不可否認(rèn)的是,C++中的代碼出了錯(cuò)誤,有時(shí)候很難搞,而且似乎用C++的人會(huì)覺(jué)得C++更容易出錯(cuò)?我覺(jué)得主要是下面幾個(gè)原因:
- C和C++都沒(méi)學(xué)好,大多數(shù)人用C++寫(xiě)C,所以,C的坑和C++的坑合并了。
- C++太靈活了,想怎么搞就怎么搞,所以,各種不經(jīng)意地濫用和亂搞。
另外,C++的編譯對(duì)標(biāo)準(zhǔn)C++的實(shí)現(xiàn)各異,支持地也千差萬(wàn)別,所以會(huì)有一些比較奇怪的問(wèn)題,但是如果你一般用用C++的封裝,繼承,多態(tài),以及namespace,const, refernece, inline, templete, overloap, autoptr,還有一些OO 模式,并不會(huì)出現(xiàn)奇怪的問(wèn)題。
而對(duì)于STL中的各種坑,我覺(jué)得是程序員們還對(duì)GP(泛型編程)理解得還不夠,STL是泛型編程的頂級(jí)實(shí)踐!屬于是大師級(jí)的作品,一般人很難理解。必需承認(rèn)STL寫(xiě)出來(lái)的代碼和編譯錯(cuò)誤的確相當(dāng)復(fù)雜晦澀,太難懂了。這也是C++的一個(gè)詬病。
這和Linus說(shuō)的一樣 —— “C++是一門(mén)很恐怖的語(yǔ)言,而比它更恐怖的是很多不合格的程序員在使用著它”。注意我飄紅了“很多不合格的程序員”!
我覺(jué)得C++并不適合初級(jí)程序員使用,C++只適合高級(jí)程序員使用(參看《21天學(xué)好C++》和《C++學(xué)習(xí)自信心曲線(xiàn)》),正如《Why C++》中說(shuō)的,C++適合那些對(duì)開(kāi)發(fā)維護(hù)效率和系統(tǒng)性能同時(shí)關(guān)注的高級(jí)程序員使用。
這就好像飛機(jī)一樣,開(kāi)飛機(jī)很難,開(kāi)飛機(jī)要注意的東西太多太多,對(duì)駕駛員的要求很高,但你不能說(shuō)飛機(jī)這個(gè)工具很爛,開(kāi)飛機(jī)的坑太多。(注:我這里并不是說(shuō)C++是飛機(jī),C是汽車(chē),C++和C的差距,比飛機(jī)到汽車(chē)的差距少太多太多,這里主要是類(lèi)比,我們對(duì)待C++語(yǔ)言的心態(tài)!)
C++的初衷
理解C++設(shè)計(jì)的最佳讀本是《C++演化和設(shè)計(jì)》,在這本書(shū)中Stroustrup說(shuō)了些事:
1)Stroustrup對(duì)C是非常欣賞,實(shí)際上早期C++許多的工作是對(duì)于C的強(qiáng)化和凈化,并把完全兼容C作為強(qiáng)制性要求。C89、C99中許多的改進(jìn)正是從C++中所引進(jìn)。可見(jiàn),Stroustrup對(duì)C語(yǔ)言的貢獻(xiàn)非常之大。今天不管你對(duì)C++怎么看,C++的確擴(kuò)展和進(jìn)化了C,對(duì)C造成了深遠(yuǎn)的影響。
2)Stroustrup對(duì)于C的抱怨主要來(lái)源于兩個(gè)方面——在C++兼容C的過(guò)程中遇到了不少設(shè)計(jì)實(shí)現(xiàn)上的麻煩;以及守舊的K&R C程序員對(duì)Stroustrup的批評(píng)。很多人說(shuō)C++的惡夢(mèng)就是要去兼容于C,這并不無(wú)道理(Java就干的比C++徹底得多),但這并不是Stroustrup考慮的,Stroustrup一邊在使盡渾身解數(shù)來(lái)兼容C,另一方面在拼命地優(yōu)化C。
3)Stroustrup在書(shū)中直接說(shuō),C++最大的競(jìng)爭(zhēng)對(duì)手正是C,他的目的就是——C能做到的,C++也必須做到,而且要做的更好。大家覺(jué)得是不是做到了?有多少做到了,有多少還沒(méi)有做到?
4)對(duì)于同時(shí)關(guān)注的運(yùn)行效率和開(kāi)發(fā)效率的程序員,Stroustrup多次強(qiáng)調(diào)C++的目標(biāo)是——“在保證效率與C語(yǔ)言相當(dāng)?shù)那闆r下,加強(qiáng)程序的組織性;能保證同樣功能的程序,C++更短小”,這正是淺封裝的核心思想。而不是過(guò)渡設(shè)計(jì)的OO。(參看:面向?qū)ο笫莻€(gè)騙局)
5)這本書(shū)中舉了很多例子來(lái)回應(yīng)那些批評(píng)C++有運(yùn)行性能問(wèn)題的人。C++在其第二個(gè)版本中,引入了虛函數(shù)機(jī)制,這是C++效率最大的瓶頸了,但我個(gè)人認(rèn)為虛函數(shù)就是多了一次加法運(yùn)算,但讓我們的代碼能有更好的組織,極大增加了程序的閱讀和降底了維護(hù)成本。(注:Lippman的《深入探索C++對(duì)象模型》也說(shuō)明了C++不比C的程序在運(yùn)行性能低。Bruce的《Think in C++》也說(shuō)C++和C的性能相差只有5%)
6)這本書(shū)中還講了一些C++的痛苦的取舍,印象最深的就是多重繼承,提出,拿掉,再被提出,反復(fù)很多次,大家在得與失中不斷地辯論和取舍。這個(gè)過(guò)程讓我最大的收獲是——a) 對(duì)于任何一種設(shè)計(jì)都有好有壞,都只能偏重一方,b) 完全否定式的批評(píng)是不好的心態(tài),好的心態(tài)應(yīng)該是建設(shè)性地批評(píng)。
我對(duì)C++的感情
我先說(shuō)說(shuō)我學(xué)C++的經(jīng)歷。
我畢業(yè)時(shí),是直接從C跳過(guò)C++學(xué)Java的,但是學(xué)Java的時(shí)候,不知道為什么Java要設(shè)計(jì)成這樣,只好回頭看C++,結(jié)果學(xué)C++的時(shí)候又有很多不懂,又只得回頭看C,最后發(fā)現(xiàn),C -> C++ -> Java的過(guò)程,就是C++填C的坑,Java填C++的坑的過(guò)程。
注,下面這些東西可以看到Java在填C/C++坑:
- Java徹底廢棄了指針(指針這個(gè)東西,絕對(duì)讓這個(gè)社會(huì)有幾百億的損失),使用引用。
- Java用GC解決了C++的各種內(nèi)存問(wèn)題的詬病,當(dāng)然也帶來(lái)了GC的問(wèn)題,不過(guò)功大于過(guò)。
- Java對(duì)異常的支持比C++更嚴(yán)格,讓編程更方便了。
- Java沒(méi)有像C++那樣的template/macro/函數(shù)對(duì)象/操作符重載,泛型太晦澀,用OO更容易一些。
- Java改進(jìn)了C++的構(gòu)造、析構(gòu)、拷貝構(gòu)造、賦值。
- Java對(duì)完全拋棄了C/C++這種面向過(guò)程的編程方式,并廢棄了多重繼承,更OO(如:用接口來(lái)代替多重繼承)
- Java比較徹底地解決了C/C++自稱(chēng)多年的跨平臺(tái)技術(shù)。
- Java的反射機(jī)制把這個(gè)語(yǔ)言提升了一個(gè)高度,在這個(gè)上面可以構(gòu)建各種高級(jí)用法。
- C/C++沒(méi)有一些比較好的類(lèi)庫(kù),比如UI,線(xiàn)程 ,I/O,字符串處理等。(C++0x補(bǔ)充了一些)
- 等等……
當(dāng)然時(shí)代還在前進(jìn),這個(gè)演變的過(guò)程還在C#和Go上體現(xiàn)著。不過(guò)我學(xué)習(xí)了C -> C++ -> Java這個(gè)填坑演進(jìn)的過(guò)程,讓我明白了很多東西:
- 我明白了OO是怎么一回事,重要的是明白了OO的封裝,繼承,和多態(tài)是怎么實(shí)現(xiàn)的。(參看我以前寫(xiě)過(guò)的《C++虛函數(shù)表解析》和《C++對(duì)象內(nèi)存布局》)
- 我明白了STL的泛型編程和Java的各種花哨的技術(shù)是怎么一回事,以及那些很花哨的編程方法和技術(shù)。
- 我明白了C,C++,Java的各中坑,這就好像玩火一樣,我知道怎么玩火不會(huì)燒身了。
我從這個(gè)學(xué)習(xí)過(guò)程中得到的最大的收獲不是語(yǔ)言本身,而是各式各樣的編程技術(shù)和方法,和技術(shù)的演進(jìn)的過(guò)程,這比語(yǔ)言本身更重要!(在這個(gè)角度上學(xué)習(xí),你看到的不是一個(gè)又一個(gè)的坑,你看到的是——各式各樣讓你可以爬得更高的梯子)
我對(duì)C++的感情有三個(gè)過(guò)程:先是喜歡地要死,然后是恨地要死,現(xiàn)在的又愛(ài)又恨,愛(ài)的是這個(gè)語(yǔ)言,恨的是很多不合格的人在濫用和凌辱它。
C++的未來(lái)
C++語(yǔ)言發(fā)展大概可以分為三個(gè)階段(摘自Wikipedia):
- 第一階段從80年代到1995年。這一階段C++語(yǔ)言基本上是傳統(tǒng)類(lèi)型上的面向?qū)ο笳Z(yǔ)言,并且憑借著接近C語(yǔ)言的效率,在工業(yè)界使用的開(kāi)發(fā)語(yǔ)言中占據(jù)了相當(dāng)大份額;
- 第二階段從1995年到2000年,這一階段由于標(biāo)準(zhǔn)模板庫(kù)(STL)和后來(lái)的Boost等程式庫(kù)的出現(xiàn),泛型程式設(shè)計(jì)在C++中占據(jù)了越來(lái)越多的比重性。當(dāng)然,同時(shí)由于Java、C#等語(yǔ)言的出現(xiàn)和硬件價(jià)格的大規(guī)模下降,C++受到了一定的沖擊;
- 第三階段從2000年至今,由于以L(fǎng)oki、MPL等程式庫(kù)為代表的產(chǎn)生式編程和模板元編程的出現(xiàn),C++出現(xiàn)了發(fā)展歷史上又一個(gè)新的高峰,這些新技術(shù)的出現(xiàn)以及和原有技術(shù)的融合,使C++已經(jīng)成為當(dāng)今主流程式設(shè)計(jì)語(yǔ)言中最復(fù)雜的一員。
在《Why C++? 王者歸來(lái)》中說(shuō)了 ,性能主要就是要省電,省電就是省錢(qián),在數(shù)據(jù)中心還不明顯,在手機(jī)上就更明顯了,這就是為什么Android 支持C++的原因。所以,在NB的電池或是能源出現(xiàn)之前,如果你需要注重程序的運(yùn)行性能和開(kāi)發(fā)效率,并更關(guān)注程序的運(yùn)性能,那么,應(yīng)該首選 C++。這就是iOS開(kāi)發(fā)也支持C++的原因。

今天的C++11中不但有更多更不錯(cuò)的東西,而且,還填了更多原來(lái)C++的坑。(參看:C++11 Wiki,C++ 11的主要特性)

總結(jié)
- C++并不完美,但學(xué)C++必然讓你受益無(wú)窮。
- 是那些不合格的、想對(duì)編程速成的程序員讓C++變得坑多。
最后,非常感謝能和“@簡(jiǎn)悅云風(fēng)”,“@淘寶諸霸”,“@Laruence”一起討論這個(gè)問(wèn)題!無(wú)論你們的觀點(diǎn)怎么樣,我都和你們“在一起”,嘿嘿嘿……
(全文完)
posted @
2012-08-06 12:58 Seraphi 閱讀(424) |
評(píng)論 (0) |
編輯 收藏
轉(zhuǎn)載Cool Shell,作者:陳皓
From:http://coolshell.cn/articles/2250.html
下面是一個(gè)《Teach Yourself C++ in 21 Days》的流程圖,請(qǐng)各位程序員同仁認(rèn)真領(lǐng)會(huì)。如果有必要,你可以查看這個(gè)圖書(shū)以作參照:http://www.china-pub.com/27043

看完上面這個(gè)圖片,我在想,我學(xué)習(xí)C++有12年了,好像C++也沒(méi)有學(xué)得特別懂,看到STL和泛型,還是很頭大。不過(guò),我應(yīng)該去考慮研究量子物理和生物化學(xué),這樣,我才能重返98年殺掉還在大學(xué)的我,然后達(dá)到21天搞定C++的目標(biāo)。另外,得要特別提醒剛剛開(kāi)始學(xué)習(xí)C++的朋友,第21天的時(shí)候,小心被人殺害。呵呵。
當(dāng)然,上面只是一個(gè)惡搞此類(lèi)圖片,學(xué)習(xí)一門(mén)技術(shù),需要你很長(zhǎng)的時(shí)間,正如圖片中的第三圖和第四圖所示,你需要用十年的時(shí)間去不斷在嘗試,并在錯(cuò)誤中總結(jié)經(jīng)驗(yàn)教訓(xùn),以及在項(xiàng)目開(kāi)發(fā)中通過(guò)與別人相互溝通互相學(xué)習(xí)來(lái)歷練自己。你才能算得上是真正學(xué)會(huì)。
這里有篇文章叫《Teach Yourself Programming in Ten Years》,網(wǎng)上有人翻譯了一下,不過(guò)原文已被更新了,我把網(wǎng)上的譯文轉(zhuǎn)載并更新如下:
用十年來(lái)學(xué)編程
Peter Norvig
為什么每個(gè)人都急不可耐?
走進(jìn)任何一家書(shū)店,你會(huì)看見(jiàn)《Teach Yourself Java in 7 Days》(7天Java無(wú)師自通)的旁邊是一長(zhǎng)排看不到盡頭的類(lèi)似書(shū)籍,它們要教會(huì)你Visual Basic、Windows、Internet等等,而只需要幾天甚至幾小時(shí)。我在
Amazon.com上進(jìn)行了如下
搜索:
結(jié)論是,要么是人們非常急于學(xué)會(huì)計(jì)算機(jī),要么就是不知道為什么計(jì)算機(jī)驚人地簡(jiǎn)單,比任何東西都容易學(xué)會(huì)。沒(méi)有一本書(shū)是要在幾天里教會(huì)人們欣賞貝多芬或者量子物理學(xué),甚至怎樣給狗打扮。在《
How to Design Programs》這本書(shū)里說(shuō)“
Bad programming is easy. Idiots can learn it in 21 days, even if they are dummies.” (壞的程序是很容易的,就算他們是笨蛋白癡都可以在21天內(nèi)學(xué)會(huì)。)
- 學(xué)會(huì):在3天時(shí)間里,你不夠時(shí)間寫(xiě)一些有意義的程序,并從它們的失敗與成功中學(xué)習(xí)。你不夠時(shí)間跟一些有經(jīng)驗(yàn)的程序員一起工作,你不會(huì)知道在C++那樣的環(huán)境中是什么滋味。簡(jiǎn)而言之,沒(méi)有足夠的時(shí)間讓你學(xué)到很多東西。所以這些書(shū)談?wù)摰闹皇潜砻嫔系木ǎ巧钊氲睦斫狻H鏏lexander Pope(英國(guó)詩(shī)人、作家,1688-1744)所言,一知半解是危險(xiǎn)的(a little learning is a dangerous thing)
- C++:在3天時(shí)間里你可以學(xué)會(huì)C++的語(yǔ)法(如果你已經(jīng)會(huì)一門(mén)類(lèi)似的語(yǔ)言),但你無(wú)法學(xué)到多少如何運(yùn)用這些語(yǔ)法。簡(jiǎn)而言之,如果你是,比如說(shuō)一個(gè)Basic程序員,你可以學(xué)會(huì)用C++語(yǔ)法寫(xiě)出Basic風(fēng)格的程序,但你學(xué)不到C++真正的優(yōu)點(diǎn)(和缺點(diǎn))。那關(guān)鍵在哪里?Alan Perlis(ACM第一任主席,圖靈獎(jiǎng)得主,1922-1990)曾經(jīng)說(shuō)過(guò):“如果一門(mén)語(yǔ)言不能影響你對(duì)編程的想法,那它就不值得去學(xué)”。另一種觀點(diǎn)是,有時(shí)候你不得不學(xué)一點(diǎn)C++(更可能是javascript和Flash Flex之類(lèi))的皮毛,因?yàn)槟阈枰佑|現(xiàn)有的工具,用來(lái)完成特定的任務(wù)。但此時(shí)你不是在學(xué)習(xí)如何編程,你是在學(xué)習(xí)如何完成任務(wù)。
- 3天:不幸的是,這是不夠的,正如下一節(jié)所言。
10年學(xué)編程
一些研究者(
Bloom (1985),
Bryan & Harter (1899),
Hayes (1989),
Simmon & Chase (1973))的研究表明,在許多領(lǐng)域,都需要大約10 年時(shí)間才能培養(yǎng)出專(zhuān)業(yè)技能,包括國(guó)際象棋、作曲、繪畫(huà)、鋼琴、游泳、網(wǎng)球,以及神經(jīng)心理學(xué)和拓?fù)鋵W(xué)的研究。似乎并不存在真正的捷徑:即使是莫扎特,他4 歲就顯露出音樂(lè)天才,在他寫(xiě)出世界級(jí)的音樂(lè)之前仍然用了超過(guò)13年時(shí)間。再看另一種音樂(lè)類(lèi)型的披頭士,他們似乎是在1964年的Ed Sullivan節(jié)目中突然冒頭的。但其實(shí)他們從1957年就開(kāi)始表演了,即使他們很早就顯示出了巨大的吸引力,他們第一次真正的成功——Sgt. Peppers——也要到1967年才發(fā)行。
Malcolm Gladwell 研究報(bào)告稱(chēng),把在伯林音樂(lè)學(xué)院學(xué)生一個(gè)班的學(xué)生按水平分成高中低,然后問(wèn)他們對(duì)音樂(lè)練習(xí)花了多少工夫:
在這三個(gè)小組中的每一個(gè)人基本上都是從相同的時(shí)間開(kāi)始練習(xí)的(在五歲的時(shí)候)。在開(kāi)始的幾年里,每個(gè)人都是每周練習(xí)2-3個(gè)小時(shí)。但是在八歲的時(shí)候,練習(xí)的強(qiáng)度開(kāi)始顯現(xiàn)差異。在這個(gè)班中水平最牛的人開(kāi)始比別人練習(xí)得更多——在九歲的時(shí)候每周練習(xí)6個(gè)小時(shí),十二歲的時(shí)候,每周8個(gè)小時(shí),十四歲的時(shí)候每周16個(gè)小時(shí),并在成長(zhǎng)過(guò)程中練習(xí)得越來(lái)越多,到20歲的時(shí)候,其每周練習(xí)可超過(guò)30個(gè)小時(shí)。到了20歲,這些優(yōu)秀者在其生命中練習(xí)音樂(lè)總共超過(guò) 10,000 小時(shí)。與之對(duì)比,其它人只平均有8,000小時(shí),而未來(lái)只能留校當(dāng)老師的人僅僅是4,000 小時(shí)。
所以,這也許需要10,000 小時(shí),并不是十年,但這是一個(gè)magic number。Samuel Johnson(英國(guó)詩(shī)人)認(rèn)為10 年還是不夠的:“任何領(lǐng)域的卓越成就都只能通過(guò)一生的努力來(lái)獲得;稍低一點(diǎn)的代價(jià)也換不來(lái)。”(Excellence in any department can be attained only by the labor of a lifetime; it is not to be purchased at a lesser price.) 喬叟(Chaucer,英國(guó)詩(shī)人,1340-1400)也抱怨說(shuō):“生命如此短暫,掌握技藝卻要如此長(zhǎng)久。”(the lyf so short, the craft so long to lerne.)
下面是我在編程這個(gè)行當(dāng)里獲得成功的處方:
- 對(duì)編程感興趣,因?yàn)闃?lè)趣而去編程。確定始終都能保持足夠的樂(lè)趣,以致你能夠?qū)?0年時(shí)間投入其中。
- 跟其他程序員交談;閱讀其他程序。這比任何書(shū)籍或訓(xùn)練課程都更重要。
- 編程。最好的學(xué)習(xí)是從實(shí)踐中學(xué)習(xí)。用更加技術(shù)性的語(yǔ)言來(lái)講,“個(gè)體在特定領(lǐng)域最高水平的表現(xiàn)不是作為長(zhǎng)期的經(jīng)驗(yàn)的結(jié)果而自動(dòng)獲得的,但即使是非常富有經(jīng)驗(yàn)的個(gè)體也可以通過(guò)刻意的努力而提高其表現(xiàn)水平。”(p. 366),而且“最有效的學(xué)習(xí)要求為特定個(gè)體制定適當(dāng)難度的任務(wù),有意義的反饋,以及重復(fù)及改正錯(cuò)誤的機(jī)會(huì)。”(p. 20-21)《Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life》(在實(shí)踐中認(rèn)知:心智、數(shù)學(xué)和日常生活的文化)是關(guān)于這個(gè)觀點(diǎn)的一本有趣的參考書(shū)。
- 如果你愿意,在大學(xué)里花上4年時(shí)間(或者再花幾年讀研究生)。這能讓你獲得一些工作的入門(mén)資格,還能讓你對(duì)此領(lǐng)域有更深入的理解,但如果你不喜歡進(jìn)學(xué)校,(作出一點(diǎn)犧牲)你在工作中也同樣能獲得類(lèi)似的經(jīng)驗(yàn)。在任何情況下,單從書(shū)本上學(xué)習(xí)都是不夠的。“計(jì)算機(jī)科學(xué)的教育不會(huì)讓任何人成為內(nèi)行的程序員,正如研究畫(huà)筆和顏料不會(huì)讓任何人成為內(nèi)行的畫(huà)家”, Eric Raymond,《The New Hacker’s Dictionary》(新黑客字典)的作者如是說(shuō)。我曾經(jīng)雇用過(guò)的最優(yōu)秀的程序員之一僅有高中學(xué)歷;但他創(chuàng)造出了許多偉大的軟件(XEmacs, Mozilla),甚至有討論他本人的新聞組,而且股票期權(quán)讓他達(dá)到我無(wú)法企及的富有程度(譯注:指Jamie Zawinski,Xemacs和Netscape的作者)。
- 跟別的程序員一起完成項(xiàng)目。在一些項(xiàng)目中成為最好的程序員;在其他一些項(xiàng)目中當(dāng)最差的一個(gè)。當(dāng)你是最好的程序員時(shí),你要測(cè)試自己領(lǐng)導(dǎo)項(xiàng)目的能力,并通過(guò)你的洞見(jiàn)鼓舞其他人。當(dāng)你是最差的時(shí)候,你學(xué)習(xí)高手們?cè)谧鲂┦裁矗约八麄儾幌矚g做什么(因?yàn)樗麄冏屇銕退麄冏瞿切┦拢?/li>
- 接手別的程序員完成項(xiàng)目。用心理解別人編寫(xiě)的程序。看看在沒(méi)有最初的程序員在場(chǎng)的時(shí)候理解和修改程序需要些什么。想一想怎樣設(shè)計(jì)你的程序才能讓別人接手維護(hù)你的程序時(shí)更容易一些。
- 學(xué)會(huì)至少半打編程語(yǔ)言。包括一門(mén)支持類(lèi)抽象(class abstraction)的語(yǔ)言(如Java或C++),一門(mén)支持函數(shù)抽象(functional abstraction)的語(yǔ)言(如Lisp或ML),一門(mén)支持句法抽象(syntactic abstraction)的語(yǔ)言(如Lisp),一門(mén)支持說(shuō)明性規(guī)約(declarative specification)的語(yǔ)言(如Prolog或C++模版),一門(mén)支持協(xié)程(coroutine)的語(yǔ)言(如Icon或Scheme),以及一門(mén)支持并行處理(parallelism)的語(yǔ)言(如Sisal)。
- 記住在“計(jì)算機(jī)科學(xué)”這個(gè)詞組里包含“計(jì)算機(jī)”這個(gè)詞。了解你的計(jì)算機(jī)執(zhí)行一條指令要多長(zhǎng)時(shí)間,從內(nèi)存中取一個(gè)word要多長(zhǎng)時(shí)間(包括緩存命中和未命中的情況),從磁盤(pán)上讀取連續(xù)的數(shù)據(jù)要多長(zhǎng)時(shí)間,定位到磁盤(pán)上的新位置又要多長(zhǎng)時(shí)間。(答案在這里)
- 嘗試參與到一項(xiàng)語(yǔ)言標(biāo)準(zhǔn)化工作中。可以是ANSI C++委員會(huì),也可以是決定自己團(tuán)隊(duì)的編碼風(fēng)格到底采用2個(gè)空格的縮進(jìn)還是4個(gè)。不論是哪一種,你都可以學(xué)到在這門(mén)語(yǔ)言中到底人們喜歡些什么,他們有多喜歡,甚至有可能稍微了解為什么他們會(huì)有這樣的感覺(jué)。
- 擁有盡快從語(yǔ)言標(biāo)準(zhǔn)化工作中抽身的良好判斷力。
抱著這些想法,我很懷疑從書(shū)上到底能學(xué)到多少東西。在我第一個(gè)孩子出生前,我讀完了所有“怎樣……”的書(shū),卻仍然感到自己是個(gè)茫無(wú)頭緒的新手。30個(gè)月后,我第二個(gè)孩子出生的時(shí)候,我重新拿起那些書(shū)來(lái)復(fù)習(xí)了嗎?不。相反,我依靠我自己的經(jīng)驗(yàn),結(jié)果比專(zhuān)家寫(xiě)的幾千頁(yè)東西更有用更靠得住。
Fred Brooks在他的短文《No Silver Bullets》(沒(méi)有銀彈)中確立了如何發(fā)現(xiàn)杰出的軟件設(shè)計(jì)者的三步規(guī)劃:
- 盡早系統(tǒng)地識(shí)別出最好的設(shè)計(jì)者群體。
- 指派一個(gè)事業(yè)上的導(dǎo)師負(fù)責(zé)有潛質(zhì)的對(duì)象的發(fā)展,小心地幫他保持職業(yè)生涯的履歷。
- 讓成長(zhǎng)中的設(shè)計(jì)師們有機(jī)會(huì)互相影響,互相激勵(lì)。
這實(shí)際上是假定了有些人本身就具有成為杰出設(shè)計(jì)師的必要潛質(zhì);要做的只是引導(dǎo)他們前進(jìn)。Alan Perlis說(shuō)得更簡(jiǎn)潔:“每個(gè)人都可以被教授如何雕塑;而對(duì)米開(kāi)朗基羅來(lái)說(shuō),能教給他的倒是怎樣能夠不去雕塑。杰出的程序員也一樣”。
所以盡管去買(mǎi)那些Java書(shū);你很可能會(huì)從中找到些用處。但你的生活,或者你作為程序員的真正的專(zhuān)業(yè)技術(shù),并不會(huì)因此在24小時(shí)、24天甚至24個(gè)月內(nèi)發(fā)生真正的變化。
(全文完)
posted @
2012-08-06 12:56 Seraphi 閱讀(349) |
評(píng)論 (0) |
編輯 收藏
注:如果看不到圖片,請(qǐng)右鍵圖片獲得圖片地址,然后在瀏覽中訪(fǎng)問(wèn)圖片地址即可~
1.去下載LINUX上使用的BIN文件,去www.java.sun.com,最終會(huì)到ORACLE網(wǎng)站上去,因?yàn)镾UN被收購(gòu)了嘛,下載JDK,名稱(chēng)為jdk-6u22-linux-i586.bin,然后去www.eclipse.org,下載eclipse,筆者下載的是JAVA EE版的,文件名稱(chēng)為eclipse-jee-helios-SR1-linux-gtk.tar.gz,因?yàn)檫@個(gè)工具多,比較適合WEB等開(kāi)發(fā)。路徑
2.本人的文件目錄放在/home/heroguo/下載,使用tar命令解壓(這個(gè)具體可以去查找資料或者tar -help)eclipse,會(huì)生成eclipse文件夾。mv到/home文件夾。
3、安裝JDK,使用終端,運(yùn)行下載下來(lái)的jdk-6u22-linux-i586.bin。
第一步,將目錄CD到/home/heroguo/下載。
第二步,使用命令./jdk-6u22-linux-i586.bin,等待中,直到完成。完成后,會(huì)在當(dāng)前目錄下生成一個(gè)JDK1.6.0_22的文件夾。
第三步,使用mv命令將JDK1.6.0_22到/home文件夾。
4.環(huán)境變量
用文本編輯器打開(kāi)/etc/profile
·在profile文件末尾加入:
export JAVA_HOME=/usr/share/jdk1.6.0_14
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
注意:千萬(wàn)不要范和筆者一樣的錯(cuò),狂暈,寫(xiě)PATH的時(shí)候,前面的$PATH 沒(méi)有寫(xiě),導(dǎo)致PATH路徑下所有位置被覆蓋,包括寫(xiě)命令都得打完整路徑,汗死!!路徑之間用:隔開(kāi)
這一步很重要:重啟ubuntu,在終端中輸入java –version,查看版本號(hào)
看到上面按要求1.6.0_22證明JDK被正確安裝了
5.用終端將當(dāng)前目錄CD為 /home/heroguo/eclipse,使用命令./eclipse,可以看到eclipse開(kāi)始運(yùn)行了。
彈出eclipse工作目錄設(shè)置,OK基本JAVA開(kāi)發(fā)環(huán)境也搞定了。
進(jìn)行WEB開(kāi)發(fā),再去下個(gè)TOMCAT,由于TOMCAT7 剛出來(lái),所以選擇了TOMCAT6,方法和WINDOWS上一樣的,就不再贅述了,哈哈,休息哈去!
轉(zhuǎn)貼:原文鏈接:
http://blog.csdn.net/guoleimail/article/details/5960244
posted @
2012-05-10 12:09 Seraphi 閱讀(992) |
評(píng)論 (1) |
編輯 收藏
怎樣做研究(一)
幾年前,我寫(xiě)了一套膠片,題目是《怎樣做研究》,多次在實(shí)驗(yàn)室內(nèi)部給學(xué)生們做報(bào)告,也曾對(duì)外講過(guò)一次,聽(tīng)眾反應(yīng)良好。也有網(wǎng)友讀過(guò)這套膠片,給我來(lái)信稱(chēng)有所收獲。然而,膠片中的文字畢竟只是提綱攜領(lǐng),無(wú)法充分闡述我的想法,為此,借周末一點(diǎn)閑暇,把《怎樣做研究》寫(xiě)成一篇文章,與師友切磋。
什么是科學(xué)
科學(xué)是分科的學(xué)問(wèn),客觀地說(shuō),是起源于西方的。中國(guó)只有經(jīng)驗(yàn)科學(xué),典型的如中醫(yī)。我的母親是學(xué)中醫(yī)的,我從小就對(duì)中醫(yī)耳濡目染,生了病,媽媽就會(huì)請(qǐng)他的老師來(lái),一貼小藥下去,我的病就好了。因此,我對(duì)中醫(yī)一直是很信服的。然而,近些年來(lái),中醫(yī)多受批評(píng),發(fā)展也越來(lái)越緩慢,究其原因,中醫(yī)不是科學(xué),或者說(shuō)只是經(jīng)驗(yàn)科學(xué),而非實(shí)證科學(xué)。中藥的成分以及生化功效不曾用實(shí)驗(yàn)進(jìn)行深入的分析,望聞問(wèn)切的診斷方法完全憑經(jīng)驗(yàn)而無(wú)法量化,陰陽(yáng)五行的理論似是而非,祖?zhèn)髅胤降膫鞒蟹绞脚c知識(shí)共享的現(xiàn)代思維背道而馳。因此,盡管中醫(yī)有診治的整體觀和方劑的個(gè)性化兩大優(yōu)點(diǎn),但其停留于經(jīng)驗(yàn)層面,而遲遲不能進(jìn)入科學(xué)的殿堂,因此在現(xiàn)代社會(huì)中的發(fā)展必然步履維艱。
中醫(yī)不是科學(xué),那到底什么是科學(xué)呢?科學(xué)(自然科學(xué))是人們用來(lái)認(rèn)識(shí)和改造自然世界的思維武器,科學(xué)研究可以分為基礎(chǔ)研究(理論研究)和應(yīng)用研究(技術(shù)研發(fā))。
基礎(chǔ)研究
萬(wàn)事萬(wàn)物皆有其規(guī)律,掌握并且利用這些規(guī)律就能夠?yàn)槿祟?lèi)造福,這些規(guī)律是隱蔽在紛繁復(fù)雜的現(xiàn)象背后的,要識(shí)破大自然的奧秘,讀懂上帝的天書(shū),非要下一番深入觀察和探究的功夫不可。以揭示規(guī)律為目的的研究活動(dòng)屬于基礎(chǔ)研究,從事這些活動(dòng)的學(xué)者是科學(xué)家。規(guī)律不是被創(chuàng)造出來(lái)的,而是早已存在的,人們只有認(rèn)識(shí)規(guī)律的權(quán)利,而沒(méi)有創(chuàng)造規(guī)律的可能。
從根本上講,推動(dòng)基礎(chǔ)研究的也是人們?cè)谏a(chǎn)生活中的一些實(shí)際需要,但是隨著基礎(chǔ)研究的深入,理論已經(jīng)成為一個(gè)龐大的體系,理論研究早已開(kāi)始按照它自有的邏輯獨(dú)立發(fā)展,而不必時(shí)時(shí)刻刻聯(lián)系實(shí)際需要,比如著名的歌德巴赫猜想,可能在百年之后,發(fā)現(xiàn)其有重大的應(yīng)用價(jià)值,但是目前到底有什么用,誰(shuí)也說(shuō)不清楚。理論的價(jià)值在今天這個(gè)非常講求短期功利的社會(huì)中常常被忽視,現(xiàn)在有一種傾向認(rèn)為只有產(chǎn)生實(shí)際經(jīng)濟(jì)效益的科研工作才有價(jià)值,這種極端化的觀點(diǎn)顯然是錯(cuò)誤的,我們必須承認(rèn)并高度尊重理論研究者的成就。
理論研究的直接動(dòng)力是科學(xué)家的好奇心,以及他們對(duì)科學(xué)榮譽(yù)的渴望。越是單純的科學(xué)家越有希望發(fā)現(xiàn)真理,他們的科學(xué)探索有點(diǎn)像迷宮探寶或者海邊拾貝,偉大的科學(xué)家都是沒(méi)有喪失童趣的人,他們?cè)趯?shí)驗(yàn)室里是寧?kù)o而愉快的,他們是樂(lè)此不疲的,很多在常人看來(lái)難以忍受的寂寞在他們看來(lái)卻是一種幸福。越是找不到答案,越是激發(fā)探索的熱情,在一次次的失敗中積累著煩悶與緊張,在終于取得突破后興奮異常。與此同時(shí),也必須承認(rèn)科學(xué)榮譽(yù)也是激勵(lì)科學(xué)家們前進(jìn)的重要?jiǎng)恿Γ灰獎(jiǎng)e把榮譽(yù)看得高于真理,貨真價(jià)實(shí)的榮譽(yù)仍然是值得追求的。
理論上的突破對(duì)應(yīng)用研究產(chǎn)生持續(xù)不斷的推動(dòng)力,在模式識(shí)別領(lǐng)域,神經(jīng)網(wǎng)絡(luò)、支持向量機(jī)、條件隨機(jī)域等等機(jī)器學(xué)習(xí)技術(shù)不斷出現(xiàn),每當(dāng)一項(xiàng)理論出現(xiàn),應(yīng)用研究者們爭(zhēng)相將其應(yīng)用于自己的研究課題中,于是基于神經(jīng)網(wǎng)絡(luò)、基于支持向量機(jī)、基于條件隨機(jī)域的某某研究就成為一個(gè)標(biāo)準(zhǔn)的論文題目。首先把某項(xiàng)理論應(yīng)用于某個(gè)實(shí)際課題的研究工作應(yīng)該說(shuō)還是具有一定的創(chuàng)新性的,畢竟用一個(gè)新的思路、新的模型去觀察了一個(gè)舊的課題,HMM在語(yǔ)音識(shí)別上的成功應(yīng)用就是一例。有人比喻說(shuō),理論工具仿佛是錘子,實(shí)際課題好比是釘子,一個(gè)新的錘子被打造出來(lái),大家都借用過(guò)來(lái)砸一砸自己手頭的釘子,確屬常理。不過(guò),需要注意的事,如果拿一個(gè)碩大無(wú)比的汽錘去砸一個(gè)纖細(xì)的大頭針就荒誕可笑了,不注意思考問(wèn)題與理論的適配關(guān)系而盲目跟風(fēng)的事情在學(xué)術(shù)界也是司空見(jiàn)慣,比如我們就曾用HMM試圖解決詞義消歧的問(wèn)題,而每個(gè)多義詞的詞義跟它前后一兩個(gè)詞并沒(méi)有緊密的關(guān)系,因此詞義消歧貌似和詞性標(biāo)注一樣屬于線(xiàn)性序列標(biāo)注問(wèn)題,其實(shí)是有根本差別的。
應(yīng)用研究
我們是搞計(jì)算機(jī)的,計(jì)算機(jī)是一門(mén)應(yīng)用科學(xué),應(yīng)用科學(xué)是由應(yīng)用驅(qū)動(dòng)的。時(shí)至今日,數(shù)學(xué)定理和物理學(xué)定律似乎已經(jīng)被先哲們發(fā)現(xiàn)的差不多了,因此整個(gè)科學(xué)界中純粹搞理論研究的人越來(lái)越少,很多大學(xué)教授都和工業(yè)界有著密切的聯(lián)系,很多大企業(yè)也開(kāi)辦企業(yè)研究院,這些導(dǎo)致應(yīng)用科學(xué)的研究如火如荼。最近,國(guó)家863設(shè)立了一個(gè)"中文為核心的多語(yǔ)言信息處理"重點(diǎn)項(xiàng)目,總經(jīng)費(fèi)7000萬(wàn),這在多年前的大陸語(yǔ)言處理界完全是不可想象的。
應(yīng)用驅(qū)動(dòng),也可以說(shuō)是市場(chǎng)驅(qū)動(dòng)。市場(chǎng)是一個(gè)精靈古怪的家伙,搞應(yīng)用研究的人如果對(duì)市場(chǎng)的未來(lái)沒(méi)有一個(gè)基本準(zhǔn)確地判斷,往往會(huì)導(dǎo)致選題上的偏差。二十年前,國(guó)內(nèi)一些研究者開(kāi)始研究漢字手寫(xiě)輸入技術(shù),開(kāi)始人們覺(jué)得從鍵盤(pán)輸入漢字很困難,手寫(xiě)輸入一定有前途,但是很快,拼音輸入法大面積普及,而且拼音輸入的速度遠(yuǎn)比在手寫(xiě)板上輸入漢字快得多,于是漢字手寫(xiě)輸入套件根本賣(mài)不動(dòng),前景黯淡。有人開(kāi)始猶豫,有人開(kāi)始轉(zhuǎn)向搞印刷體漢字識(shí)別等,但忽然有一天,集成了手寫(xiě)功能的商務(wù)通大量熱銷(xiāo),人們忽然發(fā)現(xiàn)原來(lái)在手持設(shè)備上由于鍵盤(pán)太小,輸入不便,給手寫(xiě)功能留下了很大的應(yīng)用空間。一直專(zhuān)注于手寫(xiě)識(shí)別的漢王公司也借著商務(wù)通的熱銷(xiāo)而把多年的科研成果成功地產(chǎn)業(yè)化了。再舉一個(gè)例子:5年前,我認(rèn)為以圖像為輸入的圖像檢索沒(méi)有什么應(yīng)用價(jià)值,問(wèn)這些技術(shù)的倡導(dǎo)者,他們也只說(shuō)能夠在數(shù)碼相冊(cè)中可以找到一些應(yīng)用,但近來(lái)聽(tīng)了微軟一些學(xué)者們的演講,他們提到可以用手機(jī)拍下一個(gè)植物的圖片,傳回服務(wù)器,在大量植物圖片庫(kù)中檢索,找到最相似的植物,并給出植物的名稱(chēng),特點(diǎn)等。哈哈,這對(duì)于我這個(gè)五谷不分的人來(lái)說(shuō)實(shí)在是太有幫助了,可見(jiàn)對(duì)于一項(xiàng)技術(shù)是否有用實(shí)在要仔細(xì)思考,不要早下斷言。
技術(shù)和市場(chǎng)是一個(gè)互動(dòng)的關(guān)系,有人認(rèn)為技術(shù)嚴(yán)格地從用戶(hù)的現(xiàn)實(shí)需求出發(fā),這個(gè)觀點(diǎn)總的來(lái)說(shuō)沒(méi)有錯(cuò),但是忽視了技術(shù)創(chuàng)造需求的一面。大多數(shù)用戶(hù)往往并不了解技術(shù)發(fā)展到了什么程度,他們提不出需求來(lái),這時(shí)技術(shù)專(zhuān)家們需要把技術(shù)和產(chǎn)品做出來(lái)給人們看,刺激、引領(lǐng)用戶(hù)的需求,比如數(shù)碼相機(jī),5年前我想大多數(shù)用戶(hù)和我一樣并沒(méi)有淘汰膠卷相機(jī)的強(qiáng)烈要求,但當(dāng)數(shù)碼相機(jī)進(jìn)入市場(chǎng)后,人人都意識(shí)到:原來(lái)我需要這個(gè)東東。
在市場(chǎng)與技術(shù)的互動(dòng)中,總的來(lái)說(shuō),還是市場(chǎng)在引導(dǎo)和拉動(dòng)技術(shù)的發(fā)展。市場(chǎng)需要的是產(chǎn)品,產(chǎn)品往往集成了多項(xiàng)技術(shù),因此一項(xiàng)被市場(chǎng)接受的產(chǎn)品能夠推動(dòng)多項(xiàng)技術(shù)的進(jìn)步。比如搜索引擎,它拉動(dòng)了自然語(yǔ)言處理、并行計(jì)算、海量存儲(chǔ)設(shè)備、數(shù)據(jù)挖掘等等多項(xiàng)技術(shù)的發(fā)展。最近中國(guó)計(jì)算機(jī)學(xué)會(huì)設(shè)立了王選獎(jiǎng),在中國(guó)真正有市場(chǎng)眼光,能夠發(fā)明一項(xiàng)技術(shù),拉動(dòng)一個(gè)行業(yè)的計(jì)算機(jī)專(zhuān)家,王選是第一人。怎樣根據(jù)市場(chǎng)選擇研究方向,設(shè)計(jì)產(chǎn)品,調(diào)整技術(shù)形態(tài),我在后面還有詳細(xì)闡述。
科學(xué)技術(shù)的力量
科學(xué)技術(shù)的力量是巨大的,愛(ài)因斯坦給出的公式E=M*C2,C是光速啊,質(zhì)量乘以光速的平方,這是多么巨大的能量啊,愛(ài)因斯坦的理論直接導(dǎo)致了原子能的利用與開(kāi)發(fā)。基因圖譜的發(fā)現(xiàn)以及后基因組時(shí)代對(duì)基因圖譜的深入分析必將為人類(lèi)征服疾病提供一條嶄新的解決道路,通過(guò)對(duì)損壞的基因進(jìn)行修復(fù),將使無(wú)數(shù)患者得以康復(fù),無(wú)數(shù)家庭重拾幸福。互聯(lián)網(wǎng)的發(fā)明,把全世界連為一體,過(guò)不了多久,石頭里也會(huì)嵌入芯片,在這個(gè)世界上有生命的、無(wú)生命的各種物質(zhì)之間都可能進(jìn)行通訊,人們的生活面貌已經(jīng)徹底改變了。
當(dāng)然,科學(xué)也是雙刃劍:原子彈爆炸了,核戰(zhàn)爭(zhēng)始終威脅著人類(lèi);在對(duì)基因組這套上帝給出生命密碼沒(méi)有全面理解以前,任何盲動(dòng)都可能導(dǎo)致基因污染,以至于玩火自焚;互聯(lián)網(wǎng)上的虛擬生存讓人們感到更加孤獨(dú)。
怎樣做研究(二)
研究的層次
研究是分層次的,很多大科學(xué)家在晚年登上了最高層,比如錢(qián)學(xué)森在80年代倡導(dǎo)思維科學(xué),他對(duì)整個(gè)科學(xué)技術(shù)體系進(jìn)行了重新分類(lèi)。在中國(guó)的大學(xué)里,分為一級(jí)學(xué)科,二級(jí)學(xué)科等,我就處在計(jì)算機(jī)科學(xué)技術(shù)一級(jí)學(xué)科下面的計(jì)算機(jī)應(yīng)用技術(shù)二級(jí)學(xué)科下。二級(jí)學(xué)科的帶頭人稱(chēng)為學(xué)科帶頭人,二級(jí)學(xué)科下面一個(gè)研究方向的帶頭人稱(chēng)為學(xué)術(shù)帶頭人,我就被指定為學(xué)術(shù)帶頭人。
我的研究方向是信息檢索,信息檢索下面又有子方向,比如文本檢索、文本挖掘、跨語(yǔ)言檢索、跨媒體檢索等,子方向下面設(shè)立具體的科研課題,比如文本挖掘中的多文檔自動(dòng)文摘課題,針對(duì)一項(xiàng)課題又有不同的解決辦法,基于事件抽取與集成的多文檔文摘就是利用一種具體的解決問(wèn)題的方法。
總結(jié)來(lái)說(shuō),就是6個(gè)層級(jí):
A. 一級(jí)學(xué)科
B. 二級(jí)學(xué)科
C. 研究方向
D. 子方向
E. 課題
F. 基于某種方法對(duì)課題進(jìn)行的具體研究
君子思不出其位,我是學(xué)術(shù)帶頭人,因此主要在思考C類(lèi)的問(wèn)題,也就是和信息檢索相關(guān)的問(wèn)題。一個(gè)學(xué)院的院長(zhǎng)通常會(huì)思考A類(lèi)的課題,學(xué)科帶頭人或者說(shuō)是一個(gè)博士點(diǎn)的點(diǎn)長(zhǎng)是要考慮B類(lèi)問(wèn)題的。一個(gè)人對(duì)相關(guān)的方向或?qū)W科有所了解,對(duì)自己的研究工作是很有好處的,只有看清了整體的學(xué)科面貌,才能知道自己處在那個(gè)位置上,自己未來(lái)的方向在哪里。我在讀博士以及在微軟做副研究員的時(shí)候,只看到E類(lèi)問(wèn)題,想到最多的是F類(lèi)問(wèn)題,因此你讓我提一個(gè)新方向,讓我對(duì)一項(xiàng)技術(shù)進(jìn)行預(yù)測(cè),我茫然無(wú)知。后來(lái)?yè)?dān)任院長(zhǎng)助理,負(fù)責(zé)學(xué)院的成果轉(zhuǎn)化,需要了解學(xué)院里各個(gè)方向的發(fā)展?fàn)顟B(tài),使我的視野開(kāi)闊了一些。盡管我凡事不求甚解,但是喜歡總結(jié)歸納,因此對(duì)信息檢索與其它學(xué)科的關(guān)系有了更多地認(rèn)識(shí),這對(duì)后來(lái)的選題很有幫助,特別是在應(yīng)用研究方面,心里比較有底。
學(xué)科好比一棵大樹(shù)的樹(shù)根,研究方向如同樹(shù)干,具體的課題就是枝葉了。和學(xué)科中各個(gè)方向都相關(guān)的研究課題是最基礎(chǔ)的研究課題,比如在人工智能中,各類(lèi)機(jī)器學(xué)習(xí)算法是圖像識(shí)別、語(yǔ)音識(shí)別和語(yǔ)言理解等各個(gè)方向都離不開(kāi)的,機(jī)器學(xué)習(xí)技術(shù)提高一步,好比樹(shù)根抬高了一寸,各項(xiàng)應(yīng)用技術(shù)也都跟著進(jìn)步,因此越是基礎(chǔ)的研究,越會(huì)對(duì)業(yè)界產(chǎn)生較大較深遠(yuǎn)的影響力。不過(guò),基礎(chǔ)研究的突破比較難,而在某個(gè)應(yīng)用課題上不考慮一般情況,只考慮具體需要,成功的可能性大。枝葉上的課題做多了,經(jīng)過(guò)合并同類(lèi)項(xiàng),就會(huì)發(fā)現(xiàn)比較共性的基礎(chǔ)課題,比如我們?cè)谧鰡?wèn)答系統(tǒng)、多文檔文摘、例句檢索等課題時(shí)發(fā)現(xiàn)復(fù)述(paraphrasing)是一個(gè)共性的問(wèn)題,于是把復(fù)述單拿出來(lái)展開(kāi)專(zhuān)門(mén)的研究,如此,可以越做越深。
學(xué)者的層次
研究有層次,學(xué)者也有層次,大致可以分為:
A. 大家(劍客):提出問(wèn)題
B. 專(zhuān)家(俠客):解決問(wèn)題
C. 學(xué)徒:修修補(bǔ)補(bǔ)
D. 抄襲者:抄來(lái)抄去
E. 搞偽科學(xué)的人:弄虛作假
A類(lèi)是大家,站得高,看得遠(yuǎn),他們往往能夠前瞻性地提出某個(gè)學(xué)科領(lǐng)域中的若干重大問(wèn)題,最著名的是希爾伯特的23個(gè)問(wèn)題,對(duì)數(shù)學(xué)界影響深遠(yuǎn)。提出問(wèn)題其實(shí)也是解決問(wèn)題的一種方式,只不過(guò)他們是在很高的層面解決問(wèn)題,類(lèi)似一個(gè)軟件系統(tǒng)分析員,他把一個(gè)復(fù)雜的工程問(wèn)題分解為若干個(gè)有機(jī)聯(lián)系的子問(wèn)題,然后宣布只要這幾個(gè)子問(wèn)題解決了,整個(gè)大問(wèn)題也就解決了。至于這幾個(gè)子問(wèn)題到底怎樣解決,或者說(shuō)相應(yīng)的子系統(tǒng)到底怎樣開(kāi)發(fā),他就不管了。胡亂地提問(wèn)題并不難,小孩子也會(huì)向大人提出各種各樣有趣的問(wèn)題,有的大人也答不出來(lái),問(wèn)題的關(guān)鍵在于在適當(dāng)?shù)臅r(shí)候提出適合當(dāng)前學(xué)術(shù)發(fā)展階段的關(guān)鍵性課題,這絕對(duì)不是一般人能夠做到的,這是需要具有對(duì)整個(gè)領(lǐng)域全面深入的理解才行的。
B類(lèi)是專(zhuān)家,是在某個(gè)研究方向上有專(zhuān)長(zhǎng)的人,他們沿著大家指出的方向探索前進(jìn),提出全新的方法體系來(lái)解決問(wèn)題。比如在機(jī)器翻譯領(lǐng)域中,日本長(zhǎng)尾真教授提出了基于實(shí)例的機(jī)器翻譯方法,從一個(gè)全新的視角看待機(jī)器翻譯問(wèn)題。專(zhuān)家經(jīng)驗(yàn)豐富,能夠自由地駕馭課題,穩(wěn)步地推動(dòng)課題的進(jìn)展。
C類(lèi)是學(xué)徒,就是我們這些普通的研究人員了,這部分人的注意力在具體的課題上。學(xué)徒們還沒(méi)有宏大的視野,沒(méi)有捕捉全局戰(zhàn)略要點(diǎn)的本事,也還沒(méi)有在一個(gè)研究方向上提出原創(chuàng)性的解決之道,他們跟在拓荒者后面撿拾麥穗,他們負(fù)責(zé)對(duì)科學(xué)大廈修修補(bǔ)補(bǔ)。他們一會(huì)兒聽(tīng)說(shuō)了一個(gè)新的機(jī)器學(xué)習(xí)方法,趕緊在自己的課題上試一下;一會(huì)兒發(fā)現(xiàn)了一個(gè)以前忽略了的新的特征,立即想方設(shè)法把這個(gè)特征提取出來(lái);一會(huì)兒為了參加一個(gè)技術(shù)評(píng)測(cè),耐心地調(diào)一調(diào)系統(tǒng)參數(shù);一會(huì)兒為了發(fā)表一篇論文構(gòu)造出一個(gè)試驗(yàn)來(lái)。我們每天的研究活動(dòng)差不多都是在這樣進(jìn)行的,很多時(shí)候在原地打轉(zhuǎn)轉(zhuǎn)。
我這樣描述學(xué)徒們的工作情景絲毫沒(méi)有貶低的意味,在達(dá)到專(zhuān)家的水平,證悟研究真諦以前,跌跌撞撞、渾渾沌沌是在所難免的。只要遵守誠(chéng)信之道,不抄襲,不造假,點(diǎn)點(diǎn)滴滴的貢獻(xiàn)對(duì)科學(xué)界也是有幫助的。從更高的要求看,學(xué)徒的目標(biāo)應(yīng)該是成為專(zhuān)家,應(yīng)該時(shí)常靜下心來(lái)想一想,自己的工作是否有價(jià)值,是否有新意,揣摩一下大家們、專(zhuān)家們到底是怎樣思考問(wèn)題的,在不斷地反思與實(shí)踐中向上邁進(jìn)。
D類(lèi)學(xué)者根本算不上學(xué)者,他們?yōu)榱嗽u(píng)職稱(chēng)等目的,對(duì)別人的論文進(jìn)行抄襲拼湊,他們是思想的竊賊,對(duì)學(xué)術(shù)界毫無(wú)貢獻(xiàn)可言。
E類(lèi)學(xué)者不僅僅是做賊了,他編造偽科學(xué),毀壞科學(xué)界在公眾中的形象,他們是科學(xué)界的公敵。
以上的分類(lèi)也只是為了討論的方便,在各類(lèi)之間并沒(méi)有明確的界限,我只是依次談出我心中做學(xué)問(wèn)的境界而已。
在人類(lèi)已知的世界和未知的世界之間有一條動(dòng)態(tài)邊界,科學(xué)家就站在這條邊界上,他們是挑戰(zhàn)未知世界的勇士,他們每向前邁出一步,就意味著整個(gè)人類(lèi)的已知世界向前拓展了一步,由此足見(jiàn)科學(xué)工作的艱難和科學(xué)家的偉大。
研究又好比爬山,一座座山峰如同一個(gè)個(gè)研究領(lǐng)域,大家已登峰造極,一覽眾山小,把東南西北各條山路上的溝溝坎坎,把此山與他山之間的距離關(guān)系看得清清楚楚。隔行如隔山,隔行不隔道,在一個(gè)領(lǐng)域做到頂尖的學(xué)者已入化境,一通百通,你把另一個(gè)領(lǐng)域的問(wèn)題講給他聽(tīng),他往往也能夠很快地抓到要害。專(zhuān)家已到半山腰,看不到山的全貌,但是他找到了一條通往山頂?shù)牡缆罚⒁徊揭徊降叵蛏吓实侵W(xué)徒還沒(méi)有進(jìn)入山門(mén),他們一會(huì)兒仰望山頂,一會(huì)兒看看山腰,在山腳下繞來(lái)繞去找不到門(mén)徑,費(fèi)力不少,卻并沒(méi)有縮短與山頂?shù)木嚯x。
怎樣做研究(三)
怎樣選題
前文曾提到科學(xué)研究的層次,并分了6個(gè)層級(jí)。此處所說(shuō)的選題指的是從C到E三個(gè)層次上的選擇問(wèn)題,即:C. 研究方向、D. 子方向、E. 課題。選擇研究方向是實(shí)驗(yàn)室(Lab)主任們需要重點(diǎn)思考的事情,選擇子方向是研究小組(Group)的組長(zhǎng)們需要重點(diǎn)思考的事情,選擇課題是研究生們需要重點(diǎn)思考的事情。
選擇太多,很容易讓人困惑,要想理出一個(gè)頭緒來(lái),需要一些基本的原則。微軟的許峰雄來(lái)訪(fǎng)時(shí)談到了他選擇課題的三個(gè)標(biāo)準(zhǔn):有足夠的興趣,能成為世界第一,能賺錢(qián)。(!)興趣,這個(gè)原則是非常重要的,我贊同,獲得國(guó)家最高科技獎(jiǎng)的"黃土之父"劉東生院士是搞地球環(huán)境科學(xué)的,經(jīng)常在野外作業(yè),按常人推斷,這該是多么枯燥艱苦的工作啊,但他說(shuō):"枯燥?不!因?yàn)榻?jīng)常有新發(fā)現(xiàn),其中的樂(lè)趣難以形容"。我堅(jiān)信任何一個(gè)成功的科學(xué)家的直接工作動(dòng)源都是興趣,而不是意志。(2)成為世界第一,不容易,但是應(yīng)該作為一種判斷標(biāo)準(zhǔn),如果某個(gè)領(lǐng)域已經(jīng)非常成熟,很難有什么創(chuàng)新了,或者大牛云集,已經(jīng)打破頭了,則應(yīng)該有所回避。(3)賺錢(qián),許峰雄是在工業(yè)研究院中工作,比較注重實(shí)用,因此他強(qiáng)調(diào)了"賺錢(qián)",我是在工科大學(xué)里工作,也比較偏重應(yīng)用,因此是贊同"能賺錢(qián)"這個(gè)標(biāo)準(zhǔn)的。不過(guò),"能賺錢(qián)"不等于立即賺錢(qián),5年、10年,20年后能夠賺錢(qián)的研究課題都是值得關(guān)注的。
談?wù)勎疫x擇課題的一些體會(huì):
1、 要有實(shí)際需求
一個(gè)課題必須有實(shí)際需求,可能是現(xiàn)實(shí)的需求,也可能是潛在的需求;可能是直接的需求,也可能是間接的需求,總之是的的確確被人們所需要的。據(jù)個(gè)反例,比如自動(dòng)文摘,自動(dòng)文摘是我的博士論文課題,但是實(shí)際應(yīng)用需求始終不清楚,自動(dòng)文摘的結(jié)果用于編輯出版,質(zhì)量肯定無(wú)法保證,用于幫助人們快速瀏覽資料吧, Google提供的包含查詢(xún)?cè)~的簡(jiǎn)單的Snippet就起到了這個(gè)作用,因此,至今基于全文分析的單文檔自動(dòng)文摘到底用到哪里,仍然不清楚,這方面的研究已經(jīng)有50多年的歷史了,仍然是不死不活,總是找不到應(yīng)用就無(wú)法得到政府和企業(yè)界的持續(xù)性支持,以往的付出成為雞肋。我覺(jué)得單自動(dòng)文摘不是一個(gè)好課題,目前階段多文檔文摘,或者說(shuō)對(duì)某個(gè)題目的自動(dòng)綜述分析是非常好的題目。
2、 有較大的未知空間
以手寫(xiě)體漢字識(shí)別為例,市場(chǎng)上已經(jīng)大面積應(yīng)用了,在研究上就不宜再展開(kāi)。
3、 與自己以往的工作有關(guān)聯(lián)
如果你覺(jué)得自己的研究領(lǐng)域太窄,或者競(jìng)爭(zhēng)對(duì)手太多,或者自己缺乏興趣,則可以適當(dāng)擴(kuò)展研究方向,但最好是相關(guān)性地?cái)U(kuò)展,比如從自然語(yǔ)言處理(NLP)擴(kuò)展到信息檢索(IR),IR要用到NLP的技術(shù),這種擴(kuò)展是從底層技術(shù)到應(yīng)用系統(tǒng)的擴(kuò)展,很自然。再比如從圖片檢索擴(kuò)展到視頻檢索,只是處理對(duì)象有變化,很多原有的技術(shù)優(yōu)勢(shì)仍然能夠發(fā)揮。如果跳躍性太大,比如搞NLP,忽然發(fā)現(xiàn)做數(shù)據(jù)挖掘有前途,于是單純地轉(zhuǎn)向數(shù)據(jù)庫(kù)中數(shù)據(jù)挖掘,和文本處理完全脫節(jié),這種做法一方面無(wú)法發(fā)揮既有的技術(shù)積累,另一方面也讓同行感覺(jué)你不夠?qū)Wⅲ蝗菀椎玫秸J(rèn)可。最要命的是有的人根本就沒(méi)有自己的方向,什么課題都敢接,這樣的人可以一時(shí)間讓人覺(jué)得風(fēng)風(fēng)火火,經(jīng)費(fèi)也很充足,但過(guò)不了多久就會(huì)摔落下去,因?yàn)槿狈Ψe累,學(xué)術(shù)形象不清,公雞下蛋,干了自己不擅長(zhǎng)的事情,在學(xué)術(shù)圈還怎么混?
4、 有可能得到國(guó)家的支持
對(duì)于資深學(xué)者,他選定一個(gè)課題后,可以寫(xiě)出立項(xiàng)建議,去說(shuō)服政府或軍方支持他的工作,從而填補(bǔ)國(guó)家空白,成為國(guó)內(nèi)這個(gè)方向的先驅(qū)。哈工大的楊孝宗老師借鑒 CMU在wearable computing方面的研究成果,在國(guó)內(nèi)率先提出穿戴計(jì)算機(jī)的概念,堅(jiān)持多年,就獲得了軍方的認(rèn)可。對(duì)于剛出道的年輕人,無(wú)力直接影響政府,那只有自己預(yù)先判定一個(gè)幾年后可能成為熱點(diǎn)的方向,先走一步,做出一些成績(jī)來(lái),等到大氣候適宜的時(shí)候,由于他已經(jīng)取得了一定的成果,也有可能被認(rèn)可為這個(gè)領(lǐng)域的先行者,得到國(guó)家的支持。
課題的類(lèi)型
對(duì)一個(gè)課題的類(lèi)型要有一個(gè)判斷,是研究型的還是開(kāi)發(fā)型的,如果是研究型的,要組織博士生們來(lái)攻關(guān),鼓勵(lì)大家大膽嘗試,提出創(chuàng)見(jiàn);如果是開(kāi)發(fā)型的,要更多地召集碩士生們來(lái)做,強(qiáng)調(diào)利用一切現(xiàn)有的技術(shù)手段把技術(shù)或系統(tǒng)做到實(shí)用可靠。這兩者要分的比較清楚,既不能通過(guò)各種打補(bǔ)丁的方法,或者說(shuō)一大堆小技巧來(lái)對(duì)付研究型的課題,因?yàn)槟菢邮亲霾怀鐾黄菩赃M(jìn)展的,也不能在開(kāi)發(fā)類(lèi)課題上總是異想天開(kāi),嘗試還很不成熟的技術(shù)。
如果是研究型課題,還要區(qū)別是基礎(chǔ)研究還是應(yīng)用研究,基礎(chǔ)研究的結(jié)果不能直接被用戶(hù)使用,類(lèi)似重工業(yè),應(yīng)用研究的結(jié)果最終用戶(hù)直接就能夠用上,類(lèi)似輕工業(yè)。對(duì)于基礎(chǔ)研究,可以?huà)侀_(kāi)具體應(yīng)用的約束,專(zhuān)注于一些科學(xué)原理技術(shù)原理的突破。對(duì)于應(yīng)用研究,則需要考慮用戶(hù)的需求。
課題還有長(zhǎng)期(long term)和短期(short term)之分,長(zhǎng)期研究的課題往往難度大,研究結(jié)果難以預(yù)料,短期項(xiàng)目則比較好預(yù)測(cè),可以速戰(zhàn)速?zèng)Q。
怎樣做研究(四)
在一個(gè)具體的題目上作研究,應(yīng)該遵從怎樣的程序呢?我覺(jué)得可以概括為"螺旋式深入",也就是在"閱讀","思考","實(shí)驗(yàn)","寫(xiě)作",再閱讀。。。這四個(gè)階段的時(shí)間分配可以根據(jù)實(shí)際情況靈活調(diào)整,剛進(jìn)入課題的研究生閱讀調(diào)研花費(fèi)的時(shí)間要多一些,而在一個(gè)課題上已經(jīng)開(kāi)展了一兩年工作的人則可能增量式地閱讀資料,閱讀時(shí)間自然比起步時(shí)少一些。專(zhuān)門(mén)用于思考、設(shè)計(jì)、推演的時(shí)間可能并不多,但思考是滲透在其它三個(gè)階段中不斷進(jìn)行的,因此總的思考時(shí)間并不少。實(shí)驗(yàn)中編程的時(shí)間應(yīng)該盡可能短,用更多的時(shí)間進(jìn)行實(shí)驗(yàn)數(shù)據(jù)的分析。寫(xiě)作是常常被中國(guó)的研究生忽略的環(huán)節(jié),寫(xiě)作的時(shí)間要足夠長(zhǎng)。收集資料,了解別人的工作,找出問(wèn)題所在,針對(duì)性地提出自己的創(chuàng)意,用實(shí)驗(yàn)驗(yàn)證自己創(chuàng)意的正確性,總結(jié)歸納,撰寫(xiě)論文,發(fā)現(xiàn)新的問(wèn)題,再收集資料,如此反復(fù),這是研究活動(dòng)的大致流程。
怎樣閱讀資料
收集資料、閱讀資料是從事研究工作的第一步,但是如何收集、閱讀資料卻很有學(xué)問(wèn),初學(xué)者如果沒(méi)有得到足夠的指導(dǎo),常常走很多彎路。
1、 閱讀重要的論文
目前互聯(lián)網(wǎng)上的信息量太大了,對(duì)每一條信息的重要性、可靠性的判斷是一個(gè)人采集信息的關(guān)鍵環(huán)節(jié)。如果判斷一篇論文是否重要呢?GoogleScholar給出的引用數(shù)是一個(gè)有效指標(biāo),很多學(xué)者都引用的文章往往就是有價(jià)值的論文。有的同學(xué)覺(jué)得看中文論文容易,于是把自己能夠查到的中文論文一網(wǎng)打盡,反復(fù)閱讀,但是很多發(fā)表在三流刊物上為了評(píng)職晉級(jí)而炮制的論文完全沒(méi)有閱讀的價(jià)值,白白耽誤了時(shí)間。即使是英文論文,國(guó)外一樣有濫竽充數(shù)的文章,這樣的論文引用數(shù)肯定低,用引用數(shù)可能很容易地把這樣的論文淘汰掉。
計(jì)算機(jī)領(lǐng)域的頂級(jí)會(huì)議論文非常重要,在NLP領(lǐng)域有ACL,在IR領(lǐng)域有SIGIR,在機(jī)器翻譯領(lǐng)域有MT Summit,這些頂級(jí)會(huì)議的論文質(zhì)量很高,內(nèi)容很新,應(yīng)該高度關(guān)注。期刊上的論文是一個(gè)作者或機(jī)構(gòu)一個(gè)階段的研究成果的總結(jié),通常質(zhì)量較高,但由于審稿及編輯出版的周期很長(zhǎng),因此內(nèi)容不夠新,適當(dāng)關(guān)注即可。NLP領(lǐng)域的CL,機(jī)器翻譯中的MT,信息檢索領(lǐng)域的IP&M和JASIST等都是很好的期刊。進(jìn)入一個(gè)領(lǐng)域,必須立即了解該領(lǐng)域有哪些頂級(jí)的國(guó)際會(huì)議和國(guó)際期刊。
2、以作者為線(xiàn)索理清脈絡(luò)
閱讀論文一定要注意論文的作者是誰(shuí),研究機(jī)構(gòu)是哪里,以作者為線(xiàn)索理一理就會(huì)發(fā)現(xiàn)全世界搞你這個(gè)方向的也就那么幾個(gè)、十幾個(gè)研究機(jī)構(gòu)、研究者,以后就跟蹤這些人的研究工作即可,還能夠發(fā)現(xiàn)該作者的研究工作的演進(jìn)脈絡(luò)。如果拿到一篇文章就讀,讀完了也不知道作者是誰(shuí),時(shí)間長(zhǎng)了,就會(huì)感到暈頭暈?zāi)X,不知道從哪個(gè)期刊或會(huì)議上就會(huì)冒出一篇相關(guān)文章來(lái),讓你防不勝防。
3、 閱讀最新的論文
學(xué)術(shù)發(fā)展很快,要集中盡力閱讀近5年,特別是近3年的論文,對(duì)于5年前的論文,只看引用率最高的經(jīng)典文章即可。
4、 抓住論文的要害
讀完一篇論文必須了解哪些關(guān)鍵內(nèi)容呢?我覺(jué)得應(yīng)該包括以下方面:作者為什么要做這項(xiàng)工作?要解決的是一個(gè)什么問(wèn)題?作者在解決問(wèn)題時(shí)遇到了怎樣的困難?為了解決他的困難他提出了什么樣的解決辦法?試驗(yàn)結(jié)果是否可能真的證明他的方法好,數(shù)據(jù)是否充分,有沒(méi)有和別人的工作,別的方法進(jìn)行對(duì)比?你認(rèn)為他的方法是否新穎,你從中學(xué)到了什么?該方法有哪些不足,你是否立即有了新的改進(jìn)方案?如果有立即記錄下來(lái)。帶著上述問(wèn)題,抓住要點(diǎn),做好記錄,一篇長(zhǎng)文就會(huì)像庖丁解牛一樣轟然倒下。
5、 批判式閱讀
真理越辯越明,我們讀的是一篇學(xué)術(shù)論文,不是《圣經(jīng)》,不能帶著崇敬的心理去閱讀,要像一個(gè)審稿人那樣帶著批判挑剔的心理閱讀論文,在閱讀中不斷地找出論文中的問(wèn)題,選題上的,方法上的,實(shí)驗(yàn)上的,表述上的,并不斷地通過(guò)積極獨(dú)立的思考給出自己認(rèn)為見(jiàn)解。只有這樣,資料才能夠?yàn)槟闼茫粫?huì)成為你的包袱。有的同學(xué)讀資料,越讀越喪失信心,發(fā)現(xiàn)別人做得太好了,自己的想法都被別人做完了,資料全讀完了,自己也準(zhǔn)備換課題了,這是失敗的讀法。
中國(guó)的研究生要有信心,不要被國(guó)外所謂的名家嚇住。中國(guó)的科研水平在快速提高,科研人員的素質(zhì)也在快速提高。一位美籍華裔企業(yè)家在一篇文章中寫(xiě)道:"可不幸的是,除了很少頂尖學(xué)校的博士外,大部分博士所做的研究課題都是陳舊或者沒(méi)有意義的。"不知道頂尖高校的含義是什么,但是我覺(jué)得我們的研究生要對(duì)自己的國(guó)家有信心,對(duì)自己的學(xué)校有信心,對(duì)自己的倒是有信心,對(duì)自己有信心。只要我們掌握正確的研究方法,廣泛閱讀國(guó)外最新的研究成果,大膽嘗試自己人為正確的方法,充分釋放我們的聰明才智,我們就絲毫不用對(duì)國(guó)外的研究工作頂禮膜拜。在科學(xué)研究上,歐美人從內(nèi)心里是瞧不起我們亞洲人,我們中國(guó)人的,以至于歐美歸來(lái)的學(xué)者們也以歐美為樣板來(lái)評(píng)估我們教育科研體制,只要和美國(guó)不一樣就是大錯(cuò)特錯(cuò)了,中國(guó)高校的教師們都是在誤人子弟。我奉勸每一位研究生建立不崇拜權(quán)威,不崇拜歐美,只服從真理的獨(dú)立思維模式,大膽質(zhì)疑大膽批判,只有這樣才能不死于他人之言下,才能有活脫脫的自己。
posted @
2012-04-13 19:08 Seraphi 閱讀(336) |
評(píng)論 (0) |
編輯 收藏
用途:對(duì)我來(lái)說(shuō),學(xué)習(xí)HMM是為了對(duì)以后的詞性或概念標(biāo)注打下理論基礎(chǔ)
符號(hào)說(shuō)明:
S:表示狀態(tài)集合。
S=[S
1,S
2,S
3....]。其中S
i表示第i個(gè)狀態(tài)(第i種狀態(tài))
Q:表示系統(tǒng)實(shí)際的狀態(tài)序列,
Q=[q
1,q
2,....,q
T]。q1表示t=1時(shí),系統(tǒng)所處的狀態(tài),如:q
1=S
3表示t=1時(shí)刻,系統(tǒng)狀態(tài)為S
3。
1.離散馬爾可夫過(guò)程
(1)定義:一個(gè)系統(tǒng),在任一時(shí)刻t,可能處于N個(gè)不同狀態(tài)S
1,S
2...S
N中的某一個(gè)。系統(tǒng)變化服從某種統(tǒng)計(jì)規(guī)律。如果系統(tǒng)狀態(tài)序列滿(mǎn)足下列無(wú)后效的條件,則稱(chēng)(q
t,t
≥1)為離散的馬爾可夫過(guò)程。
P[q
t+1=S
j|q
t=S
i,q
t-1=S
k,...]=P[q
t+1=S
j|q
t=S
i]
可見(jiàn)系統(tǒng)將來(lái)的狀態(tài)僅與現(xiàn)在所處狀態(tài)有關(guān),與過(guò)去無(wú)關(guān),這種情況稱(chēng)之為“無(wú)后效”。
如果進(jìn)一步有P[q
t+1=S
j|q
t=S
i]與時(shí)刻t無(wú)關(guān),則稱(chēng)相應(yīng)的馬爾可夫過(guò)程是齊決的或是時(shí)齊的,引入記號(hào):
a
ij=P[q
t+1=S
j|q
t=S
i],1
≤i,j≤N
注:這里有人也稱(chēng)aij為Si→Sj的發(fā)射概率,也稱(chēng)轉(zhuǎn)移概率。
(2)初始概率分布: πi=P[q1=Si], 1≤i,j≤N
k步轉(zhuǎn)移概率:
aij(k)=P[qt+k=Sj|qt=Si]
當(dāng)k=1時(shí),aij(k)=aij(1)=aij
(3)切普曼—柯?tīng)柲缏宸蚬剑–hapman-Kolmogorol)

2.隱馬爾可夫模型
當(dāng)狀態(tài)本身是不可觀察,從而得到隱馬爾可夫模型(HMM)。值得一提的是,隱馬爾可夫模型(HMM)包含了雙重隨機(jī)過(guò)程:一是系統(tǒng)狀態(tài)變化的過(guò)程,即前面所述的馬爾可夫過(guò)程,另一個(gè)是由狀態(tài)決定觀察的隨機(jī)過(guò)程。
舉例:碗、球模型
假設(shè)N只碗,每個(gè)碗中放著數(shù)量與比例均不同的各種色彩的球,不同的彩色球?yàn)镸。先隨機(jī)選一個(gè)碗,再?gòu)耐胫须S機(jī)拿一個(gè)球,報(bào)告球的顏色得到一個(gè)觀察O1,然后將球放回到碗中,繼續(xù)這個(gè)過(guò)程,得到一系列觀察O=O1O2O3...OT
在這個(gè)模型中,碗(狀態(tài))是不可觀察的,只有球的顏色是可觀察的。這里引入M,指不同觀察值的數(shù)目 。所有不同觀察值記為V={V1,V2,....VM}。
對(duì)于第一種隨機(jī)過(guò)程(選碗),時(shí)齊馬爾可夫過(guò)程的轉(zhuǎn)移概率矩陣:A={aij},初始分布:π=(πi)
對(duì)于第二種隨機(jī)過(guò)程,有多項(xiàng)分布B={bj(k)},其中
bj(k)=P[時(shí)刻t時(shí)觀察值為Vk|qt=Sj]
給定一組N,M,A,B和π后,一個(gè)HMM即確定了,為緊縮起見(jiàn),今后將用λ=(A,B,π)表示一個(gè)HMM。
3.HMM中三個(gè)基本問(wèn)題
問(wèn)題1:
給定一個(gè)觀察序列O=O1O2...OT和一個(gè)模型λ=(A,B,π),如何有效計(jì)算P(O|λ),即給定模型λ的條件下,觀察序列O的概率。
問(wèn)題1是一個(gè)計(jì)算概率的問(wèn)題,也可以看成一個(gè)評(píng)估給定的模型能否很好地?cái)M合給定的觀察的問(wèn)題。
解法:
(1)前向算法:
定義αt(i)=P(O1O2....Ot,qt=Si|λ)
αt可用遞推算法完成計(jì)算:
①初始化:α1(i)= πibi(O1)
②遞推:
③終止:
(2)后向算法:
定義βt(i)=P(Ot+1,Ot+2,...,OT|qt=Si,λ)
βt可用遞推算法計(jì)算:
①初始化:βT(i)=1
②遞推:
③終止:
問(wèn)題2:
給定一個(gè)觀察序列O=O1O2...OT和一個(gè)模型λ=(A,B,π),如何選擇一個(gè)相應(yīng)狀態(tài)Q=q1q2...qT使得在某種意義下,它能最好地說(shuō)明觀察序列O。
兩個(gè)準(zhǔn)則:
準(zhǔn)則1:對(duì)每個(gè)時(shí)刻t,逐個(gè)選取狀態(tài)qt使
γt(i)=P(qt=Si|O,λ)=max
其中:

求出γ
t(i)后,問(wèn)題2便迎刃而解。
準(zhǔn)則2(應(yīng)用最為廣泛):綜合選取一個(gè)狀態(tài)序列
Q=q
1q
2....q
T使P(
Q|
O,
λ)=max
對(duì)于P(
Q|
O,
λ)=P(
Q,
O|
λ)/P(
O|
λ)
而分母P(
O|λ)與
Q無(wú)關(guān),因此等價(jià)于P(
Q,
O|
λ)=max。
對(duì)于全局最優(yōu)問(wèn)題,使用動(dòng)態(tài)規(guī)劃方法,這就是Viterbi算法。
定義

基于HMM特性,

因?yàn)槲覀兺瑯雨P(guān)心q
1q
2...q
T的序列,因此引入

整個(gè)遞推算法(Viterbi算法)描述如下:
①初始化
δ1(i)=πibi(O1)
φ1(i)=0
②遞推
③終止

④回溯最佳路徑
q
t*=
φt+1(qt+1*)
將其應(yīng)用到詞性自動(dòng)標(biāo)注中。在自動(dòng)標(biāo)注中,每個(gè)詞是可觀察的,一個(gè)詞串W=w1w2....wT即相當(dāng)這里的一個(gè)觀察序列O=O1O2...OT。不可觀察的狀態(tài)相當(dāng)于詞性或概念標(biāo)記,即狀態(tài)序列Q=q1q2....qT相當(dāng)于上一節(jié)中的一個(gè)標(biāo)記序列。
可以看出準(zhǔn)則1相當(dāng)于詞級(jí)評(píng)價(jià),準(zhǔn)則2相當(dāng)于句子級(jí)評(píng)價(jià)。
問(wèn)題3.
如何修正模型參數(shù)λ=(A,B,π)使P(O|
λ)=max。
問(wèn)題3是最困難的,至少也沒(méi)有很好的解法。可參考的方法有基于均值修正的迭代方法等。
參考文獻(xiàn):
[1] 吳立德: 大規(guī)模中文文本處理[M]. 復(fù)旦大學(xué)出版社,1993.
posted @
2012-03-07 13:56 Seraphi 閱讀(1321) |
評(píng)論 (0) |
編輯 收藏