国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

用Python創建聲明性迷你語言的教程

2020-02-23 00:42:25
字體:
來源:轉載
供稿:網友

大多數程序員考慮編程時,他們都要設想用于編寫應用程序的 命令式樣式和技術。最受歡迎的通用編程語言(包括 Python 和其它面向對象的語言)在樣式上絕大多數都是命令式的。另一方面,也有許多編程語言是 聲明性樣式,包括函數語言和邏輯語言,還包括通用語言和專用語言。

讓我們列出幾個屬于各個種類的語言。許多讀者已經使用過這些工具中的許多工具,但不見得考慮過它們之間的種類差別。Python、C、C++、Java、Perl、Ruby、Smalltalk、Fortran、Basic 和 xBase 都是簡單的命令式編程語言。其中,一些是面向對象的,但那只是組織代碼和數據的問題,而非基本編程樣式的問題。使用這些語言,您 命令程序執行指令序列:把某些數據 放入(put)變量中;從變量中 獲取(fetch)數據; 循環(loop)一個指令塊 直到(until)滿足了某些條件; 如果(if)某個命題為 true,那么就進行某些操作。所有這些語言的一個妙處在于:便于用日常生活中熟悉的比喻來考慮它們。日常生活都是由做事、選擇、再做另一件事所組成的,期間或許會使用一些工具。可以簡單地將運行程序的計算機想象成廚師、瓦匠或汽車司機。

諸如 Prolog、Mercury、SQL、XSLT 這樣的語言、EBNF 語法和各種格式的真正配置文件,都 聲明某事是這種情況,或者應用了某些約束。函數語言(比如 Haskell、ML、Dylan、Ocaml 和 Scheme)與此相似,但是它們更加強調陳述編程對象(遞歸、列表,等等)之間的內部(函數)關系。我們的日常生活(至少在敘事質量方面)沒有提供對這些語言的編程構造的直接模擬。然而,對于那些可以用這些語言進行描述的問題來說,聲明性描述 遠遠比命令式解決方案來得簡明且不易出錯。例如,請研究下面這個線性方程組:
清單 1. 線性方程式系統樣本

10x + 5y - 7z + 1 = 017x + 5y - 10z + 3 = 05x - 4y + 3z - 6 = 0

這是個相當漂亮的說明對象(x、y 和 z)之間幾個關系的簡單表達式。在現實生活中您可能會用不同的方式求出這些答案,但是實際上用筆和紙“求解 x”很煩,而且容易出錯。從調試角度來講,用 Python 編寫求解步驟或許會更糟糕。

Prolog 是與邏輯或數學關系密切的語言。使用這種語言,您只要編寫您知道是正確的語句,然后讓應用程序為您得出結果。語句不是按照特定的順序構成的(和線性方程式一樣,沒有順序),而且您(程序員或用戶)并不知道得出的結果都采用了哪些步驟。例如:
清單 2. family.pro Prolog 樣本

/* Adapted from sample at:<http://www.engin.umd.umich.edu/CIS/course.des/cis479/prolog/>This app can answer questions about sisterhood & love, e.g.:# Is alice a sister of harry??-sisterof( alice, harry )# Which of alice' sisters love wine??-sisterof( X, alice ), love( X, wine)*/sisterof( X, Y ) :- parents( X, M, F ),          female( X ),          parents( Y, M, F ).parents( edward, victoria, albert ).parents( harry, victoria, albert ).parents( alice, victoria, albert ).female( alice ).loves( harry, wine ).loves( alice, wine ).            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 民和| 略阳县| 巴南区| 濉溪县| 白河县| 虹口区| 石家庄市| 平凉市| 靖边县| 浮山县| 凤庆县| 读书| 烟台市| 蓬溪县| 赤城县| 福安市| 东乌| 武穴市| 洪江市| 海门市| 长子县| 新源县| 虎林市| 祥云县| 女性| 肇源县| 福泉市| 顺昌县| 乌苏市| 永登县| 盐城市| 鹿泉市| 诏安县| 龙南县| 晋江市| 田阳县| 东山县| 兴业县| 鞍山市| 合肥市| 邵阳市|