共计 3015 个字符,预计需要花费 8 分钟才能阅读完成。
大家好,最近有小伙伴在后盾问我,大一新生学校在教 C 语言,是不是曾经过期了?第一门语言应该学什么比拟好?大学期间什么课程对于毕业之后的从业帮忙比拟大呢?
明天这篇文章就和大家简略聊聊这个问题。
对于我
最初给大家讲讲我本人的一些状况吧,掐指一算才发现,从我初学编程至今曾经超过十年了。
我是高中的时候学习编程的,那时候咱们学的是 Pascal。大家没听说过是很失常的,这是一门 十分古老的语言。这门语言古老到什么水平呢?古老到它的 IDE 都是蓝屏的,看起来就像是死机了一样。大略长这样,过后咱们在机房里写代码的时候,一片蓝光,跟进了鬼片现场似的。
过后学 Pascal 也是浅尝辄止,只是学了一些根底的用法,连构造体我都不太会用。很多人都说 Pascal 是一门非常适合新手入门的语言,不晓得是不是我太菜了,我至今也没 get 到。从那之后我又陆续学过很多语言,比方 C /C++,Java、Python、JS 还有最近学的 Go。十年前学的 Pascal 的语法早已忘得精光,过后的编程习惯也都很挫,基本上也改得差不多了。
如果非要说学了 Pascal 对我当初有什么帮忙的话,惟一的帮忙应该是 它让我学 C 语言的过程变得非常简单 。基本上只是简略看了一下 C 的语法,做了一些练习就把握了。其实这也是大多数人学习的第一门语言的意义, 不是为了学到了就能上手做事件,更多的是为当前学习其余的内容打基础。
所以严格说起来 C 语言是我第二门学习的语言,然而我第一门把握得比较完善的语言。
C 语言适宜入门吗
对于这个问题我是有过翻转的,我已经有一段时间感觉是不适合的。因为学习 C 语言的过程就是 面对一个黑框框写各种数学题的过程,挺干燥和无聊的,很多人都是这样被劝退的。如果是 Python、JS 等语言的话,则能够做的事件就很多,学习者会有极大的激情持续学习上来,这样入门的门槛可能会低一些。
我想很多人也是这么感觉的,因为学习了 C 语言会有一种无处施展的感觉。咱们花了很大精力学了编程这么黑科技的货色,搞半天竟然除了对着黑框框做题什么也做不了,这太不炫酷了。你看看 Python,学会了之后又能够爬图片又能够解决文档,难道不香吗?还有些人可能也不太懂,就感觉 Python、Java 这些新兴语言要比老旧的 C 语言厉害一点。
最近几年我的认识又再次翻转了回来,我当初感觉 C 语言其实挺适宜初学者入门的,它也是有很多其余语言没有的益处的。同样 Python、Java 这些看起来浓眉大眼魅力十足的语言,其实也是有很多缺点的。
C 语言最大的益处是什么?我集体感觉有两点,第一点是它的 语法很洁净 ,C 语言当中根本的语法简直都能在其余所有语言当中找到。这一点在 Go 语言上同样有所体现,精简到极值,多余的一点也没有。也就是说你 在 C 语言上积攒的编程功底换了其余的语言基本上都能用上,但像是 Python 这样的语言可能就不是如此。Python 当中的新个性十分多,换一门语言可能就玩不转了。
第二点是 C 语言区 分了援用和指针,理解这点对于初学者而言十分重要。援用和指针间接关系到传参以及函数内的变量解决逻辑,但很多语言这两者只波及一个,比方 Java 当中就只有援用,Go 语言当中就只有指针。如果搞不清楚援用和指针的区别会埋下很多隐患,比方参数传递的时候写错了逻辑,再比方齐全没有内存应用的概念,写进去的代码内存透露重大。
当然 C 语言存在的问题也不少,比方利用场景太少,库函数也不多,写起代码来十分吃力。但这不障碍它非常适合造就编程思维以及良好的编程习惯,对于初学者而言,领有一个好的习惯和意识,其实要比具体学到的内容更加重要,从这点上来说,大一新生的第一门语言课上 C 语言其实是没有问题的。
语言的抉择
当然,也有一些学校给大一新生开设 Python 或者是 Java 的(比方 MIT 和斯坦福),难道这些学校就错了吗?
其实也没有,这是一个取舍问题 。比方 Python 学起来可能比拟乏味,对于有些学院而言可能更加看重学生的趣味。再比方 Java 所有面向对象,从 Java 开始可能更加有利于之后面向对象的学习。还有些大牛是从 JS 入门的,因为会比拟不便之后从事前端。这些其实都没有问题, 并没有一条规定的所谓正确路线。语言自身并没有高下之分,有的只有实用的范畴不同。
所以说,其实咱们选的不是语言,而是方向。比方你想要当前从事算法,那么 Python 显然是必学的,不仅须要学还须要比拟深刻。比方你想要做开发,那么就比拟举荐 Java,入门的门槛绝对较低,并且岗位缺口很大,学得好不愁找不到工作。比方想要做前端,那么显然 Python、Java 这些都用不上,HTML+CSS+JS 三件套才是王道。
也就是说 语言是和咱们方向挂钩的,咱们想要成为什么畛域的工程师,就须要相应地进行该畛域内的学习和钻研。严格来说并没有一门语言是普适的,是不论什么方向的工程师都须要把握的。
另外一点是到了前期 学习一门语言远远不像大家想的那么吃力,其实相熟了编程的外围逻辑之后,语言之间基本上只有语法的差别。打个比方来说好了,我在刚入职的时候为了实现入职测验,在 3 天内学习了 go 语言,并且从无到有用 go 语言写了一个简略的后台程序。说起来如同 3 天学完一门语言很夸大,其实不然,我只是看了根底的语法就开始上手了,边看边查而已。这并不是我的非凡能力,实际上大部分入职的新人都做到了这一点。
第一门的语言选择重要,但也没那么要害,要害还是当前能不能找准方向。
成长路线
说到方向预计很多人一听到就头疼,尤其是学生党,很多人可能齐全不晓得之后要做什么,也不晓得这些岗位有哪些能力要求。这其实也很失常,因为 学校的教育少了工程师造就的局部。它只负责授课,并不负责工程师的造就,这是这个问题的外围起因。
那咱们怎么办呢?
我想你们肯定很想晓得答案,但很遗憾的是,每个人的成长路线须要本人找,谁也不晓得你到底适宜做什么。不过话虽如此,但还是有一些比拟万金油的办法的。
如果你学了 C /C++ 之后不晓得学什么,那就学 Java 就好了 。学了 Java 之后用 Java 踏踏实实做两个我的项目,晋升一下我的项目能力。 不论是什么岗位,工程能力都是必须的。而且有了这两个我的项目教训之后,其实也算是一个保底,最起码毕业了当前找个 Java 后端的工作根本没问题了。并且这两个我的项目做下来,你会对本人有一个比拟清晰的认知,这样写代码、调试程序寻找问题的工作到底是不是你喜爱的。
而且对于做我的项目还有一个小技巧,咱们做我的项目也不是自觉做,我的项目之间是有高下之分的,和公司理论业务越靠近的我的项目面试的时候吸引力越大。比方你亲自做过一个举荐零碎、搜寻零碎,即便做得很简陋,只是勉强能用,这样的我的项目在面试的时候一样是十分十分具备价值的。要比做 XX 管理系统有含金量得多,而且这样的零碎也算是和算法相干,既能够面算法的岗位,也能够面工程的岗位,能够说是两全其美。
其实个人成长这件事和写文章的逻辑是一样的,首先要有一个主线,而后一个好的结尾。之后呢,须要联合主线适当地发散,该笼罩的点都要笼罩到。当然写文章的时候,咱们是在写之前就有了主线,而成长的道路中可能一开始的时候始终是一个寻找主线的过程,寻找主线其实并没有问题。对于学生来说,还年老,领有大把的青春,做一些工程项目进行适当性的试水齐全没有问题。即便当前选了算法或者其余的方向,当初的付出和致力也一样是有用的。
明天的文章就到这里,衷心祝愿大家每天都有所播种。如果还喜爱明天的内容的话,请来一个 三连反对 吧~(点赞、关注、转发)