展开讨论

经验与复盘经验摘录 · 机器翻译

我从未进行过大量有意义的汇编语言编程

……我从未进行过大量有意义的汇编语言编程。在我学习计算机科学的时期(1994-1999年),这门技能已经不再那么重要了。我在大二的时候用一种函数式编程语言构建了一个虚构CPU的解释器。我们的编译器课程是由像Eric Meyer(后来在微软参与了F#等项目)这样的人教授的,他们只是把这当作一个很好的机会来教人们函数式编程。从后来的情况来看,这其实是一项很有用的技能,因为大约十年后函数式编程变得非常热门。这个类比的重点是:编译器是非常重要的工具。理解它们是如何工作的比能够用汇编语言编写一个编译器更重要。你可能永远不会这么做。大多数人从未参与过编译器的工作。同样,他们也不会自己开发操作系统、数据库等。但了解它们是如何工作的会有帮助。教授编译器工作原理的目的是理解编程语言是如何创建的,以及它们的局限性是什么。

源讨论在经历了两年的随波逐流后,我现在又开始手动编写代码了原帖 634 条评论 · 导入时统计
6

这条内容在回应什么?

父级讨论 · 节选

RE

AI非常危险,因为它可以非常擅长做简单的事情,这阻止了新程序员学习简单的事情(“哦,我可以让AI生成它”),这又阻止了他们从直觉上学习中等难度和更难的以及元级别的东西。 我是一名计算机科学老师,所以我现在看到一个巨大的危险,我明确告诉我的学生:你必须自己写代码。你不能让机器来写代码。是的,它们可以写代码:你是个学生,代码还不难。但你必须自己写代码。

完整原文

社区评论 0

还没有社区评论,来聊聊你的看法。

原讨论中的回复 6

仅展示本次导入中包含的直接回复。中文为机器翻译,可查看英文原文。

DH

我只有在实际操作的时候才会学习,而不是在听别人讲怎么做。我认为老师的做法是对的。

完整原文
TE

> 这个类比的要点:编译器是重要的工具。理解它们的工作原理比能够用汇编语言编写一个编译器更重要。你可能永远不会这么做。大多数人从不参与编译器的工作。他们也不会自己开发操作系统、数据库等。但了解它们的工作原理是有帮助的。教编译器工作原理的目的是理解编程语言是如何创建的,以及它们的局限性是什么。 我不确定它同时是所有这些,但我知道大多数我认识的优秀的人做过很多深入的探索/副项目,这些项目比他们必须做的层次还要低一层。强烈的求知欲是好的,正如你所指出的,大多数人并不是仅仅通过阅读或做闪卡来真正学习这些知识。如果你想真正了解编译器是如何工作的,你可能确实需要编写一个编译器。不是完整的生产级编译器,…

完整原文
QU

当我学习计算机科学专业时,有一个学期学C语言,一个学期学汇编语言,一个学期学构建一个Verilog CPU等等。如果一个最优的计算机科学教育涉及以任何重要方式振动编码这些课程,我会感到震惊

完整原文
VI

> 这里一个好的类比是用汇编语言编程。在我1980年代第一次拥有电脑的时候,手动在机器码级别编写程序是非常常见的。尤其是在游戏方面。到了90年代末期,这种情况基本上就消失了。 确实,我们很多人对那些使用生成糟糕、缓慢代码的原始编译器的人持怀疑和轻视的态度。我曾经花了很多时间对一个用C语言编写的组件进行手工优化,并且非常享受删除大约一半的反汇编代码的事实... 当我几年后写第一个编译器时,最初是用汇编语言写的,并且支持内联汇编,这样我就可以逐步用这种方式进行自举。 因为我不可能想象用C语言来写它,鉴于我所使用的C编译器生成的代码很糟糕(而且速度很慢)... 如今大多数程序员都不懂汇编语言,而且这种情况越来越严重。…

完整原文
TH

> 教授代码如何工作比教如何编程更重要。 人们通过实践来学习。这就是为什么“做课本习题”在数学和科学领域成为一种有点讽刺的流行语——因为这是学习这些知识的方式。 我遇到过一个人说,当他拿到课本时,他会先只做习题,完全跳过章节内容。只有当他遇到重大困难时(比如他卡在一个问题上好几个小时),他才会阅读章节内容。 他是我认识的最聪明的人之一。 这是因为你通过做习题来学习。在软件领域,这意味着编程。 告诉自己你可以写出解决方案,和实际写出代码是完全不同的。 而写代码才是你建立对计算机实际如何工作的流利度和理解的方式。 > 我从未做过任何有意义的金额…

完整原文
JA

虽然我可能不会写汇编语言,但能够阅读汇编语言仍然有显著的价值,例如在godbolt上。

完整原文
在 Hacker News 阅读

尊重不同观点,分享具体经验。

登录后即可发帖、评论、转发和引用。