计算机专业的大学生该如何面对学校的落伍课程,可以自学一门目前热门的编程语言吗?
- 作者: 刘杰
- 来源: 技术那些事
- 阅读:262
- 发布: 2025-07-23 21:14
- 最后更新: 2025-07-24 21:00
今天知乎上,看到一个问题,应该是一个大学生的问题。主要是针对目前学校的课程安排,和目前社会对程序开发需求之间矛盾一种思考,以及对程序开发这个职业该如何入门的一点疑问。
下面,就他的问题我们来逐一回答一下。希望对有如此疑惑的大学生,或者新入行成员的同仁有一点点帮助。
问:计算机这门学科是不是像数学那样必须先学加减乘除然后再学方程,然后再学函数?存不存在这种递进关系?
计算机知识,是否存在知识体系上的依赖关系,需要逐步学习推进?这个是必然的,任何知识,随着知识体系的细化和推进,必然会产生不同的知识,而一些知识,也是必然要在另一些知识的基础之上的。
计算机,从理论体系上分,分了很多学科。比如编译原理,算法,数据结构,离散数学,操作系统等等。这些都是一些成体系的知识。这些不同的理论体系可以说是从不同的视角来研究计算机的。类似于成语小故事,盲人摸象。这些知识,在计算机领域来讲,是通用的,不是依赖某一门语言而生的。而是对于任何的语言,以上的理论都是存在。当然这个基础,主要是用来更深入的研究编程技术而准备的。那么你可能会问,没有这些基础知识学不了编程吗。当然不是,单纯从某一个语言的编程技术上而言,这个语言的编程技术,仅仅是一门相对独立的课程。没有上边的理论基础,并不是说就学不了,依然能够学会。学会了也一样可以编出程序。
那学那些学科有什么用,随着你写程序越来越多,就免不了会和上面这些不同的学科打交道。当你陷在一些问题无法解决的时候,往往,这些问题已经是某些体系中的一些经典案例。即使开始编程的时候你不知道这些学科,当遇到类似问题的时候,也免不了会回到这些理论体系之内去找答案。只是学了编程,并没有其他基础和经验的新手,往往就不知道从何入手解决问题,走了许多弯路之后,也许才发现,原来这样的问题叫“算法”(这里是举例)。所以,想在计算机编程,这个道路上走的深走的远,成为一个高手,资深程序员,甚至专家。这些所谓的理论体系,到底都是绕不开。
问:看到网友说大学教的计算机课程已落伍了,好像是说vb落伍了,如果真是那样,那么我干脆不学这些落伍的课程,是否能学会最新的编程语言
这个回答是肯定的。抛开你们必修课,必须得拿学分,为了学分也必须得学之外。编程语言的学习,确实可以选择现在应用最广,使用最热的。至于理论课,大多数的基础理论都没有过时一说,当然一些系统的设计上,现在可能采用了更优秀的设计。但是依据的设计理论,其实并没有太大的变化。就像数学中的公理、定理一样。
那不学落伍可成,能不能学会最新的编程语言呢。答案也是肯定的。第一个问题回答中其实就有涉及。单纯的编程语言课程,其实都是较独立的。每个语言相对独立,且有自己的一套环境和运作原理。所以学哪个语言,一般都没问题。而且,好多学校,现在也不都是还在教授 VB 之类的编程语言。也有教授 C++,Java,C# 等等。这些语言目前市场上仍然有大量的使用需求和生态环境。对于,某些学校的编程语言比较陈旧的,假如真是 VB、asp 之类的,确实应该换个"新的"更好。
比如:Java 这中编程语言,估计是目前市场上,企业用的最多的一种业务系统开发的语言。就业环境虽然越来越卷,但是市场规模和需求,目前也应该是最庞大的。从各大招聘网站搜搜看,就能看出端倪。C/C++ 相对来说,要的都是有经验的老成员,主要应用在嵌入式开发,驱动开发,底层中间件开发,游戏引擎开发,这些业务场景。由于偏底层,且要求高,这类工作往往就业起点比较高,需求量少。这也是找这类工作难得一个主要原因。但是,这些语言可不过时,而且从系统层面上说,这类语言往往更加强大,性能优秀。至于 C# ,主要在桌面软件开发,系统软件、办公软件、影音娱乐软件、游戏客户端开发等等,用的比较多,也有不错的就业前景。
问:我只会上网聊聊天、玩游戏、看电影,其他的都不会,那么我能越过C语言学JAVA么?当然了,JAVA可能也过时了,那么我能越过JAVA学最新的编程语言么?
首先,还是回答问题,答案又是肯定的。C 语言并不是 Java 语言的一个前置要求。这两个语言本身并无太多关联。非要说有,那就是 Java 是 C 语言开发出来的。额可能仅此而已。除此之外,这两个语言的工作环境,语言要求都是各自独立的,学哪个都一样。
有的人说 C 开发难,主要是因为 C 语言自身的特点而定的,C 语言需要自己管理内存,C 语言本身不是面相对象语言,但是现在都用面相对象的开发思想。这就使得新手开发者学起来有点不简单,用起来有点别扭。
当然 C++ 是面相对象的语言,是针对 C 语言面相对象特性设计不足而设计的,但是 C++ 更复杂。也是因为 C++ 既要兼容 C特性,又得实现面向对象,还有泛型编程,还有随着语言的发展,一些适用于现在程序开发的语言特性的加入,导致 C++ 的语法越来越多、越复杂。这就让这个语言的学习起点逐步变的比别的语言更高,也就是所谓的更难学了。
Java 相对与以上两门语言就好一些。首先 Java 不用纠结内存管理这门学问,这也是所谓高级语言的一个标配了,由语言本身自己管理内存,自动进行 GC(内存回收)。泛型编程虽然有,但是显然没有 C++ 那么变态(灵活多变)。语法相对来说更加简单一些(单继承),没有那么多的"新特性"。这些化简,综合起来,使得这个语言学起来变得更容易了一些。
甚至还有些弱语言类型语言,比如 PHP、Javascript、Python ,这些与上边三个语言比起来,就更加"简单"了,变量类型都没了,变量只有名字,也是自动 GC,泛型编程更简单,有的甚至没有泛型编程,比如 PHP。学起来就更简单了。但是也要注意,由于没有了类型限制,往往坑会变的更多,因为本质上,程序运行必须要知道变量类型,语法上取消了,只能是语言本身自己做的更多,这无疑会消耗更多的性能和资源来支持这种新特性。而且,太随便的变量类型,导致有些问题无法再开发初期被发现,只能等运行到此处,才能触发问题,这就使得,问题的发现被延后了。相信这是每个程序员不愿意见到的。谁也不愿意一上线就挨骂。
啰啰嗦嗦说了这么多,简单来说就是,编程语言想学哪个都可以学,自学能力强的,买本书自己都能学会。不喜欢看书的,找个视频学习,学习起来更容易。想学哪个语言,自己一定要根据就业前景(当然你要只是按照兴趣学也行)和自身的需要慎重选择。毕竟刚入门程序开发,需要大量的学习时间,实践时间。一旦选不好,重选不光浪费时间,还挫伤自身积极性。
没有人生下来会编程,都是后天学来的。只要你愿意,你学你也会。
最后,祝各位新入行的同仁们能够早日找到心仪工作,拿到满意的薪资。