bash組織成樹資料結構

來源:互聯網
上載者:User

標籤:

君子也非獨佔,善假於物!bash也因此。
昨天晚上,今天早上世界盃很精彩。晚上醒來看到不斷地居住的電話。早上沒有喝的水開始讚賞在英國和意大利的對決。也TM精彩,最後生下了羅馬文化。意大利伊特魯裡亞文化獲得勝利,我甚至會很高興,然後看接下來的比賽,本田圭佑的進球很不可思議,原本打算加班。研究起了複雜六度切割網路。有點亂,可是還是在下午的時候悟出了一點什麼。小小睡在旁,心裡想著怎麼把bash組織成一棵樹,由於我實在不想也沒有能力使用Python來建立所謂的進階的資料結構,比方樹。


       樹。一個人類的常規組織形式。一個將近一萬年為人類所用的資料類型。現在被映射進電腦資料結構的時候被賦予了獨特的地位。二叉樹,堆,AVL樹,紅/黑樹狀結構。256叉樹。Radix樹。...不一而足,差點兒全部的程式設計語言都內建了這些樹的資料結構類型,即便不是如此,也會有非常多狂熱的開發人員組建一系列的所謂庫來實現這些樹的介面。可是除了一種語言,即Shell,對於LInux而言就是bash(我從來不用其他的shell,儘管曆史淵源深厚。但曆史不是現實。這是理解曆史的優點...),為什麼沒有人開發Linux的樹型資料結構呢?...shell是一種粘合語言。不是一種實現邏輯的語言。這或許就是根本??假設世界盃講解員在講解西班牙VS荷蘭對決的時候,在荷蘭進球前一直傾向於西班牙會贏,無異於低水平的賭博,實際上當我說沒有人實現bash版本號碼的樹型資料結構的時候,造就有人發在了github上了,僅僅是我這個傻BI沒有找到而已,所以我不再依照長平之戰的原則來評論此事。我僅僅是試著去做,由於假設我做不到,將是我工作的重大失職,就如同西班牙球員將球送進自己的球門一樣...bash為何沒有簡單的辦法實現樹型結構。甚至沒有實現不論什麼的資料結構,原因在於,它不須要!


       君子善假於物也。bash本身沒有tree的語義,可是UNIX的檔案系統正是tree組織的,而bash操作UNIX檔案夾/檔案簡直就是如魚得水,我突然想到了Linux核心的make menuconfig是怎麼找到那麼多的config的。其實不須要一個統一的congifg。僅僅須要各個檔案檔案夾自己構建自己的config項就能夠了。make的時候自然會遍曆檔案系統,然後取出config項目。僅此而已,Linux的諸如make menuconfig命令不須要自己實現一套遍曆檔案夾的演算法。

假設我想實現一個樹型的操作序列,比方在ECC演算法下的TLS分別用SM1和SM4來進行對稱式加密。使用ECC或者SM2進行認證(即所謂的演算法套間,cipher-suit)。怎麼辦?依照傳統的程式設計語言。我要內建一個struct,實現一個樹。可是,可是現代的複雜問題已經不同意你去編寫和編譯所謂的結構體了(關鍵在於編譯)。問題的根本在於你是在想用這些語言解決你的問題(去年我..一個表,我過不去的坎)還是你想研究程式設計語言本身。假設是後者,請略過此文,但假設不是。我認為C/C++/Java已經不適合了,Python,Perl。Bash更合適。由於這些語言能夠讓你不必去思想怎樣構建一棵樹的問題,以Python為例,不必多說。我懂得沒你多,可是以bash為例呢?由於沒有什麼庫能夠使用。你瞬間呆住了!...我一直以來也是這樣考慮的,,但突然,我不這麼認為了,我認為bash能夠利用的庫(Library)不是沒有,而是非常多。多到什麼程度?答案是整個系統!
       Linux的檔案夾系統是一個樹型結構。bash能夠非常好的利用它!bash儘管沒有內建不論什麼結構。可是卻能夠利用全部的其他結構。Linux核心的設計者已經想到了這一點。看一下sysfs和procfs吧。當你使用cat/echo等命令來操作的時候,是不是認為比自己寫代碼更輕鬆些呢(儘管少了自己炫技巧的機會...)?不要把檔案系統當作一個齷齪的IPC機制,實際上你能夠變通。你能夠將記憶體的好幾G。比方1G全部構建一個ramfs。然後在裡面盡情搞檔案操作吧。不會有不論什麼效能損失,記住。檔案IO僅僅是一個介面而已(請別跟我扯系統調用會影響效率。或許能夠使用mmap...書看多了,課上傻了...)!檔案介面是一個非常猛的東西,它能夠內建你無法實現的資料結構,比方樹。

我沒有必在指令碼內部維護一棵樹,我僅僅須要建立一個樹型的檔案檔案夾系統就可以,然後利用豐富的檔案系統IO命令來蹂躪它,假設你不想讓我的額外檔案系統汙染你那清純的檔案系統,我就建立一個ramfs,我僅僅是將記憶體格式化了而已。
       bash不是程式設計語言,然而它又是全部的程式設計語言,它能夠粘合全部的語言寫成的邏輯。其內恰性遠遠超過諸如Python,Perl,PHP之類的語言。它是UNIX內建的。bash。它實際上就是UNIX本身的程式設計語言,UNIX本身就是一個庫!

我不是反對現代軟體project,我僅僅是認為在某些領域,某些地方,某些日常事務,軟體project確實走偏了方向。
       大師出手的時候不知道自己用的招數的名字。我在想,那些所謂精通設計模式的人們。你們可曾知道。你們比設計模式領域的大師更猛,由於當這些大師在做一個系統的時候,實在不知道自己在使用什麼模式,可是你可能更知道。突然想到了《依天屠龍記》中張三丰問張無忌,直到張無忌的功夫口訣全部忘記之後。才同意其出戰,精髓所在!
      花式足球競賽進行中,高手都是一幫跳街舞的人,技術太TMD炫了,但在世界盃中除了C羅差點兒沒有人炫花式技巧,於是我以前想,花式足球不有用。僅僅適合表演,可是看了世界盃大牌明星這些人的花式足球表演後,我知道了,有些技喬只為炫技,但本質不包含在所謂的能量閃光尖。


著作權聲明:本文博主原創文章,部落格,未經同意不得轉載。

bash組織成樹資料結構

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.