徐偉偉 王易澤暉 葛 子
(上海立信會計金融學院 上海 201209)
(1)研究背景。我們的手機,電腦總是在使用一段時間后提示內存不足,而內存不足會直接影響手機應用的啟動和電腦使用的運行速度。對于這些棘手的問題,我們現在所常用的解決方法有系統自帶的內存清理功能、刪除一些不常使用的應用或者文件數據、應用商店提供的幾款內存清理APP、重購內存更大的設備。現如今我們的硬盤做得越來越大,1TB的存儲空間也相繼出現在筆記本電腦、平板、手機上。面對內存告急我們真的需要不斷去置換更大的存儲設備嗎?
(2)研究目的。面對內存告急的提示,往往會疑惑自己并沒有使用多少存儲空間,內存怎么就不夠用了。而使用了內存清理功能卻發現存儲空間的空余空間并沒有變大,當自己通過文件管理自行刪除的時候又看不懂文件名,并不知道什么類型的文件是可以刪除的。本項目便針對該問題從深度清理手機電腦的冗余垃圾、無效數據文件等占用用戶存儲空間的數據、設計人性化、直觀的、可供選擇的清理功能、通過針對性強的Lisp語言來實現功能等角度,提出設想。
LISP語言(LISP,List Processing的縮寫)是一種早期開發的、具有重大意義的自由軟件項目。它適用于符號處理、自動推理、硬件描述和超大規模集成電路設計等。特點是,使用表結構來表達非數值計算問題,實現技術簡單。LISP語言已成為最有影響,使用十分廣泛的人工智能語言。
(1)主要數據結構是表(符號表達式),而不是作為算術運算對象的數。
(2)特性表簡單,便于進行表處理。
(3)最主要的控制結構為遞歸,適于過程描述和問題求解。
(4)LISP程序內外一致,全部數據均以表形式表示。
(5)能夠產生更復雜的函數和解釋程序。
(6)對大多數事物的約束發生在盡可能晚的時刻。
(7)數據和過程都可以表示成表使得程序可能構成一個過程并執行這個過程。
(8)大多數LISP系統可以交互方式運行,便于開發各類程序,包括交互程序。
Lisp語言主要數據結構是表以及符號表達式,符號表達式是以括號為界限的結構區分函數、參數、數據等元素構造的整體。這樣的結構方便了編譯過程,便于進行表的處理。對于獲取到的大量數據我們可以存到一張表里,增強數據的存儲邏輯,從而方便我們對數據的處理,簡化了處理過程,使得處理邏輯更容易實現,可以為我們的代碼塊“瘦身”。同時因為表的巨大優勢,我們可以更為便捷地對多個應用的數據作批處理,由于應用數據文件具有同質性,在表中按照特征檢索可以更快地針對多個軟件同時進行索引和清理。所以我們可以設計針對數據特征的檢測算法,該算法根據表中存儲的數據進行遍歷,對后綴名、文件大小、文件類型進行區分提取,分辨是緩存文件、日志文件或是數據文件。因此,我們可以很輕松的為清理軟件增加更多的功能,在原有的分類基礎上加以細分,增加更多的細節處理。比如:在分類的時候我們可以標注文件的根目錄,文件是否已經損壞,刪除是否對程序會有影響,或者增加一個最新文件、最舊文件、重復文件、空的文件夾清理的功能,直接跳轉到文件位置等等便利的功能,提供給用戶更好的使用感。
Lisp語言的最主要控制結構為遞歸。遞歸是一種特殊的函數調用,是在一個函數中又調用了函數本身,使得Lisp語言設計出的程序更加簡潔,更具可讀性。本身Lisp語言的特點就是符號化表示數據和函數(S-表達式),基本實現數據的遞歸定義,函數按照遞歸算法實現,數據結構更是按照遞歸定義的,這使得遞歸邏輯在lisp語言之中是最主要的控制方式。根據我們的研究分析,手機的應用數據存儲與緩存的存儲存在規律性和辨識性,我們可以通過文件名索引到應用的不同資源位置,而且根據資料表示,空文件夾以及空文件是在應用運行過程中產生的中間性文件即只在應用運行時候才發生作用。軟件在每一次用戶需要響應的時候都會生成一個日志文件、緩存文件以及中間文件,但是在用戶關閉軟件的時候,這些文件并不會被刪除。對于用戶來說這些文件也是屬于垃圾文件,日積月累之下則會占據不小的內存空間,所以這就需要采用遞歸調用的方式,不斷調取相應的文件夾,可以將文件夾之間的關系看作圖的結構,采用深度優先遍歷DFS算法,加上條件判斷:直到下一個文件的類型判定不再為文件夾之后,就可以斷定這是數據,然后找到這些垃圾文件并予以清除,從而達到底層清理的效果。同時,我們為要處理的數據選擇到最合適的數據存儲結構(如雙向表、二叉樹、廣義表等),我們也可以輕松地查找到想要的數據。由此延伸,遞歸模式使得我們可以不斷修改、調試、糾錯,可以讓我們在不斷修改和增加用戶自定義函數來構成復雜的系統。這樣我們可以為一些用戶打開一個入口,自定義一個處理過程,這樣一來我們就可以為用戶增加一個自定義功能。對于我們整理出垃圾文件,冗余文件,緩存等文件時,我們只要對存放數據的表進行查找,不需要再去尋址,是極其便利的,簡化了我們的數據清理過程,也極大的提高我們整個數據清理過程的速度。
Lisp語言提供的有關符號的特征值和特征表的相應操作,可以方便的實現各種搜索。所以我們可以利用Lisp操作符:quote、atom、eq 進行符號判斷,car、cdr、cons操縱表格,cond負責分支判斷,來實現定期自動化搜索、智能檢索。另外,我們可以加入時間序列的標記,記錄文件的創建時間以及最后修改時間,計算時間間隔以及距今時間跨度,通過間隔長短來判斷文件的重要程度,一般來說不重要的數據文件的特征都是太久沒有訪問或者訪問的頻次過低,我們將其作為基本判定條件進行篩選,然后利用經過訓練的重要性判斷機制以降序的形式呈現給用戶。上述的重要性判別,我們設想采用機器學習的訓練模式設計智能判斷重要性機制,根據我們采集的不同數據文件的時間間隔以及實際對于用戶重要程度的結果輸入進行訓練,并加入用戶習慣以及使用規律進行推斷,實現個性化的分析策略,給用戶最有效率的清理過程。由于Lisp語言設計的特征值和特征表的相應操作,其實可以理解為給我們提供了一把萬能鑰匙,利用這把鑰匙我們可以打開任何一個存儲空間的大門,方便我們實現各種各樣的搜索,提供自學習的可能。最后則是針對用戶的前端設計,Lisp語言的設計無法可視化,我們以其的特點作為開發的底層邏輯,并通過其他語言呈現給用戶更清晰更明了的列表形式,并通過上述算法提供相應分析,進一步幫用戶提高數據清理的精確度,使得數據清理的選擇項更人性化。
我們主要想利用Lisp語言提出以表的形式存儲及處理、遞歸邏輯調用數據文件、數據文件的逐層智能檢索這三點基礎優化點。希望在根本上去優化現有的垃圾清理軟件,也為這些軟件提出了一些增加更加人性化的功能的優化點,如增加一個最新文件、最舊文件、重復文件、空的文件夾清理的功能,增加一個自定義功能等。因為Lisp語言是一門自由度很高的語言,它在人工智能領域的應用非常多,作為一門可以靈活調用的實驗性語言,這方便了開發者在實驗過程中的不斷測試修改。不過它依舊存在著一些不足,無法可視化以及對于非開發者的閱讀代碼不友好是我們將它作為底層邏輯設計的原因,我們希望可以在Lisp的基礎上進行研發設計,再通過C++、Java、Python等程序語言結合上述算法結構給實現提供可能性。