• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    程序合成研究進(jìn)展

    2019-10-08 06:52張銀珠董威劉斌斌
    軟件 2019年4期

    張銀珠 董威 劉斌斌

    摘 ?要: 在軟件工程領(lǐng)域中,程序自動(dòng)合成是一個(gè)非常核心的研究方向,并且在軟件開(kāi)發(fā)活動(dòng)如此普及的社會(huì)中有望成為未來(lái)軟件工程變革的核心技術(shù)。隨著多年該領(lǐng)域的研究發(fā)展,已經(jīng)衍生出了很多種不同的流派與技術(shù)路線(xiàn)。本文針對(duì)程序合成領(lǐng)域的發(fā)展現(xiàn)狀與技術(shù)研究進(jìn)展做了綜合敘述,并探究目前程序合成領(lǐng)域所面臨的挑著與未來(lái)一段時(shí)間內(nèi)需要解決的問(wèn)題。

    關(guān)鍵詞: 程序合成;搜索排序;程序結(jié)構(gòu)

    中圖分類(lèi)號(hào): TP311.51 ? ?文獻(xiàn)標(biāo)識(shí)碼: A ? ?DOI:10.3969/j.issn.1003-6970.2019.04.005

    本文著錄格式:張銀珠,董威,劉斌斌. 程序合成研究進(jìn)展[J]. 軟件,2019,40(4):2530

    【Abstract】: Automatic program synthesis has become a core research direction in the field of software engineering. And it is expected to become the core technology of future software engineering with software development becoming more and more popular in current society. There exists different schools and technical routes in the research of program synthesis. In this paper, a comprehensive description of the development status and technology progress of program synthesis is given and we also explores the challenges facing the current field of program synthesis and the problems that need to be solved in the future.

    【Key words】: Program synthesis; Search and rank; Program structure

    0 ?引言

    隨著軟件工程的發(fā)展,軟件開(kāi)發(fā)愈加成為互聯(lián)網(wǎng)以及其他軟件相關(guān)企業(yè)的主要活動(dòng)。因此軟件開(kāi)發(fā)技能成為軟件從事企業(yè)人員的必備技能,即使在非必需的情況下,掌握基本的軟件開(kāi)發(fā)知識(shí),也能夠幫助工作人員更好的適應(yīng)信息化場(chǎng)景的工作及要求。軟件開(kāi)發(fā)人員的工作通常是復(fù)雜多樣并需要重復(fù)勞動(dòng),他們需要時(shí)常搜索并學(xué)習(xí)不同領(lǐng)域的開(kāi)發(fā)方法,這對(duì)開(kāi)發(fā)人員的要求大大提高,并極大增加開(kāi)發(fā)人員的負(fù)擔(dān),拖累開(kāi)發(fā)工作的進(jìn)程。為了將軟件開(kāi)發(fā)人員從復(fù)雜繁重的開(kāi)發(fā)工作中解放出來(lái),程序合成成為未來(lái)軟件工程的重點(diǎn)研究與投入方向之一。

    1 ?程序合成的概念

    程序自動(dòng)合成又稱(chēng)程序綜合技術(shù),旨在圍繞用戶(hù)意圖,合成出符合用戶(hù)需求的軟件代碼的活動(dòng)。程序合成的目的是讓機(jī)器合成出代碼,能夠減輕程序員的負(fù)擔(dān),并有望將編程人員將關(guān)注點(diǎn)放到軟件的高層設(shè)計(jì)上,而不用花費(fèi)過(guò)多時(shí)間在細(xì)節(jié)實(shí)現(xiàn)上。研究人員Sumit Gulwani[1]指出,代碼自動(dòng)生成過(guò)程一般分為三個(gè)階段,用戶(hù)需求的描述,程序搜索空間的表述,設(shè)計(jì)合適的搜索排序技術(shù)。這里每個(gè)階段都涉及到不同的方法,適用于不同的場(chǎng)景,例如用戶(hù)需求可以利用規(guī)約形式描述,也可以用自然語(yǔ)言描述。需求的描述越抽象,進(jìn)行程序合成越困難。也就是說(shuō)利用自然語(yǔ)言描述的需求來(lái)生成代碼面臨更多的挑戰(zhàn),包括需要克服自然語(yǔ)言與程序需求之間的差距和程序需求與實(shí)際程序代碼之間的鴻溝。

    2 ?程序合成的關(guān)鍵要素

    程序合成有三個(gè)關(guān)鍵要素[1],用戶(hù)意圖表述,搜索空間描述以及設(shè)計(jì)合適的搜索技術(shù)。用戶(hù)意圖表述有多種方式,邏輯規(guī)約,輸入輸出數(shù)據(jù)對(duì),程序路徑以及自然語(yǔ)言等。該如何選擇不同的需求描述取決于具體的任務(wù)背景。邏輯規(guī)約用來(lái)描述程序輸入輸出間的邏輯關(guān)系,可以精確又簡(jiǎn)明的描述程序所遵循的規(guī)范,但是對(duì)于用戶(hù)來(lái)說(shuō)很難寫(xiě)出完整的程序邏輯規(guī)約。終端用戶(hù)通常不如專(zhuān)家的編碼水平,因此更傾向于提供自然性的需求描述如自然語(yǔ)言等。搜索空間通常需要在需求符合性和程序合成效率間做一個(gè)平衡。一方面程序搜索空間需要足夠大到能夠囊括用戶(hù)需求所有可能的程序,另一方面為了提升程序合成的效率,需要采取更有效的搜索方法將搜索空間限定在小的范圍內(nèi)。例如搜索空間可以被限定為所有操作組成空間的一個(gè)子集,或者在一個(gè)領(lǐng)域特定語(yǔ)言的范圍內(nèi)。搜索技術(shù)與排序技術(shù)類(lèi)似,目的是如何更有效的搜索出與需求接近的結(jié)果程序等。常見(jiàn)的搜索技術(shù)有枚舉搜索、基于約束求解的搜索或者兩者的結(jié)合等等。枚舉搜索將所有可能的程序按照某個(gè)順序一一列舉,通常效率較低,因此更常見(jiàn)的發(fā)方法是在傳統(tǒng)的枚舉搜索的基礎(chǔ)上加上啟發(fā)式的剪枝方法來(lái)提升搜索效率?;诩s束求解的搜索通常分為兩個(gè)過(guò)程,約束生成過(guò)程和具體求解過(guò)程。約束生成過(guò)程是將需求解程序搜索空間用邏輯描述其規(guī)范并轉(zhuǎn)換成約束的過(guò)程,生成約束通常需要對(duì)程序可能的控制流以及控制流下行為進(jìn)行編碼。求解約束的過(guò)程是在約束創(chuàng)建完成后,在約束所描述的搜索空間內(nèi)按照某種方式列舉可行解的過(guò)程,例如可以單純使用枚舉的方法,也可以添加其他的約束來(lái)改變枚舉的順序。

    3 ?程序合成的常見(jiàn)方法

    程序自動(dòng)生成分為幾種不同的技術(shù)路線(xiàn),他們或利用不同的需求描述語(yǔ)言,或針對(duì)不同的適用場(chǎng)景設(shè)計(jì)不同的搜索算法。從不同的角度來(lái)看,程序合成方法可以被劃分為不同的類(lèi)別,如圖1所示。

    3.1 ?從規(guī)約選取角度進(jìn)行分類(lèi)

    如圖1所示,從規(guī)約選取的角度來(lái)看,程序合成可以被分為基于示例(Programming by Examples)、基于框架(Sketch)、基于自然語(yǔ)言以及基于邏輯規(guī)約的程序合成方法。

    (1)基于示例的程序合成(Programming by Examples)

    基于示例的程序合成需要用戶(hù)提供輸入輸出示例作為需求描述,例如一個(gè)廣為人知的應(yīng)用就是在Excel中的Flash Fill[4,18]功能。用戶(hù)在表格中填寫(xiě)需求相關(guān)的多個(gè)輸入輸出對(duì),在有解的情況下,工具能夠有限時(shí)間內(nèi)找出合適的實(shí)現(xiàn)代碼,如圖2所示。

    Mehdi Manshadi[9]等提出了使用<輸入-輸出>測(cè)試對(duì)和自然語(yǔ)言需求描述結(jié)合的方式來(lái)指導(dǎo)程序自動(dòng)合成,該方法能夠提升僅在單一方法進(jìn)行程序合成的效果。首先利用<輸出-輸出>測(cè)試對(duì)搜索得到一個(gè)滿(mǎn)足所有數(shù)據(jù)對(duì)的程序集合,據(jù)此指導(dǎo)程序合成的過(guò)程。此外他們還提出可以利用群體智能來(lái)指導(dǎo)基于自然語(yǔ)言的程序自動(dòng)生成[14],類(lèi)似于“眾包”的思想,利用大量不同用戶(hù)為同一個(gè)自然語(yǔ)言描述的需求來(lái)提供不同的<輸入-輸出>測(cè)試對(duì),然后進(jìn)行程序合成,因此該方法能夠更好的捕捉到自然語(yǔ)言所描述的真實(shí)需求。

    (2)基于Sketch(框架)的程序合成

    基于框架(Sketch)的程序合成通常更加關(guān)注程序結(jié)構(gòu),例如while,if等循環(huán)語(yǔ)句,一個(gè)Sketch是不完整的部分程序,代表一個(gè)需要填充的程序框架。基于Sketch的程序合成允許用戶(hù)提供不完整的程序框架,合成工具通過(guò)語(yǔ)法指導(dǎo)或者其他方式進(jìn)行程序合成。例如Rastislav Bodik等人[10]對(duì)基于Sketch的程序合成進(jìn)行了總結(jié)并提出一些方法有助于程序合成在復(fù)雜Sketch上的合成過(guò)程,例如他們提出可以允許用戶(hù)提供部分程序框架的時(shí)候擴(kuò)展描述語(yǔ)言,也可以通過(guò)增加反例的形式來(lái)對(duì)程序合成過(guò)程加速。基于Sketch的程序合成還可以與機(jī)器學(xué)習(xí)的方法學(xué)習(xí)起來(lái),通過(guò)抽取大量Sketch與其實(shí)現(xiàn)代碼的數(shù)據(jù)對(duì),利用機(jī)器學(xué)習(xí)模型學(xué)習(xí)其中的映射關(guān)系,例如Vijayaraghavan Murali等人[11]提出利用深度學(xué)習(xí)中的RNN時(shí)序模型通過(guò)訓(xùn)練從大量Android代碼抽取出的<證據(jù),Sketch>數(shù)據(jù)對(duì),得到能夠根據(jù)用戶(hù)提供的證據(jù)預(yù)測(cè)程序Sketch的模型,然后通過(guò)語(yǔ)法指導(dǎo)的填充過(guò)程,得到填充后的程序。

    (3)基于自然語(yǔ)言的程序合成

    基于自然語(yǔ)言的程序合成需要用戶(hù)提供自然語(yǔ)言作為需求描述,程序合成利用自然語(yǔ)言或者將自然語(yǔ)言與別種形式的需求描述相結(jié)合生成出程序。由于自然語(yǔ)言通常與程序代碼之間有著較大的鴻溝,因此該方法的挑戰(zhàn)主要在于如何克服自然語(yǔ)言與機(jī)器語(yǔ)言之間的跨度上。相關(guān)工作如Aditya Desai等人[12]提出可以通過(guò)大量的<自然語(yǔ)言,領(lǐng)域特定語(yǔ)言>數(shù)據(jù)訓(xùn)練出通過(guò)用戶(hù)給與的自然語(yǔ)言描述翻譯出領(lǐng)域特定語(yǔ)言,然后利用領(lǐng)域特定語(yǔ)言進(jìn)行程序合成的方法。并通過(guò)在文本編輯,智能助手系統(tǒng)等領(lǐng)域的程序合成中驗(yàn)證了其效果。Navid Yaghmazadeh等人[13]提出可以將自然語(yǔ)言處理,程序合成與自動(dòng)程序修復(fù)領(lǐng)域結(jié)合起來(lái),允許用戶(hù)給出一個(gè)自然語(yǔ)言描述,首先利用語(yǔ)義分析功能將其轉(zhuǎn)換為一個(gè)SQL查詢(xún)的Sketch,然后利用類(lèi)型指導(dǎo)的程序合成方法合成出具體的SQL語(yǔ)句。由于用戶(hù)自然語(yǔ)言通常過(guò)于抽象,不能精確的反映出數(shù)據(jù)庫(kù)的機(jī)制,于是他們?cè)诜椒ㄖ惺褂昧隋e(cuò)誤修復(fù)技術(shù),對(duì)得到的SQL Sketch進(jìn)行合理性的修復(fù)知道得到高質(zhì)量的SQL查詢(xún)語(yǔ)句為止。

    (4)基于邏輯規(guī)約的程序合成

    基于邏輯規(guī)約的程序合成方法需要用戶(hù)針對(duì)程序功能提供完整的規(guī)約描述,規(guī)約可能用某種語(yǔ)法表示成公式。對(duì)于復(fù)雜需求,一般用戶(hù)來(lái)說(shuō)寫(xiě)出完整的程序規(guī)約比較困難,因此這種方法在應(yīng)用中很少被用到,實(shí)用性不夠好。

    3.2 ?從搜索策略角度進(jìn)行分類(lèi)

    從采用的搜索策略的角度進(jìn)行分類(lèi),程序合成方法又可以分為,基于語(yǔ)法指導(dǎo)的、基于代碼搜索的、基于深度學(xué)習(xí)以及基于API(組件)的程序合成。

    (1)基于語(yǔ)法指導(dǎo)的程序合成

    基于語(yǔ)法指導(dǎo)的程序合成一般需要用戶(hù)提供程序的輸入輸出規(guī)約或者語(yǔ)法框架,程序合成工具通過(guò)具體搜索策略或者符號(hào)搜索找到滿(mǎn)足用戶(hù)規(guī)約的程序,符號(hào)搜索需要從用戶(hù)規(guī)約中抽取出程序需要滿(mǎn)足的約束,然后利用約束求解器得到解。Kangjing Huang[17]等人提出可以將兩種搜索策略結(jié)合,利用決策樹(shù)的高度枚舉從短到長(zhǎng)的程序代碼,在每個(gè)固定長(zhǎng)度的枚舉過(guò)程中,通過(guò)舉反例的形式達(dá)到更精確的搜索。他們?cè)谝幌盗械腷enchmark上證明了該方法具有優(yōu)秀的效果。Rajeev Alur[19]等人描述了幾種方法針對(duì)語(yǔ)法指導(dǎo)的程序合成,包括激活學(xué)習(xí)、增加反例以及隨即搜索等,并執(zhí)行合理的benchmarks對(duì)比不同方法的效果。他們還對(duì)比了語(yǔ)法指導(dǎo)的程序合成比賽中驗(yàn)證過(guò)1500個(gè)benchmark的6個(gè)新的工具[20],并分析了其效果。

    (2)基于代碼搜索的程序合成

    基于搜索的程序合成方法結(jié)合了經(jīng)典的代碼搜索過(guò)程,在程序合成初期,利用代碼搜索得到與需求最接近的代碼結(jié)果,在此基礎(chǔ)上再進(jìn)行程序合成。基于搜索的程序合成方法能有效利用程序代碼搜索的結(jié)果縮小程序合成的時(shí)間復(fù)雜度和空間復(fù)雜度,該方法首先需要針對(duì)用戶(hù)需求進(jìn)行代碼搜索,可針對(duì)自然語(yǔ)言或代碼片段、程序關(guān)鍵詞進(jìn)行搜索,得到搜索出的代碼片段之后,再利用現(xiàn)有程序綜合技術(shù)得到符合需求的程序。相關(guān)工作例如Swim[2],能夠針對(duì)用戶(hù)提供的需求規(guī)約,檢索出相關(guān)的API名稱(chēng),然后通過(guò)檢索API使用模式集合找到最可能用的API模式序列,并據(jù)此包裝生成代碼片段。相關(guān)工作還有Hunter[3],能夠根據(jù)用戶(hù)提供的自然語(yǔ)言描述,檢索出相關(guān)代碼,并根據(jù)類(lèi)型距離對(duì)檢索結(jié)果排序,最后通過(guò)整數(shù)線(xiàn)性規(guī)劃(Integer Linear Programing)將程序綜合問(wèn)題轉(zhuǎn)化為基于API的代碼生成過(guò)程,并利用現(xiàn)有工具生成出符合需求的程序?;谒阉鞯某绦蜃詣?dòng)生成的效果與前期代碼搜索結(jié)果息息相關(guān),如何設(shè)計(jì)合理的搜索排序技術(shù)有效的找出與用戶(hù)需求最匹配的代碼成為該方法的關(guān)鍵點(diǎn)之一?;谒阉鞯某绦蚝铣杉夹g(shù)利用代碼搜索的結(jié)果,能夠有效的縮小程序綜合的空間,提升程序合成的時(shí)間效率,成為很多程序合成技術(shù)的首要過(guò)程。

    (3)基于深度學(xué)習(xí)的程序合成

    近幾年,人工智能行業(yè)迅猛發(fā)展,研究人員開(kāi)始研究如何使用更加智能化的方法實(shí)現(xiàn)程序自動(dòng)生成。機(jī)器學(xué)習(xí)等相關(guān)方法一般需要大量數(shù)據(jù)集來(lái)訓(xùn)練,而隨著互聯(lián)網(wǎng)的繁榮發(fā)展,Github等代碼托管平臺(tái)上存儲(chǔ)了大量的項(xiàng)目代碼使得利用機(jī)器學(xué)習(xí)來(lái)學(xué)習(xí)如何寫(xiě)代碼成為了可能。根據(jù)方法的風(fēng)格不同,基于深度學(xué)習(xí)的程序合成方法一般分為兩種類(lèi)別,一種是模型原理不可解釋的“黑盒”方法,另一種是能夠直接生成可解釋代碼的“代碼生成派”方法。黑盒的方法類(lèi)似于一個(gè)黑箱子,直接利用大量數(shù)據(jù)集訓(xùn)練得到代碼生成的規(guī)則,規(guī)則被表示為模型的參數(shù),因此具有不可解釋性?!昂诤信伞狈椒▽?duì)用戶(hù)來(lái)說(shuō)不易于使用和修改,因?yàn)橛脩?hù)并不能理解模型到底學(xué)習(xí)出了什么樣的編程規(guī)則。而“代碼生成派”則能夠直接根據(jù)需求生成出顯示的程序代碼,更加符合人類(lèi)所想象的機(jī)器自動(dòng)編程的狀態(tài)。在模型的使用階段,用戶(hù)只需提供一至多個(gè)輸入輸出數(shù)據(jù)對(duì),模型能夠根據(jù)輸入輸出數(shù)據(jù)對(duì),提取高層特征,預(yù)測(cè)出需求所需要的各種操作原語(yǔ)的概率,結(jié)果概率越高的操作原語(yǔ),越有可能在任務(wù)的實(shí)現(xiàn)代碼中用到。相關(guān)工作如DeepCoder[5],一種使用輸入輸出樣本的深度學(xué)習(xí)解決編程競(jìng)賽風(fēng)格的方法。該方法屬于典型的代碼生成派工作,能夠通過(guò)訓(xùn)練神經(jīng)網(wǎng)絡(luò)來(lái)預(yù)測(cè)有輸入到輸出的程序?qū)傩?。Facebook在該領(lǐng)域也有所研究,例如其選擇層級(jí)生成CNN網(wǎng)絡(luò)結(jié)構(gòu)[6](Hierarchical Generative Convolutional Neural Network,又稱(chēng)為HGCNN),利用隨機(jī)生成的程序,給定一些輸入,運(yùn)行程序得到輸出來(lái)構(gòu)造數(shù)據(jù)集,因此屬于無(wú)監(jiān)督學(xué)習(xí)的過(guò)程。

    (4)基于API(組件)的程序合成

    基于API的程序合成旨在根據(jù)用戶(hù)意圖生成出純API的程序代碼。其特點(diǎn)是結(jié)果程序中只包含API以及控制結(jié)構(gòu),不包含常量的聲明、運(yùn)算等語(yǔ)句。由于軟件模塊化程度是軟件開(kāi)發(fā)過(guò)程中衡量項(xiàng)目質(zhì)量的一個(gè)重要標(biāo)準(zhǔn),因此在軟件開(kāi)發(fā)過(guò)程中,提倡將不同功能封裝起來(lái),降低軟件代碼的耦合性,以減少模塊之間的依賴(lài),因此基于API的程序合成方法無(wú)疑是順應(yīng)軟件開(kāi)發(fā)的趨勢(shì)并且更方便用戶(hù)來(lái)復(fù)用代碼。典型的基于API的程序自動(dòng)合成工作如Ye Feng[7]等題出利用PetriNet來(lái)對(duì)API中方法間的關(guān)系進(jìn)行建模,用戶(hù)需要提供函數(shù)聲明和測(cè)試用例作為需求描述,該方法能夠遍歷PetriNet的可達(dá)性圖來(lái)找到符合用戶(hù)聲明的API序列,并執(zhí)行測(cè)試用例直到找到滿(mǎn)足需求的解為止。此外他們也提出可以由示例驅(qū)動(dòng)的基于API的程序合成方法[15],可以處理特定領(lǐng)域任務(wù)例如表格等文檔的處理與轉(zhuǎn)換,該方法將基于SMT的約束求解方法和基于API的程序合成相結(jié)合,并采取局部評(píng)估的方法,能夠針對(duì)小規(guī)模的java程序取得一定的效果。Sumit Gulwani等人[16]提出利用用戶(hù)提供的規(guī)約描述,在組件庫(kù)中生成出loop-free的研究,通過(guò)將用戶(hù)的規(guī)約抽取成約束,然后利用約束求解的過(guò)程生成程序。該研究能夠做到探索超過(guò)2010的大小的程序搜索空間,例如能夠合成出長(zhǎng)達(dá)20行的loop-free的位運(yùn)算程序代碼。

    4 ?程序合成面臨的挑戰(zhàn)

    現(xiàn)有研究工作[1]指出,程序合成主要面臨來(lái)自于兩個(gè)維度的挑戰(zhàn),一個(gè)是難掌控的程序搜索空間,一個(gè)是用戶(hù)意圖的多樣性。

    任何程序合成方法都包含著在搜索空間搜索的過(guò)程,而程序?qū)?yīng)的搜索空間都隨著其程序規(guī)模的增加呈指數(shù)增加趨勢(shì),大量有可能的候選結(jié)果,如何有效排序,提升程序合成的效率,也是研究人員不停在鉆研的問(wèn)題。隨著過(guò)去二十年里一些技術(shù)和算法上的突破,摩爾定理和約束求解的發(fā)展使得在合理時(shí)間內(nèi)可以搜索更大的搜索空間。但盡管現(xiàn)在的程序合成能夠產(chǎn)生一些符合需求的代碼片段,程序合成依然不能產(chǎn)生大規(guī)模的現(xiàn)實(shí)世界的代碼,并且在工業(yè)界應(yīng)用也非常受限。例如右Phothilimthana等人[8]提出的能夠合成出更短的程序的超優(yōu)化技術(shù)可以探索1079大小的程序空間。而一個(gè)能夠?qū)崿F(xiàn)MD5哈希函數(shù)的合成器就需要探索多達(dá)一萬(wàn)五千多個(gè)程序,遠(yuǎn)遠(yuǎn)超過(guò)現(xiàn)在程序合成方法所能探索的空間。因此在程序合成領(lǐng)域,新的搜索算法以及領(lǐng)域特定研究仍然面臨著艱巨的挑戰(zhàn)并有待于進(jìn)一步探索。

    如何精準(zhǔn)的表達(dá)并解釋用戶(hù)意圖是程序合成面臨的第二大挑戰(zhàn),最初的用戶(hù)意圖通常用程序邏輯規(guī)約來(lái)表示,這通常是針對(duì)一些演繹合成方法。最簡(jiǎn)單的功能例如字符串操作,針對(duì)一些輸入輸出規(guī)約通常會(huì)有數(shù)百萬(wàn)的程序與之一致,需要用戶(hù)提供簡(jiǎn)單的邏輯規(guī)約即可。但一旦問(wèn)題變得稍微復(fù)雜,用戶(hù)很難想象需求會(huì)有怎樣完整的規(guī)約,編寫(xiě)完整的規(guī)約對(duì)用戶(hù)來(lái)說(shuō)就像編寫(xiě)程序一樣復(fù)雜,非常不友好。近些年程序需求描述更加偏向自然語(yǔ)言化的趨勢(shì),用戶(hù)可以很輕松的用自然語(yǔ)言描述其所需要的功能,但這也帶來(lái)了需求描述和實(shí)現(xiàn)代碼之間的距離更加遠(yuǎn),需要研究更有效的算法來(lái)將自然語(yǔ)言程序翻譯成符合需求的代碼。如何在減輕用戶(hù)負(fù)擔(dān)的基礎(chǔ)上探索更好的用戶(hù)意圖表述方式成為程序自動(dòng)合成研究所面臨的另一挑戰(zhàn)。

    5 ?討論與展望

    近年來(lái),程序合成技術(shù)取得了多方面的進(jìn)步,從搜索算法到程序和成框架上都在隨著計(jì)算機(jī)研究熱點(diǎn)而有所改變。就目前整體取得的進(jìn)展和面臨的挑戰(zhàn)來(lái)說(shuō),我們認(rèn)為從以下幾個(gè)方面是未來(lái)一段時(shí)間內(nèi)程序合成技術(shù)有待于解決的階段性難題。

    (1)人機(jī)交互

    程序合成技術(shù)通常面臨的用戶(hù)水平參差不齊,對(duì)于一些剛剛使用程序合成工具的用戶(hù)來(lái)說(shuō)很難一次性提供完整的需求描述,因此良好的人機(jī)交互和階段性反饋能夠給程序合成工具帶來(lái)更好的用戶(hù)體驗(yàn)和使用效果。并且經(jīng)過(guò)用戶(hù)反復(fù)修改規(guī)約描述得到的合成代碼,往往能夠更加接近用戶(hù)需求的解。現(xiàn)有的程序合成方法鮮有可方便用戶(hù)反饋調(diào)式的工作出現(xiàn),而程序合成技術(shù)要想更好的落地實(shí)施,在其研究中占主要的不應(yīng)該僅僅是內(nèi)部算法,更不能缺少的是良好的用戶(hù)體驗(yàn)和易用性。

    (2)多元化需求描述

    過(guò)去的程序合成算法中探索了多種用戶(hù)意圖描述的方法,從最初的程序規(guī)約到后來(lái)更加易用的自然語(yǔ)言。然而只使用一種輸入作為需求描述往往不具有普適性,比如初級(jí)用戶(hù)難以寫(xiě)出完美的程序規(guī)約來(lái)約束程序合成過(guò)程,而僅使用自然語(yǔ)言雖然減輕了用戶(hù)負(fù)擔(dān)卻又給程序合成過(guò)程帶來(lái)了較為不確定的空間描述,導(dǎo)致用戶(hù)意圖過(guò)于抽象,合成不出理想的代碼結(jié)果。正如如今的軟件開(kāi)發(fā)過(guò)程講究的是協(xié)同合作而不是單一決策一樣,未來(lái)一段時(shí)間內(nèi)程序合成有必要探索如何結(jié)合多種形式的輸入,達(dá)到一種資源匯聚的效果。將自然語(yǔ)言、規(guī)約描述、關(guān)鍵詞描述等多種輸入結(jié)合能夠更好的減輕用戶(hù)負(fù)擔(dān),避免用戶(hù)難以針對(duì)一種需求描述方法寫(xiě)出完善的規(guī)約。

    (3)智能化程序合成

    隨著人工智能的火熱發(fā)展,研究學(xué)者們更希望能夠用智能化的方法來(lái)合成程序。雖然已經(jīng)產(chǎn)生了“黑盒派”以及“代碼生成派”等相關(guān)研究工作,但這些方法都處于研究的初期階段,無(wú)法很好的在現(xiàn)有需求上產(chǎn)生應(yīng)用,因此機(jī)器自動(dòng)編碼領(lǐng)域仍有很長(zhǎng)一段路要走。類(lèi)似于Github等互聯(lián)網(wǎng)代碼托管平臺(tái)已經(jīng)存儲(chǔ)了大量的項(xiàng)目代碼,這給以深度學(xué)習(xí)訓(xùn)練為核心來(lái)實(shí)現(xiàn)程序合成的方法提供了良好的契機(jī)。因此未來(lái)很長(zhǎng)一段時(shí)間內(nèi)將會(huì)有大量的研究工作將重心放在基于深度學(xué)習(xí)的程序自動(dòng)合成上,如何更好的挖掘出先驗(yàn)知識(shí)中的編碼規(guī)范來(lái)指導(dǎo)程序自動(dòng)合成,成為軟件工程領(lǐng)域當(dāng)前一個(gè)熱點(diǎn)研究領(lǐng)域。

    6 ?結(jié)束語(yǔ)

    信息化發(fā)達(dá)的互聯(lián)網(wǎng)時(shí)代已經(jīng)持續(xù)了很多年,使得軟件開(kāi)發(fā)活動(dòng)在社會(huì)發(fā)展中一直占有重要地位并不斷演化前進(jìn)?,F(xiàn)如今軟件開(kāi)發(fā)規(guī)模的復(fù)雜性使得人們更加追求良好的編程規(guī)范和高效的編碼效率,因此程序自動(dòng)合成領(lǐng)域在近年重新成為軟件工程領(lǐng)域的研究熱點(diǎn)。但程序自動(dòng)合成距離能夠產(chǎn)生工業(yè)應(yīng)用的那天還很遙遠(yuǎn),無(wú)論在搜索空間效率上,還是在用戶(hù)交互的可用性上都沒(méi)有達(dá)到一個(gè)良好的效果。而人工智能的發(fā)展給程序自動(dòng)合成帶來(lái)了新的方法流派,未來(lái)程序合成技術(shù)還有更多方向需要繼續(xù)探索前進(jìn)。

    參考文獻(xiàn)

    [1] S. Gulwani, O. Polozov and R. Singh. Program Synthesis. Foundations and Trends? in Programming Languages, vol. 4, no. 1-2, pp. 1–119, 2017.

    [2] Raghothaman M, Wei Y, Hamadi Y. SWIM: synthesizing what I mean: code search and idiomatic snippet synthesis. In: Proc. of the 38th Intl Conf. on Software Engineering. ACM, 2016: 357-367.[doi: 10. 1145/2884781. 2884808]

    [3] Wang Y, Feng Y, Martins R, et al. Hunter: next-generation code reuse for Java. In: Proc. of the 24th ACM SIGSOFT Intl Symp. on Foundations of Software Engineer. ACM, 2016: 1028-1032.[doi: 10. 1145/2950290. 2983934]

    [4] Gulwani S, Esparza J, Grumberg O, et al. Programming by Examples (and its applications in Data Wrangling). Verific-ation and Synthesis of Correct and Secure Systems. IOS Press, 2016.

    [5] Balog M, Gaunt A L, Brockschmidt M, et al. DeepCoder: Learning to Write Programs. In: Proc. of the 5th Intl Conf. on Learning Representations. 2017.

    [6] Gong Q, Tian Y, Zitnick C L. Unsupervised Program Induction with Hierarchical Generative Convolutional Neural Networks. In: Proc. Of the 5th Intl Conf. on Learning Representations.

    [7] Feng Y, Martins R, Wang Y, et al. Component-based synthesis for complex APIs. In: Proc. of the 44th Annual ACM SIGPLANSIGACT Symp. on Principles of Progra-mming Languages. 2017: 599-612. [doi:10.1145/3093333. 3009851]

    [8] Phitchaya Mangpo Phothilimthana, Aditya Thakur, Rastislav Bodík, and Dinakar Dhurjati. Scaling up superoptimization. In Proceedings of the 21st International Conference on Architectural Support for Programming Languages and Operating System (ASPLOS), pages 297-310, 2016.

    [9] Manshadi M H, Gildea D, Allen J F. Integrating Programming by Example and Natural Language Programming. In: Proc. of the 27th AAAI Conf. on Artificial Intelligence. 2013. AAAI Conf. on Artificial Intelligence. 2013.

    [10] Bodik R, Solar-Lezama A. Program synthesis by sketching[J]. Dissertations & Theses - Gradworks, 2008.

    [11] Murali V, Chaudhuri S, Jermaine C. Bayesian Sketch Learning for Program Synthesis[J]. 2017.

    [12] Desai A, Gulwani S, Hingorani V, et al. Program Synthesis using Natural Language[J]. 2016.

    [13] Yaghmazadeh N, Wang Y, Dillig I, et al. Type- and Content-Driven Synthesis of SQL Queries from Natural Language[J]. 2017.

    [14] Manshadi M, Keenan C, Allen J. Using the crowd to do natural language programming. In: Proc. of the 26th AAAI Conf. on Artificial Intelligence, Workshop on Human-Com-puter Interaction. 2012.

    [15] Feng Y, Martins R, Van Geffen J, et al. Component-based synthesis of table consolidation and transformation tasks from examples. In: Proc. of the 38th ACM SIGPLAN Conf. on Programming Language Design and Implementation. ACM, 2017: 422-436.[doi: 10. 1145/3062341. 3062351]

    [16] Gulwani S, Jha S, Tiwari A, et al. Synthesis of loop-free programs[J]. ACM SIGPLAN Notices, 2011, 46(6): 62.

    [17] Huang K, Qiu X, Tian Q, et al. Reconciling Enumerative and Symbolic Search in Syntax-Guided Synthesis[J]. 2018.

    [18] Gulwani, S., Harris, W. R., Singh, R.: Spreadsheet data manipulation using examples. Commun. ACM 55(8), 97–105 (Aug 2012), http://doi.acm.org/10.1145/2240236.2240260

    [19] Alur R, Bodik R, Juniwal G, et al. Syntax-guided synthesis[C]// Formal Methods in Computer-aided Design. IEEE, 2013.

    [20] Alur R, Fisman D, Singh R, et al. SyGuS-Comp 2017: Results and Analysis[J]. 2017.

    嫩草影院入口| 高清在线国产一区| 午夜精品一区二区三区免费看| 亚洲性夜色夜夜综合| 变态另类丝袜制服| 我的女老师完整版在线观看| 精品国产三级普通话版| 国产真实乱freesex| 精品午夜福利在线看| 国内揄拍国产精品人妻在线| 黄片wwwwww| 精品一区二区三区视频在线观看免费| 1000部很黄的大片| 亚洲成人久久性| 91狼人影院| 国产成人一区二区在线| 乱码一卡2卡4卡精品| 欧美国产日韩亚洲一区| 99在线视频只有这里精品首页| 亚洲av熟女| 18禁在线播放成人免费| 亚州av有码| 精品国产三级普通话版| av在线观看视频网站免费| 美女大奶头视频| 精品人妻偷拍中文字幕| 国产精品久久久久久久电影| 久久香蕉精品热| 久久久久国产精品人妻aⅴ院| 国产精品99久久久久久久久| 午夜免费男女啪啪视频观看 | 国产亚洲91精品色在线| 亚洲中文字幕日韩| 欧美绝顶高潮抽搐喷水| 国产人妻一区二区三区在| 69av精品久久久久久| 一级毛片久久久久久久久女| 欧美黑人欧美精品刺激| 99国产极品粉嫩在线观看| 国产极品精品免费视频能看的| 精品久久久久久久久久久久久| 国产美女午夜福利| 97热精品久久久久久| 我要看日韩黄色一级片| 一a级毛片在线观看| 精品人妻1区二区| 久久久久久久久久成人| 老女人水多毛片| 亚洲不卡免费看| 欧美黑人巨大hd| 久久久久久久久久黄片| 国产精品乱码一区二三区的特点| 老司机深夜福利视频在线观看| 欧美成人a在线观看| 日韩中字成人| 午夜福利在线在线| 精品午夜福利视频在线观看一区| 色哟哟·www| 亚洲欧美日韩无卡精品| 日日啪夜夜撸| 欧美日韩国产亚洲二区| 国产日本99.免费观看| 国产成人a区在线观看| 免费在线观看成人毛片| 日本 欧美在线| 色哟哟·www| 国产蜜桃级精品一区二区三区| 两个人的视频大全免费| 在线观看舔阴道视频| 日本在线视频免费播放| 热99re8久久精品国产| 色精品久久人妻99蜜桃| 99riav亚洲国产免费| a级毛片免费高清观看在线播放| 美女高潮喷水抽搐中文字幕| 性插视频无遮挡在线免费观看| 精品日产1卡2卡| 中文资源天堂在线| 国产一区二区在线观看日韩| 97热精品久久久久久| 免费黄网站久久成人精品| 国产探花极品一区二区| 成人三级黄色视频| 超碰av人人做人人爽久久| 国产美女午夜福利| 成人永久免费在线观看视频| 3wmmmm亚洲av在线观看| 97热精品久久久久久| 亚洲第一电影网av| 全区人妻精品视频| 精品久久国产蜜桃| 少妇人妻精品综合一区二区 | 国产精品一区二区三区四区久久| 简卡轻食公司| 欧美潮喷喷水| 1000部很黄的大片| 日韩强制内射视频| 国产单亲对白刺激| 国产伦一二天堂av在线观看| 色噜噜av男人的天堂激情| 一个人免费在线观看电影| 麻豆av噜噜一区二区三区| 91狼人影院| 国产午夜精品久久久久久一区二区三区 | 特大巨黑吊av在线直播| 日本熟妇午夜| 精品一区二区免费观看| 国产亚洲精品久久久com| 老女人水多毛片| 成人特级黄色片久久久久久久| 日日撸夜夜添| 一本久久中文字幕| 国产精品人妻久久久久久| 波多野结衣高清无吗| or卡值多少钱| 午夜福利成人在线免费观看| 一级黄色大片毛片| 久久中文看片网| 春色校园在线视频观看| 天堂av国产一区二区熟女人妻| 成人av一区二区三区在线看| 欧美性感艳星| 国内久久婷婷六月综合欲色啪| 欧美日韩综合久久久久久 | aaaaa片日本免费| 日韩在线高清观看一区二区三区 | 男插女下体视频免费在线播放| 国产又黄又爽又无遮挡在线| 国产精品一区二区性色av| 久久精品影院6| 乱系列少妇在线播放| 免费一级毛片在线播放高清视频| 美女大奶头视频| 亚洲欧美日韩卡通动漫| 内地一区二区视频在线| 国内精品美女久久久久久| 国产亚洲91精品色在线| 亚洲成人久久爱视频| 在线国产一区二区在线| 一区福利在线观看| 人妻少妇偷人精品九色| 国产av麻豆久久久久久久| 欧美+亚洲+日韩+国产| 嫩草影院精品99| 女人被狂操c到高潮| 国产毛片a区久久久久| 久久99热这里只有精品18| 日韩欧美精品免费久久| 国产在线男女| 一区福利在线观看| 国产人妻一区二区三区在| 欧美日本视频| 国产蜜桃级精品一区二区三区| 午夜免费激情av| 国内精品久久久久精免费| 22中文网久久字幕| 我要看日韩黄色一级片| 天堂影院成人在线观看| 亚洲av中文av极速乱 | 欧美日韩综合久久久久久 | 亚洲久久久久久中文字幕| 亚洲专区国产一区二区| 琪琪午夜伦伦电影理论片6080| 亚洲欧美激情综合另类| 精品不卡国产一区二区三区| 亚洲精品国产成人久久av| 欧美3d第一页| 一个人看的www免费观看视频| 色吧在线观看| 久久99热6这里只有精品| 久久精品国产亚洲av涩爱 | 12—13女人毛片做爰片一| 亚洲无线在线观看| 高清在线国产一区| 91午夜精品亚洲一区二区三区 | 国产高清不卡午夜福利| a级毛片a级免费在线| 成人二区视频| 亚洲第一区二区三区不卡| 久久久久久国产a免费观看| 两人在一起打扑克的视频| 少妇高潮的动态图| 哪里可以看免费的av片| 校园春色视频在线观看| 亚洲专区中文字幕在线| 在线观看美女被高潮喷水网站| 亚洲av电影不卡..在线观看| 国产精品98久久久久久宅男小说| 最新中文字幕久久久久| 午夜激情福利司机影院| 两性午夜刺激爽爽歪歪视频在线观看| 99热只有精品国产| 国产精品伦人一区二区| 12—13女人毛片做爰片一| 免费大片18禁| 啦啦啦观看免费观看视频高清| 日韩精品青青久久久久久| 69人妻影院| 亚洲天堂国产精品一区在线| 日韩人妻高清精品专区| 91在线精品国自产拍蜜月| 尤物成人国产欧美一区二区三区| 国产精品久久久久久亚洲av鲁大| 久久久久九九精品影院| 特级一级黄色大片| 久久九九热精品免费| 国产在线男女| 高清日韩中文字幕在线| 久久久久性生活片| 小说图片视频综合网站| 俄罗斯特黄特色一大片| 精品久久久久久久久久免费视频| 亚洲精品一区av在线观看| 日本 欧美在线| 观看免费一级毛片| 久久国产乱子免费精品| 别揉我奶头~嗯~啊~动态视频| 欧美人与善性xxx| 高清日韩中文字幕在线| 国产单亲对白刺激| 午夜福利高清视频| 嫩草影院新地址| 国产精品一区二区免费欧美| 搡老岳熟女国产| 美女cb高潮喷水在线观看| 国产精品不卡视频一区二区| 久久久久久久久久黄片| 中文字幕免费在线视频6| 国产一级毛片七仙女欲春2| 国内毛片毛片毛片毛片毛片| 午夜精品一区二区三区免费看| 无遮挡黄片免费观看| 性色avwww在线观看| 麻豆一二三区av精品| 日韩中字成人| 日本撒尿小便嘘嘘汇集6| 国产高清不卡午夜福利| а√天堂www在线а√下载| 淫妇啪啪啪对白视频| 亚洲乱码一区二区免费版| 俺也久久电影网| 国产伦一二天堂av在线观看| 女生性感内裤真人,穿戴方法视频| 婷婷丁香在线五月| 欧美又色又爽又黄视频| 精品欧美国产一区二区三| 成人高潮视频无遮挡免费网站| 欧美精品国产亚洲| 精品午夜福利视频在线观看一区| 午夜福利在线在线| 国产淫片久久久久久久久| 亚洲欧美日韩东京热| 国产精品一区二区三区四区久久| 日本在线视频免费播放| 91av网一区二区| 麻豆成人午夜福利视频| 一级黄色大片毛片| 亚洲欧美日韩卡通动漫| 色5月婷婷丁香| 国产精品免费一区二区三区在线| 午夜福利成人在线免费观看| 日本与韩国留学比较| 国产精华一区二区三区| 亚洲色图av天堂| 女生性感内裤真人,穿戴方法视频| 欧洲精品卡2卡3卡4卡5卡区| 神马国产精品三级电影在线观看| 最近在线观看免费完整版| 国产精品乱码一区二三区的特点| a级毛片a级免费在线| 观看免费一级毛片| av中文乱码字幕在线| 黄色视频,在线免费观看| 国产精品久久电影中文字幕| 国产三级中文精品| 午夜精品在线福利| 亚洲色图av天堂| 久久这里只有精品中国| 麻豆成人午夜福利视频| .国产精品久久| 热99在线观看视频| 午夜激情福利司机影院| 色哟哟哟哟哟哟| 丝袜美腿在线中文| 欧美+日韩+精品| 亚洲国产欧洲综合997久久,| 国产av一区在线观看免费| 亚洲三级黄色毛片| 欧美日韩精品成人综合77777| 久久久国产成人免费| 又黄又爽又免费观看的视频| 听说在线观看完整版免费高清| 久久久久精品国产欧美久久久| 欧美又色又爽又黄视频| 久久午夜亚洲精品久久| 国产精品亚洲一级av第二区| 欧美zozozo另类| 午夜免费男女啪啪视频观看 | 99在线人妻在线中文字幕| 亚洲久久久久久中文字幕| 国产三级中文精品| 麻豆成人午夜福利视频| 国语自产精品视频在线第100页| 91久久精品国产一区二区三区| 99久久成人亚洲精品观看| 村上凉子中文字幕在线| 国内精品宾馆在线| 女同久久另类99精品国产91| 91久久精品国产一区二区成人| 国产精品久久电影中文字幕| 一级a爱片免费观看的视频| 可以在线观看的亚洲视频| h日本视频在线播放| 国产精品自产拍在线观看55亚洲| 亚洲天堂国产精品一区在线| 搡女人真爽免费视频火全软件 | 色av中文字幕| 亚洲自拍偷在线| 精品人妻熟女av久视频| 精品一区二区三区人妻视频| 高清毛片免费观看视频网站| 国语自产精品视频在线第100页| 国产精品自产拍在线观看55亚洲| 麻豆一二三区av精品| 亚洲一级一片aⅴ在线观看| 精品午夜福利视频在线观看一区| 国产精品无大码| 能在线免费观看的黄片| 永久网站在线| 嫁个100分男人电影在线观看| 欧美日韩瑟瑟在线播放| 少妇裸体淫交视频免费看高清| 国产探花在线观看一区二区| 深夜精品福利| 日本三级黄在线观看| 午夜福利18| 51国产日韩欧美| 动漫黄色视频在线观看| www.www免费av| 国产精品乱码一区二三区的特点| 少妇裸体淫交视频免费看高清| 日日摸夜夜添夜夜添小说| 色吧在线观看| 中文字幕人妻熟人妻熟丝袜美| 97人妻精品一区二区三区麻豆| 日韩 亚洲 欧美在线| 精品一区二区三区视频在线观看免费| a在线观看视频网站| 国产毛片a区久久久久| 99九九线精品视频在线观看视频| 人人妻人人看人人澡| 国产男人的电影天堂91| 淫妇啪啪啪对白视频| 91狼人影院| 性插视频无遮挡在线免费观看| 中文资源天堂在线| 99九九线精品视频在线观看视频| 在线观看舔阴道视频| 亚洲av日韩精品久久久久久密| 亚洲三级黄色毛片| 欧美黑人欧美精品刺激| 亚洲欧美日韩高清在线视频| 精品乱码久久久久久99久播| 国产aⅴ精品一区二区三区波| 久久99热这里只有精品18| 中文字幕免费在线视频6| 国产 一区精品| 在线看三级毛片| 22中文网久久字幕| 一进一出抽搐动态| 久久精品人妻少妇| 在线看三级毛片| 男人舔奶头视频| 乱系列少妇在线播放| 我的老师免费观看完整版| 国产亚洲av嫩草精品影院| 国产熟女欧美一区二区| 毛片女人毛片| 12—13女人毛片做爰片一| 久久天躁狠狠躁夜夜2o2o| 国内精品久久久久精免费| 国产精品无大码| 日本一二三区视频观看| 亚洲欧美日韩东京热| 欧美黑人欧美精品刺激| 成人亚洲精品av一区二区| 欧美日韩黄片免| 偷拍熟女少妇极品色| 久久国产乱子免费精品| 亚洲五月天丁香| 天堂av国产一区二区熟女人妻| 3wmmmm亚洲av在线观看| 国产成人av教育| 黄色配什么色好看| 成人特级av手机在线观看| 亚洲人成网站在线播| 国产高清视频在线播放一区| 欧美黑人巨大hd| 国产亚洲精品综合一区在线观看| 免费不卡的大黄色大毛片视频在线观看 | 国产高清视频在线播放一区| 国产成人av教育| 欧美又色又爽又黄视频| 久久精品国产99精品国产亚洲性色| 色在线成人网| 久久精品国产99精品国产亚洲性色| 国产真实伦视频高清在线观看 | 97超视频在线观看视频| 99精品在免费线老司机午夜| 亚洲av日韩精品久久久久久密| 午夜日韩欧美国产| 超碰av人人做人人爽久久| 欧美激情国产日韩精品一区| 91久久精品国产一区二区成人| 看十八女毛片水多多多| 午夜免费激情av| 亚洲中文字幕一区二区三区有码在线看| 99久久精品国产国产毛片| 国产一区二区三区视频了| 久久久色成人| 日韩人妻高清精品专区| 啦啦啦啦在线视频资源| 久久精品夜夜夜夜夜久久蜜豆| 内地一区二区视频在线| 精品乱码久久久久久99久播| 啦啦啦韩国在线观看视频| 有码 亚洲区| 国产精品人妻久久久久久| 深爱激情五月婷婷| 欧美精品啪啪一区二区三区| 97热精品久久久久久| 成人特级黄色片久久久久久久| 在现免费观看毛片| 神马国产精品三级电影在线观看| 中出人妻视频一区二区| 久久婷婷人人爽人人干人人爱| 老师上课跳d突然被开到最大视频| 亚洲av美国av| 看片在线看免费视频| 成人特级av手机在线观看| 尾随美女入室| 99国产精品一区二区蜜桃av| 欧美区成人在线视频| 国产精品嫩草影院av在线观看 | 一边摸一边抽搐一进一小说| 不卡一级毛片| 日本撒尿小便嘘嘘汇集6| 久久精品久久久久久噜噜老黄 | 人人妻,人人澡人人爽秒播| 精品人妻熟女av久视频| 色在线成人网| 国产视频内射| 国产一区二区三区av在线 | 很黄的视频免费| 国产真实伦视频高清在线观看 | 国产欧美日韩精品亚洲av| 成人欧美大片| 我要搜黄色片| 麻豆成人av在线观看| 高清毛片免费观看视频网站| 亚洲专区中文字幕在线| 成年女人毛片免费观看观看9| 最新中文字幕久久久久| 亚洲人成网站高清观看| 综合色av麻豆| 成人高潮视频无遮挡免费网站| videossex国产| 国产精品一区二区性色av| 国产中年淑女户外野战色| 午夜福利18| 日韩欧美在线二视频| 97超视频在线观看视频| 午夜免费男女啪啪视频观看 | 国产精品久久久久久久久免| 久久久久久伊人网av| 精品国内亚洲2022精品成人| 国内毛片毛片毛片毛片毛片| .国产精品久久| 欧美色视频一区免费| 午夜免费成人在线视频| 日韩欧美在线二视频| 日本精品一区二区三区蜜桃| 国产精品不卡视频一区二区| 男女视频在线观看网站免费| 小说图片视频综合网站| 久久午夜亚洲精品久久| 欧美又色又爽又黄视频| 成年女人毛片免费观看观看9| 国产蜜桃级精品一区二区三区| 啦啦啦观看免费观看视频高清| 我要看日韩黄色一级片| 一个人看的www免费观看视频| 亚洲av免费高清在线观看| 亚洲精品在线观看二区| 日本三级黄在线观看| 国产欧美日韩精品亚洲av| 色5月婷婷丁香| 最近最新免费中文字幕在线| 欧美一区二区精品小视频在线| 国产精品乱码一区二三区的特点| 色播亚洲综合网| 又黄又爽又刺激的免费视频.| 在线观看一区二区三区| 国产单亲对白刺激| 精华霜和精华液先用哪个| 在线免费十八禁| 永久网站在线| 久久午夜亚洲精品久久| 亚洲中文字幕一区二区三区有码在线看| 日韩av在线大香蕉| 欧洲精品卡2卡3卡4卡5卡区| 在线观看一区二区三区| 校园春色视频在线观看| 2021天堂中文幕一二区在线观| 春色校园在线视频观看| 一区二区三区激情视频| 麻豆成人午夜福利视频| 麻豆久久精品国产亚洲av| 少妇猛男粗大的猛烈进出视频 | 日韩国内少妇激情av| 欧美性猛交╳xxx乱大交人| 小蜜桃在线观看免费完整版高清| 久久精品综合一区二区三区| 午夜精品一区二区三区免费看| 一进一出好大好爽视频| 亚洲avbb在线观看| 日本 av在线| 久久精品国产亚洲av天美| 久久精品夜夜夜夜夜久久蜜豆| 欧美极品一区二区三区四区| 国产一区二区三区av在线 | 高清日韩中文字幕在线| 国产在视频线在精品| 亚洲av.av天堂| 又黄又爽又刺激的免费视频.| 99热只有精品国产| 成人美女网站在线观看视频| 国产精品人妻久久久影院| 久久人妻av系列| 国产精品人妻久久久影院| 国产高清三级在线| 天堂动漫精品| 久久久精品大字幕| 亚洲综合色惰| 精品人妻一区二区三区麻豆 | av在线亚洲专区| a级毛片a级免费在线| 九色国产91popny在线| 国产精品一区二区三区四区久久| 窝窝影院91人妻| 听说在线观看完整版免费高清| 国产伦一二天堂av在线观看| 美女xxoo啪啪120秒动态图| 亚洲成av人片在线播放无| 欧美性猛交╳xxx乱大交人| 免费看光身美女| 日本 欧美在线| .国产精品久久| 给我免费播放毛片高清在线观看| 悠悠久久av| 三级毛片av免费| 亚洲精品一区av在线观看| 日本黄色片子视频| 亚洲欧美日韩无卡精品| 老司机福利观看| eeuss影院久久| 久久精品国产亚洲av天美| 草草在线视频免费看| 亚洲avbb在线观看| 黄色女人牲交| 黄色丝袜av网址大全| 色综合亚洲欧美另类图片| 国产又黄又爽又无遮挡在线| 五月玫瑰六月丁香| 日韩一区二区视频免费看| 天堂√8在线中文| 天堂av国产一区二区熟女人妻| 露出奶头的视频| 日日摸夜夜添夜夜添av毛片 | 亚洲av中文字字幕乱码综合| 搡老妇女老女人老熟妇| 亚洲av二区三区四区| 高清毛片免费观看视频网站| 日韩中文字幕欧美一区二区| 俺也久久电影网| 国产精品一区二区性色av| 男人和女人高潮做爰伦理| 小说图片视频综合网站| 欧美黑人巨大hd| 日韩精品中文字幕看吧| 舔av片在线| 色综合婷婷激情| 床上黄色一级片| 国产在线精品亚洲第一网站| 精品一区二区免费观看| 午夜精品一区二区三区免费看| 欧美性猛交黑人性爽| 日本熟妇午夜| 国产精华一区二区三区| 97碰自拍视频| 91精品国产九色| 国产高清激情床上av| 午夜精品一区二区三区免费看| 亚洲内射少妇av| 国产在线男女| 狂野欧美激情性xxxx在线观看| 日韩,欧美,国产一区二区三区 | 亚洲av美国av| 如何舔出高潮| 亚洲av中文av极速乱 | 日本免费一区二区三区高清不卡| 日本黄色片子视频| 搡女人真爽免费视频火全软件 | 国产成人影院久久av| 日韩欧美 国产精品|