C语言自学指南(总觉 光阴不够)

                                                                                      《目录》

 

拥有你的夜晚

比灯光绚烂、比节隆重。

 


自我介绍

我也是从 C 语言自学编程的,一年多了。

个人的学习路线:

C -> 数据结构 -> C++ -> 数学 -> Python -> 爬虫 -> 数据分析  -> C & C++ & Python 联合编程 -> Web安全 -> 底层安全。

自学才一遍,因此不是很深,有时候想深入学习也少了很多知识。

像汇编语言、操作系统、数据库系统原理、计算机组成原理、计算机系统架构没学,我还不知道怎么开始才好。

现在再学习 汇编语言,因为 C语言、汇编语言、数据结构 是底层安全的基础。


这一年自学的感受

在这一年的时间里,接触了很多人,身边也有一些人学习速度极快,而且都是自学的。

看了他们的作品,真的只想说:“NX”,我可能才学会了这个加密算法,那些家伙已经破解了.....

哪怕您很喜欢编程,也会如我一样在这条路上遇到无数问题。

  • 对一个题目,苦思冥想好几天;
  • 看到大佬的博客、代码,不仅思路清晰,功能实现出来了,代码还很简洁、高效,突然有点沮丧、失意;
  • ......

这些问题,我们都会遇到,但我们也会一直学习,也许我们都不是很有毅力。

  • 一个题目一直想,吃饭想、走路想、有时做梦也会梦到,最后解决了您可以想一想那感觉多爽;
  • 其实您看懂了一篇博客或一段代码,不就向大佬迈进了一步么,有好的教程在这里,您应该特别兴奋才对呀。失意了就想一想自己成功时的体验,您能找到那种感觉的;
  • 如果下定决心想超越大佬,不完全是比大佬更努力,因为这只是低层面的竞争,而是首先在见识和格局上要比大佬高,气度要更大(这句话是站在可以每天学习 8-14 小时,才成立的);
  • ......

跑步,其实是通过控制力矩用重力跑步(具体参见《姿势跑法》),不需要身体多么强健,也可以跑完马拉松。

那,支持我们学习编程的动力是什么 ?

  • 不是毅力、不是爱好,而是思维,确切的说是成长性思维。

 

 

那对于固定型思维的人来说,学习这个动作真的有这么困难吗 ??

每⼀个⼈⼀出⽣,其实就都有着强烈的求知欲,如婴⼉,每天都在练习技能。

婴⼉练的并不是普通的技能,⽽是⼈⽣中最难的任务,⽐如⾛路和说话。

可是婴⼉从来不会觉得太难了,也不会担⼼⾃⼰犯错误或者丢脸 !

他们向前爬,试图站起来,摔倒,然后再站起来,就这样跌跌撞撞,直到有⼀天真正站了起来。

在⽗母的欢呼声中,每个⼈,包括婴⼉⾃⼰,都忘记了婴⼉所付出的⼀切努⼒。

可是什么时候,婴⼉开始改变了呢 ?

古⼈的答案是:“⼈⽣识字忧患始”,我倒觉得,与其说是“识字”,不如说是我们开始有能⼒评估⾃⼰的时候,就变得对挑战有畏惧⼼
理,害怕⾃⼰不够聪明,不够有才华。

每一个学习编程的人,一开始可能激情不断,可慢慢的,开始遇到问题。

此时,不要去想自己很笨,弄不懂,而是应该想,怎么做才能进步。

 

实在解不出,就看 IT 发展史、看科技史,推荐《浪潮之巅》啃完您会感到很有收获。

因此不要太注重当前,怕自己表现不好,注意力应该专注于做事的过程或者说是学习的过程。

也不要和别人直接或间接的比较得到自信、自卑等的态度和情绪,切记啊,否则伤人伤己。

 

       纸短 情长。 


学习方法很简单但很实用:

  • 文章、视频、题目一起,C语言课程的大纲参见《C语言小白变怪兽》。
  • 先看文章,再看视频,最后写题,萌新一定要这样,您得深信这是快速、有成效、最合理的学习方法。

最字,只是强调这个学习方法;并不真的有 “最” 字的效果;现在广告上说最字,都违法。

 

C语言学习路线

萌新

 编译器:一年前我学 C 用的是 C4droid(Android编译器),手机随时随地都可以敲代码。

学完所有文章了,试着写一个项目,如贪吃蛇。

自学需要一定的自制力,一定要看完一章写一章的题目,不要跳

不想学了,就去玩。给自己一个长长的空档期(我通常是一个月)。

 

只会基础的语法,不算会 C 语言。

C 语言精巧的设计,需要细细品味。

 

进阶

 

要想精通 C语言,还得定一个平台。

构造平台上的技能,打造稀缺性,我定的是 底层安全。

 

平台

 

C++:

- 文章:C语言中文网的CPP专题

- 视频:王桂林的CPP专题

- 进阶:对象的工作原理、编译器的底层实现,《C++高级主题》、《C++高级主题二

 

我自学到这为止,之后往广度扩展了。

 

自学计算机的期限是 2-3 年,3 年后还没学成,那可能不适合计算机。

以计算机科学为例:

计算机科学家的工作就是把世界上的问题转化为数学问题,再判断是否为可计算问题如果是可以交给工程师,数学要好吧。

既然是计算机的得会写程序吧,编程语言数据结构是程序的基础。

能用最少的付出得到的回报,为什么不用最少的成本呢,您不怕拿不回成本么~

软件是写成了,但计算机资源是有限的,时间上为了能让计算机处理量级数据时高效得学习算法分析和设计、常见算法,空间上因为计算机空间有限,如果程序不够优化,就不能给用户带来良好的体验甚至浪费资源,因此得优化程序,这就需要计算机原理、计算机系统架构,大型软件还得配备网络,因此网络协议也是必备。

为了能达到行业标准,还得花一年的时间练习把之前的知识都沉淀下来,还要定一个平台,自己的研究方向。

如果是人脸识别,需要图像识别知识;

如果是机器翻译,需要自然语言处理;

......

机器学习工程师的工资的确很吸引人。

今天的机器学习算法,要明白其中的原理需要较强的微积分、线性代数、和泛函数分析的基础。

但大学的教育专业分科太细,以至于是

  • 报名计算机科学的,概率统计很菜;
  • 报名统计的或有非常强统计背景的信息处理专业的,又写不出优质的程序;
  • 报名软件工程的,数学比不上别的工程专业的;
  • ......

 

学习的目的不能是为了“解除焦虑”,而是为了解决您真正遇到的问题。

很多人莫名其妙地焦虑,然后学了一些热门的新知,一瞬间获得那种 “哇,我懂了,我了解了新技术”的廉价快感,但是,这种快感来得快也去得快,焦虑并没有消除,甚至因为知道的东西多了更焦虑了。

学习的目的应该集中在解决问题,并且为了解决问题进行深度思考,直到问题解决,其实没这一年没打算学这么多,只想学好C/C++、数据结构,至于为什么学了别的,当时是被爬虫的广告冲昏了头,没错是冲昏了头。

 


圈子

系统的学习离不开讨论,我想从小学到大学大家应该深有体会。

我把群里 有博客\出过的书 的人挑出来了,Group-Q:827074745。

  嘿,我是第 9 个,Q群昵称是:小闲鱼

  这些小饼干小安文小闲鱼的。

  一看就是妹子取的-----英语专八、法语 B2、自学了C语言 ,最近在考经济师,以后想当科学家、一直很有规划的梳子(群昵称:小小白)。

  评霖这,还改了博客地址,还说自己是开发工人!

  ......

  这家伙是 i春秋 网络安全方面的讲师,虽然只是初级,但还是很厉害的。

  我刚学会 DES/RSA 算法,有一个家伙(Q群昵称:张吊龙)就破解了 AES 算法,还想对某个社交软件搞事情。

  这些家伙现在基本不发信息,以前聊的挺多,我也不知道他们还看这个群么,因为准备高考后我就没在群里说话了。

 

    虽然大多不是科班出生,但只要思想没有被束缚、学习更加主动且积极的面对问题(成长型思维),在每一次小成功中积累,让量变引发质变,我们也可能成为自己想成为的人。

    一些人对人生很认真,也许会把 成长型思维 运用在各种纬度上,比如 恋爱。

    以此判断对方有木有 成长型思维 ,继而确定 OK 不 OK。

    只是陈述下,没啥意思,不着一字而尽得风流(评论得挨批评)~

    总之,对爱情保持一种严肃性。


    很多人说做 IT 是吃青春饭,从现象上看,确实如此。这里面很重要的原因在于,很多人在学习计算机时,以为自己所学的就是热门,自己就是中心,但其实只是掌握了一种服务于他人的工具而已。

    因为很多人学了就只会操作这个工具(会写代码),而操作它做什么,则完全需要别人下命令。

    如果一个人只会使用编程这个工具,很快就会被更年轻的,更会操作工具,而且掌握了新工具的人取代。

    因此,懂工具没有什么了不起的,我们得跨界,主动融合现有产业和计算机技术。

    打造一门自己的手艺吧,利用计算机帮助自己工作,工作时间变长,经验越多也就越来越不可代替!!!

 

  计算机思维极其重要,虽然我翻译水平低但还是想翻译《Computational Thinking》,有兴趣可以一起,应该会很有收获。

 

 


自学的准备

      想要自学,首先得会“自教”。选择什么样的教材?制定什么样的教学目标 ??

      您,得有点自主能力才行。

      即,有自信心和自我管理能力 或是 或者是热情和热爱,如果没有的话,现在的您还不适合自学。

      首先得有自信,因为人在面对威胁的时候会让身体和头脑都进入封闭状态,那是无法学习新东西的,您面对学习材料得有足够信心才行。 

      其次,您得有自我管理的能力,这些能力包括现代人很爱说的意志力、自控力、时间管理等等,还包括组织、计划和安排自己的行动的能力,以及跟人交流的能力。 

      您想学什么东西,能不能自己调查一下用哪本书,把相关的材料都准备好,自己弄个文件夹组织所有的学习资料和练习内容,制定一个学习计划,安排好每天学习的时间段,最好还能把学习成果形成一份报告。

      您能不能养成良好的习惯,该学的时候就学,从不拖延呢 ??

      您能不能做自己的教练,经常考核自己的水平、监测自己的精神和身体状态呢 ??

    问:  自学对我来说最大的障碍来自于学习过程中的孤独感,有时自学能进入一种心流状态,但更多的时候是那种孤独和冷的感觉,这种感觉会明显干扰我自学的定力。请问这是一种心智不成熟的表现吗? 

     答:这种感觉挺正常。

     我听说现在医院有个说法,说患者有 “不疼的权利”。

     但是很遗憾,自学者没有不疼的权利。我们应该把疼痛作为必要的代价。

     “热爱”能给您提供一个最初的动力,但是您在学习的途中必然要有很多艰苦的时刻。

     高手不是哄大的,这些时刻能把那些懦弱的、不行的人给淘汰掉。

     不过有些心法可以帮您战胜这个孤独和冷的感觉。

     我以前听说一个有意思的建议是想象您是一个背负着国仇家恨的人。

     您为了复仇必须勤学苦练,您的目标是战胜敌人,拿回属于自己的东西。

     每当您感到孤独的时候,您可以想像,您的敌人正在干什么!

     您正在做的是憋个大招,将来让他目瞪口呆……正所谓 “小成功需要朋友,大成功需要敌人”。 

     要有个开放的心态,不要问有没有用 —— 您根本不知道什么东西在什么情况下会有用 —— 应该问有没有趣味。

     这就好像交朋友一样,我们交朋友是因为意气相投,不是为了互相利用。

     练腰的话,很简单。

     半桥式:

  1. 平躺在地面上,双腿弯曲,双脚踩在地面上,两只脚打开一肩宽,手心向下扶住地面。
  2. 摆好姿势后,臀部收紧,尾骨离开地面尽量向上抬起,同时双手在背后十指交叉抓握,手臂伸直,肩胛骨收紧。
  3. 呼吸完5次后,再把脚跟抬起来,尽可能地抬高,保持肩、背、腰、臀、腿的收紧,直到坚持不住了再慢慢放下来。
  4. 每次都务必练习到有明显温热的感觉,这正是肝经和肾经的气血被激发起来的表现。 

     参考养生:http://www.360doc.com/content/16/1009/18/1367418_597119676.shtml


       而像数学和编程这样的项目特别适合自学,因为会不会、做得对不对,您立即就能知道。

       习题答案和计算机运行结果就是给您的反馈。            

       您的信心和水平只能在每一次成功解题和程序成功运行中提高。

       真正的黑客不可能去专门报个什么班来学习一种新出的编程语言。

       黑客都是在实践中学习,是先有一个什么需求,现用现学。

       传说在腾讯的QQ —— 以前叫OICQ —— 刚刚兴起时代,马化腾有一次突然想到需要有点网络安全管理,就让一个工程师设计一套安全系统。

       工程师的解决办法就是现用现学 —— 过了几周马化腾去看他的进展,发现他正在阅读一本有关网络安全的教材的……

 “第一章:什么叫网络安全”。

       现用现学听起来有点不靠谱,但这才是最原始的学习冲动和最实在的学习行为。

       我要用,我不会,那我就学呗 ??

       一个需要啥就能学啥,学啥就能会啥的人,必定是对生活有强烈的掌控感,无所畏惧,游刃有余,宠辱不惊。

       这比任何学历证书都更令人尊敬,比财务自由更令人羡慕。

       您,敢不敢给自己一个这样的要求。

       Mastery 的境界,是哪个大学、哪个老师都教不出来的,自学是您唯一的途径。

       这个词通常翻译成 “精通”,但是 TA 可不是一般意义上的精通;达到 Mastery,意味着您对这个领域具有统治力,是权威中的权威。

 

       自学是童子功,一旦上路就会不断加速 。

  •    遇到困难会提合适的问题
  •    提出问题知道哪里找素材
  •    找到素材并内化
  •    解决当下的困难

        如此循环往复,什么 “明智的推理”,什么 “精准地搜索”,什么 “个性化的知识体系”,什么 “学以致用”,甚至什么 “资源统合” 和 “领导力” ,统统不在话下!

       随着未来生物科学的发展,人类的寿命超过120岁,而且也会健康的活着,可能就是这几十年内实现的事。

       当您的一生长达百岁时,您必须依靠金融和房产这种被动收入,您后半生的人生安排都要被郑重地重新考虑。

       但大多数人还没有意识到,要为此作准备。

       在追求进步的道路上,每年只是 20% 的人掉队,如果您能坚持 5 年,自然而然就比 70% 的人强了。

       诺贝尔奖得主约瑟夫·斯蒂格利茨认为:学习,是持续增长与发展的关键动力。

       学习就如滚雪球,只要做了,就能利滚利;至于学了有没有用,那就看 luck 了。

       所谓终身学习,是不断超越自己,超越别人,而不是比谁的学位高,谁的学位多,谁上了多少门课,谁多读几本书。搞不清这一点,任何在学业上的成就,只是终点不是起点。

       任何是终点的事情,就不可能有未来。

  • 53
    点赞
  • 201
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值