色尼玛亚洲综合影院,亚洲3atv精品一区二区三区,麻豆freexxxx性91精品,欧美在线91

基于自然語言的軟件工程和程序設(shè)計(下)

系列文章導(dǎo)航:

基于自然語言的軟件工程和程序設(shè)計(上)

基于自然語言的軟件工程和程序設(shè)計(中)

基于自然語言的軟件工程和程序設(shè)計(下)


  軟件發(fā)展至今,無論是編程語言,還是軟件工程,乃至是互聯(lián)網(wǎng)的趨勢發(fā)展,都是飛速發(fā)展。于是,我們便迷茫于這樣形形色色的語言和概念之間,無所適從。其實,我們不妨返璞歸真,回到最初,讓我們從語義出發(fā),來討論這形形色色的種種,你是否恍然大悟呢?

  10. 面向?qū)ο笈c語義分析

  我們都知道,面向?qū)ο笫亲皂斚蛳碌姆治鲞^程和自底向上的設(shè)計過程。在這里,首先,我們先不談分析過程,只談設(shè)計過程。

  系統(tǒng)有多少個類,不是一拍腦袋想出來的,不是經(jīng)驗累積而成的,而是根據(jù)需求分析中提煉出來的。

  類的產(chǎn)生是名詞提煉的過程,我們知道,每個對象都是對應(yīng)著現(xiàn)實中的一個實體,而每個類都是對具有相同特征的對象的抽象。越是恰當(dāng)?shù)某橄螅覀兙驮侥芴釤挸鼍_的類。

  這時,讓我們不得不感嘆古人詩詞的精妙:

  枯藤老樹昏鴉,小橋流水人家,古道西風(fēng)瘦馬。夕陽西下,斷腸人在天涯。

  詩詞,是對文章高度的抽象過程;面向?qū)ο蟮脑O(shè)計過程,也是對現(xiàn)實世界的抽象過程;何時,我們能將需求分析文檔精確提煉成古詩詞,此時乃大悟面向?qū)ο笾酪病?/p>

  11. 設(shè)計是違反語義的過程

  與其說面向?qū)ο罂芍赜茫拙S護(hù),不如說面向?qū)ο蟾N近我們的現(xiàn)實設(shè)計,讓我們的每一個類的產(chǎn)生都有章可循。此乃為面向?qū)ο笾钜病?/p>

  在之前的一部,我們將現(xiàn)實社會映射成了我們的程序中對應(yīng)的類,可是這時肯定會有人跳出來說,這是面向?qū)ο竺矗坷^承,多態(tài),封裝,你這什么都沒有??!

  這就是我在本節(jié)中要提到的,在我看來:設(shè)計是一個違反語義的過程。

  例如:”老師講課,學(xué)生聽課。“這樣的語義環(huán)境,自然會產(chǎn)生老師和學(xué)生兩個類,可是大家這時都會想到,此時應(yīng)該提取出來”人“作為老師和學(xué)生的基類(父類)。可是,我們知道,人在此語義中是不存在的,他只是我們根據(jù)經(jīng)驗來假設(shè)出來的。我們在之前說過,類是對對象(現(xiàn)實事物)的抽象,而父類又是對類的再抽象過程。因此,我認(rèn)為:繼承是對抽象的再抽象。

  提到設(shè)計,我們就要提到設(shè)計模式,我們來想想常見的設(shè)計模式,工廠,適配器,策略等等,這些在我們的語義中都是無法分析出來的,因此,在我看來,設(shè)計模式實際上是犧牲了語義的自然性,來換取軟件的可重用性和可維護(hù)性。

  12. 數(shù)據(jù)庫設(shè)計與自然語義的沖突

  在此,我指的數(shù)據(jù)庫特指關(guān)系型數(shù)據(jù)庫。因此我說,數(shù)據(jù)庫設(shè)計與自然語義的沖突,其實就是說關(guān)系型數(shù)據(jù)庫與面向?qū)ο笳Z言之間無可調(diào)和的矛盾。

  換句話說,在面向?qū)ο笾校瑢傩圆灰欢ㄊ窃拥?,?shù)據(jù)也不一定沒有冗余,因此數(shù)據(jù)庫的三大范式對于面向?qū)ο笤O(shè)計來說,是不適用的,這也就間接導(dǎo)致了,關(guān)系型數(shù)據(jù)庫和面向?qū)ο笤O(shè)計時沖突的。

  (注:由于本人對 ORM了解甚少,以下言論請大家選擇性相信,也希望大家不吝賜教)其中ORM就是為了解決面向?qū)ο笈c關(guān)系型數(shù)據(jù)庫不匹配而產(chǎn)生的技術(shù)。很多人在用ORM時有一個誤區(qū),就是首先建立數(shù)據(jù)庫,然后由數(shù)據(jù)庫生成實體對象,但是在我看來,數(shù)據(jù)庫只應(yīng)該是存儲數(shù)據(jù)的工具,而絕不應(yīng)該成為整個項目設(shè)計的核心,正確使用ORM的辦法應(yīng)該是把程序自動持久化到關(guān)系數(shù)據(jù)庫中,而我們在程序中對數(shù)據(jù)庫是一無所知的,我們操作的只是一個對象的集合罷了。我不清楚ORM當(dāng)今的發(fā)展,但是在我看來,一個完美的ORM系統(tǒng)應(yīng)該具備解析對象,然后將對象轉(zhuǎn)換為符合范式的數(shù)據(jù)庫結(jié)構(gòu)的能力。

  另外,視圖和緩存表也是解決方案之一。

  最后,我們只能期待對象型數(shù)據(jù)庫的進(jìn)一步成熟了。

  13.  我眼中的未來語言

  在我眼中,語言的發(fā)展方向應(yīng)該是逐步貼近語義,試想從第一代語言發(fā)展至今,語言的趨勢無非是越來越適合于程序員使用,提高程序員的工作效率,說句再難聽些的,就是逐步降低系統(tǒng)開發(fā)程序員的門檻,其體現(xiàn)一者在于方法封裝的逐步完善,二就在于越來越接近自然語言,越來越接近“大型作文”的寫作過程。

  那么當(dāng)軟件發(fā)展到一定程度,我認(rèn)為未來的語言是等同于自然語言的程序設(shè)計語言。從而人人可編程,方法高度封裝,編譯器可識別人們的自然語言語義從而轉(zhuǎn)換成機器可識別的語言。我們需要做的只是把需求整理成“無語病”的需求分析文檔,然后把文檔移交給“編譯器”,返回給我們的是一個個.exe,.ASPx。

  也許到了那一天,程序員這個職業(yè)不復(fù)存在了,取而代之的是作家,這一天,我們說,軟件真的發(fā)展到了最高階段。

it知識庫基于自然語言的軟件工程和程序設(shè)計(下),轉(zhuǎn)載需保留來源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請第一時間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 措勤县| 富民县| 静海县| 顺义区| 乐东| 台前县| 张家港市| 巩留县| 井研县| 友谊县| 广水市| 遵义市| 舞钢市| 沭阳县| 兴和县| 运城市| 游戏| 沭阳县| 元江| 河北省| 罗源县| 亚东县| 南开区| 阿尔山市| 舒兰市| 儋州市| 区。| 安顺市| 邯郸县| 乌拉特前旗| 江城| 洪雅县| 米泉市| 合阳县| 东台市| 南开区| 济南市| 岑溪市| 桃园县| 德庆县| 家居|