编码对擅长计算机科学重要吗?一个人应该实施该算法以了解它吗?
我记得一个CS教授的成语:“ 我从不编码”
编码对擅长计算机科学重要吗?一个人应该实施该算法以了解它吗?
我记得一个CS教授的成语:“ 我从不编码”
Answers:
你不会真正了解该算法很好,直到你的代码吧。
编码对您的教授而言并不重要,但是您需要记住,他没有酬劳做事情。他付钱说东西(写东西)。
我是前数学教授,所以我很了解这种动态。
如果您想遵循他的道路并成为一名理论计算机科学家,那么可以,编码的重要性就不那么重要了。但是,如果您这样做了,请记住要保持谦卑,知道您的薪水是由那些选择做事的人所赚取的资源支付的。
计算机科学与计算机无关,而天文学与望远镜有关
— Edsger Dijkstra
我倾向于同意。
如果您是在谈论成为纯粹的计算机科学学者,专门研究抽象的基础计算机科学概念,那么不一定。
打个比方:这有点像问NASA的每个火箭科学家是否都必须在太空中飞行才能成为“好火箭科学家”。当然不是。成为宇航员是航天工业的一部分,也是非常实际的一部分,但这并不意味着地面科学家在他们自己的方式中就不那么重要了。
就是说,最好是应用他创建的算法,如果不是真的用一种真正的编程语言编写的话。从这个意义上讲,您可以将算法设计视为数学的一个分支。
要成为一名真正的计算机科学家,编码并不重要。在他们寻求开发有用的抽象概念时,代码中的思考会限制思维。大多数优秀的编码人员没有能力来分析复杂的算法,也没有开发概念,例如编程语言,高级搜索和排序算法,有限自动机理论,分布式计算理论,R树,容错协议,可靠的通信协议,数字信号处理算法,密码学理论,性能分析和优化,有效的缓存,映射减少,可靠的安全协议等。优秀的编码人员和计算机工程师通常可以在他们试图构建并有效执行的系统中使用这些理论,但是这确实是计算机系统工程师或计算机程序员的领域。
编码对于成为计算机程序员至关重要。了解如何将计算机科学家产生的有用的抽象概念编码为工作代码也很有用。
计算机科学中的一个大问题是,他们通常不得不找到数学问题的解决方案,而这些数学解决方案在解决当今的编程问题时几乎没有用。即使他们编写了解决方案,也没有人真正能够使用它。考虑一下数字信号处理理论。它是由Fourier,Hilbert和Shannon等人发明的,但是直到大约20年前,它才广泛应用于计算机化的DSP问题。
计算机教育中的一个大问题是,大多数由计算机科学家教授的人都不会成为计算机科学家。但是太多的计算机科学家对此一无所知。编码对他们来说可能并不重要,但是如果您在他们的班级里,那几乎可以肯定对您来说很重要。
计算机教育中的另一个大问题是,许多真正的计算机科学家缺乏可用于教授软件开发的行业经验。他们本质上是在尝试教授他们真正不知道的东西。这使他们失去信誉。在工业环境中重要的事情通常不会向其中一些计算机科学家注册。
简短的编码对于大多数成为“计算机科学家”的人来说很重要,因为这些人中的大多数将成为计算机程序员和计算机系统工程师。
听起来他更像是一个离散的数学专家……只是计算机科学背后的数学和理论。这些类型的教授不得不一言以蔽之。
这就像在问我所有的英语教授是否都应该具备写电影,电视剧,小说,戏剧和诗歌的能力。同样,想象一下一个数学教授,从来没有将数字用于同样荒诞的想法。就是说,有一些基本要素确实使编码对能够教授基础计算机科学具有重要意义。因此,教授应该了解基本的语言语法,以及如何编写与教授的课程一样复杂的程序。如果教授正在教授有关编译器设计的知识,并且以前从未编写过编译器,那将是一个主要问题。想象一下一个厨师烹饪的蛋糕以前从未煮过或吃过。Aye carumba。
虽然我可以看到实现算法以了解它的一些优点,但我怀疑这是必需的。毕竟,您可能会想知道,实现算法的难度有多远?例如,是否有人需要采取某种算法并在各种范式(例如过程,面向对象和函数式编程)下实现它才能真正知道它?他们是否必须知道编译器如何翻译所有代码并逐个电子地移动这些位,以至于对此过于痴迷。
“我从不编码”的含义确实包含了过去和现在时态。还可能存在一个隐含的假设,认为“编码”是教授下面的一个卑鄙的事物,它是另一种查看陈述的方式,该陈述可能带有负面的语气,在某些圈子中可能不会很好地通过。
尽管是一名专业软件开发人员,但我还是获得了机械工程学位。
您可以成为一名优秀的机械设计师,而很少有制造和加工零件的经验,而把这项工作留给了机械师。但是,知道如何制造和加工零件将使您成为一名更好的工程师,因为您可以预测要制造和组装的产品所遇到的困难。
软件也是如此。“编码员”是机械师或技术员,而软件工程师则是工程师。在很多地方,一个人同时做两个工作。这并非不可能,对于某些非常抽象的问题,“仅工程”职位可能会起作用。
但是对于绝大多数人来说,拒绝编码绝对没有任何好处。
我还有另一种成语给你的教授:
那些能做,不能教的人。
imo,谈话很便宜。任何人都可以无休止地谈论“理论”,并将其称为“计算机科学”。但是,直到它付诸实践之前,理论才是非常有用的,因为没有办法对其进行验证。我会带一个教授的关于某事的意见更严重,如果我知道他实际上解决了在代码中的一个特殊问题不是好像他只是在反刍“理论”,这可能会或可能不会有任何证据来备份自己的观点。