<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    冒號(hào)課堂§5.3:動(dòng)態(tài)語(yǔ)言

     

    冒號(hào)課堂

    第五課 語(yǔ)言小談(3)

    5.3動(dòng)態(tài)語(yǔ)言——披著彩衣飛舞的腳本語(yǔ)言

    故凡天下之理,欲向動(dòng)上求靜,靜上求動(dòng)            ——《蔡牧堂·發(fā)微論》

    關(guān)鍵詞:      動(dòng)態(tài)語(yǔ)言,靜態(tài)語(yǔ)言,腳本語(yǔ)言

    摘要:   動(dòng)態(tài)語(yǔ)言簡(jiǎn)談

     

     預(yù)覽

    ·           程序是為終端用戶服務(wù)的,而腳本是為程序員服務(wù)的

    ·           動(dòng)態(tài)語(yǔ)言秉承的一個(gè)理念是:優(yōu)化人的時(shí)間而不是機(jī)器的時(shí)間

    ·           待靜態(tài)語(yǔ)言披盔戴甲、備馬抬槍之際,動(dòng)態(tài)語(yǔ)言已衣袂飄飄,長(zhǎng)劍出手了

    ·           當(dāng)腳本語(yǔ)言披上動(dòng)態(tài)語(yǔ)言的彩衣,昔日不起眼的毛毛蟲(chóng)便羽化成碟,開(kāi)始飄舞在眾人追逐的目光之中

     

      提問(wèn)

    ·           腳本與程序的區(qū)別是什么?

    ·           腳本語(yǔ)言有什么特點(diǎn)?為什么適合作粘合語(yǔ)言?

    ·           動(dòng)態(tài)語(yǔ)言有什么特點(diǎn)?它與腳本語(yǔ)言究竟有什么分別?

    ·           動(dòng)態(tài)語(yǔ)言也能用于大型應(yīng)用開(kāi)發(fā)嗎?

    ·           動(dòng)態(tài)語(yǔ)言會(huì)最終取代靜態(tài)語(yǔ)言嗎?


    講解

    嘆號(hào)急不可耐地問(wèn):“現(xiàn)在可以談動(dòng)態(tài)語(yǔ)言了吧?”

    冒號(hào)感言:“曾幾何時(shí),動(dòng)態(tài)語(yǔ)言還只是陪太子讀書(shū)的角色,那時(shí)候它們的名字是‘腳本語(yǔ)言’。近來(lái)卻迅速崛起,儼然有與靜態(tài)語(yǔ)言分庭抗禮之勢(shì)。”

    問(wèn)號(hào)忍不住問(wèn)道:“動(dòng)態(tài)語(yǔ)言與腳本語(yǔ)言是一回事嗎?”

    “相比動(dòng)態(tài)語(yǔ)言定義上的模糊,腳本語(yǔ)言的概念還是比較明確的。”冒號(hào)回避直接給出答案,“腳本script)的提法,是為了區(qū)別于一般的程序program)。Perl的發(fā)明者Larry Wall不愧為語(yǔ)言學(xué)家,對(duì)此有一個(gè)精彩的說(shuō)法:‘A script is what you give the actors, a program is what you give the audience’。直譯為:腳本是給演員看的,節(jié)目是給觀眾看的。此言妙在一語(yǔ)雙關(guān)——program兼有‘節(jié)目’和‘程序’的意思。”

    句號(hào)領(lǐng)會(huì)其意:“這里的演員指的是程序員,觀眾指的是用戶。換言之,程序是為終端用戶服務(wù)的,而腳本是為程序員服務(wù)的。”

    “正解!”冒號(hào)肯定道,“腳本最常見(jiàn)的形式是殼腳本shell script),在非Unix類的操作系統(tǒng)中也稱為批處理文件batch file)。”

    “批處理文件倒是很熟悉,殼腳本聽(tīng)起來(lái)就怪怪的。”逗號(hào)嘀咕著。

    “那是因?yàn)槟阍?/span>Windows的世界里長(zhǎng)大,聽(tīng)不慣Unix的方言。”冒號(hào)一語(yǔ)道破緣由,“操作系統(tǒng)的內(nèi)核稱為kernel),出于安全考慮不便直接與用戶交互,因此裹上一層shell),即人們常說(shuō)的命令行解釋器command line interpreter)。殼腳本是在殼上運(yùn)行的腳本,擴(kuò)展了命令行下可執(zhí)行的命令。它最初主要是內(nèi)建(built-in)命令的組合,用于系統(tǒng)程序的調(diào)度,是系統(tǒng)管理員的必備武器。其后,殼腳本也發(fā)展到用于應(yīng)用程序的調(diào)度、連接、調(diào)試等,成為粘合glue)語(yǔ)言。”

    逗號(hào)不禁有些疑問(wèn):“難道一般的程序語(yǔ)言如C之類的不能作此用嗎?”

    引號(hào)回應(yīng)道:“這些語(yǔ)言通常需要‘編寫(xiě)-編譯-鏈接-運(yùn)行’的循環(huán)過(guò)程,十分繁瑣。腳本語(yǔ)言編寫(xiě)后即可運(yùn)行,快捷方便得多。”

    冒號(hào)點(diǎn)點(diǎn)頭:“不錯(cuò),既然腳本主要用于整合其他程序,本身并不占用太多的資源,同時(shí)邏輯也不太復(fù)雜,因此腳本語(yǔ)言注重簡(jiǎn)潔、實(shí)用,語(yǔ)法要求不那么嚴(yán)格,性能上的要求也不高。除殼腳本外,還有一些專用于文本處理text processing)的語(yǔ)言或工具如AWKsedgrep等,多用于讀寫(xiě)配置文件和日志文件、過(guò)濾處理各種程序的輸入和輸出,對(duì)于整合各種程序也非常實(shí)用。隨著對(duì)腳本語(yǔ)言需求的增長(zhǎng),其局限性日益突出,以Perl為代表的高級(jí)腳本語(yǔ)言便應(yīng)運(yùn)而生了。Perl在殼腳本、AWKsed的基礎(chǔ)上,融合了命令式C函數(shù)式Lisp的特征,漸漸成為最流行的腳本語(yǔ)言之一。”

    問(wèn)號(hào)注意到:“JavaScript是瀏覽器端的腳本,來(lái)路似乎有些不同。”

    冒號(hào)解釋道:“除了命令行程序外,腳本語(yǔ)言在其他的應(yīng)用程序中也身影頻現(xiàn),如圖形界面應(yīng)用、多媒體應(yīng)用、網(wǎng)絡(luò)應(yīng)用等。尤其是網(wǎng)絡(luò)應(yīng)用,成為滋生和繁榮腳本語(yǔ)言最肥沃的土壤。例如:Perl非常廣泛地用于網(wǎng)絡(luò)服務(wù)器端的CGI編程;PHP更是專為動(dòng)態(tài)網(wǎng)頁(yè)而設(shè)計(jì)的語(yǔ)言;Ruby雖與Java同歲,但真正開(kāi)始風(fēng)行得益于網(wǎng)絡(luò)應(yīng)用框架Ruby on Rails的成功;至于JavaScript,長(zhǎng)期被邊緣化為網(wǎng)頁(yè)設(shè)計(jì)人員的語(yǔ)言,是web2.0的新寵AJAX真正將其帶入程序員的視線。”

    逗號(hào)有些好奇:“什么時(shí)候腳本語(yǔ)言變成了動(dòng)態(tài)語(yǔ)言呢?”

    “盡管動(dòng)態(tài)語(yǔ)言并無(wú)確切的定義,但不是所有的腳本語(yǔ)言都能稱作動(dòng)態(tài)語(yǔ)言的——比如Bash之類的殼腳本語(yǔ)言shell script language);另一方面,也不是所有的動(dòng)態(tài)語(yǔ)言天生就是為腳本服務(wù)的——比如Lisp[1]。不妨這么理解,腳本語(yǔ)言以語(yǔ)言的實(shí)際用途為標(biāo)志,動(dòng)態(tài)語(yǔ)言以語(yǔ)言的語(yǔ)法特征為標(biāo)志。”冒號(hào)回答,“單從用途上看,一個(gè)腳本語(yǔ)言如果不再局限于命令行工具和粘合工具,從專用語(yǔ)言發(fā)展為通用語(yǔ)言,并能勝任復(fù)雜的應(yīng)用開(kāi)發(fā),或許更有資格歸為動(dòng)態(tài)語(yǔ)言。”

    句號(hào)發(fā)現(xiàn):“動(dòng)態(tài)語(yǔ)言似乎對(duì)字符處理都特別擅長(zhǎng)。”

    冒號(hào)道:“腳本語(yǔ)言與一般程序一個(gè)不同之處是,它一般是面向字符而非數(shù)值的,因?yàn)樽址亲钔ㄓ玫慕涌冢冒l(fā)揮其粘合作用,而數(shù)值運(yùn)算對(duì)性能要求較高,多由核心程序來(lái)完成。動(dòng)態(tài)語(yǔ)言繼承了這個(gè)特點(diǎn),并且除了正則表達(dá)式(regular expression)外,為字符串、數(shù)組、列表、集合、映射等常用結(jié)構(gòu)提供了豐富簡(jiǎn)潔的運(yùn)算,遠(yuǎn)比靜態(tài)語(yǔ)言依賴于庫(kù)(library)的方便自然得多。”

    嘆號(hào)問(wèn):“我們清楚了腳本語(yǔ)言中‘腳本’的來(lái)歷,那動(dòng)態(tài)語(yǔ)言中‘動(dòng)態(tài)’又體現(xiàn)在何處呢?”

    “問(wèn)得好!”冒號(hào)聞言,正中下懷,“再?gòu)?em>用法上看,動(dòng)態(tài)語(yǔ)言能在運(yùn)行中增加或改變數(shù)據(jù)結(jié)構(gòu)、函數(shù)定義、對(duì)象行為或指令流程等。如果說(shuō)動(dòng)態(tài)類型語(yǔ)言的動(dòng)態(tài)體現(xiàn)在類型上,動(dòng)態(tài)語(yǔ)言的動(dòng)態(tài)則體現(xiàn)在結(jié)構(gòu)和功能上。相比而言,靜態(tài)語(yǔ)言雖然也可能實(shí)現(xiàn)同樣的效果,但既不方便也不自然[2]。另外不容忽視的一點(diǎn)是,動(dòng)態(tài)語(yǔ)言大多是開(kāi)源的,其本身的發(fā)展也更具動(dòng)態(tài)性。”

    引號(hào)非常注重理論:“動(dòng)態(tài)語(yǔ)言的語(yǔ)法特征有那些?”

    “動(dòng)態(tài)語(yǔ)言秉承的一個(gè)理念是:優(yōu)化人的時(shí)間而不是機(jī)器的時(shí)間。為提高人的生產(chǎn)率,寧肯犧牲部分的程序性能或者購(gòu)買(mǎi)更高配置的硬件。由于硬件相對(duì)于人件一直在貶值,該理念便有了合理的現(xiàn)實(shí)基礎(chǔ)。”冒號(hào)講述著,“從語(yǔ)法上看,動(dòng)態(tài)語(yǔ)言為了更好地粘合來(lái)自不同系統(tǒng)、不同語(yǔ)言的程序,對(duì)類型的要求一般不如靜態(tài)語(yǔ)言那么嚴(yán)格,代碼更加簡(jiǎn)潔自由,故而多為動(dòng)態(tài)類型的和弱類型的,天然支持泛型式編程。當(dāng)然這不是絕對(duì)的,比如Groovy也支持靜態(tài)類型,Scala完全是靜態(tài)類型的,Python一般認(rèn)為是強(qiáng)類型的。大多數(shù)動(dòng)態(tài)語(yǔ)言支持eval函數(shù),能動(dòng)態(tài)執(zhí)行任意字符串形式的代碼,并有豐富的反射(reflection)機(jī)制,天然支持元編程。動(dòng)態(tài)語(yǔ)言很多還支持包括高階函數(shù)(high-order function)和閉包(closure)等在內(nèi)的函數(shù)式編程。此外,大多動(dòng)態(tài)語(yǔ)言也支持對(duì)象式編程,如PythonRubyPerl 5PHP 3等。”

    句號(hào)補(bǔ)充道:“許多動(dòng)態(tài)語(yǔ)言還支持過(guò)程式編程并發(fā)式編程,簡(jiǎn)直把主要的編程范式一網(wǎng)打盡了!”

    “其實(shí)PythonRubyGroovy等還可以進(jìn)行切面式編程,這對(duì)于支持元編程的動(dòng)態(tài)語(yǔ)言來(lái)說(shuō)非常自然,因?yàn)榍忻媸骄幊桃话愣际峭ㄟ^(guò)元編程來(lái)實(shí)現(xiàn)的。”冒號(hào)進(jìn)一步指出,“而邏輯式編程語(yǔ)言的代表Prolog,同樣有動(dòng)態(tài)語(yǔ)言的特征。至于事件驅(qū)動(dòng)式編程嘛,對(duì)支持callback的語(yǔ)言來(lái)說(shuō)都不是難事。”

    引號(hào)高興地看到:“九大編程范式無(wú)一漏網(wǎng)啊!”

    嘆號(hào)較為感性:“靜態(tài)語(yǔ)言給人的感覺(jué)是沉穩(wěn)持重,而動(dòng)態(tài)語(yǔ)言則活潑輕快。如果同時(shí)用靜態(tài)語(yǔ)言和動(dòng)態(tài)語(yǔ)言編程,豈不培養(yǎng)出雙重人格?”

    “程序員本就是雙重人格的。”冒號(hào)淡淡地說(shuō),“你總結(jié)得沒(méi)錯(cuò),兩類語(yǔ)言的風(fēng)格的確大相異趣:待靜態(tài)語(yǔ)言披盔戴甲、備馬抬槍之際,動(dòng)態(tài)語(yǔ)言已衣袂飄飄,長(zhǎng)劍出手了。不過(guò),如果是應(yīng)付強(qiáng)敵的長(zhǎng)期大規(guī)模作戰(zhàn),靜態(tài)語(yǔ)言還是有優(yōu)勢(shì)的。”

    引號(hào)聽(tīng)聲辨音:“這意味著動(dòng)態(tài)語(yǔ)言不適用大型應(yīng)用開(kāi)發(fā)嗎?“

    “這么說(shuō)未免有些武斷。”冒號(hào)并不同意,“誠(chéng)然,動(dòng)態(tài)語(yǔ)言的語(yǔ)法比較寬松,相對(duì)容易出錯(cuò)。但也有人辯稱,動(dòng)態(tài)語(yǔ)言的代碼量少于相應(yīng)的靜態(tài)語(yǔ)言,bug應(yīng)該更少。有人認(rèn)為動(dòng)態(tài)語(yǔ)言調(diào)試不如靜態(tài)語(yǔ)言方便,有人卻說(shuō)隨著IDE的日益強(qiáng)大,出錯(cuò)幾率和找錯(cuò)成本也在減少。談到運(yùn)行效率,動(dòng)態(tài)語(yǔ)言雖然多為解釋型語(yǔ)言interpreted language),但許多也提供了與Java類似的字節(jié)碼編譯bytecode compilation甚至JIT編譯(just-in-time compilation)。動(dòng)態(tài)語(yǔ)言在某方面甚至還更勝一籌:譬如一個(gè)類的接口如果發(fā)生變動(dòng),在靜態(tài)語(yǔ)言中所有該類的子類和一些相關(guān)類都可能需要重新編譯、連接,這在大型應(yīng)用中是非常耗時(shí)的,而動(dòng)態(tài)語(yǔ)言則大可不必,這當(dāng)然不足為奇——在它眼里類結(jié)構(gòu)本來(lái)就是能動(dòng)態(tài)改變的。除此之外,越是大型的程序,越耗費(fèi)人力和時(shí)間成本,客戶需求的變化也越大,因而對(duì)程序的靈活性、適應(yīng)性和開(kāi)發(fā)周期提出了更高的要求。動(dòng)態(tài)語(yǔ)言在這些方面比靜態(tài)語(yǔ)言更有優(yōu)勢(shì),并且還能作為快速原型rapid prototyping)開(kāi)發(fā)的工具。”

    “快速原型開(kāi)發(fā)?”問(wèn)號(hào)一臉的疑惑。

    冒號(hào)簡(jiǎn)作介紹:“這是一種軟件開(kāi)發(fā)的方式。舉例來(lái)說(shuō),為了快速搭建一個(gè)系統(tǒng),以適應(yīng)不斷變化的客戶需要,可以先采用開(kāi)發(fā)效率更高的動(dòng)態(tài)語(yǔ)言。在交付時(shí)再將其轉(zhuǎn)化為編譯型的靜態(tài)語(yǔ)言。如果系統(tǒng)對(duì)性能的要求不高,這種轉(zhuǎn)化至多是局部的。有的干脆一字不易,不僅省了當(dāng)下的時(shí)間,以后維護(hù)起來(lái)也更方便。”

    逗號(hào)耍起了貧嘴:“這就叫:替補(bǔ)變成了主力,配角變成了主角,媳婦熬成了婆婆。”

    嘆號(hào)開(kāi)始擔(dān)憂起來(lái):“聽(tīng)您這意思,動(dòng)態(tài)語(yǔ)言優(yōu)點(diǎn)突出而弱點(diǎn)并不突出,這樣下去靜態(tài)語(yǔ)言還有市場(chǎng)嗎?”

    冒號(hào)坦然道:“動(dòng)態(tài)語(yǔ)言小快靈的風(fēng)格的確吸引了越來(lái)越多人的注意,也漸漸走入靜態(tài)語(yǔ)言的世界。Java平臺(tái)和.Net平臺(tái)不僅為RubyPython等動(dòng)態(tài)語(yǔ)言鋪設(shè)了跑道,而且為培植諸如Groovy等動(dòng)態(tài)語(yǔ)言提供了土壤。同時(shí),JavaC#本身也融進(jìn)了越來(lái)越多的動(dòng)態(tài)特征。”

    句號(hào)斷言:“靜態(tài)語(yǔ)言這種融合性結(jié)合內(nèi)在的安全性、穩(wěn)定性,以及較高的性能、成熟度和接受度,都決定了它不可能被動(dòng)態(tài)語(yǔ)言完全取代。”

    “對(duì)!”冒號(hào)堅(jiān)定地表示贊同,“當(dāng)腳本語(yǔ)言披上動(dòng)態(tài)語(yǔ)言的彩衣,昔日不起眼的毛毛蟲(chóng)便羽化成碟,開(kāi)始飄舞在眾人追逐的目光之中。但靜態(tài)語(yǔ)言也絕不會(huì)淡出人們的視線,它如矯健的蒼鷹,依然有搏擊長(zhǎng)空的雄力。程序員只要保持嚴(yán)謹(jǐn)?shù)淖黠L(fēng)和開(kāi)放的心態(tài),既有穩(wěn)如泰山的馬步,又有一躍凌空的飛腿,靜如處子,動(dòng)如脫兔,如履平地般游走于高高的梅花樁上,絕無(wú)跌落之虞。”

    一股豪情在眾人心中蕩漾開(kāi)來(lái)。

    冒號(hào)看了看時(shí)間,斂起眼中精光,同時(shí)收起話匣:“關(guān)于動(dòng)態(tài)語(yǔ)言,今天還是先簡(jiǎn)單談到這里吧。”


    插語(yǔ)

    [1] Lisp本身以及一些變種如Emacs LispAutoLISP等也能作為腳本語(yǔ)言,但那畢竟不是Lisp語(yǔ)言的初衷。
    [2] 一些設(shè)計(jì)模式(如裝飾模式、訪問(wèn)者模式等)就是為了賦予靜態(tài)語(yǔ)言一定的動(dòng)態(tài)特征。

     

    總結(jié)  

    • 程序是為終端用戶服務(wù)的,腳本是為程序員服務(wù)的
    • 腳本語(yǔ)言一般是解釋型語(yǔ)言,不需要通過(guò)“編寫(xiě)-編譯-鏈接-運(yùn)行”的循環(huán)圈,便利快捷,加之簡(jiǎn)潔寬松的語(yǔ)法、面向字符的特性以及較強(qiáng)的文本處理能力,尤其適合作為粘合語(yǔ)言,多用于系統(tǒng)管理和集成。
    • 腳本語(yǔ)言與動(dòng)態(tài)語(yǔ)言盡管并不完全重合,但更多地還是提法上的區(qū)別。前者強(qiáng)調(diào)作為命令行工具和粘合工具的語(yǔ)言用途,后者強(qiáng)調(diào)動(dòng)態(tài)的語(yǔ)言特征。當(dāng)腳本語(yǔ)言不再局限于粘合語(yǔ)言,從專用語(yǔ)言發(fā)展為通用語(yǔ)言,并且勝任復(fù)雜的應(yīng)用開(kāi)發(fā)的時(shí)候,動(dòng)態(tài)語(yǔ)言的提法顯然更加合理。
    • 動(dòng)態(tài)語(yǔ)言能在程序運(yùn)行期間改變數(shù)據(jù)結(jié)構(gòu)、函數(shù)定義、對(duì)象行為或指令流程等,相比靜態(tài)語(yǔ)言在結(jié)構(gòu)和功能上的更具動(dòng)態(tài)性。
    • 動(dòng)態(tài)語(yǔ)言重在優(yōu)化人工時(shí)間而非機(jī)器時(shí)間,因此相比靜態(tài)語(yǔ)言,其開(kāi)發(fā)效率較高,但運(yùn)行效率較低。
    • 動(dòng)態(tài)語(yǔ)言的以下特點(diǎn)決定了它在大型應(yīng)用開(kāi)發(fā)中的價(jià)值:代碼量較少,從一定程度減輕了維護(hù)難度;不少提供了字節(jié)碼編譯或JIT編譯,彌補(bǔ)了運(yùn)行效率上的不足;一些模塊的結(jié)構(gòu)和功能上的變化不會(huì)導(dǎo)致相關(guān)模塊的重新編譯和連接;具有靈活、適應(yīng)力強(qiáng)和開(kāi)發(fā)周期短的特點(diǎn),能快速響應(yīng)客戶需求的變化,并且適合快速原型開(kāi)發(fā)。
    • 靜態(tài)語(yǔ)言安全穩(wěn)定、性能優(yōu)越、成熟普及,并且逐漸開(kāi)始吸納動(dòng)態(tài)語(yǔ)言的一些優(yōu)點(diǎn),這些都決定了它不可能被后者完全替代。

     

     “”參考

    [1] WikipediaDynamic programming languagehttp://en.wikipedia.org/wiki/Dynamic_language

    [2] David AscherDynamic Languages—ready for the next challenges, by designhttp://www.activestate.com/corporate/publications/ActiveState_Dynamic_Languages.pdf

    posted on 2009-01-14 09:10 鄭暉 閱讀(3553) 評(píng)論(0)  編輯  收藏 所屬分類: 冒號(hào)課堂

    導(dǎo)航

    統(tǒng)計(jì)

    公告

    博客搬家:http://blog.zhenghui.org
    《冒號(hào)課堂》一書(shū)于2009年10月上市,詳情請(qǐng)見(jiàn)
    冒號(hào)課堂

    留言簿(17)

    隨筆分類(61)

    隨筆檔案(61)

    文章分類(1)

    文章檔案(1)

    最新隨筆

    積分與排名

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    主站蜘蛛池模板: 亚洲人成亚洲人成在线观看 | 久久夜色精品国产亚洲| 一区二区三区免费视频播放器| 亚洲国产91精品无码专区| 成人免费av一区二区三区| 亚洲视频中文字幕在线| 亚洲成?v人片天堂网无码| 182tv免费视频在线观看| 亚洲精华国产精华精华液| 亚洲国产精品特色大片观看完整版| 97视频免费在线| 久久久久女教师免费一区| 亚洲色欲色欱wwW在线| 亚洲国产成人高清在线观看| 午夜免费福利在线观看| 一区二区三区在线免费看| 免费观看四虎精品成人| 亚洲伊人久久大香线蕉| 国产成人无码综合亚洲日韩| 色www永久免费视频| 中文毛片无遮挡高潮免费| eeuss影院ss奇兵免费com| 亚洲av永久无码精品古装片| 成人性生交视频免费观看| 久久WWW免费人成—看片| 亚洲人成综合在线播放| 中文字幕亚洲激情| 在线观看免费人成视频| 中文字幕av无码不卡免费| 国产成人精品亚洲2020| 亚洲综合在线另类色区奇米| 免费看美女被靠到爽的视频| 日韩在线不卡免费视频一区| 在线视频亚洲一区| 亚洲自偷自拍另类图片二区| 久久久久久亚洲精品不卡| 叮咚影视在线观看免费完整版| 四虎影视在线看免费观看| 亚洲色偷偷色噜噜狠狠99网| 亚洲激情视频网站| 亚洲国产第一站精品蜜芽|