作者 | 梁唐

来源 | TechFlow(ID:techflow2019)

头图 |  CSDN 下载自东方IC

大家好,最近有小伙伴在后台问我,大一新生学校在教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语言存在的问题也不少,比如应用场景太少,库函数也不多,写起代码来非常费劲。但这不妨碍它非常适合培养编程思想以及良好的编程习惯,对于初学者而言,拥有一个好的习惯和意识,其实要比具体学到的内容更加重要,从这点上来说,大一新生的第一门语言课上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管理系统有含金量得多,而且这样的系统也算是和算法相关,既可以面算法的岗位,也可以面工程的岗位,可以说是一举两得。

其实个人成长这件事和写文章的逻辑是一样的,首先要有一个主线,然后一个好的开头。之后呢,需要结合主线适当地发散,该覆盖的点都要覆盖到。当然写文章的时候,我们是在写之前就有了主线,而成长的路途中可能一开始的时候一直是一个寻找主线的过程,寻找主线其实并没有问题。对于学生来说,还年轻,拥有大把的青春,做一些工程项目进行适当性的试水完全没有问题。即使以后选了算法或者其他的方向,当初的付出和努力也一样是有用的。

更多精彩推荐
☞中国开源燃烧!Zilliz 获全球开源基础软件最大单笔融资 4300 万美元☞faker.js 登 GitHub 趋势榜标星 27.1k,可大批量生成假数据!☞太扎心!人艰不拆!16 个程序员专属笑话讲给你听☞强化学习:10种真实的奖励与惩罚应用
☞打钱!我的数据库被黑客勒索了!
☞对区块链撒谎:将“垃圾进,垃圾出”问题应用在去中心化网络上
点分享点点赞点在看

80% 的学校还在给新生上 C 语言,它们 OUT 了吗?相关推荐

  1. 计算机类大一需要学什么原因,大一新生上大学要不要带电脑?我认为不论什么专业,电脑是必需品...

    原标题:大一新生上大学要不要带电脑?我认为不论什么专业,电脑是必需品 导语 有很多大一新生问我,上大学要不要带电脑,有没有必要买一个好一点的电脑呢?因为现在也即将开学了,很多同学们都在为开学做准备,但 ...

  2. 新生学大学计算机心得,大一新生上学期学习心得体会

    大一新生上学期学习心得体会 大一第一学期结束,你有什么想说的?看看下面的大一新生上学期学习心得体会吧! 大一新生上学期学习心得体会[1] 时光在不经意间消逝,伴随着一颗慢慢成熟的心. 在清华的第一个学 ...

  3. 教育部:每所学校贷款项目总投资原则上不低于2000万

    教育部发布<通知> **"十四五"规划提出,**要形成以企业为主体.市场为导向.产学研用深度融合的创新体系.建设.完善创新体系始终离不开科研配置和人才资源.只有配置好. ...

  4. 我懵了,居然还有学校还在教 Java 的 Swing

    昨天,有个读者私信我说,"老师正在教 Swing,这个知识点还需要学习吗?" 说句实在话,刚看到这个问题的时候,我是想骂娘的!不是骂读者啊,你懂得,骂学校,骂老师.但我硬是掐着自己 ...

  5. 济南电子机械工程学校计算机专业班主任,济南电子机械工程学校2019级新生报到、军训工作安排通知...

    济南电子机械工程学校2019级新生报到.军训工作安排通知 各位家长朋友.2019级新同学: 为妥善做好2019级新生报到及军训工作,现将学校2019级新生报到.军训工作具体安排如下,请您知悉并遵照执行 ...

  6. 当才华还配不上野心,就静下来学习

    很多不同的文章,都用过这几个文字做题目 就像很多人,都走过同样的路,坐过同样的车,只是旅途的中的风景和到达的终点不一样 (刚到上海拍摄的东方明珠夜景) 400天前的这个时候大概是我最苦逼的日子.   ...

  7. 你竟然还不知道电脑上的F1-F12快捷键的作用

    你竟然还不知道电脑上的F1-F12快捷键的作用 我们常将F1-F12称为功能键,在这些功能键中除了F5在刷新时常用时,大家很少使用其他功能键.快捷键目的是提高效率,"快"指的是速度 ...

  8. 【墨子对战平台】还没连接上墨子推演服务器,再等1秒 解决办法

    运行墨子平台AI开发环境时,如果提示还没连接上墨子推演服务器,再等1秒,可能是服务端的系统配置没有调整到AI训练模式. 解决办法: 1.打开Mozi\MoziServer\bin\ConfigSet. ...

  9. 双11越来越“高大上”,你的工资还配得上它吗?

    编者按:本文来自DT财经,作者:罗遥,36氪经授权发布. 遥想9年前首个"双11",DT君还是学生党+单身狗.那时,天猫还叫"淘宝商城",品牌数量也和现在不可同 ...

最新文章

  1. 自监督3D手部姿态估计方法
  2. Union和Union All到底有什么区别
  3. 使用Suhosin保护PHP应用系统(禁用eval)
  4. discuz登陆首页后提示style_1_commen.css,关于Discuz用户面板必须刷新才能显示登录状态的问题解决办法...
  5. python elif可以单独使用_Celery在python中的单独使用
  6. python里面的循环语句
  7. 在C#中,不安装Oracle客户端如何连接Oracle数据库
  8. 排序 -> 插入排序
  9. java l1 l2缓存,Java 两级缓存框架
  10. lucene-SpanNotQuery和SpanOrQuery交迭与全局跨度
  11. 机器学习面试-Libsvm
  12. csdn中让图片居中
  13. [转载] QT中的connect用法总结
  14. java 前端通过浏览器下载服务器上的文件
  15. 听北大公开课庄明科老师《大学生职业素养提升》第一集:《自我效能感》的笔记
  16. 利用吉洪若夫正则化及其西尔韦斯特方程来修复受损图像
  17. LaaS,PaaS,SaaS介绍
  18. 如何让爆满的C盘腾出 10G空间
  19. Failed to open \EFI\BOOT\MMX64.efi -Not Found
  20. TLS 1.3科普——新特性与协议实现

热门文章

  1. Linux命令学习 ls
  2. appium 处理滑动的方法
  3. ubuntu14.04换一个更快的源
  4. 怎么用代码弹回 UITableView 中左滑出来的删除按钮
  5. [转]网络爬虫(一):抓取网页的含义和URL基本构成
  6. ToString yyyy-MM-dd ,MM 小写的故事。
  7. Python程序设计学习笔记-概述
  8. Markdown 编辑器使用
  9. c语言1234为什么不是常量,C语言学习1
  10. sublime text 3编写C语言或者C++的snippet