编程就是逻辑

编程就是逻辑

为什么它可以用来开发和评估一个人的逻辑能力

Photo by 西格蒙德 on 不飞溅. I was not legally permitted to use a screenshot of the famous “is she a witch?” scene, so I had to use a picture of glasses on a chart I can’t read.

“编程就是逻辑”并不是一个有争议的主张——它使用“AND 语句”和“OR 语句” 可以追溯到命题逻辑 , for 循环的概念最好用 逻辑流程图 .相反,我想在这篇文章中论证的是,编程具有很大的教育价值,而且 即使编程没有相同的实际应用,它仍然可以用于教学、评估和发展一个人的逻辑能力 .

中学数学老师可能会争辩说代数很重要,即使对于那些在职业生涯中不打算使用简单算术以外的任何东西的人来说,因为这个级别的数学可以帮助学生具备逻辑和解决问题的能力。编程就是这样,但有一个附加条件:您可以运行程序并验证您的逻辑是否按预期工作。

在把它变成过于学术化的东西之前,我想我会与 Smack 分享我关于这个话题的论点的总结:

  • 他同意编程严重依赖逻辑,但我们不同意其中的含义
  • 他认为,不同学科之间的逻辑差异很大。例如,Smack 不擅长数学,但擅长编程。虽然我同意,但我相信编程至少与数学一样重要。要获得高中文凭,我们要求学生学习代数、初等微积分以及统计学或微积分。至少,我认为编程可以很好地替代其中一些课程
  • 他认为编程不是“纯逻辑”。我同意——要成为一名优秀的程序员,你还必须记住一些东西,在 Google 中制定好的搜索查询,并向 LinkedIn 招聘人员解释 Java 和 JavaScript 不是一回事。编程不仅仅是逻辑,但这并不会使这一点无效

从表面看逻辑

我想专注于 命题逻辑 在这篇文章中——我们第一次学习它是在 9 年级,它使用了一些熟悉的概念,比如 设置心情带着心情… 诚然,我只需要查一下以确保我没有拼错它们。那是一堂很棒的数学课,因为除其他外,这是我们第一次真正学会如何证明事情。

我九年级的数学老师做了 这个网站 ,我们过去常常通过写几何证明来获得额外的功劳。当时它是一个很好的资源,但我最近尝试重放它,并且……在现代前端 Web 开发的时代,我认为它站不住脚。简单的甚至一些中等的问题都可以通过简单的消除过程来解决。在查阅 YouTube 演练之前,我在 Water Hazard 上花了整整六个小时。健康包的放置是随机的,Ravenholm 的旧图形几乎没有那么好,ProveIt 3.0 在哪里?我们得到的只是 ProveIt Alyx,它在故事的进一步推进大约 30 秒。

我们又在谈论什么?哦,是的,命题逻辑。作为一个寒假额外的学分任务,我们被要求正式证明女巫的场景 巨蟒与圣杯 .对于外行来说,他们认为女人是女巫,因为她和鸭子一样重,因此她必须漂浮……而且也会漂浮,木头会燃烧,因此她是女巫,因为女巫会燃烧。

我可能搞砸了这个解释。这是一个 由滑铁卢大学赞助的正式证明 ,包括应用 设定模式 .您不必太费力就可以在这种推理中戳破洞,或者您可以接受 100% 的证据并反驳显然规模没有正确构建……但是法国矿业研究所的某个人 居然懒得做正式的反证明 .

回顾命题逻辑很有趣,网上有很多关于这个主题的免费内容。 这个 ,例如,是在哈维穆德学院出版的 52 页教科书。

从一开始,计算机就被称为“逻辑机器”。事实上,“逻辑”在计算机的设计、编程和使用中起着核心作用。一般来说,“逻辑”暗示了一个推理系统。但在计算机科学中,推理只是逻辑的一种用途。我们还在计算机的基本构造中以相当机械的方式使用逻辑。这种形式的逻辑被称为“命题逻辑”、“切换逻辑”,或者有时(不完全正确)“布尔代数”。还有其他几种更强大的逻辑类型用于计算机科学的其他方面
资源

“谁在乎?”

因此,逻辑就像编程的 DNA。计算机本身就是逻辑机器,软件工程师可以利用单元测试来客观地评估功能。

编码作为一种技能组合对儿童很有用 .它使他们能够正式确定目标、分解问题并测试他们的解决方案。要成为一名优秀的程序员,需要一定程度的持续学习——也许程序员必须与新库或新框架更新保持同步。但是,对问题进行逻辑思考、有效研究和实施有效解决方案的能力超出了死记硬背的范畴。此外,这是一项在计算机之外学习的有用技能。

Quora上有不少人问过 为什么 我们喜欢编程。回答往往与权力和应用有关——他们说他们喜欢建造东西,或者可能是“成为机器之神”。虽然这肯定是让某些人享受编程的部分原因,但我认为它只讲述了故事的一半。

为什么不成为一名作家、画家或设计房屋的人呢?当然,程序员有建造的愿望,但是木匠可以使用木头,艺术家可以使用油漆,程序员使用逻辑作为他们创作的基石。他们创建具有预期输入和输出的函数。它们定义在一种情况下做一件事的语句,并指定当不满足所述标准时要做什么。如果出现任何问题,程序员应对后果负责。他们可以制定替代解决方案,他们可以重新设计甚至延迟,但他们仍然受其语言规则和相关实现的约束。

所有这一切都在说:逻辑很重要,而且很有用,而编码可以帮助解决所有这些问题。

结束的想法

我和 Smack 谈的最后一件事是将编码比作拼图。我不同意这个类比;他认为这是一个伟大的。当你解决一个难题时,它是有人为解决而设计的。当您解决编码问题时,有时事情无法在预期的时间内完成,因为出现了意想不到的并发症。工具是根据预期的用例创建的。无论您是在构建一些小型个人项目还是为公司构建大型项目,您都可能在某种程度上偏离了预期的用例。你开始以以前从未真正做过的方式混合事物。也许您只是在自定义大小,或调整配色方案,或者您正在做一些非常精细的事情,比如将两件事情结合起来,这两个事情对什么构成事件或生命周期应该如何工作有非常不同的概念。事情变得越来越复杂,你必须在复杂性之上游泳。

现在我们再次面临编码面试,这是它自己的事情。

编码面试是对逻辑/解决问题能力的良好评估吗?他们当然 .在 LeetCode 和 CTCI 以及一百万个 Grokking 课程的时代,问题是编码面试是否真的是对我们思维方式的公平评估,或者只是谁记住了最多东西的问题。

我认为以国际象棋的讨论结束会更有趣。我非常喜欢国际象棋。逻辑是一个很大的因素,但至少在我的水平(即不是非常高)我认为情绪是一个很大的因素。你在积极地与另一个人竞争,你设下陷阱、冒险并制造威胁,因为你知道你在与另一个人竞争 .说不上来,也不知道是不是自己想象出来的,但我想我真的可以分辨出对方什么时候是人。当我与电脑比赛时,即使是低级别的电脑,他们的反应方式也不同。与其遵循 1400 播放器会做出的相同推理,但会出现轻微的打嗝,或者有时会出现某种程度的视力障碍,而 1400 的计算机会完美地弹奏,然后挂起一些棋子,然后再次完美弹奏。

逻辑对编程非常非常重要,逻辑对于国际象棋已经非常非常重要,但这并不是说逻辑是唯一的因素。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明

本文链接:https://www.qanswer.top/37230/15471710

posted @   哈哈哈来了啊啊啊  阅读(130)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示