0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內(nèi)不再提示

為什么我只用shell而不用perl、Python和PHP?

如意 ? 來源:CSDN ? 作者:finethere ? 2020-06-20 09:42 ? 次閱讀

先不用說“無論什么語言都是一種工具”。工具是我們身體的一部分,解放軍解放臺灣靠“小米加步槍”? “工具無所謂”論可以休矣。對于實際的軟件工程工具和平臺的選擇是很重要的,有時候是致命的

1. perl是強大的, perl=shell+awk+sed+一堆命令行工具。

但是反過來也一樣shell+awk+sed+一堆命令行工具可以替代perl.

2. shell的簡約,可讀性比perl好,工具之間通過命令行stdio管道通信,任何一個小部分都可以拿出來測試和試驗,程序維護/修改很容易。學習曲線和積累方式比perl更優(yōu)。

3. perl是跨平臺的呀!java,sysv標準, posix是跨平臺工具和標準。oracle還跨平臺呢! 但是實際軟件部署是需要選擇平臺的,一旦選擇好了就希望這個平臺穩(wěn)定。雖然unix/linux的命令行工具在不同的平臺特性稍有不同,但是你一旦選定了平臺,那么這個平臺上的shell/命令行工具就是非常穩(wěn)定的可依賴集合,不但可靠而且基本不會有變化。軟件開發(fā)商的投資也因此受到了保護。perl和python則處于不斷的變化當中,新的數(shù)據(jù)庫DBI模塊/某種功能的版本來臨,需要perl/python升級到新的版本。那么新的版本是否可靠,是否影響原有系統(tǒng)的運行參數(shù)? 那么需要很多的回滾測試。perl可以寫文件到某個路徑,win下面用盤符開頭,*nix下面用/路經(jīng)開頭---軟件開發(fā)和部署的成本并沒有因為perl跨平臺而減少。

如果perl只是用來作為“膠水”粘合其他的程序,那么跨平臺也就無從談起了。效率也比不上shell

4. python是面向?qū)ο蟮难?!不錯,只是沒有了shell使用管道拼接程序,難以單獨拿出某一塊來跑跑看看有什么效果。你必須讀完整個程序才能發(fā)現(xiàn)出了什么問題。開發(fā)成本不比shell低。

5. Unix的Kiss原則,perl和python都違反了。我剛學習shell,用的很爽。腳本里面有一部分是sed和awk,我不懂不要緊,我留給以后學習“sed和awk”。盡管如此我可以看到sed和awk的輸入輸出是什么,不影響我理解程序。我有用了,可以學學awk,學學find的高級用法。這些都不會使得原先的shell程序過時。perl呢? 就像java, swing出來了awt就過時了,一個新框架出來了老框架就得推導。作為一個語言,問題域太大。而shell恰恰做到了kiss,它只做好自己的事情。

6. 作為弱類型語言的perl,雖然避免了類型的繁瑣開銷,同時也使得程序的調(diào)試更加困難,反而不如shell的文本IO來的直觀。

7. DBI很強大嗎? 我們的系統(tǒng)如果選定了oracle那我就在shell腳本里面sqlplus然后直接sql語句,用dbi豈不累死(5倍以上的代碼),難里理解,難以調(diào)試,可讀性也級差!為了dbi屏蔽了db的不同,提供統(tǒng)一的接口? 如果db要改變,那么定義文件,存儲過程,函數(shù)什么的全都要重寫!腳本調(diào)用只是一小部分。python也存在同樣的問題。如果完全不用存儲過程呢? 那么j2se+hibernate+spring好了,真正的跨平臺。perl/python的思想是大而全,和win+vs如出一轍。

8. python的很多用戶來自win,因為上面默認沒有shell,哈哈

9. python的運行取決于變量,像perl一樣,無法如同shell一樣提取IO的結(jié)果來直觀的調(diào)試和修改。

10.是的, linux的anaconda安裝界面,yum都是基于python的,gnome/kde也大量依賴perl。那是為了有一個“像腳本一樣運行的c/c++”。

但是問題是操作系統(tǒng),虛擬機,桌面管理器都是嚴肅的東西,那些系統(tǒng)級別的perl/python的代碼有牛人和牛組織來保證。如果是普通的應用軟件開發(fā)呢(賣錢的那種),用perl/python的人會因為各種目的,有的是為了程序今后的擴展性(其實他離開以后這個版本就完結(jié)了),有的是為了移植性(其實大部分的系統(tǒng)都被綁定在一個特定的平臺),有的是為了趕時髦(很多python用戶都是這么來的),還有的是為了顯示自己的編程多么厲害使用一堆perl/python的高級特性:總之,這個豪華的工具就是雙刃劍,對于普通的項目普通的軟件開發(fā)者來說,會給我們展示一個虛擬的天國(其實團隊達不到那樣的把握水準),然后會把事情弄得一團糟。

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

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • python
    +關注

    關注

    53

    文章

    4753

    瀏覽量

    84070
  • Shell
    +關注

    關注

    1

    文章

    359

    瀏覽量

    23192
  • PERL
    +關注

    關注

    0

    文章

    13

    瀏覽量

    10363
收藏 人收藏

    評論

    相關推薦

    php是什么

    中,并在服務器端執(zhí)行。PHP的設計靈感來源于C語言,同時也吸取了Java和Perl等其他語 言的特點,形成了獨特的語法結(jié)構(gòu)。這種語言特別適合于Web應用程序的開發(fā),因為它允許開發(fā)者快速地構(gòu)建動態(tài)網(wǎng)
    發(fā)表于 01-30 16:33

    PHP中數(shù)組的使用方法!

    PHP中數(shù)組的使用方法! PHP是一種廣泛使用的網(wǎng)絡編程語言,它的數(shù)組功能非常強大且靈活。數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它允許我們在單個變量中存儲多個值。 在本篇文章中,將詳細解釋PHP數(shù)組的
    的頭像 發(fā)表于 01-12 15:11 ?399次閱讀

    phpy:PHPPython互調(diào)用庫

    phpy 是識沃團隊最新推出的開源項目,目標是為 PHP 引入 Python 生態(tài),來彌補 PHP 生態(tài)的空缺和不足。phpy 使得 PHP 可以調(diào)用所有
    的頭像 發(fā)表于 12-12 10:43 ?837次閱讀
    phpy:<b class='flag-5'>PHP</b>與<b class='flag-5'>Python</b>互調(diào)用庫

    php的mysql無法啟動

    MySQL是一種常用的關系型數(shù)據(jù)庫管理系統(tǒng),PHP是一種廣泛應用于服務器端的腳本語言。在使用PHP開發(fā)網(wǎng)站或應用時,經(jīng)常會碰到MySQL無法啟動的問題。本文將詳細介紹解決MySQL無法啟動的方法
    的頭像 發(fā)表于 12-04 15:59 ?1085次閱讀

    php的源碼是開放的嗎

    PHP是一種開源的腳本語言,其源代碼完全開放并可免費獲取、使用和修改。這篇文章將詳細介紹PHP的源碼開放性。 一、PHP的源碼開放性 PHP的源碼是以
    的頭像 發(fā)表于 12-04 15:57 ?1006次閱讀

    php的配置文件是什么

    PHP的配置文件是一種用于配置PHP解釋器的文本文件。它包含了一系列的指令和選項,用于影響PHP的行為和性能。通過修改配置文件,可以改變PHP解釋器的默認行為,從而滿足不同的需求。 在
    的頭像 發(fā)表于 12-04 15:55 ?1344次閱讀

    php的適用范圍

    PHP是一種通用的腳本語言,特別適用于Web開發(fā)。它可以用來開發(fā)動態(tài)網(wǎng)頁、網(wǎng)站和Web應用程序。本文將詳細介紹PHP的適用范圍及其優(yōu)勢。 首先,PHP在Web開發(fā)中的應用非常廣泛。無論是簡單的靜態(tài)
    的頭像 發(fā)表于 12-04 15:54 ?421次閱讀

    phppython一樣嗎

    PHPPython是兩種不同的編程語言,盡管它們都用于開發(fā)Web應用程序,但它們有許多不同之處。從語法、用途、社區(qū)到性能和生態(tài)系統(tǒng)等方面來講,PHPPython在許多方面都有不同之
    的頭像 發(fā)表于 12-04 15:47 ?882次閱讀

    php運行機制和原理

    PHP是一種在服務器端執(zhí)行的腳本語言,它被廣泛用于開發(fā)動態(tài)網(wǎng)站。它的運行機制和原理非常重要,因為它決定了PHP腳本如何被解釋執(zhí)行和與服務器進行交互。 PHP的運行機制 PHP腳本的運行
    的頭像 發(fā)表于 12-04 15:28 ?762次閱讀

    php運行環(huán)境的配置步驟

    PHP是一種廣泛使用的服務器端腳本語言,被用來開發(fā)Web應用程序。為了在計算機上運行PHP代碼,我們需要配置PHP運行環(huán)境。本文將詳細介紹PHP運行環(huán)境的配置步驟。 下載
    的頭像 發(fā)表于 12-04 15:27 ?947次閱讀

    perl進程管理

    1 調(diào)用外部命令 調(diào)用命令的perl程序為該命令的父進程,繼承當前perl的標準輸入標準輸出
    的頭像 發(fā)表于 12-01 14:23 ?303次閱讀

    python安裝后idle在哪兒

    安裝即可。 在安裝 Python 后,您將獲得一個名為 IDLE(Python Shell)的集成開發(fā)環(huán)境(IDE)。IDLE 是專門為 Python 設計的一種輕量級的開發(fā)環(huán)境,它提
    的頭像 發(fā)表于 11-29 14:52 ?1000次閱讀

    python shell怎么用

    Python Shell是一種交互式解釋器,可以通過命令行直接運行Python代碼。在Shell中,可以輸入一行代碼并立即得到結(jié)果,非常適合于測試、嘗試新代碼或進行簡單的任務。本文將詳
    的頭像 發(fā)表于 11-29 14:36 ?862次閱讀

    Shell腳本程序開發(fā)-數(shù)組(四)

    數(shù)組中可以存放多個值。Bash Shell 只支持一維數(shù)組(不支持多維數(shù)組),初始化時不需要定義數(shù)組大?。ㄅc PHP 類似)。
    的頭像 發(fā)表于 10-22 17:50 ?429次閱讀
    <b class='flag-5'>Shell</b>腳本程序開發(fā)-數(shù)組(四)

    不用Nginx,只用Tomcat的Http請求流程

    只用Tomcat,不用Nginx搭建Web服務,行不行?曾經(jīng)提出的愚蠢問題,今天詳細給自己解釋下,為什么必須用Nginx!
    的頭像 發(fā)表于 10-17 10:54 ?561次閱讀