Hegel2011的博客

读书 - 工作 - 生活 - 笔记

Prolog

七周七语言看完了Ruby,又继续看了Io,这是一个prototype的语言,确实和js很像,也挺有启发。不过决定还是 好好去学javascript吧。其实w3school的这份js教程很棒, 相当言简意赅。入门是最重要的。入门之后才能走的更远。很多时候究竟有多远看的还是基础,但没有摸起来,那 基本功就无从发挥了。

随后看了Prolog,其实是gprolog。 这个语言跟我过去学习的语言都很不一样。完全抛弃了过程语言所拥有的能力,全部都集中在了逻辑判断上。实际上其组成结构是这样的:

  • 事实。就是自己先设定一些前提,指定一些事实,比如likes(wallace, cheese).
  • 规则。规则就是关于一些事实的推论。比如friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).,这个规则由3个条件构成,
    • 第一个是X!=Y
    • 第二个和第三个是X和Y都喜欢Z,然后他们就符合friend这条规则
  • 查询。查询就是使用时给出问题,然后让prolog根据规则库(事实+规则)循环访问得出结果或判断出结果。

本质上,应该是用过程语言写了一系列的判断和分析语句(引擎),这样使用时使得编码行为就完全不一样了。

最大的启发

最大的启发在于,这一门应该算是我首次学的不是过程式的编程语言。当然,前提是HTML和CSS不能算编程语言。其他的,如C、C++、Java、Ruby、Python、Javascript乃至shell等,虽然有的是纯过程式的,有的是面向对象的,但实际上都包含了过程式 的风格。

试用体验

还是有点别扭的。它的语法确实很古老,而且很不顺手,这点和erlang有的一拼。 不过确实是只要树立规则,就能输出结果。

Included file 'twitter_sharing.html' not found in _includes directory