一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

用shell而不用perl/python的理由

 閱文書(shū)苑 2014-06-06
 先不用說(shuō)"無(wú)論什么語(yǔ)言都是一種工具"。工具是我們身體的一部分,解放軍解放臺(tái)灣靠"小米加步槍"? "工具無(wú)所謂"論可以休矣。對(duì)于實(shí)際的軟件工程工具和平臺(tái)的選擇是很重要的,有時(shí)候是致命的
1. perl是強(qiáng)大的, perl=shell+awk+sed+一堆命令行工具。
   但是反過(guò)來(lái)也一樣shell+awk+sed+一堆命令行工具可以替代perl.
2. shell的簡(jiǎn)約,可讀性比perl好,工具之間通過(guò)命令行stdio管道通信,任何一個(gè)小部分都可以拿出來(lái)測(cè)試和試驗(yàn),程序維護(hù)/修改很容易。學(xué)習(xí)曲線和積累方式比perl更優(yōu)。
3. perl是跨平臺(tái)的呀!java,sysv標(biāo)準(zhǔn), posix是跨平臺(tái)工具和標(biāo)準(zhǔn)。oracle還跨平臺(tái)呢! 但是實(shí)際軟件部署是需要選擇平臺(tái)的,一旦選擇好了就希望這個(gè)平臺(tái)穩(wěn)定。雖然unix/linux的命令行工具在不同的平臺(tái)特性稍有不同,但是你一旦選定了平臺(tái),那么這個(gè)平臺(tái)上的shell/命令行工具就是非常穩(wěn)定的可依賴(lài)集合,不但可靠而且基本不會(huì)有變化。軟件開(kāi)發(fā)商的投資也因此受到了保護(hù)。perl和python則處于不斷的變化當(dāng)中,新的數(shù)據(jù)庫(kù)DBI模塊/某種功能的版本來(lái)臨,需要perl/python升級(jí)到新的版本。那么新的版本是否可靠,是否影響原有系統(tǒng)的運(yùn)行參數(shù)? 那么需要很多的回滾測(cè)試。perl可以寫(xiě)文件到某個(gè)路徑,win下面用盤(pán)符開(kāi)頭,*nix下面用/路經(jīng)開(kāi)頭---軟件開(kāi)發(fā)和部署的成本并沒(méi)有因?yàn)閜erl跨平臺(tái)而減少。
    如果perl只是用來(lái)作為"膠水"粘合其他的程序,那么跨平臺(tái)也就無(wú)從談起了。效率也比不上shell
4. python是面向?qū)ο蟮难?!不錯(cuò),只是沒(méi)有了shell使用管道拼接程序,難以單獨(dú)拿出某一塊來(lái)跑跑看看有什么效果。你必須讀完整個(gè)程序才能發(fā)現(xiàn)出了什么問(wèn)題。開(kāi)發(fā)成本不比shell低。
5. Unix的Kiss原則,perl和python都違反了。我剛學(xué)習(xí)shell,用的很爽。腳本里面有一部分是sed和awk,我不懂不要緊,我留給以后學(xué)習(xí)"sed和awk"。盡管如此我可以看到sed和awk的輸入輸出是什么,不影響我理解程序。我有用了,可以學(xué)學(xué)awk,學(xué)學(xué)find的高級(jí)用法。這些都不會(huì)使得原先的shell程序過(guò)時(shí)。perl呢? 就像java, swing出來(lái)了awt就過(guò)時(shí)了,一個(gè)新框架出來(lái)了老框架就得推導(dǎo)。作為一個(gè)語(yǔ)言,問(wèn)題域太大。而shell恰恰做到了kiss,它只做好自己的事情。
6. 作為弱類(lèi)型語(yǔ)言的perl,雖然避免了類(lèi)型的繁瑣開(kāi)銷(xiāo),同時(shí)也使得程序的調(diào)試更加困難,反而不如shell的文本IO來(lái)的直觀。
7. DBI很強(qiáng)大嗎? 我們的系統(tǒng)如果選定了oracle那我就在shell腳本里面sqlplus然后直接sql語(yǔ)句,用dbi豈不累死(5倍以上的代碼),難里理解,難以調(diào)試,可讀性也級(jí)差!為了dbi屏蔽了db的不同,提供統(tǒng)一的接口? 如果db要改變,那么定義文件,存儲(chǔ)過(guò)程,函數(shù)什么的全都要重寫(xiě)!腳本調(diào)用只是一小部分。python也存在同樣的問(wèn)題。如果完全不用存儲(chǔ)過(guò)程呢? 那么j2se+hibernate+spring好了,真正的跨平臺(tái)。perl/python的思想是大而全,和win+vs如出一轍。
8. python的很多用戶(hù)來(lái)自win,因?yàn)樯厦婺J(rèn)沒(méi)有shell,哈哈
9. python的運(yùn)行取決于變量,像perl一樣,無(wú)法如同shell一樣提取IO的結(jié)果來(lái)直觀的調(diào)試和修改。
10.是的, linux的anaconda安裝界面,yum都是基于python的,gnome/kde也大量依賴(lài)perl。那是為了有一個(gè)"像腳本一樣運(yùn)行的c/c++"。
   但是問(wèn)題是操作系統(tǒng),虛擬機(jī),桌面管理器都是嚴(yán)肅的東西,那些系統(tǒng)級(jí)別的perl/python的代碼有牛人和牛組織來(lái)保證。如果是普通的應(yīng)用軟件開(kāi)發(fā)呢(賣(mài)錢(qián)的那種),用perl/python的人會(huì)因?yàn)楦鞣N目的,有的是為了程序今后的擴(kuò)展性(其實(shí)他離開(kāi)以后這個(gè)版本就完結(jié)了),有的是為了移植性(其實(shí)大部分的系統(tǒng)都被綁定在一個(gè)特定的平臺(tái)),有的是為了趕時(shí)髦(很多python用戶(hù)都是這么來(lái)的),還有的是為了顯示自己的編程多么厲害使用一堆perl/python的高級(jí)特性:總之,這個(gè)豪華的工具就是雙刃劍,對(duì)于普通的項(xiàng)目普通的軟件開(kāi)發(fā)者來(lái)說(shuō),會(huì)給我們展示一個(gè)虛擬的天國(guó)(其實(shí)團(tuán)隊(duì)達(dá)不到那樣的把握水準(zhǔn)),然后會(huì)把事情弄得一團(tuán)糟。

    所以我選擇古老的shell,古老而且穩(wěn)定,保守而久經(jīng)考驗(yàn),足夠而且簡(jiǎn)潔。M16會(huì)被更好的M4取代,但是AK47卻是永恒的。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多

    国产欧美日韩在线精品一二区| 高清在线精品一区二区| 国产又黄又爽又粗视频在线| 亚洲伊人久久精品国产| 国产精品福利一级久久| 九九热这里只有免费精品| 亚洲一区在线观看蜜桃| 麻豆精品在线一区二区三区| 午夜视频免费观看成人| 亚洲一区二区三区在线免费| 日韩欧美中文字幕人妻| 日本av一区二区不卡| 正在播放国产又粗又长| 国产a天堂一区二区专区| 婷婷基地五月激情五月| 日本本亚洲三级在线播放| 亚洲精品国产精品日韩| 少妇毛片一区二区三区| 又色又爽又无遮挡的视频| 国产又粗又猛又爽色噜噜| 国产欧美日韩综合精品二区| 中文字幕亚洲精品乱码加勒比| 人妻内射在线二区一区| 日韩一区二区三区高清在| 欧美日韩免费观看视频| 国产又大又黄又粗又免费| 日韩aa一区二区三区| 东北老熟妇全程露脸被内射| 久久99精品国产麻豆婷婷洗澡| 国产偷拍精品在线视频| 国产又粗又硬又大又爽的视频| 欧美日韩一区二区午夜| 东京不热免费观看日本| 亚洲精品熟女国产多毛| 欧美性猛交内射老熟妇| 日本不卡在线一区二区三区| 加勒比日本欧美在线观看| 国产精品一区二区三区激情| 国产又粗又长又大高潮视频| 国产激情一区二区三区不卡| 欧美精品亚洲精品日韩专区|