我写代码那些年--开始--自学之路

风调雨顺_735b · · 559 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

寻路准备。

决定转行IT后,接下来的事儿,就是学编程了,那时候,对计算机的使用,仅限于日常办公一类的。对于编程写代码,可以说是很迷茫,怎么搞?从哪里开始?如何下手?一头雾水。左思右想后,当时我想到了一种取巧的方式学习,我想:我不懂这个,就没必要瞎折腾,网上查也可能事倍功半,走没必要的弯路只是浪费时间,于是我就找了几个关系好的计算机学院的同学,让他们帮我出主意,该怎么学,推荐我一些书,我自己对着练。当时我让他们告诉我怎么学还不算完,还让他们帮我推荐一些书单,列出书的名字,出版社,作者。这样我比较容易买,而且,让他们帮我找了很多他们的教材给我。经过好几位计科院的同学的推荐参考,结合我自己查的资料,以及我自己的学习习惯(我对学习的态度是,万变不离其宗,学习东西得把基础学牢靠,这样才能厚积薄发),得出的结论是这样的:先学数学知识(高等数学,线性代数,概率论和数理统计,离散数学),其中前三门数学大一大二都学过,离散数学他们强调了很重要,他们告诉我说,他们老师说:程序=数据结构+算法。他们说,编程牛的人都是数学家。
自学开始。
杂乱乱学。
经过他们的指导,我学习的流程是这样的:那一年我从九月开始一直到十月底,把操作系统,计算机网络,数据库,编译原理,还有他们给我的一大堆教材,硬着头皮看了一遍,很晕,感觉啥也看不懂。
离散数学。
十一月开始学离散数学,学到第二年一月底,课后题也会做完,这个没啥说的,跟大学学数学一样。
汇编语言(ASM)
二月四号开始学汇编语言(ASM),学到四月二十四,学习用的那本汇编书是自己网上进行大量查询工作后买的,然后看一点写一点代码,现在还记得当时一整个周六的上午,就在做一个书里面的课后题,二进制十六进制十进制之间的转换。因为没人教,当时为了运行书中的汇编代码,查资料下软件搞到想吐,好在坚持下来了,最终把写汇编代码的模拟开发环境配置好了,接下来就是按部就班的学习了,硬着头皮啃,看懂一节就把当节的汇编代码在电脑上一个字母一个字母的码进去,运行,调试,最终做到每一个程序运行结果跟书中一致,可能你看到这里觉得平平淡淡,但是你实际做了,才知道里面有多大的工作量。运行完每一节的汇编代码后,再把书中当节的课后题做了,如果课后题是编程题,就自己先在纸上写代码,然后敲到机器里面运行,这点很痛苦,有的课后题怎么做都运行不出来。这两个多月,按着:看懂一节——手动码这节中的代码并运行正确——做课后题,这样的流程,学到三月底,把汇编语言这本书第一遍学完了,当时心里窃喜,感觉很不可思议,本来想接着进行下面的学习,但是觉得不踏实,觉得很多还不理解,然后硬着头皮进行第二遍学习,跟第一遍一模一样的方式,码书中的代码也是一个个字母重新敲重新运行,绝不拷贝,做课后题也是,第一遍怎么也做不对的一些题,第二遍莫名其妙的却做对了,第二遍进行的很快,四月中旬就学完了,学完后,觉得不过瘾,书中还有很多不理解的,于是,学了第三遍,你可能觉得我有病,但是确实学了第三遍,跟学第一遍一样,奇怪的是,码代码更快了,码完后运行代码正确率高了,第三遍只只用了一个多星期就写完了,第三遍学完后,书里面除了少部分课后习题,基本上都理解了。到第三遍结束,你猜最大的感觉是啥?你可能想不到。我当时由衷的感谢这本书的作者,打心底尊敬他感谢他,到今天想起来依旧是这样,当初第三遍学完了感觉不久后还会再回头看看学学,而直到今天,也没再学汇编,不过那时候打下的汇编基础,到现在还受用不尽。比如对内存的理解,对字节位的理解,对调用的理解,特别是对反汇编和debug技能特别有帮助,debug能力,是一个程序员的重要标志,在那之后的技术学习,我基本是按着汇编语言的学习套路:踏踏实实打基础,硬着头皮啃,啃下来了就会发现整个过程就是提高的过程。现在大部分的IT人,都不怎么玩汇编了。如果你想自己学汇编程序(ASM),我觉得你必要跟我当初一样,自己瞎查资料,然后总结分析哪个资料靠谱哪个书好,编码开发环境怎么搭建需要哪些软件,汇编语言跟其他语言不一样,编译器软件也不大一样,没必要在这里独自探索,对汇编感兴趣又想学的,联系我就行了(IT996007),我把相关软件和电子书发给你就可以了,当然,建议买回那本书,我个人最喜欢拿着纸质书学技术。学汇编那两个多月多,都是晚上的零碎时间,比如有时候学半小时,有时候学一两个小时,还有周末,周末两天时间能学很多,时间也连贯,效果最好,平时晚上零碎时间学之前还得快速看前一两天的内容熟悉下。
C语言。
汇编语言(ASM)学完后,接下来学的是C语言,当时他们给我推荐的是他们的大学教材,你可能猜到了,清华大学谭浩强的——C程序设计,当时查了强哥的名头,心里觉得强哥是个很牛的人,但是后来才发现,盛名之下。。。,举个例子,后来跳槽,经常会碰到一些做面试题中面试题出错的情况,一看那错误点,就知道是强哥的弟子,有一次我实在受不了了,我点着其中一个错误的地方,就跟面试官说,你们大学用的是不是谭浩强的教材,他们回答,不过表情已经说明了。如果你打算学C语言,千万别用这本书,现在回想起来我真庆幸当时没用这本书,当时我拿着这本书看了一节,总觉得这本书哪里不对,往后整体翻翻,更觉得不喜欢,然后我就买了我自己网上查的那本书,买回来后,我严格按着学习汇编语言(ASM)的方法,从四月底一直学到六月中上旬,第一遍用的时间比较长,学到五月底才学玩,看懂一节就手动敲一节的代码运行正确,课后题尽量做,第二遍快一些,六月初就学完了,学习方法跟第一遍一样,到了学习第三遍就更快了,只用了一个周,三遍的学习方法都一样,学习C语言的过程中,才深刻体会到,前一阶段学汇编的时候打下的基础有多重要,把C语言学完后,我当时就想出去找工作,现在想想那时候真的太轻狂了,如果当时出去找工作,很可能找不到,但是也不好说。ps:如果你正在或者正想学C语言,还在找教材阶段,你联系我吧,咱一起沟通,我给你分享我的资料,联系我就行了(IT996007)。
C++。
六月上旬我把C语言学完后,紧接着就是学C++了,当时正好赶上端午节,我趁着端午节假期,加上之后的几天连同周末,整整七天时间,每天吃完早饭后,学几个小时,到了中午吃饭午休,下午再学几个小时,晚上吃饭,然后再学到晚上九点多或者十点多,然后睡觉,就这样持续了整整一周,把C++主体学完了,那本书有不到二十章,七百页左右,每天平均学了三章,你可能觉得我吹牛,也可能觉得不可能,不过这是真的,当时一起住的还有三个人,他们眼看着我这么干的,等我学完了他们也惊呆了,更让他们惊呆的是,我学完后立马投简历出去找C++的工作了,而且还找到了,当时的薪资还凑合。当时是八月份入职的。现在回头看,当时就是时间连贯,不分昼夜的学,精力高度集中,所以才那么快,不过学的效果现在看应该是很浅,STL部分,只是知道那样,内部机制和特性完全不知道,入职使用STL的时候,哪哪都不会,都得硬查硬写,反复调试,实战跟对着书学完全不一样,当时入职后,前大半个月很懵逼,等把第一个分配给我的任务做完后,才有点感觉,找到了一点感觉后,才惊魂未定的有点信心了,那会儿做完了第一个任务,才觉得转行算是转过来了,等后续博客我会单独写一个转行第一次的面试履历。
工作后
第一份工作虽然是越来越熟悉越来越顺利的做下去了,但是工作中啥都觉得是新的第一次接触,觉得同事们会的都可多,自己要学的也很多,第一份编程工作,下班了我也不敢懈怠,先是把C++学了第二遍第三遍(当时学了第一遍就去找工作了),然后根据之前查的资料,学了linux及其相关的东西,现在觉得当初开始学编程之前,我自己查资料那个痛苦的阶段,没有白费,从啥都不懂两眼抹黑开始一点点查,一点点看查到的资料琢磨整理,在自己脑子里捋出编程需要的知识框架,然后再根据知识框架一点点找框架中每一个部分的资料和经典书籍,现在看来当时的套路是对的,到后来一点点的完善自己的知识框架,等把知识框架完善后,已经是好些年了。如果你想或者正在自学,咱们不妨交流一下,可以给你分享我的资料,上面有我的v号。一句话,我觉得编程的三大基石:操作系统,网络,算法&数据结构。当然编程语言是前提(毫无疑问是C语言或者C++,C++有的叫CPP,如果你说汇编语言asm也不错), 把这三块基本搞熟了后,你会发现,学其他的东西,万变不离其宗,而且学起来很快很简单。随着工作的时间推移,工作中用到的技术越来越多,比如,学golang我用了四天,pyhthon我用了两天,linux shell现学现卖,几个小时,linux中的awk 和 sed也是几个小时。jave和C#也是直接改代码。其他的比如mongo,redis,k8s, docker等等这些眼花缭乱的web类的工具和技术,基本上是现学现卖,深入研究也不费事儿。前提是你的基础打下了。
尾声:
说这么多,总结一下,我的自学的路,走了一些弯路,所幸的是初始阶段学习汇编和C/C++这三部分,正确无比,为后续的学习网络,操作系统,算法打下了最基本的基础,可能你会问,学其他语言,我再学网络,操作系统,算法就不行吗?行,这里不抬杠,我就简单罗列一下你看看就知道了:unix/Linux系统是C语言和汇编语言写的,网络方面 BSD tcp/ip(有的人叫socket)用C语言实现的,计算机程序设计艺术里面的代码是汇编。。。,C语言写的东西,到现在四五十年了还在很健壮性能很好的跑着。联系我就行了(IT996007),欢迎指正和相互分享心得分享资料,说实话,手里的资料太多了。。。


有疑问加站长微信联系(非本文作者)

本文来自:简书

感谢作者:风调雨顺_735b

查看原文:我写代码那些年--开始--自学之路

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

559 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传