`

小小程序员的学习计划

 
阅读更多

追过很多新技术,迷茫于还有太多东西要学,有些找不到方向、不知所措。常在一个叫酷壳的网站上转悠,渐渐想明白了,其实学习技术也像看电影看书一样,要看就看经典的。我们的生命如此短暂,作为程序员的职业生涯可能会更短。与其追逐各种新潮的技术,不如把有限的精力投入到经典的技术之中。

平时酷爱看各种技术书籍,但缺乏系统的梳理。读书感悟都散落在每本书的字里行间和空白处。于是借着准备从最经典、最基础知识学习的机会,开始由底向上,系统地整理以前所学。


一、计算机数学

大学时认真学习了编程相关的课程,但一些基础课程由于不知道跟编程是什么联系所以失去了兴趣、没有学好。工作了两年,才慢慢发觉大学时一些课程的用处:微积分(分析算法性能时一些求极限)、线性代数(矩阵在三维转换中的作用)、概率统计、编译原理(理解源代码是如何编译、链接,最后被操作系统载入执行的)。现在虽然没有大块时间(其实也没必要)重新复习这些课程,但计算机相关的数学知识基本可以包含在下面两本书中:







可以认真学习这这两本书籍。如果阅读过程中发现不懂的,可以去翻阅大学课程中更基础的数学书。这样不会迷失在过多的理论书籍之中。推荐本微积分的课外读物,齐民友的《重温微积分》,看了一点感觉还不错。


二、C语言

学习过计算机的基础数学知识后,可以先不急于去看数据结构和算法。先静下心来,仔细学好C语言。相信对C语言更深入的学习,会加深之后对数据结构和算法知识的理解。













用心做了《C程序设计语言》中的小习题,算是对C语言编程的热身了。这些书籍都很经典(据说 :),可以先仔细看一遍,以后再回过头来重读,相信到时会有更多的感悟。


三、数据结构与算法

掌握了数学基础知识,也学习了C语言,接下来当然就开始学习编程最核心的部分-数据结构和算法。《算法导论》和《计算机程序设计艺术》三卷当然很经典,但拜读之前可以先学习一些更加入门的教材。










要多做题,不仅有利于接下来计算机系统的学习,还对日后找工作、做笔试题大有裨益。尽管有些枯燥,但若能坚持下来,绝对能提高自己的分析设计能力。


四、计算机系统

又是有些理论的东西,其实也可以先跳过这部分,直接学习下面更为具体的技术。但要想进一步提高自己,早晚都要回过头来系统的学习这些知识。高手都是有很强的系统性知识嘛~

概述




汇编语言







操作系统







数据库

《数据库系统导论》




编译原理




网络







从大学到现在,只有两次感觉自己突破了瓶颈大幅度提高。一次是在一个项目中用了大量的T-SQL特性,解决了很多实际问题,因而对SQL有了更深的理解。另一次就是对汇编语言及操作系统知识的学习。一直使用着Java,对底层系统的知识还停留在大学课堂上。今年初,先读了《深入理解计算机系统》有了个大概了解,之后学习了汇编语言那两本书,紧接着就开始啃那本《自己动手实现操作系统》。虽然没有读完,但这一路走下来,两三个月内对汇编语言的基本语法、80X86 CPU结构、寻址方式、实模式和保护模式、进程信息块、页等等曾经课堂上的概念都有了实实在在的了解。也明白了那句话:真正的程序员是应该懂底层知识的。知道我们每天对着编程的机器是怎样运转的,才会明白对编程的本质。


五、具体平台开发

终于可以在具体平台上开始编程实践了。Windows平台有很多要学的,微软的东西更新换代很快(追的好累,让人又爱又恨),但一定要把握重点。Windows平台上主要学习图形界面程序的结构,界面是怎样布局的,消息是怎样传递的等等。还有一些比较经典的技术像MFC、COM等,也可以简单学习一下。







《COM本质论》




重头戏是Unix/Linux平台的学习!Unix/Linux平台上有太多优秀的代码值得我们阅读学习。在开始学习Linux平台上编程前,可以先装个Ubuntu虚拟机对Linux有个简单了解。掌握基本的命令,会写简单的Makefile和Shell脚本,会用GCC和GDB编译调试C程序。







还有本个人认为不错的入门书《Linux C编程一站式学习》。


六、高级语言

最后才是Java和.Net的学习。有了前面的学习过程,此时再学习高级语言应该是轻车熟路了。可惜的是大学时却本末倒置了,学了C++和一些基础课程后都没怎么派上用场,之后就一直用Java开发,导致底层知识一点都不牢固真实遗憾~
高级语言的API、框架很多很多,当然书也很多了,就不推荐了。


N、系统内核

Linux内核源码很多,里面包含很多算法和设计,学习起来真的很难。但挑重点的学习了解一下,对提高编程水平还是有很大帮助的。比如操作系统怎样通过Loader加载,进程的切换和调度等。学习Linux四库全书:《Linux内核设计与分析》、《深入理解Linux内核》、《Linux内核源代码情景分析》、《Linux设备驱动开发》。再推荐一本《Orange’s 一个操作系统的实现》。最重要的一点:Readthefuckingsourcecode!

N年寒窗苦读后,也许可以到达这个阶段,也许吧~

看到累了也别忘了放松一下,读一些小散文:
《代码之美》、《Java夜未眠》、《Unix编程艺术》、《疯狂的程序员》...

好了,列了这么长的学习计划勉励自己,希望对看到此贴的人会有些许帮助。

分享到:
评论

相关推荐

    安卓开发-Vibrator手机震动服务 - 小小程序员 - 博客频道 - CSDN.zip

    这篇博客文章,"安卓开发-Vibrator手机震动服务 - 小小程序员 - 博客频道 - CSDN"深入探讨了如何在Android应用中实现手机震动功能。通过阅读这篇文章,开发者可以学习到以下关键知识点: 1. **Vibrator类**:...

    摇一摇&重力传感器 Vibrator手机震动服务 - 小小程序员 - 博客频道 - CSDN(程序源码).rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    Ray的python编程练习题集,记录日常编程练习,见证一个小小“程序员”的成长

    Ray的python编程练习题集,记录日常编程练习,见证一个小小“程序员”的成长。本习题集记录了Ray学习python编程以来练习过和准备练习的习题, 习题素材来源于如下几方面:CSIA python历年的考级试卷中的编程题,这...

    J2ME开发学习资料大全

    学东西,靠的是兴趣和努力,经过几个月的时间,从一个手机开发的愣头青,摇身一变成了可以自主开发一些实用的小软件和耐玩的小游戏的手机小小程序员。这就是我。 秉着共享原则,我把收集到得这些学习资料,发出来给...

    程序员笑话大全.docx

    2. 编程学习路径:描述中的读书历程反映了程序员从基础到高级,再到理论与实践结合的学习过程。从基础语言到高级编程,再到编程哲学,最后可能因为长时间编程导致的身体问题(如颈椎病)而关注健康。 3. 技术误解:...

    《卓有成效的程序员》 迷你书

    有效的时间管理是程序员提高生产力的关键,它涉及到任务分解、计划制定以及避免时间浪费。 2. **代码质量与可维护性**:强调编写清晰、可读性强的代码,以及遵循最佳实践的重要性。高质量的代码不仅易于他人理解,...

    献给所有想当程序员的朋友

    有时候,一个小小的语法错误就可能让你的程序无法运行;有时候,复杂的逻辑问题会让你头疼不已。但正是这些问题,让我们在解决它们之后获得了巨大的满足感和成就感。每解决一个问题,我们的技术水平就会提升一个新的...

    NET程序员面试秘笈

    《NET程序员面试秘笈》是一本专门为.NET程序员准备的面试指南,由张云翯编著。这本书涵盖了.NET面试中可能出现的各类常见问题,旨在帮助应聘者...书中的完整书签目录将帮助读者快速定位到所需的主题,方便查阅和学习。

    程序员口号大全.docx

    程序员的工作往往涉及到严谨的逻辑思维、编程语言的学习和应用,以及不断解决各种bug。在这些口号中,我们可以看到: 1. 程序员在日常工作中需要具备高度的专注力,甚至在路边休息时也能发现代码中的错误,如乞丐...

    ASP.NET程序员的菜谱

    书中,作者不吝分享烹饪的乐趣,鼓励程序员们在忙碌的生活中找到自己的乐趣,通过学习烹饪来丰富个人生活,提高生活质量。程序员在面对计算机和键盘时是孤独的,而烹饪却是一种能够与人分享的艺术。作者指出,掌握...

    易语言小小计算器源码.rar

    总之,易语言小小计算器源码是一个很好的学习资源,它展示了易语言的基本编程概念和实践应用。通过研究和实践,我们可以深入理解易语言的编程模型,从而进一步提高我们的编程技能。无论是初学者还是有经验的程序员,...

    学习单片机小小帮助完整PPT.ppt

    本文将依据“学习单片机小小帮助完整PPT”的概要内容,详细探讨单片机指令系统、寻址方式和程序控制等基础知识,为初学者提供一个清晰的学习路径。 首先,单片机的指令系统是整个学习过程的基石。指令系统由一系列...

    《小小的船》探究型学习设计方案2.pdf

    很抱歉,根据您提供的信息,“《小小的船》探究型学习设计方案2.pdf”似乎与IT行业专业知识不直接相关。这个标题更符合教育或儿童文学领域的学习资源,而不是IT知识。探究型学习通常指的是跨学科的学习方法,鼓励...

    小小冒险岛的语言源码.rar

    《小小冒险岛》是一款基于C语言开发的冒险游戏,它为初学者提供了一个学习和实践编程的优秀平台。游戏的设计灵感来源于经典的冒险岛系列,旨在让玩家体验到类似的游戏乐趣,同时通过源代码,开发者可以深入理解游戏...

    我是一只IT小小鸟

    《我是一只IT小小鸟》这本书通过叙述IT从业者的早期经历和心得,为那些在职业道路上感到迷茫的程序员们指明了方向,提供了一盏明灯。 书中集合了应届毕业生和经验丰富的IT人员的真实故事,他们不约而同地分享了关于...

    程序员英文简历模板—单页单色风格97.zip

    最后,不要忘记检查拼写和语法错误,一个小小的错误可能就会对您的专业形象造成负面影响。可以请朋友或同事帮忙校对,或者使用在线工具进行检查。 总的来说,"程序员英文简历模板—单页单色风格97.zip" 提供了一个...

    高级开发员面试宝典之谈程序员如何修练英语.docx

    英语能力对程序员的重要性和提高英语能力的方法 程序员对英语能力的重视度和能力要求应该是在各行各业中排在比较靠前的这样说吧,英语程度的好坏直接...只有通过不断的学习和实践,才能提高英语能力,提高技术能力。

    程序员简历模板19篇.docx

    8. **个人优势**:描述你的个人特质,如良好的学习能力、逻辑思维、团队合作精神、目标导向和毅力。 9. **自我评价**:简述个人自传,表达对工作的热情和期待,以及如何为公司带来价值。 在撰写简历时,务必确保...

    Android高薪之路:Android程序员面试宝典

    在Android开发领域,成为一名高薪的程序员并非易事,它需要深入理解系统底层运作、熟练掌握各种开发工具、以及具备良好的编程实践。本篇将基于"Android高薪之路:Android程序员面试宝典"这一主题,深入探讨Android...

    JAVA的小小程序

    在Java编程领域,"JAVA的小小程序"这个标题可能指的是一系列简单而实用的代码示例,用于学习和实践基础到进阶的Java编程概念。这些小程序可能是为了帮助开发者巩固Java语法、理解面向对象编程思想、熟悉类库使用,...

Global site tag (gtag.js) - Google Analytics