985CS专业学生认为C语言相比于python和Java是落后的跟不上时代的产物,我觉得这才是大学CS教育的失败。
首先大学CS专业的学生应明确认识到,CS专业教育的终极目的是教授CS(Computer Science),而不是「CL」(Code Language)。选择大一时先学习哪一门语言的语法,完全由之后的CS教学需要决定。那么什么是CS专业本科的主要学习科目?当然是【数据结构和算法】【计算机组成原理】【操作系统】【计算机网络】【编译原理】【数据库原理】等。这些才是CS的核心专业知识,凭借这些专业知识的掌握,学生也将具备深入研究计算机科学的条件,以及学习其它琳琅满目的软件编程的基础。
而就目前来说,上述计算机科学学科的很多实践或实验性项目还是以C语言甚至汇编语言这种偏向于底层的语言为主要实现手段。比如操作系统、网络协议、数据库、编译器/解释器等,很多优秀的项目或课程实验是以C/C++为编程语言。所以从后续的学习来说,学习C语言是后续学习的前置条件。
当然我们不是说C语言就是必须优先掌握的,它也不是学习CS的唯一途径。老师选择先教C语言,并不影响其它语言的学习,最终要看对于计算机科学的掌握,而不是看对某种语言的掌握。一个有意学习计算机的初学者想先学习Python语言是没有问题的,只会C语言的人也是难以学好计算机的,但是现在就将教授C语言归为过时和落后的象征,还为时尚早。C语言语法最简单,但是用来操控计算机则最难。Python语言的语法相比C语言要复杂很多,但是上手后操控计算机则比C语言容易很多。如果时间条件允许,以python为入门计算机的语言是不错的(可惜大学老师没有时间把知识掰开揉碎了给你一口一口喂,大学的知识多复杂度高而时间少)。大学授课受到整体课时安排的限制,如果不能在限定时间内学会某特定基础内容会影响后续很多课程的学习。况且先学哪种语言更好并没有定论,所以你可以对整体课程设计提出质疑和可行性改进建议,这是可以的,很多CS专业的课程编排确实受到教师水平和学生水平等影响而存在很多不尽如人意的地方。但是总体来说先学哪种语言并不太会影响一个要成为计算机大师的人将来成为大师的整体进程。
作为一个985CS专业的学生,你们上的可以是北大,但绝对不是北大青鸟。你们掌握的知识应该上得厅堂下得厨房,而不是只能靠某一道快餐活着。
问题被修改,原问题如下:
补充:鉴于某些同学阅读理解的问题(可能知乎越来越多中小学生了),我把我上面的话的一些意思稍微明确一下:
- 我反对的不是CS专业要不要首先学习C语言课程,我反对的是将先学习C语言课程视为落伍和跟不上时代的言论。
- 我也没有表达「C语言是万众基础,先学C语言才是正途」的意思,我说的是学校先开设哪门语言应结合其整体课程进度安排来看,CS专业学生先学哪个语言从长远来看差异影响并不大,但在受到课时限制和课程之间依赖关系的影响下,课程编排不能靠脑袋一热。如果你对学校的课程有意见,可以对整体课程课时安排提出建设性建议,甚至要对整体招生和毕业要求做出改变。
- 我不反对先学习python等语言作为入门的第一步,我甚至提倡初学者在条件允许的情况下先学习方便操控计算机的语言。如果你只对自己负责,你学什么怎么学都行。