2010-01-01 141 views
8

我的公司有一個在Prolog中運行的項目,我想澄清一些關於如何去學習它的內容。我知道Prolog是不同的。它不應該像其他語言一樣學習。這麼說,並且考慮到我沒有在任何Prolog書籍上下手,是否有任何書籍或在線資源,我可以在哪裏學習Prolog如何學習C/C++?我的意思是,只需要在C/C++中運行,您只需要知道程序的結構,如main { },loops,conditions,branches和幾個functions,您可以使用它們開始在C/C++中編寫基本程序。快速在Prolog中運行

就這樣,我可以學習Prolog,並且有沒有任何書能讓我知道如何在Prolog中編程? (基礎知識,循環,如何實現條件,程序結構,謂詞是什麼?如何使用它?如何定義它?等等)。

+0

我不是故意弄壞派對,而是想想Peter Norvig在他的博客上寫了些什麼[在十年內自學編程](http://norvig.com/21-days.html)。 – repeat 2016-01-28 00:15:16

回答

18

如果你是一本書後,我強烈推薦「序言的藝術」:http://books.google.com/books?id=w-XjuvpOrjMC&lpg=PP1&dq=the%20art%20of%20prolog&pg=PP1#v=onepage&q=&f=false

從類似C/C++來到Prolog的不只是一個學習編程語言的問題。這是一個關於編程的完全不同的思維方式

序言是關於詢問電腦的問題(或'如果你喜歡''查詢')。計算幾乎是計算機試圖回答你的問題的一個副作用。 由於序言程序員不會考慮這些術語,因此沒有與循環或條件相當的意義。

一個很好的Prolog程序看起來像你試圖解決分解成遞歸的情況下和子問題,而不是組織成函數或類指令列出了問題的描述。

學習Prolog的最佳方式是放下您以前的所有編程經驗。實際上,思考C和C++會使Prolog更難以學習和使用。嘗試採用初學者的思維,也許更像代數學家而不是程序員。

+0

謝謝你的一個有趣的建議。 – JPro 2010-01-02 00:37:26

+2

+1總的來說,我認爲這個答案很有幫助,但我不會太過分,並說完全忘記了所有其他的編程經驗。有可能編寫在Prolog中以強制方式行事的代碼(例如在剪切的幫助下),有時候這樣做是合適的。此外,您應該始終考慮您正在創建的算法的複雜性。當你問一個問題時,你仍然需要考慮機器將會做什麼。對算法和複雜性的事先理解在這裏會很有用。 – nedned 2010-01-03 08:55:19

6

Learn Prolog Now有什麼問題,這通常是每次詢問這類問題時的最高建議?

它可能並不完全符合你想要的術語 - 我相信它甚至沒有提到「謂語」(使用「事實,規則和查詢」)或「循環」(它只是顯示瞭如何使用遞歸 - ),但是一旦概念清晰了,術語就應該簡單,快速和簡單,而且「現在學習Prolog」似乎在明確概念方面做得很好。

+0

謝謝我將從這一開始,我期待更多的答案。 – JPro 2010-01-01 20:56:39

5

爲補充在其他的答案中提到Prolog的教程和教材,我建議有一個快速瀏覽一下這個簡短的文件:

Prolog for Imperative Programmers

我認爲這是你要找的一部分對於。它不會教你Prolog,但它有助於彌補理解Prolog的空白。它使用經驗豐富的非Prolog程序員理解的術語描述了Prolog的基礎知識。例如,它顯示了您在Prolog中的控制結構,即序列,選擇和重複。但它確實假設你已經開始學習Prolog了。

這很好,如果你想了解一些你已經知道的新東西。但是,憑藉這種知識/理解,可能最終會以Prolog語法編寫C代碼。祝你好運!

+0

非常感謝你。 – JPro 2010-01-02 01:37:51