基于搜索的程序設計研究
發(fā)布時間:2018-11-20 14:58
【摘要】:程序設計是軟件工程的基礎,離不開程序設計語言的支持。受薩丕爾-沃爾夫假說(自然語言影響人的思維)的影響,計算機領域眾多科學家認為“程序設計語言影響開發(fā)者的思維”。在最近幾十年中,大量程序設計語言被設計出來,試圖用它們內(nèi)在的設計哲學影響開發(fā)者。然而,不同于自然語言,程序設計語言是人設計的,受語言設計者所關注的審美藝術和直覺驅(qū)動,富有藝術感,充滿偏好,他們可能無法完全了解開發(fā)者的真實想法,這使得大部分程序設計語言并沒有得到廣泛的使用。究其原因,“程序設計語言會影響開發(fā)者的行為”這種單向影響往往會帶來認知的片面性。本文認為:開發(fā)者的行為應該受到程序設計語言(能做什么)的影響;開發(fā)者的思維(想做什么)也應該影響程序設計語言的設計。本文將構建雙向關系,通過用戶的反饋影響程序設計語言的設計。開發(fā)者的思維反映在其具體行為之中,即如何使用程序設計語言完成程序設計任務。當下隨著眾多軟件資源(特別是開源軟件庫)對研究者開放,使得通過經(jīng)驗研究的方式理解程序設計語言在實際開發(fā)中的運用變得可能。本文分別通過定量和定性的方式對程序設計語言的實際使用情況進行分析,并利用從統(tǒng)計結果中抽取出來的“思維”反向影響程序設計語言,即以數(shù)據(jù)驅(qū)動的方法優(yōu)化程序設計語言的設計。具體來說,在使用單種程序設計語言的場景下,本文從詞法、語法和API(Application Programming Interface)三個層次對程序設計語言進行分析:在使用多種程序設計語言的場景下,本文探討語言之間的協(xié)同演化。論文的主要成果包含如下幾個方面:(1)研究了程序設計語言的詞法可識別性,發(fā)現(xiàn)“代碼單元在詞法上是可識別的”。定義并形式化最小集問題,嚴格地檢驗了有關Wheat-Chaff的假設;證明了最小集問題是NP難問題,并提供了以貪心算法為基礎的解決方案;通過分析大規(guī)模Java開源程序,證實了源代碼包含很多Chaff,海量代碼中的任何一個代碼單元可以通過規(guī)模極小的特有子集進行唯一標示。在此基礎上,進一步探討了詞法可識別性在相關領域的應用,包括代碼搜索、代碼概述和基于關鍵字的程序設計等。(2)研究了在實際開發(fā)中程序設計語言語法規(guī)則的使用情況。通過對超過5,000個當下流行的Java開源程序進行詳細的經(jīng)驗研究,著重探討了如下問題:Java語法規(guī)則如何在實踐中得到使用;語法規(guī)則的使用如何隨著時間變化:語法規(guī)則的使用如何依賴于上下文環(huán)境。實驗結果顯示,語法規(guī)則的使用遵循齊普夫定律;它們的使呈現(xiàn)出非平凡的“依賴性”;部分語法規(guī)則逐步被開發(fā)者遺棄,新引入語法規(guī)則會影響現(xiàn)有語法規(guī)則的使用,但并不是所有新引入語法規(guī)則均受到開發(fā)者青睞:基于經(jīng)驗研究的數(shù)據(jù)與結論,探討了相關應用場景,包括語法規(guī)則的優(yōu)化與限制使用、語法糖的識別和基于語法規(guī)則的代碼補全等。(3)研究了在實際開發(fā)中程序設計語言API的使用情況。定義了一系列系統(tǒng)化的API使用度量準則,包括頻繁度、流行度和覆蓋率。通過對開源程序的經(jīng)驗研究,分析了核心API庫的使用情況,發(fā)現(xiàn)大量API實體(包括包、類、方法和屬性)并沒有得到充分使用;分析了第三方API庫的使用,發(fā)現(xiàn)它們的使用符合冪次定律。與此同時,深入討論了棄用API的使用情況、精簡運行環(huán)境的利用率和第三方API庫多版本使用等三個重要問題;诮(jīng)驗研究的數(shù)據(jù),探討了相關應用場景,包括API庫的優(yōu)化、API庫使用約束、精簡運行環(huán)境的構建、API庫及版本推薦和API教育等。(4)研究了多程序設計語言環(huán)境下語言協(xié)作的使用情況。以數(shù)據(jù)庫應用系統(tǒng)為例,著重分析了數(shù)據(jù)庫schema演化對應用程序端代碼的影響。通過對當下流行的10個數(shù)據(jù)庫應用系統(tǒng)進行的大規(guī)模經(jīng)驗研究,重點探討如下問題:schema的演化是否頻繁劇烈;schema是如何進行演化的;schema演化是如何影響代碼演化的;诮(jīng)驗研究的數(shù)據(jù),提供了一些指導性意見,幫助開發(fā)一款自動化數(shù)據(jù)庫應用系統(tǒng)演化工具,協(xié)助schema與代碼協(xié)同演化。本論文的工作,即分析程序設計語言的使用情況,挖掘語言的實踐特性,能積極影響程序設計語言的設計與優(yōu)化,探索代碼搜索和補全技術等應用領域的新技術,啟發(fā)新型程序設計模型,以達到提升程序設計能力的最終目標。
[Abstract]:......
【學位授予單位】:東南大學
【學位級別】:博士
【學位授予年份】:2015
【分類號】:TP311.1
,
本文編號:2345212
[Abstract]:......
【學位授予單位】:東南大學
【學位級別】:博士
【學位授予年份】:2015
【分類號】:TP311.1
,
本文編號:2345212
本文鏈接:http://sikaile.net/wenyilunwen/huanjingshejilunwen/2345212.html
最近更新
教材專著