謂詞編程語言
Ⅰ z語言和C語言誰比較好
C語言比較好點。
C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。從而使C語言的運算類型極其豐富,表達式類型多樣化。靈活使用各種運算符可以實現在其它高級語言中難以實現的運算。
Z語言是一種以一階謂詞演算為主要理論基礎的規約語言,是一種功能性語言。Z語言是將事物的狀態和行為用數學符號形式化表達的語言,為編寫計算機程序和驗證計算機程序的正確性提供依據,是軟體工程中編碼之前的規格說明語言。
Ⅱ 邏輯學 到底是研究什麼的
英文中它被稱作:A Course In Logic。而邏輯一詞最早可以追溯到一個希臘詞,即「邏各斯」。此詞含義一般有二:客觀事物的規律及其規律性;某種特別的理論、觀點(含貶義)。狹義的邏輯學被稱作是研究推理形式的科學,而廣義則指研究思維形式及其規律以及邏輯方法的科學。它研究的主要對象是思維的形式,即思維邏輯形式。我們的思維因為有了邏輯而變得清晰無比;所謂的「無頭案」在嚴密的邏輯面前不得不低下罪惡而高傲的頭,公理得以永存人間。我們的生活得以有條不紊,我們也就有了現在學習邏輯學的機會,由邏輯而學習思維。
西方傳統邏輯學包括了概念理論、詞項邏輯等主要內容;其中心內容是三段論;古典命題邏輯;古代歸納邏輯等。
邏輯學,僅僅考慮推理的邏輯學的發展似乎已經很完善了。盡管作為應用的邏輯並不是想像的那麼好,比如我們要建立基於邏輯的編程語言,一方面,已經建立的語言(如Prolog)只是使用了一階謂詞邏輯的很特殊得一部分,一階系統顯得足夠豐富;另一方面,只是一階系統或者其擴展都會有許多不能在現有非邏輯編程語言中表達的語句,即是說,邏輯是不夠用的。但就邏輯學本身而言,我們要對它進行改進或者在其中有什麼創造性的工作,是非常難的。特別對於象我們這樣剛進入邏輯學領域的新手來說(其創造主要源於直覺和對已有系統的紕漏的分析),要在邏輯學中有所創造幾乎是不可能的。
這種狀況的原因何在呢?如果象皮爾士說的那樣,邏輯是哲學中最具歧義的概念,那麼,它應該有很多的方向(並且各方向不會導致非議),以供我們的理智去探索。而事實是,我們被限制在已有系統之中。「你看,那就是邏輯學,你能做什麼,試試看吧!」我們只能選擇一種觀點,然後繼承它,這是現在僅有的工作,這樣的工作會有什麼創造性呢。有一點很明顯,我們絞盡腦汁想到的東西往往是前人也想過了的。千萬別指望有什麼激動人心的,因為你會為後來發現自己在重復別人的工作而失望的。
也許,我們應該換一個角度來思考這個問題,為什麼一定要限制在「推理形式的有效性」或者「語句結構和演繹推理」上。要知道,邏輯學研究思維的形式結構和規律,這一點在國內是被普遍接受的,而且我們有足夠的理由為這一觀點進行辯護。
第一,對思維的形式進行研究的邏輯可以保持足夠的客觀性。
自弗雷格以來,人們盡可能放棄有心理主義嫌疑的用語,不再提及邏輯是研究思維之類的觀點。因為心理的東西,如弗雷格所說,有遠離客觀性的特點。邏輯推理規則和規律是帶有客觀性的東西。心理的東西有著隨個體主觀意志的任意性。如果,我們的邏輯是任意的心理結構,那麼,就不會有共同的邏輯存在。在這里我們要強調的是:廣義來說,邏輯的東西也可以成為心理學的對象。盡管大部分心理學家對邏輯不感興趣,在心理學書籍中,只有很少一部分提及思維形式的問題,比如1999年張世富主編的《心理學》就研究了概念,命題和推理,但也只是提及了而已。而邏輯學根本不會提及有關情感、意志過程,個性傾向性之類的東西,他們理所當然地是心理學研究的對象。因此兩門學科的區別是很清晰的。
當然,心理學和邏輯學的區別不足以使邏輯偏離心理主義傾向。一個習慣於從心理角度分析問題的人也許容易導向對邏輯的心理分析。而這也並非完全不可取的。P.薩伽德的這樣一段話也許可以提供見解:「……, 盡管形式化的邏輯並非通向心理表徵最具影響力的心理學途徑,但我們仍有足夠的理由從它展開我們對心理表徵探討。」心理學提供心理表徵也同樣可以為邏輯學家提供一種研究思維形式的參考。
至於強心理主義關於將邏輯解釋為一種心理過程是不可取的。理由不是說邏輯是和心理沒有關系的,而是心理過程的復雜性是邏輯無法著手的,邏輯對思維的研究有其限制:思維形式結構和規律。它的客觀性體現在它是研究蘊藏在語言中的實際思維結構,而不是一種隨機心理現象。這一點即使不是顯而易見的,也不會導致邏輯的和心裡的混淆起來。
第二,邏輯對思維形式的研究的選擇是合乎學科要求的。
任何一門科學,當它確定自己的對象後,肯定不是在其對象中面面俱到去研究,而是有選擇性的。這種現象一方面是由於概念是有理想性的,即,人們有一種願望要達到的目標,往往比實際能做的大。比如物理學是研究空間、時間、物質運動的普遍形態,物質基本結構的科學。但是物理學不是任何時空形式、任何運動都加以研究,也不是每種物質結構都研究,而是有其自己的選擇。物理學家總是對有規律的現象和可能找得到規律的現象感興趣。它所提倡對運動和物質形態的研究是一種理想,它試圖掌握所有的物理規律和了解物質的任何可能形態,但那隻是一個努力的方向。邏輯學把思維的形式結構和規律作為自己的研究對象,也是有選擇性,它不是任何思維形式和規律都研究。當然,你可以在其定義范圍之內作任何研究,並且有興趣引導比墨守成規好百倍,至於你的興趣能否激發別人的共鳴則是另外一回事。一般而言,每一學科都有某種共同的研究方向,這樣集中許多人的智慧是取得成果所必需的。思維形式是一個寬泛的概念,正因為如此,邏輯學應該比它現有的狀況有生機。
第三,研究方向是人為引導的。
既然,任何一門學科其選擇的對象都含有理想成分,那麼,在某個特定的時期其實際對象與該學科的的對象要求存在差別就不足為怪的。我們可以看到,現在的邏輯主流方向是研究推理和推理有效性等方面問題。即以一階謂詞邏輯和它的擴展為典型的現代邏輯。
傳統邏輯是建立在亞里士多德的貢獻之上,現代邏輯是起始於十九世紀,它是伴隨著哲學興趣的轉移、公理化方法吸引而建立的。一個明顯的特點是,它是隨著人們的興趣而轉移的。這和其它科學有著共同的特徵,又如物理學,每個時代都有其特別熱的方向、方法。從早期的宇宙學,到近代的機械力學,當代物理學門類甚多,但是如果我說量子力學和相對論力學是現代物理的典範應該不會遭到過多的反對。因而,邏輯學也是在現時代有其自己的興趣的。但是,各種時代的邏輯學都是視思維形式結構和其規律為對象的,同時,其它的邏輯學分支不該因為不像現代邏輯而被驅逐出邏輯學對象之外。
因此,對於一門學科而言,邏輯學將思維形式結構和其規律作為對象是很恰當的,至少,我們可以看到,對這一點進行限制,會讓我們限制所有科學的研究范圍。
第四,邏輯學規范性特徵並不和其將思維的形式結構和規律作為對象矛盾。
我們可以完全同意邏輯學不是一門純粹描述性的科學,沒有誰能在思維中找出超過上萬步的形式推理;或者,一定要遵守排中律才能得出正確的結論,我們對於現實的思考是多種多樣的,隨機猜測也可能得出正確的答案。馬丁.布萊恩說形式邏輯在神經學上的合理性還一無所知。這是很好理解的,即使我們完全排除生理性的要求,只關注語言本身,也無法找到邏輯的確切對應點(心不是機器)。因此,邏輯不是完全描述性的,而帶有規范的特徵,而邏輯的規范不是一種絕對自由的規則,因為絕對自由的規則帶有任意性,主觀性。邏輯的客觀特點不允許邏輯是隨意的游戲規則,而是帶有指向性的。這樣的狀況是由於「人們有具有類似於謂詞邏輯里語句的心理表徵。人們具有在這些語句上進行操作的演繹和歸納的程序。演繹和歸納運用到語句上產生推理。」
從兩個角度上看,邏輯學規律是有其客觀對象基礎的,首先是心智本身有類似結構,其次,心智有限制推理和思考的能力,即心智有一種審判力,迫使人們不去接受視任何推測都有效的做法。這樣,邏輯便不是任意的了。但是它又不是完全描述的,因為一方面沒有完全對應的思維過程,另一方面思維的廣度大於邏輯的研究范圍。
預設邏輯學帶有規范和描述雙重特徵。而即使它是為如何思考制定規則的科學,定義其對象為思維形式結構和規律也顯得邏輯有正確的指向,尚且有的在現在看來是不好的思維形式將來可以據其制定邏輯規則,而這正是邏輯的創造源之一。
我們要進一步分析的是思維的形式結構和其規律。
一般認為語言是思維的表徵,沒有語言就沒有顯化的思維,思維就成了無法探究的神秘事物。語言和思維因該說是有著密切的關系,但是他們並不具有一種完全對應的關系,當我們使用語言時,我們在試圖激活某種內部活動,這種活動是思維活動——它有著神經生理的基礎。有時,我們說我們的思維跟不上語言活動,有時相反。這說明他們有著區別。語言是人類活動的一種,這種活動是人的思維的外顯形式,語言是思維的工具,而且是工具的一種,其工具價值在於激活思維、引導思維和記錄思考的成果。而它本身並不是思維的表徵。一個很明顯的證據是,語言活動是線性的,而思維是一種整體結構性質的,在其處理非言語信號時,使用的是並行的或者其它方式。這就是為什麼人的計算能力(語言上的一種能力)這么差,卻在處理許多問題時比計算機快。
所以思維不僅僅是語言活動,也不僅僅只是使用語言在活動,語言是思維的部分主觀呈現,我們在用語言表達給自己或者別人。列夫.謝苗諾維奇.維果茨基在他的一本書中將思維和語言看作兩種平行發展的過程。(參看[7])
那麼以思維形式為對象的邏輯因該不局限在對語言的線性結構規律的研究上,而應該以廣義的思維形式結構為對象,那是一個廣泛的空間。比如,Turing機在兩種意義上是邏輯的對象:從可能的思維形式上和思維所允許的表達形式上。我們可以做這樣的工作,用現有邏輯語言表達Turing機或用某種方便的語言表達,在其中加上邏輯規范。鑒於對編程語言的邏輯化的難度,我們不一定要把C改造成為邏輯語言,比如擴大一階謂詞語言以使用於改造C。我們可以還原C到一種規則上,然後結構化這個規則成為一個可推理的系統。
在這樣寬泛的邏輯概念上——我們的形式邏輯書實際使用的,我們怎麼會有時間玩「星際」和「帝國」?
Ⅲ 簡述你知道的5種程序設計語言的特點
Fortran:由一個主程序或一個主程序與若干個子程序組成。
ALGOL:巴乎斯範式BNF來描述言的語法。還提供動態數組和過程的遞歸調用。
COBOL(COmmon Business-Oriented Language)是一種面向事務處理的高級語言。目前COBOL語言主要應用於情報檢索,商業數據處理等管理領域。
Pascal語言是一種結構化程序設計語言,過程可以是嵌套和遞歸的。
C語言:兼顧了高級語言和匯編語言的特點,簡潔,豐富,可移植。直接訪問操作系統和底層硬體,C在系統應用和實時處理應用的開發中成為主要語言。
C++:是在C的基礎上增加了類機制,使其成為一種面向對象的程序設計語言。
java,目的是用於開發網路瀏覽器的小應用程序.
分類:
1.命令式程序設計語言是基於動作的語言,Fortran,Pascal,C
2.面向對象的程序設計語言,模擬領域發展起來的Simula,C++,Java,smaltalk,
對象,類,繼承,是面向對象的三大特點。
3.函數式程序設計語言是一類似λ-演算為基礎的語言,基本要領來自於LISP(1958年為了人工智慧應用而設計的語言).函數是一種對應規則(映射),它使定義域中每個元素和值域中唯一的元素相對應。 LISP程序和數據等價.數據結構可以作為程序執行,程序可以作為數據修改.
4.邏輯型程序設計語言,以形式邏輯為基礎的語言,其代表是建立在關系理論和一階謂詞理論基礎上的PROLOG(Programming in Logic).關鍵操作是模式匹配。有很強的推理功能,適用於書寫自動定理證明,專家系統,自然語言理解等問題的程序。
http://blog.csdn.net/mShopping/archive/2008/10/14/3073176.aspx
Ⅳ 什麼是程序邏輯
程序邏輯是描述和論證程序行為的邏輯,又稱霍爾邏輯。程序和邏輯有著本質的聯系。如果把程序看成一個執行過程,程序邏輯的基本方法是先給出建立程序和邏輯間聯系的形式化方法,然後建立程序邏輯系統,並在此系統中研究程序的各種性質。
簡介:
Hoare 邏輯(也叫做Floyd–Hoare 邏輯)是英國計算機科學家C. A. R. Hoare開發的形式系統,隨後為 Hoare 和其他研究者所精製。它發表於 Hoare 1969年的論文"計算機程序的公理基礎"中。這個系統的用途是為了使用嚴格的數理邏輯推理計算機程序的正確性提供一組邏輯規則。
Hoare 認可 Robert Floyd的早期貢獻,他為流程圖提供了類似的系統。
Hoare 邏輯的中心特徵是Hoare 三元組。這種三元組描述一段代碼的執行如何改變計算的狀態。Hoare 三元組有如下形式
{P}C{Q}這里的 P 和 Q 是斷言而 C 是命令。P 叫做前條件而 Q 叫做後條件。斷言是謂詞邏輯的公式。這個三元組在直覺上讀做: 只要 P 在 C 執行前的狀態下成立,則在執行之後 Q 也成立。注意如果 C 不終止,也就沒有"之後"了,所以 Q 在根本上可以是任何語句。實際上,你可以選擇 Q 為假來表達 C 不終止。
這叫做"部分正確"的。如果 C 終止並且在終止時 Q 是真,則表達式就是"全部正確"的。終止必須被單獨證明。
Hoare 邏輯為簡單的命令式編程語言的所有構造提供了公理和推理規則。除了給 Hoare 論文中的簡單語言的規則,其他語言構造的規則也已經被 Hoare 和很多其他研究者開發出來了。包括並發、過程、goto語句,和指針。
Ⅳ 下列各類計算機程序語言中,( )不是高級程序設計語言。
這是離散數學
謂詞的概念來表示的性質,對象,屬性,等等。
例如:
貝克漢姆的母星
「明星」是一個謂詞,貝克羨慕的對象
Ⅵ 世界編程語言排行榜的2009年排行
TIOBE 世界編程語言排行榜2009年2月榜單。 2011年12月5日Tiobe發布了2011年12月的編程語言排行榜。新一期排行榜Objective-C持續給力躍居第五位,而上一期關注的谷歌Dart語言也上升到第68名,但PHP由第四位跌到第6名。從2001年Tiobe編程語言排行榜開始發布至今,C++幾乎一直占據著第三名。雖然Perl,Visual Basic和PHP曾經也排到第3名,但和C++相比,他們就顯得不值一提了,因為他們最多隻能保持幾個月而已。然而相比C++,微軟的編程語言C#卻更被看好,甚至有人認為C#勢必會取代C++,C++是垃圾語言。因為微軟的大力推廣,使用C#的人越來越多,而老將C++卻正在被人遺忘。不甘寂寞,2011年C++再次亮劍,13年來第一個重大修訂版,C++11橫空出世!
下面是前20名的編程語言排行
掀起C++ 11的神秘面紗
C++標准在1998年獲得通過後,有兩位委員會委員預言,下一代C++標准將「肯定」包括內置的垃圾回收器(GC),但可能不會支持多線程,因為定義一個可移植的線程模型涉及到的技術太復雜了,13年後,新的C++標准C++11也接近完成,你猜怎麼著?讓那兩位委員沒想到的是,本次更新還是沒有包括GC,但卻包括了一個先進的線程庫。C++之父Bjame Stroustrup說C++11就像一個新語言,的確,C++11核心已經發生了巨大的變化,它支持Lambda表達式,對象類型自動推斷,統一的初始化語法,委託構造函數,deleted和defaulted函數聲明nullptr,以及最重要的右值引用。
C++11中值得關注的幾大變化
◆Lambda表達式
◆自動類型推斷和decltype
◆統一初始化語法
◆Deleted和Defaulted函數
◆nullptr
◆委託構造函數
◆右值引用
C++11標准庫
C++於2003年以庫技術報告1(TR1)的形式經歷了重大改版,TR1包括新的容器類(unordered_set,unordered_map,unordered_multiset和unordered_multimap)和多個支撐正則表達式、元組和函數對象封裝器等的新庫。隨著C++11標准獲得通過,TR1和自它首次發布以來新增的庫被正式納入標準的C++標准,下面是C++11標准庫的一些特性:
線程庫
站在程序員的角度來看,C++11最重要的新功能毫無疑問是並行操作,C++11擁有一個代表執行線程的線程類,在並行環境中用於同步,async()函數模板啟動並行任務,為線程獨特的數據聲明thread_local存儲類型。如果你想找C++11線程庫的快速教程,請閱讀Anthony William的「C++0x中更簡單的多線程」。
新的智能指針類
C++98隻定義了一個智能指針類auto_ptr,它現在已經被廢棄了,C++11引入了新的智能指針類shared_ptr和最近添加的unique_ptr,兩者都兼容其它標准庫組件,因此你可以在標准容器內安全保存這些智能指針,並使用標准演算法操作它們。
新的演算法
C++11標准庫定義了新的演算法模仿all_of(),any_of()和none_of()操作,下面列出適用於ispositive()到(first, first+n)范圍,且使用all_of(), any_of() and none_of() 檢查范圍的屬性的謂詞:
#include<algorithm>//C++11 code //are all of the elements positive? all_of(first, first+n, ispositive()); //false //is there at least one positive element? any_of(first, first+n, ispositive());//true // are none of the elements positive?
none_of(first, first+n, ispositive()); //false
一種新型_n演算法也可用了,使用_n()函數,復制一個包含5個元素的數組到另一個數組的代碼如下:
#include
int source[5]={0,12,34,50,80};
int target[5];
// 5 elements from source to target
_n(source,5,target);
演算法iota()創建了一個值順序遞增的范圍,好像分配一個初始值給*first,然後使用前綴++使值遞增,在下面的代碼中,iota()分配連續值{10,11,12,13,14}給數組arr,並將{『a』,』b』,』c』}分配給char數組c。
include<numeric>
int a[5]={0};
char c[3]={0};
iota(a, a+5, 10); //changes a to {10,11,12,13,14}
iota(c, c+3, 'a'); //{'a','b','c'}
C++11仍然缺乏一些有用的庫,如XML API,套接字,GUI,反射以及前面提到的一個合適的自動垃圾回收器,但C++11的確也帶來了許多新特性,讓C++變得更加安全,高效,易學易用。
如果C++11的變化對你來說太大的話,也不要驚慌,多花些時間逐漸消化這一切,當你完全吸收了C++11的變化後,你可能就會同意Stroustrup的說法:C++11感覺就像一個新語言,一個更好的新語言。
Ⅶ java編程,人工智慧:怎麼編寫「謂詞演算」程序呢
能夠使用計算機表達的演算法,就是可以轉換為數學語言來描述。謂詞演算其實就是將事物歸類,具體的說就是將A和B兩個事物的共同點進行歸納,並下一個數學定義來描述這個共同點。如果下一個輸入的事物如C,就對C進行判斷,看C是否符合A和B的共同點,如果是則C與A和B同屬於這一類。
如一個簡單的一元謂詞:
定義1:樹都有樹葉。
定義2:A是樹;
定義3:B與A是同一類植物;
則可知B是樹並且有樹葉。
其實謂詞演算就是對於數學包含關系的判斷。
如果體現在編程中,就是變數的對比,轉換,替換和傳遞等。
Ⅷ 什麼是邏輯語言
Prolog(Programming in logic)是一種面向演繹推理的邏輯型程序設計語言,最早於1972年由柯爾麥倫納(Colmeraner)及其研究小組在法國馬賽大學提出。[1]
高濟,何欽銘著,人工智慧基礎 (第二版),高等教育出版社,2008.10,第67頁
中文名
邏輯編程語言
外文名
Programming in logic
簡稱
Prolog
定義
面向演繹推理的邏輯型語言
提出時間
1972年
關於邏輯編程語言
Prolog以處理一階謂詞演算為背景,由於其簡單的文法、豐富的表達力和獨特的非過程語言的特點,很適合用來表示人類的思維和推理規則,從而一問世就贏得了人工智慧研究和應用開發者的廣泛興趣。尤其在西歐和日本,Prolog語言已推廣應用於許多應用領域,如關系資料庫、數理邏輯、抽象問題求解、自然語言理解和專家系統等。日本還在其於1979年提出的第五代計算機研究計劃中把Prolog列為核心語言。
Prolog實際上就是一種基於逆向規則的演繹推理技術,只不過對規則和目標的表示有嚴格的限制.再加上演繹推理控制機制自身的簡單性,難以適用於復雜的應用域。[1]
Prolog語言的基本概念
Prolog語言的基本成分是Horn子句,表示為如下形式:
∧
∧
∧
p;
Prolog語言中,Horn子句以3種形式去分別表示逆向演繹推理中問題求解描述的3個部分:目標、規則和事實。
目標
表示為只有左部的Horn子句:
∧
∧
∧
;
即在Prolog語言中,目標公式只限於表示為原子公式的合取,而不能是任意的文字與或形。
規則
表示為典型的Horn子句:
∧
∧
∧
p
這就是逆向演繹推理所使用的規范化B規則,只是規則左部限定為原子公式的合取,而非任意文字與或形。
事實
事實表示為事實元素的集合,每個事實元素表示為只有右部的Horn子句,即單一原子公式P。事實元素間隱含合取關系。
只要用Prolog語言表示問題描述的這3個部分,支持Prolog語句的推理機制就會自動執行基於規則的逆向演繹推理,並最終給出。
Ⅸ 研製polog(編程語言)的原理是如何
謂詞匹配。用用就知道了,比較簡單,也好理解。