改变我人生的编程语言!背景故事 Prolog 是什么?它有什么特别之处?

2025-05-25

改变我生活的编程语言!

背景故事

Prolog 是什么?

Prolog 有什么特别之处?

最后

简而言之, Prolog 给了我一个全新的视角。让我知道哪些编程语言改变了你解决问题的方式!

背景故事

语言简介

当时我正在读大学二年级,主修计算机科学。我听说人工智能模块的编程语言不是我们目前为止在学位课程中学习过的语言。我很兴奋,因为我觉得自己已经对 C、C++、Python 和 Java 有了一定的了解,所以已经做好了一切准备。😬

“你的第一个任务是用 Prolog 创建一个人工智能”。我当时脑子里想的
就是 Prolog 到底是什么鬼。我以为自己对各种编程语言都挺了解的。我们为什么要学一种我根本没听说过的编程语言呢?

我回家后,用谷歌搜索了一下,想弄清楚 Prolog 到底是什么。
“Prolog 是一种与人工智能和计算语言学相关的逻辑编程语言”没错,人工智能,这大概就是我们学习它的原因吧,还是因为这门语言诞生于法国马赛,而我的讲师是法国人? 🤣

接下来的一周,我们第一次接触了这门语言,我很快意识到,无论我多么了解 C、C++、Python 或 Java,都无法帮助我理解 Prolog。我很快就对这门语言产生了厌恶。它根本就 ……说不通。

我看过无数的教程,尝试过大量的例题,逐行分析过别人的解决方案,但就是行不通。我会拆开一些代码,欺骗自己认为我理解它是如何工作的,但当我真正用 Prolog 编码时,我的大脑就停止了。

救恩

我受够了在 Prolog 上苦苦挣扎。在尝试了网上所有可能的学习途径后,我决定认真听取讲师的讲解,买一本推荐的书。

伊凡·布拉特科的书

Prolog 人工智能编程- Ivan Bratko。这本书改变了一切。我几乎一天就看完了。我完全被迷住了,这本书让我意犹未尽。我回想起前一天还在苦苦挣扎的编程问题,竟然能想出20种不同的解决方法,我开始爱上这门语言了。在课堂上,我从一个对这门古怪语言百般批判的学生,变成了 Prolog 的忠实拥护者。

Prolog 是什么?

Prolog 是一种逻辑编程语言。您可以定义关系,即事实和规则。然后查询知识库,它会根据这些事实和规则返回输出。解决方案通常以递归方式编写,程序会自我调用,直到满足某个目标,这通常被称为基准情况或最终状态。回溯是该语言的另一个重要特性:当子目标未得到满足时,Prolog会回溯,这意味着它会回溯到上一个目标并尝试满足该目标。

Prolog 有什么特别之处?

Prolog 是那种非常罕见的语言之一,我认为非程序员对它的理解能力可能和程序员一样好,甚至更好。想想看,我们这些开发人员已经习惯了命令式编程,一步一步地告诉编译器我们想要什么。当我们被迫以声明式思维(编写代码来描述我们想要什么,我们期望的结果,但不一定是如何实现的)时,我们的大脑会一阵一阵地发抖,至少我是这样。

Prolog 给了我一种全新的视角来看待问题,它让我提出不同的问题。我不再思考下一步是什么,而是思考理想的状态以及达到该状态所需的过程。

如果你遇到一个编程问题,需要用三种不同的语言(Java、C# 和 C++)来解决。你很可能用三种语言以几乎完全相同的方式解决问题,采用相同的步骤操作输入以获得所需的输出。是的,我知道你可能会使用每种语言的不同结构,但总体方法可能相同。但是,如果你学习过 Prolog,你可以问自己“我该如何在 Prolog 中解决这个问题”。虽然尝试将你的 Prolog 解决方案映射到命令式解决方案可能不一定是最佳方法,但它为其他可能性开辟了道路,并扩展了可能的结果。

最后

这篇博客原本打算作为#讨论,因为我主要想了解学习新语言如何改变你解决问题的思维方式。我知道学习函数式编程语言会对一些人的思维方式产生深远的影响,所以我很想听听你的意见!

如果您不想错过绝对精彩的编程见解,请在 Twitter 上关注我:🤣@luke_garrigan

谢谢,如果你喜欢我的漫谈,请访问我的个人博客网站https://codeheir.com/

文章来源:https://dev.to/lukegarrigan/the-programming-language-that-c​​hanged-my-life-2kc7
PREV
为什么 Codewars 是学习新编程语言的最佳途径!为什么选择 Codewars?入门 8 级 回顾一下,我从这道题中学到了什么?然后呢?
NEXT
每个开发者必读的一本书!超级能力:代码整洁之道,鲍勃大叔终于来了