版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、tcl語言基礎資料一腳本語言詳細介紹21世紀的高級編程語言摘要:perl和tel等腳本語言代表一種與c或javatm 為代表的系統(tǒng)程序設計語言完全不同的編程形式。腳 本語言為"膠著"應用程序而設計,它使用無類型方法 來實現(xiàn)高級編程和比系統(tǒng)程序設計語言更快的發(fā)展應 用。計算機速度的增長和混合應用的改變使腳本語言 在今后的應用中越來越重要。關鍵字:組件框架,1.簡介在過去的十五年里,人們編寫計算機程序的方法 發(fā)生了根本的轉變。這種轉變是從c或c+等系統(tǒng)程序 設計語言到pe門或tel等腳本語言的過渡。雖然彳艮多 人參與了轉變,卻很少有人意識到它的發(fā)生,更不用 說知道為什么會發(fā)生。
2、這篇文章是我關于為什么在下 個世紀腳本語言可以比系統(tǒng)程序設計語言更好的處理 許多編程工作的一點看法。與系統(tǒng)程序設計語言相比,不同的腳本語言為 不同的工作而設計,這導致了語言間的扌艮本不同。系 統(tǒng)程序設計語言起源于像內(nèi)存字等最初期的計算機元 素,它為建立數(shù)據(jù)結構和算法而創(chuàng)建。相反的,腳本語 言為膠著而設計:他們假設已經(jīng)存在一套強大的組件, 而它主要是巴組件連在一起。系統(tǒng)程序設計語言使用 強類型定義來幫助處理復雜事務,而腳本語言使用無 類型定義來簡化組件間的聯(lián)系,并提供快速應用開發(fā).腳本語言和系統(tǒng)程序設計語言互為補充,并 且二十世紀六十年代以來的大多數(shù)主要的計算機平臺 都同時提供這兩種類型的語言。
3、這些語言在組件框架 中有著典型的應用:組件由系統(tǒng)程序設計語言創(chuàng)建, 并由腳本語言組合在一起。然而,速度更快的機器,更好的腳本語言,圖形用戶界面和組件構造重要性的不斷提高,因特網(wǎng)的發(fā)展等發(fā)展趨勢大大提高了腳本語言的應用。在今后的十年中,這種趨勢將繼續(xù),而 且越來越多的完全使用腳本語言和系統(tǒng)程序設計語言 書寫的應用程序將主要用來創(chuàng)建組件。2.系統(tǒng)程序設計語言為了理解腳本語言和系統(tǒng)程序設計語言的不同, 最好先了解一下系統(tǒng)程序設計語言是如何發(fā)展的.系 統(tǒng)程序設計語言是作為除匯編語言外的另一種選擇而 引入的在匯編語言里,實際上機器的每一個細節(jié)都被 反映在程序里每個狀態(tài)代表一個簡單的機器指令,而 程序員必
4、須處理像寄存器分配和程序調(diào)用順序等低層 細節(jié).因此,用匯編語言編寫和維持大型程序是很困難 的.真的不掉線嗎? ?.?二十世紀五十年代后期像lisp, fortran和 algol等高層語言開始出現(xiàn)這些語言里的狀態(tài)和機器 指令不再完全一致,編譯程序把過程程序中的每個狀 態(tài)翻譯成一系列二進制指令經(jīng)過一段時間,一系列系 統(tǒng)程序設計語言包括pl/1, pascal, c, c+和java由 algol發(fā)展而來.系統(tǒng)程序設計語言沒有匯編語言的效 率高,但他們使應用程序更快的發(fā)展起來,因此,系統(tǒng) 程序設計語言在大型應用項目的發(fā)展中幾乎完全取代 了匯編語言.系統(tǒng)程序設計語言與匯編語言在兩個方面有所不同:它是
5、高層語言并且是強類型"高層"意味著很 多細節(jié)被自動處理以便編程人員可以寫更少的代碼而 做同樣的工作例如:編譯程序處理寄存器分配,所以編程人員不需 要寫代碼來在寄存器和內(nèi)存間轉移數(shù)據(jù)自動設計程序調(diào)用順序:編程人員不需要擔心調(diào)用 棧之間的參數(shù)轉移編程人員可以使用像while和if等簡單的關鍵字來 控制結構,編譯器執(zhí)行所有的指令細節(jié)來完成控制結 構平均每行系統(tǒng)程序設計語言代碼翻譯成大約 五條機器指令,與此相比,每行匯編語言代碼翻譯成一 條機器指令(由5個不同的人寫的8個c文件的非正式 分析中,我發(fā)現(xiàn)這個比率為每行3到7條指令;capers jones從大量語言的研究中發(fā)現(xiàn)對于一個
6、給定的工作, 匯編語言需要的代碼長度大約是系統(tǒng)程序設計語言代 碼長度的3-6倍)不管是什么語言,編程人員每年可以 寫大體上相同數(shù)量的代碼行,因此,系統(tǒng)程序設計語言 允許用比匯編語言快得多的語言寫應用程序.匯編語言和系統(tǒng)程序設計語言的第二個不同 是類型設置我使用"類型"來說明信息的意義在它被 使用前就被特殊化在強類型語言中編程人員聲明如 何使用每條信息,并避免此信息被用于其他方式在弱 類型語言中信息應用是沒有優(yōu)先權限制:信息的意思 完全由它的使用方法確定,而不是任何初始約定.現(xiàn)代計算機基本上是無類型的:內(nèi)存中的任何 字對任何類型的值比如整型,浮點數(shù),指針或結構體都 是有效的值
7、的意思由它的使用方法確定:如果指向一 個內(nèi)存字,那么他就被認為是結構體;如果一個字涉及 一個整型加結構體,那么他就被認為是整型,如此等等. 相同的字在不同的時間可用于不同的方法.與此相反,現(xiàn)在的系統(tǒng)程序設計語言是強類型 定義的例如:系統(tǒng)程序設計語言中的每個變量都必須被聲明 為整型或指針或字符串等特殊類型,并且必須用于適 合這種類型變量的方法數(shù)據(jù)與代碼完全分離:創(chuàng)建新的代碼很困難或根本 不可能.變量可以集中在結構體中或者定義好的子結構體和 過程或方法的對象中以便于使用;一種類型的對象不 能用于期待其他類型對象處.確定類型由幾個好處第一,聲明變量如何使用 使大型程序更易于管理并區(qū)分那些必須被分別對
8、待的 變量.第二,編譯器可以利用類型信息來偵測某些類型 的錯誤,比如,試圖把一真的不掉線 嗎?、?個浮點值作為一個指針第三,定義類型能使編譯 器更好的執(zhí)行特殊代碼例如,如果編譯器知道一個變 量總是對整型值有效,那么他就可以產(chǎn)生一個整型指 令來操縱這個變量;如果編譯器不知道變量的類型,那 么他就必須產(chǎn)生額外的指令在運行時檢查變量類型.總之,系統(tǒng)程序設計語言被設計來處理與匯 編語言相同的工作,即隨機地產(chǎn)生請求.系統(tǒng)程序設計 語言比匯編語言層次更高,類型更強這就使請求產(chǎn)生 更迅速并且處理更容易,除了在運行時有一點損失,圖 示1是匯編語言和其他幾種系統(tǒng)程序設計語言的比較.3腳本語言腳本語言,像 per
9、l, python, rexx, tel, visualbasic和unix shells代表了與系統(tǒng)程序設計語言完全 不同的編程腳本語言假設已經(jīng)存在了 一系列由其他 語言寫成的有用的組件腳本語言不希望隨機地產(chǎn)生 請求,他希望主要是把組件接在一起例如,tel和 visual basic可以被用于在屏幕上安排一系列用戶圖 形控制,而unix shells scripts被用于把過濾程序集 合入管道腳本語言常用于擴展組件特性,但他們很少 用于復雜的算法和數(shù)據(jù)結構;這些東西常由組件提供. 腳本語言有時涉及膠著語言或系統(tǒng)整體語言.為了簡化連接組件的工作,腳本語言被設計 為無類型的:所有的東西無論是看起
10、來還是使用起來 都是完全一樣的,因此他們可以互換例如,在tel或 visual basic中一個變量可以一會兒處理字符串,一 會兒又處理整型代碼和數(shù)據(jù)也??苫Q,因此,可以 用一個程序寫另一個程序,然后高速執(zhí)行,腳本語言一 般是面向字符的,因為它為許多不同的事物提供了一 致的描述.無類型語言使組件更容易連在一起在使用 時沒有優(yōu)先級限制,并且所有的組件及其值都用統(tǒng)一 的方式描述除此之外,任何組件和值都可以在任何情 況下使用;為某一目的而設計的組件可以被用于設計 者完全沒有預見過的完全不同的目的例如,在unix shells中,所有的過濾程序從輸入讀入字節(jié)流,并把字 節(jié)組成的字符串寫入輸出;任何兩
11、個程序都可以通過 把一個的輸出連到另一個的輸入而把兩者聯(lián)系起來.下面的shell命令把三個過濾堆在一起來計算選中區(qū)域中包含單詞"scripting"的行數(shù):select i grep scripting | wcselect程序讀入當前顯示選中的文本并把它 輸出;grep程序讀取輸入并把包含"scripting1'的行輸 出;wc程序對輸入的行數(shù)求和其中的每個 程序都可 以用于許多其他情況來做不同的工作.系統(tǒng)程序設計語言的強類型本質上阻止重用. 類型鼓勵編程人員創(chuàng)建包含不相容接口的類型("接口 很好,接口越多越好").每個接口需要特別類
12、型的對象, 而編譯器不允許接口使真的不掉線 嗎? ?.?用任何其他類型的對象,即使那樣有用為了使用 一個已經(jīng)存在的接口的新的對象,就必須寫轉換代碼 以便在對象的類型和接口期望的類型間進行翻譯這 反過來又需要重編譯部分或全部分布式二進制形式的 應用程序,在普通情況下這是不可能的.為了能看出無類型語言的優(yōu)點,考慮下面的tel命令:button b -text hello! -font (times 16 -command (puts hello這個命令創(chuàng)建了一個新的按鈕來顯示16點 times字體,當用戶敲擊控制鍵時顯示一段小的信息. 它把六種不同的類型混合成一個單一的狀態(tài):一個命 令名(butt
13、on), 一個按鈕控制(b),所有權名字(-text, -font,和-command),簡單字符串(hello!和 hello), 包含鉛字名(times)及字點大小(16)的字體名(times 16)和tc 1腳本(puts hello). tel代表所有這些非正式 字符串在這個例子中可以在任何一個命令中為屬性 賦值,而未賦值的屬性使用給定的缺省值在這個例子 中20個以上的屬性是不特別賦值的.同樣的例子在java中用兩種方法執(zhí)行時需要 7行代碼使用c+和微軟基本類(mfc )需要三個過程 25行代碼,在微軟基本類中僅僅設置字體就需要幾行 代碼:cfont *fontptr = new cf
14、ont (); fontptr->createfont (16, 0, 0, 0, 700, 0, 0, 0, ansi_charset,out_default_precis, clip_default_precis, default-quality,default-pitch|ff.dontcare, "times new romann); buttonptr->setfont (fontptr);大部分代碼是由強類型造成的為了設置按 鈕字體,必須運用setfont方法,但這個方法必須通過 指針傳給cfont對象,這反過來需要聲明和初始化一個 新的對象為了初始化cfon
15、t對象必須喚醒它的 createfont方法,但createfont有一個需要14個特 殊化引數(shù)的固定接口 在tel中字體(times鉛字,16點) 的基本特征不用聲明或轉換就可以立即使用另 外,tel允許在創(chuàng)建按鈕的命令中直接包含按鈕行為, 而c+和java中需要把它放在單獨聲明的方法中.(實際上可以用隱藏基本語言的復雜性的圖 形開發(fā)環(huán)境處理一個像這樣的不重要的例子:用戶在 表中輸入合適的值,而開發(fā)環(huán)境輸出代碼然而,在更 多復雜情況像按計劃產(chǎn)生合適值或接口的條件任務中 開發(fā)人員必須在基本語言下編寫代碼) 這可能看起來腳本語言的無類型特性不能發(fā)現(xiàn)錯誤, 但實際上腳本語言和系統(tǒng)程序設計語言一樣安
16、全例 如在上面的按鈕例子中如果字體大小被置成非整型字 符串,就像xyz,那么就會出現(xiàn)錯誤不同的是當一個值 被使用時腳本語言在最后一刻進行錯誤檢查,而強類 型在編譯時發(fā)現(xiàn)錯誤這就避免了運行時的檢查然而 提高效率的代價是限制信息如何使用:這導致了更多 的代碼和更不易改變的程序.腳本語言和系統(tǒng)程序設計語言的另一個重要不 同是腳本語言是被解釋而系統(tǒng)程序設計語言是被編譯.被解釋的語言由于沒有編譯時間而提供快速的轉換.通過允許用戶運行時編真的不掉線嗎?、? ?寫應用程序,解釋器使應用程序更加靈活,例如, 許多整體線路的綜合分析工具,包括tel解釋器;程序 用戶編寫tel腳本來使他們的設計具體化并控制工具
17、操作.通過快速設計代碼解釋器可以實現(xiàn)強大的功能.例如,一個基于tel的網(wǎng)頁瀏覽器可以通過把網(wǎng)頁中的html轉換為使用一些常規(guī)表達替代物的tel腳本,從而從語法上分析網(wǎng)頁然后執(zhí)行腳本把頁面翻譯顯示在屏腳本語言不如系統(tǒng)程序設計語言效率高,部分 是因為他們使用解釋器而不是編譯器,而且因為他們 基本組件的選擇標準是功能強大和易于使用而不是有 效地對應基本硬件例如,腳本語言經(jīng)常使用長度可變 的字符串,而同樣的情況下系統(tǒng)程序設計語言使用對 應一個機器字的二進制值;腳本語言經(jīng)常使用哈希表, 而系統(tǒng)程序設計語言使用變址陣列.幸運的是,腳本語言的性能不經(jīng)常是一個主 要的問題.腳本語言應用程序通常比系統(tǒng)程序設計語
18、 言的應用程序要小,并且腳本應用程序的執(zhí)行受組件 執(zhí)行的支配,而這些組件是系統(tǒng)程序設計語言提供的 典型工具.腳本語言比系統(tǒng)程序設計語言更高級,平均 一個指令可以做更多的工作一個典型的腳本語言指 令執(zhí)行成百上千條機器指令,而一個典型的系統(tǒng)程序 設計語言指令執(zhí)行大約五條機器指令(參圖一)部分 不同是因為腳本語言使用翻譯器,這不如系統(tǒng)程序設 計語言中被編譯的代碼但是主要的不同是因為腳本 語言的初期操作有更強大的功能例如,perl中喚醒一 個常規(guī)表達替代和喚醒一個整型加法一樣簡單在tel 中,變量會有與它相聯(lián)系的圖標,因此,設置變量會導 致側面影響例如,一個圖標可能會被用于保持變量的 值在屏幕上持續(xù)更
19、新.表1表的每行描述了被執(zhí)行了兩遍的應用程序, 一遍使用系統(tǒng)程序設計語言,像c或java, 一遍使用腳 本語言,像tel.代碼率列給出了兩個應用程序的代碼 行率01意味著系統(tǒng)編程語言需要更多的代碼),作用 率列給出了開發(fā)率在大多數(shù)情況下兩個版本由不同 的開發(fā)者執(zhí)行表中的信息由comp. lang, tel新聞組中 對文章進行答復的不同人提供。.由于上面描述的特性,腳本語言允許基于膠著的應用程序的快速發(fā)展表1提供了有趣的支持它 描述了幾個在系統(tǒng)程序設計語言下執(zhí)行后又在腳本語 言中重新執(zhí)行的應用程序,或反過來也是一樣的.在每種情況下腳本版本都比系統(tǒng)編程版本需 要更少的代碼和更短的開發(fā)時間,不同點的
20、變化從2到 60.腳本語言第一次執(zhí)行時好處不顯著,這使人聯(lián)想到 任何在第一次執(zhí)行經(jīng)驗上的重執(zhí)行都會更好,而腳本 和系統(tǒng)編程的真正不同相差5到10倍,而不是表中的 極端點腳本的好處同樣依賴于應用程序在表中的最 后一個例子中,應用程序的圖形用戶界面部分是基于 膠著的,而模擬裝置部分卻不是;這可能解釋為什么腳 本應用程序不如其他應用程序獲益多.真的不掉線嗎? ?.?總之,腳本語言被設計成膠著應用程序,他們 提供比匯編或系統(tǒng)程序設計語言更高層的編程,比系 統(tǒng)程序設計語言更弱的類型,和解譯后的開發(fā)環(huán)境腳 本語言犧牲執(zhí)行速度來提高開發(fā)速度.4 不同的任務,不同的工具腳本語言不是系統(tǒng)程序設計語言的替代品,反
21、過 來也一樣他們各自適合不同類型的工作把膠著和系 統(tǒng)合為一體,應用程序可以比腳本語言快5-10倍;系統(tǒng) 程序設計語言將需要大量復本和轉換代碼來連接各塊. 而這直接使用腳本語言對于復雜的算法和數(shù)據(jù)結構, 系統(tǒng)程序設計語言的強類型使程序更易于管理執(zhí)行 速度是關鍵.系統(tǒng)程序設計語言可以比腳本語言運行 快10-20倍,因為它產(chǎn)生更少的運行時檢查.在決定是否使用腳本語言或系統(tǒng)程序設計語言處理一項特殊任務時考慮以下問題:應用程序的主要工作是否是把已經(jīng)存在的組件 聯(lián)系起來 應用程序是否要操縱不同種類類型的事物 應用程序是否包含圖形用戶界面 應用程序是否做大量字符串操作 應用程序函數(shù)是否能快速解決問題應用程序
22、是否需要可擴展如果這些問題回答"是"就表明這個應用程序使用腳本語言會更好另一方面,如果對下面的問題回 答"是"就表明系統(tǒng)程序設計語言更適合這個應用程 序:應用程序是否執(zhí)行復雜的算法或數(shù)據(jù)結構 應用程序是否操縱大量數(shù)據(jù)集(像圖像中的所有像 素)因而執(zhí)行速度很重要應用程序的函數(shù)是否已經(jīng)定義好,并且;f艮少改動在過去的30年中,大多數(shù)主要的計算機平臺 同時提供系統(tǒng)編程和腳本語言。例如,第一個腳本語 言雖然粗糙,卻是一個jcl (作業(yè)控制語言),它被用于 在os/360中把工作等級按順序排好。個別工作等級由 pl1, fortran或匯編語言書寫,那時是系統(tǒng)程序
23、設計語 言。在二十世紀八十年代時unix機器上,c被用于系 統(tǒng)編程而sh, csh等殼編程被用于腳本。在二十世紀九 十年代的pc時代里,c和c+被用于系統(tǒng)編程e而 visual basic用于腳本。在現(xiàn)在已基本成形的網(wǎng)絡時 代中,java被用于系統(tǒng)編程而像javascript , perl 和tel等語言被用于腳本。腳本和系統(tǒng)編程是共生的,共同使用,他們 能產(chǎn)生格外強大的編程環(huán)境:系統(tǒng)程序設計語言用于 產(chǎn)生令人興奮的組件,然后用腳本語言把他們組裝起 來。例如,visual basic的主要吸引力是系統(tǒng)編程者 可以用c編寫activex組件,而不太老練的編程者可 以在visual basic應用
24、中使用這些組件。在unix下 編寫用于喚醒用c編寫的應用程序的殼腳本艮容易。 tc 1普及的一個原因是可以編寫執(zhí)行新命令的c代碼來 擴展該語言的能力。5.腳本呈上升趨勢真的不掉線嗎? ?.?腳本語言已經(jīng)存在了很長時間,但最近幾年幾個因素的綜合結果使它的重要性提高了。最重要的 因素是應用程序綜合向膠著應用程序發(fā)展的變換。這 種變換的三個實例是圖形用戶界面,因特網(wǎng)和組件框 架。圖形用戶界面出現(xiàn)于二十世紀八十年代早期,并在二十世紀八十年代晩期得以普及。在許多編 程項目中圖形用戶界面占了一半甚至更多的比重。圖 形用戶界面基于膠著應用:他的目標不是創(chuàng)建新的功 能,而是把圖形控制集合和應用程序內(nèi)部函數(shù)聯(lián)系
25、起 來。我不擔心任何快速發(fā)展的環(huán)境因為圖形用戶界面 基于系統(tǒng)程序設計語言,不論是windows環(huán)圖形用戶界面境,macintosh toolbox 或 unix met if,基于c或c+等已被證明難以掌握,使用不靈活,生成 結果不靈活的語言。一些這樣的系統(tǒng)有彳艮好的圖形工 具來設計屏幕輸出并隱藏基本語言,而一旦設計者不 得不編寫代碼時一切變得困難起來,像為接口元素提供行為。所有好的快速開發(fā)圖形用戶界面環(huán)境都基于 腳本語言:visual basic, hyper lard 和 tcl/tk,隨著圖形用戶界面的普及,腳本語言也越來越流行。因特網(wǎng)的增長也使腳本語言變得大眾化。因 特網(wǎng)只是一種膠著工
26、具,它不創(chuàng)建任何新的計算結果 或數(shù)據(jù);它只是簡單的把大量已經(jīng)存在的事物聯(lián)系起 來。因特網(wǎng)編程工作的完美工作之一是讓所有連接的 組件在一起工作,像腳本語言。例如:perl因編寫cgi 腳本而流行,javascript因編寫網(wǎng)頁而流行?;谀_本的第三個例子是組件框架,像 activex, opendoc和javabeanso雖然系統(tǒng)程序設計語 言可以很好的創(chuàng)建組件,但腳本更適合組裝組件到應 用程序中。沒有一個好的腳本語言來操縱組件,組件 框架的大部分功能就都沒有了。這可以部分解釋為什 么組件框架在個人電腦上(visual basic提供了方便 的腳本工具)比在像unix/corba等組件框架中不包
27、含 腳本的平臺上更成功.腳本語言繼續(xù)普及的另一個原因是腳本技術 的提高?,F(xiàn)代腳本語言像tel和perl離早期腳本語言 像jcl的公開宣布已經(jīng)很遠。例如,jcl不提供基本反 復而早期unix外殼不提供過程,即使在今天,腳本技 術仍然相對不成熟。例如,visual basic不是真正的 腳本語言:它最初執(zhí)行像一個簡單的系統(tǒng)程序設計語 言,然后修改使之更適合腳本。以后的腳本語言將比 現(xiàn)在使用的更好。腳本技術得益于計算機硬件的加速發(fā)展。過 去常常用系統(tǒng)程序設計語言在復雜的應用程序中獲得 可接受的執(zhí)行。某些情況下甚至系統(tǒng)程序設計語言也 不夠有效,因此不得不用匯編編寫應用程序。然而, 今天的機器比1980
28、年的快100-500倍,并且仍在繼續(xù) 以每18個月翻一番的速度增長。今天,許多應用程序 可以用解釋后的程序執(zhí)行,并且仍然有出色的執(zhí)行。 例如,tel腳本可以操縱幾千個對象同時提供好的相互 響應。由于計算機速度的不斷提高,腳本將對越來越 大的應用程序產(chǎn)生吸引力。腳本語言應用的不斷增長最終導致編程群體 的改變二十年前大多數(shù)編程者是大型項目的熟練的 編程人員那個時代的編程人員需要花幾個月的時間 掌握一門語言和它的編程環(huán)境,系統(tǒng)程序設計語言就 是為這些人設計的然而,自從個人電腦出現(xiàn)以后,越 來越多的非專業(yè)編程者加入到編程者的行列對這些 人來說,編程不是他們的主要工作,而只是他們偶爾用 來幫真的不掉線嗎
29、? ?.?助他們工作的工具偶然編程的例子是簡單的數(shù) 據(jù)庫查詢或者是巨大的擴展片偶然編程者不希望花 幾個月的時間學習系統(tǒng)程序設計語言但他們可以花幾 個小時的時間學到足夠的腳本語言知識來寫出有用的 代碼.由于腳本語言由簡單的句法并且省略了對象線 程等復雜的特性,因而它比系統(tǒng)程序設計語言要容易 學例如,比較visual basic和visual c+,很少有偶 爾編程者會選擇visual c+,而大部分會用visual basic建立有用的應用程序.即使在今天,用腳本語言編寫的應用程序的數(shù) 目也遠多于用系統(tǒng)程序設計語言編寫的應用程序的數(shù) 目在unix系統(tǒng)中有比c程序更多的外部腳本,而在windows
30、下visual basic的編程者和應用程序都比c 或c+的要多.當然,多數(shù)大型和廣泛使用的應用程序 都是用系統(tǒng)程序設計語言寫成的,所以,如果比較代碼 總行數(shù)或是建立的副本數(shù),則系統(tǒng)程序設計語言略勝 一籌不管怎么樣,腳本語言已經(jīng)是應用程序開發(fā)的主 動力,并且今后它的市場份額會繼續(xù)提高.6 對象的作用腳本語言在編程語言和軟件工程中通常被專家忽 視取而代之,他們更注重像c+和java等面向對象系 統(tǒng)程序設計語言面向對象編程被認為是代表下一步 編程語言發(fā)展的主流像強類型和繼承等面向對象 特 征 據(jù)說可以減少開發(fā)時間,提高軟件重用率,并解決 包括腳本語言技巧等其他問題.我還沒有看到足夠的數(shù)據(jù)可以確切地
31、回答這個問題.在我看來,對象只能提供一定的好處:或許能提高20-30%的創(chuàng)作力,但決不會有兩倍,更不用說是十倍.現(xiàn)在抱怨c+的和喜歡它的一樣多,并且一些語言專家 開始公開反對面向對象編程這一段剩下的部分用于 解釋為什么對象不能像腳本一樣顯著地提高創(chuàng)作力, 并討論腳本語言中可以獲得的面向對象編程的好處.向對象編程不能顯著提高創(chuàng)作力的原因是他沒有提高編程層次或鼓勵重用像c+等面向對象語言 中編程者仍然使用需要用大量細節(jié)來描述和操縱的基 本的小單元工作理論上可以開發(fā)強大的函數(shù)庫包,并 且如果這些函數(shù)庫被廣泛使用就將提高編程層次然 而,這樣的函數(shù)庫卻很少大多數(shù)面向對象語言的強類 型使包的定義受限制從而
32、難以重用每個包都需要特 殊類型的對象,如果兩個包在一起工作,就必須寫轉換 代碼在兩個包需要的類型間進行翻譯面向對象語言 的另一個問題是他們強調(diào)繼承.當一個類借用為另一 個類寫的代碼時執(zhí)行繼承并不是一個好主意,它使軟 件難以管理和重用它把類的執(zhí)行綁在一起,因而沒有 另夕個類任何一個其它類都不可理解:不知道其繼 承的方法在父類中如何執(zhí)行,則無法理解子類;而不知 道其方法如何被子類繼承,則無法理解父類在一個復 雜的類繼承中,不理解它所繼承的所有其他的類就無 法理解任何一個類更糟的是,一個類無法從它繼承的 類中被分離以用于重用多重繼承使這個問題變得更 麻煩執(zhí)行繼承導致和goto語句被重復執(zhí)行時所看到的
33、一樣的交錯和不可靠.因此,面向對象系統(tǒng)經(jīng)常不能 處理復雜問題并缺少重用.另一方面,腳本語言實際引起了有效的軟件重用在有趣的組件由系統(tǒng)程序設計語言建立使他們使 用了模塊,隨后用腳本語言把他們膠著在應用程序中.這種勞動的分割提供了為重用的自然的框架結構組 件被設計為可重用的組件和腳本間有定義好的接口以 利于組件的使用例如,在tel中組件是c中執(zhí)行的常 規(guī)命令他們看起來更象是內(nèi)在的命令,因而更容易在 真的不掉線嗎? ?.?tel腳本中使用在visual basic中組件是activex的擴展,可用于從工具面板直接拖到窗體中.不管怎么樣,面向對象編程至少提供了兩個有用的特 性.第一個是封裝:對象用某種
34、隱藏執(zhí)行細節(jié)的方法把 數(shù)據(jù)和代碼聯(lián)系起來這使管理大型系統(tǒng)更加容易另 一個有用的特性是接口繼承,這涉及提供同樣方法的 類和apis,即使他們有不同的執(zhí)行,這時類之間可以相 互轉化,從而鼓勵重用.幸運的是,對象的這些好處在腳本語言中可以像在系統(tǒng)程序設計語言中一樣實現(xiàn),并且所有的腳本 語言都提供面向對象編程例如,python是面向對象腳 本語言,python第五版包括提供對象,object rexx是rexx的面向對象版本,而incr tel是tel的面向對象版本有一點不同是,腳本語言中的對象事物類型的, 而系統(tǒng)程序設計語言中的對象是強類型的.7.其他語言這篇文章不是所有編程語言的全部特性記述除了
35、類型長度和編程層次以外還有許多編程語言的其他特 性,并且還有許多不能被明確定義為系統(tǒng)程序設計語 言或腳本語言的其他有趣的語言例如,lisp系統(tǒng)的語 言就處于腳本語言和系統(tǒng)程序設計語言之間,兩方的 特性它都有一些它開創(chuàng)了像解釋和活動類型等現(xiàn)在 在腳本語言中很普遍的觀點,又有自動存儲管理和綜 合開發(fā)環(huán)境等在腳本和系統(tǒng)程序設計語言中同時使用 的觀念.8 結論腳本語言代表一套與系統(tǒng)程序設計語言不同的協(xié) 定他們犧牲執(zhí)行速度和與系統(tǒng)程序設計語言相關的 類型長度而提供更高的編程創(chuàng)作力和軟件重用.當計 算機變得更快和比編程者的勞動力更便宜時這個協(xié)定 越來越行得通在復雜的數(shù)據(jù)結構和算法中系統(tǒng)程序 設計語言也適于
36、創(chuàng)建組件,而腳本語言更適合在聯(lián)系 復雜的應用程序中進行膠著膠著工作變得越來越盛 行,因而腳本在下個世紀將成為比今天更為重要的編 程范例.我希望這篇文章可以在三個方面影響編程群體;在開始一個新的項目并為每個工作選擇最強大的工 具時我希望編程人員能考慮到腳本和系統(tǒng)編程的不同 我希望組件框架的設計者能認識到腳本的重要性并 確信框架不僅是創(chuàng)建組件的工具,同時也是把他們膠 著在一起的工具我希望編程語言研究協(xié)會能轉變他們對腳本語言的 態(tài)度,并在將來幫助發(fā)展更強大的腳本語言對語言設 計者而言,提高編程層次應該是唯一重要的目標,因為 他是提高編程者創(chuàng)造力的最重要的因素;強類型是否 有助于達到這個目標還不清楚.二什么是腳本語言腳本語言,像 perl, python, rexx, tel, visual basic和unix shells代表了與系統(tǒng)程序設計語言完全 不同的編程腳本語言假設已經(jīng)存在了 一系列由其他 語言寫成的有用的組件腳本語言不希望隨機地產(chǎn)生 請求,他希望主要是把組件接在一起例如,tel和 visual basic可以被用于在屏幕上安排一系列用戶圖 形控制,而unix shells scripts被用于把過濾程序集 合真的不掉線嗎? ?.?入
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024燕山郊野體育公園體育賽事轉播權及廣告招商合同3篇
- 強迫癥健康宣教
- 中醫(yī)針灸跟診心得醫(yī)德仁心
- 10 日月潭(說課稿)2024-2025學年統(tǒng)編版語文二年級上冊
- 18牛和鵝說課稿-2024-2025學年四年級上冊語文統(tǒng)編版
- 2024影樓與攝影師長期合作協(xié)議范本3篇
- 2024技術轉讓合同約定的技術成果交付和保密
- 12 家鄉(xiāng)的喜與憂(說課稿)2023-2024學年統(tǒng)編版道德與法治四年級下冊
- 2024年版餐飲行業(yè)勞動協(xié)議范例版B版
- 2025年度膩子行業(yè)市場調(diào)研與分析合同3篇
- 2025河南滎陽市招聘第二批政務輔助人員211人高頻重點提升(共500題)附帶答案詳解
- JJF 2180-2024嬰兒輻射保暖臺校準規(guī)范
- 2024年財政部會計法律法規(guī)答題活動題目及答案一
- 中建X局設計參數(shù)指標庫
- 2025年八省聯(lián)考新高考語文試題解讀及備考啟示
- 2025年江西江銅集團招聘筆試參考題庫含答案解析
- 教育技術研究員合同模板
- GB/T 33130-2024高標準農(nóng)田建設評價規(guī)范
- DZ/T 0462.3-2023 礦產(chǎn)資源“三率”指標要求 第3部分:鐵、錳、鉻、釩、鈦(正式版)
- 壓力性損傷(壓瘡)質量管理與控制
- 2023年售前工程師年度總結及來年計劃
評論
0/150
提交評論