高中和初进大学的时候,周围总有这么一种论调:好的计算机公司都喜欢招聘数学系或者物理系的毕业生,说是数学功底比较扎实。我的一位学物理出身的长辈曾问我计算机系都学些什么,听了我的描述之后,露出一种不屑的神色,说这些有什么可学的。言下之意似乎只有物理、数学系学的那些东西才算是真正的学问。
然而,既然计算机从数学和物理之中分离出来,成了一个独立的学科,总有它独到之处。那么这个独到之处是什么呢?我觉得不是数据结构,以数学系学生的离散数学知识,我们在数据结构上占不到什么便宜,也正是因为这个,才会有本文开头的那种论调。何况数据结构的复用是做得相当好的,很多人用着STL里的Map、.Net里的HashTable,很好的完成了自己的工作,却不用太注意那背后的红黑树、碰撞处理。
那么除了数据结构的知识之外,要成为一名合格的软件开发者,还需要具备什么样的知识呢?我觉得是面向对象技术和软件工程知识。这两项技术理应成为计算机系学生的优势。然而现实情况实在是令人沮丧。
大学里的课程开设,主干依然是围绕数据结构展开的,软件工程现在总算也是一门主干课程了,但重要性远不如数据结构的一系列课程。而面向对象技术往往只是软件工程课程中的一个章节,有所讲述也往往停留在面向对象技术初始阶段的理论,而完全无视近年的发展。当大家已经承认接口复用的意义,课堂上还在大讲代码复用。当大家已经都在用C++、C#编程的时候,课堂上还在大讲Goto语句的危害性。
面对这样的现实,有的只能是无奈...
然而,既然计算机从数学和物理之中分离出来,成了一个独立的学科,总有它独到之处。那么这个独到之处是什么呢?我觉得不是数据结构,以数学系学生的离散数学知识,我们在数据结构上占不到什么便宜,也正是因为这个,才会有本文开头的那种论调。何况数据结构的复用是做得相当好的,很多人用着STL里的Map、.Net里的HashTable,很好的完成了自己的工作,却不用太注意那背后的红黑树、碰撞处理。
那么除了数据结构的知识之外,要成为一名合格的软件开发者,还需要具备什么样的知识呢?我觉得是面向对象技术和软件工程知识。这两项技术理应成为计算机系学生的优势。然而现实情况实在是令人沮丧。
大学里的课程开设,主干依然是围绕数据结构展开的,软件工程现在总算也是一门主干课程了,但重要性远不如数据结构的一系列课程。而面向对象技术往往只是软件工程课程中的一个章节,有所讲述也往往停留在面向对象技术初始阶段的理论,而完全无视近年的发展。当大家已经承认接口复用的意义,课堂上还在大讲代码复用。当大家已经都在用C++、C#编程的时候,课堂上还在大讲Goto语句的危害性。
面对这样的现实,有的只能是无奈...
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端