一種數(shù)據(jù)驅(qū)動(dòng)計(jì)算機(jī)語(yǔ)言設(shè)計(jì)、實(shí)現(xiàn)、方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種計(jì)算機(jī)語(yǔ)言的設(shè)計(jì)、實(shí)現(xiàn)和方法。尤其涉及以下環(huán)節(jié)和技術(shù),數(shù)據(jù)的輸入(典型地有數(shù)模轉(zhuǎn)換和編解碼等技術(shù))、數(shù)據(jù)表示與解釋(典型地有數(shù)據(jù)存儲(chǔ)技術(shù))、數(shù)據(jù)組織與檢索(典型地有關(guān)聯(lián)數(shù)據(jù)描述和查找技術(shù))、分支與流向(典型地有數(shù)據(jù)流分支控制技術(shù))、算法與數(shù)據(jù)變換(典型地有各種經(jīng)典的工程技術(shù)算法)、數(shù)據(jù)的輸出與表達(dá)(典型地有顯示技術(shù))、數(shù)據(jù)的消亡(典型地有資源回收技術(shù))。除此以外,特別地還有人機(jī)交互技術(shù)。應(yīng)用以上概念和相應(yīng)技術(shù),以及本文將要述及的設(shè)計(jì)、實(shí)現(xiàn)等方法,將描述一種具有一致的人機(jī)交互界面的、通用的計(jì)算機(jī)編程語(yǔ)言。
【背景技術(shù)】
[0002]數(shù)字計(jì)算機(jī)進(jìn)入人們的工作、生活已經(jīng)有30多年的時(shí)間了,人們和計(jì)算機(jī)的溝通和交互方式也經(jīng)歷的同樣長(zhǎng)或更長(zhǎng)時(shí)間的變遷,從最初的機(jī)器碼(或稱為機(jī)器語(yǔ)言)、匯編語(yǔ)言到現(xiàn)在普遍使用的高級(jí)語(yǔ)言、面向?qū)ο蟪绦蛟O(shè)計(jì)方法。人們的程序設(shè)計(jì)體驗(yàn)得到了很人的改善和提高。而隨著計(jì)算機(jī)的易用性的極人改善,各式各樣的計(jì)算機(jī)也更多地進(jìn)入的人們方方面面的生活應(yīng)用中。生活中計(jì)算機(jī)應(yīng)用的多樣化催生了玲瑯滿目的各式各樣的軟件和應(yīng)用程序。與此同時(shí)也帶來(lái)了一些問(wèn)題。第一,每個(gè)應(yīng)用程序功能固定,使用者沒(méi)有任何機(jī)會(huì)對(duì)某一款應(yīng)用程序做些許的更適合自己需要的改動(dòng);第二,獨(dú)立的應(yīng)用程序之間不能順暢的互相通信和互相操作,因此用戶兒乎不能將兩個(gè)或多個(gè)應(yīng)用程序串聯(lián)起來(lái),實(shí)現(xiàn)應(yīng)用功能的組合擴(kuò)展,和豐富、靈活又易于個(gè)性化的程序設(shè)計(jì);第三,應(yīng)用程序和程序設(shè)計(jì)語(yǔ)言之間的差距不是明顯地縮小,而是顯著的增人。使得人多數(shù)各式各樣的計(jì)算機(jī)使用者很難掌握現(xiàn)有的一種程序設(shè)計(jì)語(yǔ)言,應(yīng)自身需求實(shí)現(xiàn)應(yīng)用程序并,和自己的計(jì)算機(jī)進(jìn)行更多的、更靈活的交互。正是因?yàn)橛辛松鲜鲞@些問(wèn)題,導(dǎo)致絕人多數(shù)計(jì)算機(jī)使用者與系統(tǒng)的交互是完全依賴于現(xiàn)有的,功能被預(yù)先定義的應(yīng)用程序,人與計(jì)算機(jī)的交互形式完全被應(yīng)用程序所限定,設(shè)備可用性、易用性等的進(jìn)一步提高受到很大限制。阻礙了各式計(jì)算機(jī)更好地、靈活地展開(kāi)應(yīng)用,貼近人們生活,豐富其應(yīng)用領(lǐng)域,提高其可用性能。
[0003]本文所述計(jì)算機(jī)語(yǔ)言以數(shù)據(jù)為中心,以數(shù)據(jù)的產(chǎn)生、變換、消亡作為數(shù)據(jù)的生命周期,在此期間數(shù)據(jù)將與指定的程序模塊(即變換)結(jié)合,產(chǎn)生相應(yīng)的處理效果的同時(shí)極人的拓展了人機(jī)交互能力。
【發(fā)明內(nèi)容】
[0004]本發(fā)明將主要包括設(shè)計(jì)、實(shí)現(xiàn)和貫穿其中的工程技術(shù)方法。數(shù)據(jù)驅(qū)動(dòng)計(jì)算機(jī)語(yǔ)言,其特點(diǎn)是當(dāng)有新數(shù)據(jù)產(chǎn)生時(shí)就有相應(yīng)的消費(fèi)模塊用于該數(shù)據(jù)的處理(變換),當(dāng)處理進(jìn)行完成后,數(shù)據(jù)也將隨之消亡。所以程序的執(zhí)行是由新數(shù)據(jù)的產(chǎn)生作為“推動(dòng)力”的,即數(shù)據(jù)驅(qū)動(dòng)。因此本發(fā)明稱為“數(shù)據(jù)驅(qū)動(dòng)計(jì)算機(jī)語(yǔ)言”。
[0005]本發(fā)明的突出特點(diǎn)是程序的編寫(xiě)與編輯對(duì)鍵盤(pán)鼠標(biāo)的依賴很小;采用列集概念規(guī)范數(shù)據(jù)接口,靈活的數(shù)據(jù)及引用關(guān)系表達(dá),一致的人機(jī)界面和靈活的語(yǔ)義表達(dá)。其優(yōu)點(diǎn)是易于在模塊層面上快速編程,實(shí)現(xiàn)應(yīng)用;提高模塊的重用率和人機(jī)交互的靈活性。
[0006]設(shè)計(jì)
[0007]作為一種計(jì)算機(jī)通用語(yǔ)言,須具有數(shù)據(jù)描述能力、表達(dá)式描述能力、順序描述能力、分支描述能力、循環(huán)描述能力、模塊定義和引用能力等。因此,下文將就這些功能展開(kāi)設(shè)計(jì)。
[0008]定義廣義表1作為語(yǔ)言的核心和基礎(chǔ)
[0009]廣義表有足夠的描述能力描述一種計(jì)算機(jī)語(yǔ)言。
[0010]數(shù)據(jù)描述
[0011]本計(jì)算機(jī)語(yǔ)言中的數(shù)據(jù)類(lèi)型分為基礎(chǔ)型、自定義型和復(fù)雜型。基礎(chǔ)型包括整型、浮點(diǎn)型、布爾型、字符串型等;自定義型是由程序設(shè)計(jì)者自己定義的,其成員數(shù)據(jù)是由基礎(chǔ)型數(shù)據(jù)組成的;復(fù)雜型數(shù)據(jù)不是由程序設(shè)計(jì)者自己定義的,且對(duì)該數(shù)據(jù)內(nèi)部成員不完全清楚或不是全部對(duì)設(shè)計(jì)者有用,但是知道應(yīng)該使用什么樣的模塊或處理單元對(duì)其進(jìn)行處理并產(chǎn)生后續(xù)可用的數(shù)據(jù)。
[0012]利用廣義表描述基礎(chǔ)型數(shù)據(jù)時(shí),須表示出基礎(chǔ)類(lèi)型名、數(shù)據(jù)名稱、相應(yīng)作用于該數(shù)據(jù)的變換模塊等信息;描述自定義型數(shù)據(jù)時(shí),須表示出自定義類(lèi)型名、各成員定義、自定義數(shù)據(jù)名稱以及相應(yīng)的作用于該數(shù)據(jù)的變換模塊等信息;描述復(fù)雜型數(shù)據(jù)時(shí),須表示出復(fù)雜類(lèi)型名、復(fù)雜數(shù)據(jù)名稱及相應(yīng)的作用于該數(shù)據(jù)的變換模塊等信息。
[0013]表達(dá)式描述
[0014]表達(dá)式包括算術(shù)表達(dá)式和邏輯表達(dá)式等。表達(dá)式屬于“變換”的一種。表達(dá)式的描述與算符的結(jié)合性和優(yōu)先級(jí)息息相關(guān)。利用廣義表可以方便的描述任意的表達(dá)式。
[0015]順序執(zhí)行的描述
[0016]順序執(zhí)行可以表示為一系列模塊的有序序列,所以只要應(yīng)用廣義表表達(dá)清楚這一順序關(guān)系即可。
[0017]分支描述
[0018]分支結(jié)構(gòu)能使程序產(chǎn)生不同的執(zhí)行路徑。須有相應(yīng)的準(zhǔn)入條件,以及準(zhǔn)入后需要執(zhí)行的變換模塊的索引等。
[0019]循環(huán)描述
[0020]將順序執(zhí)行的變換模塊的輸出重新作為輸入即可。循環(huán)的退出則須要用到前面提到的分支結(jié)構(gòu),應(yīng)至少包含兩個(gè)分支,一個(gè)分支的索引指向循環(huán);另一個(gè)分支的索引指向循環(huán)結(jié)束及后續(xù)處理。準(zhǔn)入條件將成為選擇哪個(gè)分支的依據(jù)。
[0021]模塊定義和引用
[0022]對(duì)于具有一定功能的程序片段賦予一個(gè)唯一的標(biāo)號(hào)或名字,名字或標(biāo)號(hào)可以是這個(gè)程序片段功能的概括或抽象。這個(gè)程序片段可以通過(guò)其名字或標(biāo)號(hào)被重復(fù)引用。當(dāng)數(shù)據(jù)與變換模塊結(jié)合時(shí),程序即在運(yùn)行。變換模塊可能會(huì)修改數(shù)據(jù),因此有些情況下,在引用模塊前需要組裝一個(gè)數(shù)據(jù)集供其運(yùn)行時(shí)使用,在該模塊運(yùn)行結(jié)束后,將運(yùn)行結(jié)果交由當(dāng)前模塊處理,而組裝的數(shù)據(jù)集則隨引用模塊的結(jié)束運(yùn)行而消亡。
[0023]實(shí)現(xiàn)
[0024]概念定義
[0025]模塊被引用時(shí)使用的輸入或輸出內(nèi)容稱為數(shù)據(jù)。數(shù)據(jù)可以是基礎(chǔ)型,也可以是自定義型或復(fù)雜型,當(dāng)是后者時(shí),數(shù)據(jù)需要按照一定的相對(duì)順序和位置組織起來(lái),這個(gè)過(guò)程稱為列集。反之稱為散集。當(dāng)數(shù)據(jù)從一個(gè)列集轉(zhuǎn)換為另一個(gè)不同的列集時(shí)稱為列集變換。程序在運(yùn)行時(shí)會(huì)將數(shù)據(jù)按照列集定義格式裝配成一個(gè)包含實(shí)際數(shù)據(jù)的列集,稱之為運(yùn)行時(shí)列集。
[0026]一段具有一定功能或涵義的程序稱之為模塊。可以產(chǎn)生原始數(shù)據(jù)的模塊稱為源模塊(或輸入模塊);程序正常終止時(shí)所在的模塊稱為終模塊(或輸出模塊);源模塊和終模塊之間可以有O到多個(gè)模塊,稱為變換模塊(或變換)。
[0027]A模塊是B模塊的直接前驅(qū)2,B模塊是A模塊的直接后繼3,那么A模塊到B模塊有一個(gè)鏈接。如果這個(gè)鏈接只傳遞控制,那么這個(gè)鏈接稱為控制鏈接;如果這個(gè)鏈接只傳遞數(shù)據(jù),那么這個(gè)鏈接稱為數(shù)據(jù)連接;如果這個(gè)鏈接即傳遞控制又傳遞數(shù)據(jù)則稱為復(fù)合鏈接;如果這個(gè)鏈接僅在滿足一定條件時(shí)才有效則稱為條件鏈接;條件鏈接分為條件控制鏈接,僅在條件滿足時(shí)傳遞控制,和條件復(fù)合鏈接,僅在條件滿足時(shí)既傳遞控制又傳遞數(shù)據(jù)。控制鏈接按傳遞次序組成序列或網(wǎng)絡(luò)構(gòu)成控制路徑;數(shù)據(jù)鏈接按傳遞次序組成序列或網(wǎng)絡(luò)構(gòu)成數(shù)據(jù)路徑。
[0028]程序設(shè)計(jì)過(guò)程中,通過(guò)確定每個(gè)模塊的功能及執(zhí)行的先后順序,使用相應(yīng)鏈接完成整個(gè)程序的過(guò)程稱為模塊導(dǎo)引程序設(shè)計(jì);當(dāng)主要使用數(shù)據(jù)類(lèi)型確定相應(yīng)的處理模塊進(jìn)行程序發(fā)計(jì)時(shí)稱為數(shù)據(jù)導(dǎo)引程序設(shè)計(jì)。
[0029]當(dāng)兩個(gè)模塊引用不同的數(shù)據(jù),但這些數(shù)據(jù)有關(guān)聯(lián)關(guān)系時(shí),模塊的引用過(guò)程需要同步,以保證程序的含義正確。因此當(dāng)程序得到正確的同步執(zhí)行時(shí),稱之為并發(fā)安全的。
[0030]程序編輯與人機(jī)交互
[0031]列集定義界面設(shè)計(jì)如附圖1所示,界面成表格形式。表格最左上角空格中為列集名。在每一列中分別填寫(xiě)數(shù)據(jù)名、數(shù)據(jù)類(lèi)型和初值(不可以為空)。運(yùn)行時(shí)列集中的數(shù)據(jù)如有“空值”,則表明需要的數(shù)據(jù)沒(méi)有產(chǎn)生并送達(dá)該運(yùn)行時(shí)列集,需要等待或作進(jìn)一步處理。
[0032]列集變換界面設(shè)計(jì)如附圖2所示,界面成表格形式。表格最左上角空格中為列集變換名。表格第一列是源列集各數(shù)據(jù)的名