當(dāng)前位置:首頁(yè) > 電源 > 數(shù)字電源
[導(dǎo)讀] 為了解決軟件開(kāi)發(fā)的難題,人們發(fā)明了匯編語(yǔ)言,通過(guò)一些助記符來(lái)減輕二進(jìn)制編碼的開(kāi)發(fā)壓力。這的確是行之有效的方法,然而,匯編語(yǔ)言太依賴程序員的素質(zhì),而且無(wú)法適應(yīng)大規(guī)模的開(kāi)發(fā)。 到了上世紀(jì)60年代,出

    為了解決軟件開(kāi)發(fā)的難題,人們發(fā)明了匯編語(yǔ)言,通過(guò)一些助記符來(lái)減輕二進(jìn)制編碼的開(kāi)發(fā)壓力。這的確是行之有效的方法,然而,匯編語(yǔ)言太依賴程序員的素質(zhì),而且無(wú)法適應(yīng)大規(guī)模的開(kāi)發(fā)。
    到了上世紀(jì)60年代,出現(xiàn)了Fortran,Cobol,Lisp,Algol 60等現(xiàn)代高級(jí)語(yǔ)言。程序員可以用接近自然語(yǔ)言的程序語(yǔ)言編制軟件,再通過(guò)編譯器轉(zhuǎn)換成機(jī)器可執(zhí)行的代碼。由于使用精確的形式語(yǔ)言來(lái)定義程序語(yǔ)言本身,并通過(guò)對(duì)硬件的抽象使得程序與計(jì)算機(jī)平臺(tái)無(wú)關(guān),導(dǎo)致高級(jí)語(yǔ)言生產(chǎn)效率提高、維護(hù)費(fèi)用降低,計(jì)算機(jī)軟件業(yè)得以蓬勃發(fā)展。
    為了實(shí)現(xiàn)生產(chǎn)效率的提高、可靠、易維護(hù)、易管理的開(kāi)發(fā)思想和方法。文中在介紹腳本語(yǔ)言及使用的基礎(chǔ)上,提出了其在數(shù)據(jù)采集系統(tǒng)中的使用模型及具體實(shí)現(xiàn)。


1 腳本語(yǔ)言簡(jiǎn)介
    腳本語(yǔ)言是為了縮短傳統(tǒng)的編寫(xiě)一編譯一鏈接一運(yùn)行(edit-compile-link-run)過(guò)程而創(chuàng)建的計(jì)算機(jī)編程語(yǔ)言。相對(duì)于編譯型計(jì)算機(jī)編程語(yǔ)言,用腳本語(yǔ)言開(kāi)發(fā)的程序在執(zhí)行時(shí),由其所對(duì)應(yīng)的解釋器(或稱(chēng)虛擬機(jī))解釋執(zhí)行。系統(tǒng)程序設(shè)計(jì)語(yǔ)言是被預(yù)先編譯成機(jī)器語(yǔ)言而執(zhí)行的。腳本語(yǔ)言的主要特征是:程序代碼即是腳本程序,亦是最終可執(zhí)行文件。腳本語(yǔ)言可分為獨(dú)立型和嵌入型,獨(dú)立型腳本語(yǔ)言在其執(zhí)行時(shí)完全依賴于解釋器,而嵌入型腳本語(yǔ)言通常在編程語(yǔ)言中(如C,C++,VB,.Java等)被嵌入使用。
    腳本技術(shù)得益于計(jì)算機(jī)硬件的加速發(fā)展。過(guò)去某些情況下甚至系統(tǒng)程序設(shè)計(jì)語(yǔ)言也不夠有效,因此不得不用匯編編寫(xiě)應(yīng)用程序。而今的機(jī)器比1980年的快100~500倍,且仍在以每18個(gè)月翻一番的速度增長(zhǎng)。計(jì)算機(jī)性能快速提高,使計(jì)算機(jī)程序越來(lái)越復(fù)雜。因此,開(kāi)發(fā)時(shí)間已遠(yuǎn)比運(yùn)行時(shí)間緊迫。這時(shí),腳本語(yǔ)言作為系統(tǒng)程序設(shè)計(jì)語(yǔ)言的補(bǔ)充,開(kāi)始被主要的計(jì)算機(jī)平臺(tái)所同時(shí)提供。編程語(yǔ)言已經(jīng)由性能低下的硬件與執(zhí)行效率之間的矛盾,轉(zhuǎn)變?yōu)榭焖僮兓氖袌?chǎng)需要與低效的開(kāi)發(fā)工具之間的矛盾,所以腳本語(yǔ)言的發(fā)展在今后的軟件開(kāi)發(fā)中有著必然的趨勢(shì)。
    腳本語(yǔ)言和系統(tǒng)程序設(shè)計(jì)語(yǔ)言,一個(gè)重要的不同是腳本語(yǔ)言是被解釋而系統(tǒng)程序設(shè)計(jì)語(yǔ)言是被編譯。被解釋的語(yǔ)言由于沒(méi)有編譯時(shí)間而提供快速的轉(zhuǎn)換,通過(guò)允許用戶運(yùn)行時(shí)編寫(xiě)應(yīng)用程序,而不需要耗時(shí)的編譯/打包過(guò)程。解釋器使應(yīng)用程序更加靈活,腳本語(yǔ)言的代碼能夠被實(shí)時(shí)生成和執(zhí)行。腳本語(yǔ)言通常都有簡(jiǎn)單、易學(xué)、易用的特性,目的就是希望能讓程序設(shè)計(jì)師快速完成程序的編寫(xiě)工作。


2 腳本語(yǔ)言的一般應(yīng)用
    腳本語(yǔ)言主要應(yīng)用在以下幾個(gè)方面:
    (1)作為批次處理語(yǔ)言或工作控制語(yǔ)言。許多腳本語(yǔ)言用來(lái)執(zhí)行一次性任務(wù),尤其是系統(tǒng)管理方面。DOS,Windows的批處理文件和Unix的shell腳本都屬于這種應(yīng)用;
    (2)作為通用的編程語(yǔ)言存在,如Perl、Py-thon、Ruby等。由于“解釋執(zhí)行,內(nèi)存管理,動(dòng)態(tài)”等特性,它們?nèi)员环Q(chēng)為腳本語(yǔ)言。但它們已經(jīng)用于應(yīng)用程序編寫(xiě),用戶也不把它們看作腳本語(yǔ)言;
    (3)許多大型的應(yīng)用程序都包括根據(jù)用戶需求而定制的慣用腳本語(yǔ)言。同樣地,許多電腦游戲系統(tǒng)使用一種自定義腳本語(yǔ)言來(lái)表現(xiàn)NPC(Non-Player Character,Non-Playable Character,Non-Player Class)和游戲環(huán)境的預(yù)編程動(dòng)作。此類(lèi)語(yǔ)言通常是為一個(gè)單獨(dú)的應(yīng)用程序所設(shè)計(jì),雖然它們貌似一些通用語(yǔ)言(如Quake C,Modeled After C),但它們有自定義的功能;
    (4)網(wǎng)頁(yè)中的嵌入式腳本語(yǔ)言。熟知的HTML(Hyper Text Mark-up Language)即超文本標(biāo)記語(yǔ)言,就是一種腳本語(yǔ)言,它的解釋器就是瀏覽器。JavaScript直到現(xiàn)在仍然是網(wǎng)頁(yè)瀏覽器內(nèi)的主要編程語(yǔ)言,它的ECMAScript標(biāo)準(zhǔn)化保證了它成為流行的通用嵌入式腳本語(yǔ)言。另外,隨著動(dòng)態(tài)網(wǎng)頁(yè)技術(shù)發(fā)展,ASP、JSP、PHP等嵌入網(wǎng)頁(yè)的腳本語(yǔ)言正被廣泛使用,不過(guò)這些腳本要通過(guò)Web Server解釋為Html而被瀏覽器執(zhí)行;
    (5)腳本語(yǔ)言在系統(tǒng)應(yīng)用程序中嵌入使用,作為用戶與系統(tǒng)的接口方式。在工業(yè)控制領(lǐng)域,PLC編程、組態(tài)軟件的腳本語(yǔ)言是擴(kuò)充組態(tài)系統(tǒng)功能的重要手段;在通信平臺(tái)領(lǐng)域,IVR(自動(dòng)語(yǔ)音應(yīng)答)流程編程;Office辦公軟件,提供的宏和VBA;其他應(yīng)用軟件如ER Studio提供的Basic MacroEditor,用戶可以編寫(xiě)Sax Basic腳本操作ER圖,生成Access庫(kù)、導(dǎo)出Word文檔等擴(kuò)展功能。

3 腳本語(yǔ)言在數(shù)據(jù)采集系統(tǒng)中的應(yīng)用
    縱觀程序設(shè)計(jì)語(yǔ)言的發(fā)展,一個(gè)很顯著的特點(diǎn)就是以機(jī)器的性能換取人的效率,以提高開(kāi)發(fā)者的工作效率和滿足人的需求為目標(biāo),在所有資源中人是最昂貴的資源,因而程序的編寫(xiě)從面向機(jī)器逐漸向面向人過(guò)度。而腳本語(yǔ)言就是可以提高開(kāi)發(fā)效率和滿足客戶需求程序設(shè)計(jì)的最好選擇。比如在開(kāi)發(fā)中需要對(duì)客戶自定義表達(dá)式計(jì)算時(shí),如果自己去寫(xiě)表達(dá)式解析,將是一個(gè)幾乎無(wú)法完成的任務(wù)。而使用微軟的Script控件,把表達(dá)式作為腳本函數(shù)返回值,讓Script控件解釋計(jì)算,幾行代碼就完成了,開(kāi)發(fā)效率大大提高。
    在軟件系統(tǒng)實(shí)踐中,用的最多的就是把腳本嵌入應(yīng)用程序中。快速開(kāi)發(fā)工具Delphi除了可用使用ActiveX控件類(lèi)型的腳本引擎外,也有許多優(yōu)秀的原生Delphi腳本引擎控件如Scripter Studio,PaxScr4pter,Inner Fuse Pascal Script,F(xiàn)ast Script等。在開(kāi)發(fā)一款通用的數(shù)據(jù)采集系統(tǒng)中,就采用了核心架構(gòu)使用高級(jí)語(yǔ)言,用戶擴(kuò)展和通訊協(xié)議使用Fast Script描述的設(shè)計(jì)模式。之所以選擇FastScript,因?yàn)镕ast Script是一個(gè)交叉平臺(tái)的語(yǔ)言的腳本引擎。它對(duì)希望增加腳本功能的編程人員非常有用。Fast Script是用100%的Object Pascal編寫(xiě),具有支持OLE和變量數(shù)組,可以使用多語(yǔ)言腳本(Pascal Script、C++ Script、JScript和BasicScript),與標(biāo)準(zhǔn)面向?qū)ο笳Z(yǔ)言語(yǔ)法相近,可以使用程序內(nèi)的任何對(duì)象、標(biāo)準(zhǔn)庫(kù)訪問(wèn)基類(lèi)、控件、窗體和DB;易可擴(kuò)展的庫(kù)結(jié)構(gòu);內(nèi)存占用小等特點(diǎn)。
    系統(tǒng)的結(jié)構(gòu),如圖1所示。采用這種模式,就是要充分發(fā)揮系統(tǒng)程序語(yǔ)言和腳本語(yǔ)言的各自優(yōu)勢(shì)。因?yàn)楹诵募軜?gòu)需要?jiǎng)?chuàng)建采集線程、進(jìn)行任務(wù)調(diào)度、處理系統(tǒng)消息和加載腳本引擎等,而這些需要穩(wěn)定且處理效率高,所以使用系統(tǒng)程序語(yǔ)言開(kāi)發(fā);而對(duì)于千變?nèi)f化的通訊協(xié)議,如果全都被系統(tǒng)核心架構(gòu)包括,是不可能的。而把各種通訊協(xié)議用不同的腳本語(yǔ)言文件描述,供采集系統(tǒng)調(diào)用,問(wèn)題就可以解決了。

[!--empirenews.page--]

    如圖1所示,通過(guò)系統(tǒng)配置,告訴采集核心需要建立的采集通道(對(duì)應(yīng)采集點(diǎn),每個(gè)通道的任務(wù)在自己的線程中調(diào)度),以及每個(gè)通道的采集任務(wù)(對(duì)應(yīng)與通訊協(xié)議腳本)和調(diào)度方案(何時(shí)啟動(dòng)采集或者多長(zhǎng)時(shí)間周期采集一次)。正是應(yīng)用了腳本語(yǔ)言描述采集任務(wù),使得系統(tǒng)具有高度靈活的可配置性。
    采集任務(wù)通過(guò)xml文檔描述,具體的通訊使用Fast Script描述。xml文檔結(jié)構(gòu)如下:

    <?xml version=“1.0” encoding=“GBK”?>
    <項(xiàng)目名稱(chēng)=“采集器對(duì)時(shí)”開(kāi)始流程=“通信步驟1”>
    <全局變量初始化腳本=“…”/><!--采集任務(wù)必要的全局變量加載腳本-->
    <通信流程名稱(chēng)=“通信步驟1”下一流程=“通信步驟2”>
    <發(fā)送數(shù)據(jù)腳本=“…”/><!--通信步驟發(fā)送數(shù)據(jù)的腳本-->
    <收全判斷腳本=“…”/><!--判斷通信數(shù)據(jù)是否收全的腳本,收全后進(jìn)入下一步驟-->
    <正確回復(fù)腳本=“…”/><!--判斷通信步驟收到數(shù)據(jù)是否正確的腳本-->
    </通信流程>
    ……
    <通信流程名稱(chēng)=“通信步驟n”下一流程=“”>
    <發(fā)送數(shù)據(jù)腳本=“…”/>
    <正確回復(fù)腳本=“…”/>
    <收全判斷腳本=“…”/>
    </通信流程>
    <數(shù)據(jù)處理腳本=“…”/><!--處理收到數(shù)據(jù)的腳本,一般用于數(shù)據(jù)解析并保存數(shù)據(jù)-->
    </項(xiàng)目>
    在系統(tǒng)核心中,把系統(tǒng)一些常量、函數(shù)聲明、讀入的腳本一起組成完整的腳本。
    以下是幾個(gè)典型腳本的例程(函數(shù)聲明為系統(tǒng)定義,斜體部分為XML文檔中讀入系統(tǒng))。
    全局變量初始化腳本如下:
    Procedure (Conn: TADOConnection; varGlobalVar:Variant);
    begin{全局變量分別為采集點(diǎn)地址,開(kāi)始地址,結(jié)束地址}

    [!--empirenews.page--]
    系統(tǒng)核心按照XML定義的流程,通過(guò)腳本控件的CallFunction、CallFunctionl、CallFunction2方法調(diào)用腳本中的函數(shù),根據(jù)執(zhí)行結(jié)果執(zhí)行相關(guān)操作并寫(xiě)入日志。在實(shí)踐應(yīng)用中發(fā)現(xiàn),整個(gè)腳本的語(yǔ)法檢查(Compile方法)占用系統(tǒng)的資源最多、對(duì)系統(tǒng)影響較大。所以在系統(tǒng)開(kāi)始時(shí),就把所有任務(wù)腳本讀人內(nèi)存中,并通過(guò)腳本控件的語(yǔ)法檢查,這樣雖然加大了系統(tǒng)內(nèi)存開(kāi)銷(xiāo),但是整個(gè)腳本語(yǔ)法檢查只做一次,任務(wù)調(diào)度時(shí)直接執(zhí)行腳本。比較與每次任務(wù)調(diào)度時(shí)讀人腳本、檢查語(yǔ)法、執(zhí)行,效率提高相當(dāng)明顯,幾乎可以達(dá)到與系統(tǒng)語(yǔ)言相媲美水平。
    除了描述采集通訊協(xié)議,系統(tǒng)還允許用戶通過(guò)腳本自定義界面,開(kāi)發(fā)了腳本編輯、調(diào)試工具,方便腳本編寫(xiě),這里不作詳述。
    從上述應(yīng)用可以發(fā)現(xiàn),這種腳本的語(yǔ)法與Del-phi十分相似,易于編寫(xiě),又能描述復(fù)雜、變化的任務(wù)。即能保持基本框架不變,又能使系統(tǒng)靈活。


4 結(jié)束語(yǔ)
    今天,用腳本語(yǔ)言編寫(xiě)的應(yīng)用程序的數(shù)目遠(yuǎn)多于用系統(tǒng)程序設(shè)計(jì)語(yǔ)言編寫(xiě)的應(yīng)用程序的數(shù)目。在Unix系統(tǒng)中有比C程序更多的外部腳本。當(dāng)然,多數(shù)大型和廣泛使用的應(yīng)用程序都是用系統(tǒng)程序設(shè)計(jì)語(yǔ)言寫(xiě)成的,但腳本語(yǔ)言已經(jīng)是應(yīng)用程序開(kāi)發(fā)的主動(dòng)力,并且今后它的市場(chǎng)份額會(huì)繼續(xù)提高。腳本將對(duì)越來(lái)越多的應(yīng)用程序產(chǎn)生吸引力。以Python,Perl,Tcl,Ruby為代表的動(dòng)態(tài)語(yǔ)言越來(lái)越受到開(kāi)發(fā)者的青睞,使用動(dòng)態(tài)語(yǔ)言群體、社區(qū)不斷壯大,許多開(kāi)發(fā)團(tuán)隊(duì)不再單純使用一種語(yǔ)言編程開(kāi)發(fā)軟件,而是混合式編程,動(dòng)態(tài)語(yǔ)言作為膠水語(yǔ)言專(zhuān)為應(yīng)用程序而設(shè)計(jì),在今后的混合式應(yīng)用中變的越來(lái)越重要,甚至有人認(rèn)為腳本語(yǔ)言是“21世紀(jì)更高級(jí)的編程語(yǔ)言”。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉