准大二生的暑期自学安排

【来信】
  我是一名准大二生,信息安全(网络安全)专业。想利用暑假时间学一些知识,但是不知道该学些什么,该怎么学。我大一学了c语言和c++,上大学之前没有接触过编程,也不了解计算机专业。经过一年时间的学习,我发现仅仅靠学校教的课来学习是远远不够的,我发现身边有很多同学初中就开始接触编程,现在已经会几种语言并且会做一些项目,我感觉到差距很大,所以我想利用暑假好好提升自己的编程实践能力。但是在我大一学习过程中,我感觉到编程很难,要记很多语法和规则,常常忘记,兴趣也不大,可能因为受挫的原因或者没有领会到计算机专业的精髓。所以想向老师请教几个问题:
  1.大学应该如何利用课余时间提高自身编程算法能力和动手实践能力;
  2.应该从哪学起,比如Java和python,应该先学哪个?通过什么途径或者有效方法去学习;
  3.应该用什么编译器去编程,或者说是根据编程语言不同而不同;(因为我一直都是用dev-C++)
  4.大学课程中那些课比较重要,比如计算机组成系统、原理、数据结构、汇编语言、Linux系统等,我是不是应该先了解计算机再学习效果会更好;
  在CSDN社区上看到老师经常为同学解惑,于是想咨询您一些困惑,如果老师能在百忙之中抽出一点时间为我解惑,将不胜感激,谢谢老师!

【回复】
  针对你所谈的,我说说我的看法。
  “仅仅靠学校教的课来学习是远远不够的”,我想更正一下是,学这些课还是差不多够的,但学到期末考试要求的那个程度,是不够。个中原因不多说,需要能醒悟的学生做的是,每门课要自己加实践,学到能实践的程度。你想把暑假充分利用好,就是一个好想法。至于其他同学大学前有基础,于你而言不必惊慌,你把学法调对了,很快能赶上,这是一个马拉松项目,一步不停,但也不用着急。
  你感觉编程难,还常忘记,我大概猜着你的问题,就是实践不够。实践够的话,这些东西无须记,自然就记住了。当你能不断地通过实践,运行出程序来,兴趣也自然会来。兴趣需要通过投入去培养。
  综合你提供的信息和提出的问题,给你下面的建议:
  1. 暑假优先用学过的C和C++做实践。你跟着老师上课时实践量不够,假期补上。题目来源可以自己找习题集,也可以用我前几年给我的学生用过的方案,见https://blog.csdn.net/sxhelijian/article/details/8001601
  2. 计算机组成系统、数据结构、汇编语言、Linux系统等课程以后会开课的,到时候自己随老师教的进度学,同步自主学习,学更深些,真正理解原理,再保证老老实实多做实践,会有收获。反而是,当下不把编简单程序的问题解决好,将来学这些课会很难受。
  3. 如果有精力,实在想再学点什么,Java、python、数据结构三者均可,不必追求出手就学好,浅尝亦可,作为高年级正式学习之前的体验。可以利用各种站点中的视频资源、MOOC学,但一定要同步地配上自己的实践。
  4. 不必纠结开发环境,用多了这些不是大问题。带着玩的心态,可以体会各种环境,但状态好时,以能多做些编程题为首要保证的事。
  欣赏你能有假期自主学习的意识,也祝你学习顺利!

【再来信】
  真的非常感谢您的回信,让我在迷茫中抓住了方向,倍受感动。我其实来自天津理工大学19级计算机科学与工程学院信息安全专业。
  我昨晚上查了一些资料,发现对于Java和python来说,我会选择学习Java,因为它和C++一样都是面向对象编程,可能在我学习Java的过程中也能对C++加深理解和应用,同时Java的应用非常广,也相当重要。然后我本来就打算暑假跟着B站的Java视频学习,而不打算再深入学习C++了,因为我听说C和C++一般应用在后端,且因为其代码繁琐,所以应用不广。
  但是我是现在才看到您的回信,真的非常抱歉这么晚回复您。看了您的建议之后,真的非常非常感谢老师,于我而言是非常难得的,因为我现在还是挺不知所措的,不知道应该去学什么,如何学得有用。所以我现在陷于到底继续学习c++还是开始学习Java,希望老师您能答复我一下。
  然后关于实践,感谢老师给的建议。我反思了一下自己,也许真的缺乏耐心,同时实践也不多,平时一般只有通过上机课做实验和老师布置的课后习题来巩固知识。我本来是想加入老师团队一起去做项目的,结果落选了。所以目前我觉得还是得先把自己所学的知识运用起来;
  关于数据结构这些课,我会按照老师的建议来,真的非常感谢您!
  祝您生活愉快,工作顺利!

【再回复】
  在你的选择“障碍”中,主要的标准是“有用”。成年人,包括你当前在法律意义上已经是成年人,而认知也接近成年的阶段而言,学习一定是要满足当下“用”的需求,这是一个正常且值得坚持的原则。
  我提一个问题:在若干年后,C++和Java都可能退出历史舞台,前端、后端这样的体系都可能会发生变化。到那个时候,你再回头时,如何评价当下在C++和Java方面的纠结?到那个时候,你会随着技术变化学习到新的技术,甚至你就是新技术的创造者,你如何评价现在要费时耗神学习的C++和Java?
  就从知识外在形态看,现在所学的一切,都会过时,都会没用的。学了能用多长时间?现在已经不只是IT圈变化这么快了,几乎所有专业所学,不足以支持学习者度过职业生涯。
  在大学这个阶段,任何一门课的学习,在现时的“实用”成份,但其“基础”成份更有意义。越是基础的,如数学、物理、算法,越觉得无从把握,越觉得用不上,其“用”的周期会越长,效力也会越大,日后你会知道,而语言、具体的技术,现在就能看清其实用的,则是在技术进步中快速更新。
  那当下学习的意义何在?C++也好,Java也好,都是学得专业的思维方式,学得做专业之事的业内规则的载体。不管选择学什么,都是“椟”,你要的思维之“珠”因为不可“言传”,如果不是经过实践的检验,甚至没有“意会”的机会。语言、平台都是当前学习过程中的一个载体,实在不必纠结。
  至于选哪一个,无所谓了。就选当下更符合你的口味的。你也将终发现,过3个月你会说“学会C++”了,和3年后,10年后说出的“学会C++”的内涵完全不同——不管学什么,不管什么人学,初时甚至很多事情都没有感知到的能力。所以,不管你学哪一个,都不会有“学完”的时候。随着时间,会在应用需求的推动下,不断地再回首,一层一层地剥去外壳,逐渐接近核心的珍珠。
  关键不是选哪个,关键是,选了以后怎么学。怎么学?学习、实践紧密交织,学活的知识,用实践开道去学,你在我博客中会找到很多指导。
  如果我有倾向,会倾向于你优先在C++再投入一些。Java你在后面会学的,可能会多次回头看。因为C++更底层,有不少学Java中体会不到的东西,很值得深入一下。
  就说这些,相信你会安排好。

【再来信】
  读完之后深受益处。我可能太过着急或者太焦虑了,也许我应该重视的是如何吃透一门语言,而不应该纠结学多少门有用的语言。我相信,如果有学会一门语言的逻辑基础,其他语言也会学得很快。我应该去学会如何学懂学好每一门语言的方法,就比如写数学题一样。
  感谢老师,我会利用您的博客里的资源在暑假里进行学习的。同时也感谢老师的点拨,大学课程里看似基础“没用”的东西,其实都在“默默”发挥作用。
  最后,再一次感谢老师您在百忙之中抽空回复我!
  祝您生活愉快!

猜你喜欢

转载自blog.csdn.net/sxhelijian/article/details/107116667