DSL領域專用語言是什么
所謂DSL領域專用語言(domain specific language / DSL),其基本思想是“求專不求全”,不像通用目的語言那樣目標范圍涵蓋一切軟件問題,而是專門針對某一特定問題的計算機語言。
DSL之于程序員正如伽南地之于以色列人,是最初也是最終的夢想。 幾乎自計算機發明伊始,人們就開始談論DSL使用DSL了。
而前幾年隨著被譽為“Web開發領域專用語言”的Ruby on Rails迅速走紅,DSL又一次成為人們討論的熱點話題。很多人都認為,DSL將會是軟件業的“next big thing”。
然而隨著DSL的日益流行,圍繞著DSL出現了很多質疑和誤解,比如下面這幾個: DSL的目標受眾是非程序員,業務員或者最終用戶 在很多人的心中,DSL等同于“非程序員的編程語言”(programminglanguage for non-programmers),因此DSL的最終受眾應該是非程序員,一切不直接被最終用戶使用的DSL都不是真正的DSL,僅僅是另一種使代碼看起來不像代碼的無聊技巧。 這是一個很有趣的觀點,事實上在計算編程語言發展的歷史上,的的確確出現過“非程序員的編程語言”,而且還非常有名,它們就是FORTRAN,COBOL這些第一代高級語言。
在當時的那個時代,計算機的主要目的是科學計算,而程序員則是專指那些擺弄開關,繼電器,紙帶以及匯編語言的geek們。 而計算機的主要受益者非程序員——也就是那些學者和研究員——不得不委托這些人幫助它們完成從數學公式到機器指令的轉換。
于是第一代高級語言的主要目的是縮短計算公式和可執行的代碼之間的差距(比如Fortran),或者是簡化信息管理員的日常工作(比如COBOL)。 有趣的是,恰恰是這些當年的“非程序員”把軟件開發發展成了一門正當且頗為體面的職業。
其實當年的“非程序員的編程語言”與今日的DSL境況頗為相似,所不同的是,當代企業級信息系統更為復雜,所關注的焦點逐漸從計算轉移到數據上,業務領域和計算機的物理過程也不再具有簡單直接的對應關系了。 而且隨著社會分工細化,就算是通過DSL,我們仍然不太可能把那些衣冠楚楚的HR們,銷售們,部門經理們統統拉下水變成新新程序員。
我仍然要承認,以最終用戶為目標受眾的DSL是一個很引人側目很有意思的主意,但是在相當長的一段時間內都是不太現實的。 或許我們需要新的方法(比如精益)來協調IT部門和業務部門,或許我們需要全新的軟件工程理論,或者某些非常具有獨創性的工作方式。
誰知道呢,預言未來總是吃力而不討好的,但我覺得在目前情況下,簡單把DSL的受眾限制在非程序員,業務員或最終用戶上,是值得商榷的。 DSL = 整潔的代碼 這種觀點與前面的觀點正好相反,把DSL完全當作程序員的游戲,把一切能將代碼寫得整齊好看的技巧都歸結為DSL。
雖然從形式上看DSL和“整潔的代碼”都具有簡潔清晰的特征,但并不能因此將簡單將兩者草率地歸為等同。從概念上說,程序的編寫過程就是把業務領域中的問題通過代碼或者程序模型表達出來: 由于計算機的程序模型較為單一(歸根結底都是運算和存儲),就算是在面向對象技術成為主流的今天,通常情況下,計算機程序不太可能做到與業務領域中的概念一致,或者具有某些直覺的對應。
也這正是因為這樣,軟件的修改和可維護性并沒有想象中的容易。我們必須不斷地將業務領域中的概念轉換成相應的代碼模型,然后再進行修改。
這種間接性直接造成了軟件的復雜度。 而DSL的主要目的就是要消除這樣的復雜度(或者說,以構造DSL的復雜度代替這種復雜度),DSL就要是要以貼近業務領域的方式來構造軟件。
因此,DSL的簡潔性往往是一種思維上的簡潔性,使我們不用費太多的氣力就能看懂代碼所對應的業務含義。 從這里我們可以看出DSL和“整潔的代碼”的根本不同,“整潔的代碼”只是泛泛的要求代碼簡潔易懂,而不太在意是否貼近業務領域。
比如對于一個J2EE開發者來說,DAO,DTO,FormBean,Action已經足夠清晰了,但是這卻跟DSL沾不上一絲的關聯。 DSL更注重強調使用業務詞匯,盡可能貼近業務模型來編寫代碼,使業務模型和程序模型之間具有簡潔的對應關系。
因此我們不能將DSL等同于“整潔的代碼”,只能說DSL是一種“整潔的代碼”而已。 DSL必須以文本代碼的形式出現 Domain Specified Language顧名思義,是一種語言,因此DSL一定是文本代碼形式出現的,不是通過文本代碼描述的就不是DSL。
我們之所以偏愛使用文本代碼,主要是由于文本代碼易于修改且修改效率極高。多年來軟件工程實踐表明文本代碼是最有效率的編輯形式。
但是對于DSL,問題則有些不同。 正如我們前文所說過的,DSL首要的目的,是使程序盡可能地接近業務領域中的問題,從而消除不必要的間接性和復雜性。
對于大多數業務領域而言,文本代碼的形式一經足夠好了,我們可以很容易通過特定格式的文本,描述業務領域中的問題。然后也確實存在著一些較為特殊的領域,在這些領域中,文本代碼并不是最佳的表現形式。
為了更好的貼近業務領域中的概念,我們可能回選擇使用一些圖形化的DSL。 比如時下頗為流行的一個DSM(Domain Specific 。
DSL和ADSL的區別
DSL(數字用戶線路,Digital Subscriber Line)是以銅質電話線為傳輸介質的傳輸技術組合,它包括HDSL、SDSL 、VDSL 、ADSL和RADSL等,一般稱之為xDSL。
它們主要的區別就是體現在信號傳輸速度和距離的不同以及上行速率和下行速率對稱性的不同這兩個方面。而真正的寬帶接入技術指光纖到戶(FTTH),為了實現用戶接入網的數字化、寬帶化,提高用戶上網速度,光纖到戶(FTTH),是用戶網今后發展的必然方向,但由于光纖用戶網的成本過高,在今后的十幾年甚至幾十年內大多數用戶網仍將繼續使用現有的銅線環路,于是近年來人們提出了多項過渡性的寬帶接入網技術,包括N-ISDN、Cable Modem、ADSL等等,其中ADSL(非對稱數字用戶環路)是最具前景及競爭力的一種,將在未來十幾年甚至幾十年內占主導地位。
ISDN和DSL有什么區別
“一線通”(ISDN) 顧名思義,就是能在一根普通電話線上提供語音、數據、圖象等綜合性業務。
并可連接8臺終端或電話,有2臺終端(例如:一部電話、一臺計算機或一臺數據終端)可以同時使用。 當前,“一線通”(ISDN)在世界上已變得越來越熱門,德國、法國、英國的“一線通”(ISDN)業務在歐洲電信市場上已處于遙遙領先的地位,美國、日本也不甘落后。
應用“一線通”的熱源主要在于這個網能提供多種業務,如高速因特網(INTERNET)接入、可視電話、會議電視、局域網(LAN)互聯專線備用、銷售點(POS)中的資金轉帳及信用卡驗證等。 在一根普通電話線上,可以提供以64Kbps速率為基礎并可達到128Kbps的上網速度的數字連接,可讓您體驗到前所未有的暢快感覺,而且費用低謙。
xDSL技術 xDSL技術按上行和下行的速率是否相同可分為速率對稱型和速率非對稱型兩種。 速率對稱型的xDSL有IDSL,HDSL、SDSL (Single line DSL),HDSL2等多種形式,HDSL采用2對雙絞銅線實現雙向速率對稱通信。
SDSL的功能與HDSL相同,但僅用一對銅線即可提供速率對稱型通信。IDSL(ISDN DSL)提供128 kbit/s雙向速率對稱型通信業務。
非對稱型的xDSL有ADSL(Asymmetric DSL)、 te ADSL和VDSL(Very high bit rate DSL)等。 ADSL是一種新的在一對雙絞線上同時傳輸電話業務與數據信號的技術,它屬于速率非對稱型銅線接入網技術,并且可以在一對用戶線上進行上行達640kbit/s,下行達1。
5~8Mbit/s速率的傳輸。由于ADSL能夠很好地適應Internet業務非對稱性的特點,所以在眾多的xDSL技術中是一種最有希望能夠解決高速Internet接入的技術。
另外,ADSL采用了先進的數字信號處理技術來減少線路損傷對傳輸性能的影響。 G。
DMT ADSL采用了離散多音頻調制(DMT)技術,又稱多載波調制,是一種正交的頻分復用技術。其最大優點是信號的發送和接收均可以利用高效的快速傅立葉變換(FFT)和反變換(IFFT)來完成QAM信號與數字形式的副載波信號之間的變換。
DMT的基本方法是將全頻道分成256個子信道,并且根據子信道的瞬時衰減特性、群延時特性和噪聲特性,把輸入數據動態地分配給它們。 同時,DMT將不能發送數據的子信道關閉。
對可以發送數據的子信道,則按其瞬時特性,在1個碼元包絡發送2~15比特信息,并且使用數字信號處理器在必要的時間調整參數。這種動態分配數據的技術使頻帶利用率大大提高,將誤碼和噪聲減至最小,提高了系統的傳輸容量。
由于子信道的頻帶很窄,其電纜特性可以近似地被認為是線性的,所以脈沖混疊可以被減小到最低程度。盡管來自脈沖干擾的能量會影響信號的接收,但是采用FFT可以將這種影響擴展到FFT窗口內的各子信道內,所以其影響大大減輕。
另外,ADSL采用了信道估計技術。 在開始建立傳輸時,通過發送雙方預知的信道訓練序列,在接收端測試誤碼率或者信噪比,對雙絞線線路的性能進行測試,從所測試的數據確定出一個信道模型,再根據信道性能的好壞,決定傳輸速率。
這個測試過程就稱作信道估計。 ADSL采用一個較短的時域均衡器,并且在傳送信號的每個字符塊前加入循環前綴,用以消除信號間串擾。
為了更好地抑制脈沖噪聲,ADSL不僅采用Reed Solomon前向糾錯碼,而且還采用附加的格柵編碼技術。就性能而言,DMT是一種較理想的ADSL調制方式,它的信噪比最高,抗噪聲能力強,傳輸速率高,傳輸距離遠。
雖然ADSL采用先進的數字信號處理技術、編碼調制技術和糾錯技術,但是在推廣ADSL業務時,用戶線路的許多特性,包括線路上的背景噪聲、脈沖噪聲、線路的插入損耗、線路間的串擾、線徑的變化、線路的橋接抽頭、線路接頭和線路絕緣等因素將影響高速率傳輸業務的性能。 首先,銅線的插入損耗將隨著線路距離的增加而成比例地增加,并且在同一距離下各子信道的插入損耗也發生變化,這個因素和線路固有的背景噪聲、脈沖噪聲、調制解調器的接收靈敏度將一起作用,這就決定了限制在單用戶線上ADSL所能夠傳輸的最大距離。
其次,在同一條電纜中開多條ADSL業務,或者存在其它高速傳輸業務,例如HDSL、ISDN時,線路間的串擾將嚴重影響ADSL的業務性能和傳輸速率,其結果是ADSL傳輸速率下降或者其最大傳輸距離縮短,影響了ADSL的開通率。 測試表明,在同一電纜中,以25對雙絞線為一組的基本單位內的線路串擾最大,而一對雙絞線對不同基本單位內的線路串擾較小,所以同一基本單位內線對之間的串擾是影響ADSL業務開通率的主要因素。
第三,線對線徑的改變、線路的縱向平衡性、線路的絕緣性能和線路接頭的性能都將影響線路的插入損耗、引入附加噪聲,從而降低ADSL的傳輸速率,影響ADSL的傳輸性能。 第四,線路的橋接抽頭將顯著地改變線路插入損耗的頻響特性和相頻特性,特別是接收端附近的橋接抽頭將導致某些子信道無法使用,所以在使用ADSL時,一定要檢測線路上的橋接抽頭,并盡可能地去除橋接抽頭。
應特別注意的是,在接收端附近不能夠有任何形式的橋接抽頭。 另外,電話的振鈴、摘掛機等引起的脈沖干擾、周圍。