添物零基础到大型全栈架构师 不花钱学计算机及编程(预备篇)- 概述
不花钱学计算机及编程 (预备篇)
--概述:如何学习计算机及编程
个人是98年进入大学,开始学习计算机的,当时对计算机等于零了解,只有初中的时候在镇上一个同学家见过,当时放卡拉OK听,别的也不知道什么了,高中的时候学校有校友会捐赠不少计算机,可是没让我们摸过。到大学连回车是什么都不知道,当时学校还是DOS操作系统,Windows也有好像是Windows3.1,不过很简陋。
学了几年大学,基本对计算机有个感性认识,理性认识不是太多,虽然学了计算机基础,计算机组成原理,计算机体系结构,C语言,操作系统,编译原理,数据结构和算法,数据库,计算机网络,多媒体,软件工程,算法分析等课程,不过总的来说没什么大的收获,毕业设计用Delphi做了个管理系统,现在想想还算不错了,期间也学了学网页制作,html,Jsp等,当时不知道学计算机干啥,还学了PhotoShop,网页三剑客(DreamWeaver,Firework,Flash),甚至学了CoreDrawl。
现在想来实在是搞笑,可以说大学生活一片迷茫。现在想来主要是当年网络不下今天这么发达,不知道干什么。以为大学就是走过程,到社会再学习努力的,有点茫然。对大学学的高等数学,线性代数,概率论和数理统计就更不知学了干啥了,但是工作多年后发现都有用!人生很神奇!
不过,不管怎么说,大学还是让我对计算机有个感性认识。这个在以后的工作中还是很重要的。至少知道整个知识脉络,不会的可以知道怎么补。现在回想如果大学可以重来一遍,我认为至少要学好如下课程,阅读如下图书:
计算机基础课程:就是教你如何开机,关机,打字,使用软件的基础课程,这些课程随着社会进步,目前可以说没什么问题了。不过大家使用的基本是微软公司出品的Windows系统,作为专业的计算机学生,强力建议使用基于Linux的系统或者和Linux类似的苹果笔记本(Mac),苹果的东西是贵,但是值这个价。
学习Linux推荐一本图书:《鸟哥的Linux私房菜:基础学习篇》。Windows我就不推荐图书了,我没通过图书学过。
有了计算机操作基础,可以学习编程了,推荐从C语言开始学习,使用这本书进行学习《C程序设计语言》,此书是C语言的作者编写就知道是多么的权威了,同时此书有英文版本《C程序设计语言(英文版)》,建议都买了学习,毕竟作为计算机学生,英文不好是不行的,很多国外的先进的东西都是英文的。另外也有一遍习题解答,也同时买了。里面的题目都做一遍,编程水平不会差。如果想继续提高C语言的水平,可以看看其他相关图书,比如C指针等一堆。
光会写简单的程序还是不行的,如何更好的编写程序就得学好数据结构了,大学一般使用的是严蔚敏的那本,好好学就行。我在大学的时候是一本书《数据结构和算法》,不过算法应该继续加强学习,推荐一本进阶图书《算法导论》,此书很难,想要好的发展的看看。数据结构和算法很重要,面试工作这个是核心。
上面的基本程序写好的话,可以考虑学习面向对象的程序设计,基本选择C++或者Java作为编程语言。两种语言个有千秋,看您自己的兴趣,未来工作都有比较好的发展,学好一个学另外一个都可以,C++学习起来稍微复杂点,不过也不是太难,只要你想学。学这两门语言各推荐一本书,《C++编程思想》和《Java编程思想》,作者是同一牛人,先写的C++图书,后来Java流行起来就又写了Java的那本。
数据库是工作中经常使用的基本工具之一,所以在学校里也要好好学习,不过总的来说,这门课程比较简单,多动手实践即可。推荐如下图书:《transact-sql权威指南》,印象中是很好的书,不过国内好像不出版了。另外考虑未来发展,建议学习mysql(http://www.mysql.com/),这样官方文档就够用了。如果不是立志成为数据库管理员的,学校学习的学好结合我的推荐就够用了。
计算机网络在学校里偏向理论,学好概念即可,有条件的可以报名培训CCNA,这样估计会有更好的理解,而且现在培训和考试也不是太贵,个人认为还是不错的。如果要深入学习的个人认为学习标准协议是个不错的选择,推荐图书:《TCP/IP详解卷1:协议》
软件工程学好学校的图书也差不多了,毕竟是学生,不是工人,没有项目环境很多东西也很难理解,即使是项目,其实每家公司管理的也不一样。如果想深入学习的,推荐一本图书:《敏捷软件开发(原则模式与实践)》
学好上面的内容,您可以称为一个基本的码农,或者叫软件工程师,如果要成为专业的码农或者专业软件工程师,您还需要努力学习以下知识:
计算机组成原理:告诉您计算机的硬件是如何工作和相互协调运行的。CPU,内存,硬盘,网卡,显示器,键盘,鼠标等是如何工作的。计算机有哪些基础芯片等内容,配合有实验,好好学习理解其工作原理,在日后调优,排查问题时候非常有用。不是白学的,这个是区别专业和非专业的核心标识之一。
汇编语言:这门语言,是理解计算机的编程的最好语言之一,通过它你才可以更好的理解软件和硬件是如何融合工作的,没有别的语言能够替代。非常重要,有很多人认识不到这点,认为学此无用,甚至有的大学都不打算开这门课程,实在是让人唏嘘啊!大学学生有句话“汇编语言不会编”形容此课程的难度,不过使用下面的图书《汇编语言》学习,感觉应该容易很多。此书缺少高级内容,不过你很好的掌握了此书也算不错了,高级内容你进阶操作系统内核那里才需要掌握。够用了。
操作系统是计算机的核心,编程人员最好能很好的掌握,比计算机组成原理还重要。推荐《操作系统设计与实现》,此书告诉您如何实现一个操作系统,比学校里告诉您的更多,更好理解。当年Linus就是看这本书,编写的Linux。
编译原理的水平与程序员水平正相关,光会写程序,不能理解编译原理,是很难写出高水平程序的。推荐《编译原理》,龙书非常出名,谁学谁知道。工作后您可能会使用各种各样的语言,他们是如何工作和执行的,编译原理是不可或缺的重要一环。
最后推荐几本课外阅读图书:
《编码的奥秘》
《深入理解计算机系统》
《代码大全》
《设计模式 可复用面向对象软件的基础》
......
如果您是学生,如果您在专业课程里学好我上面的内容就很不错了,出来工作肯定没有问题,就看你是否愿意坚持和努力了。
如果您是刚工作的或者是转行过来,觉得计算机基础还不行的,也可以参考我的描述,进一步深入学习,这些东西是成为一个优秀程序员不可或却的,当年天才除外。
如果有遗漏的也欢迎大家补充。
如果您对本文有不同见解的,也欢迎联系我们。
计算机属于工科,是一门实践性很强的技术,但是同时也有很高深的理论需求,所以整体掌握和理解是非常难的,这也就是为什么真正优秀的程序员很少的原因,有兴趣的值得尝试一下。毕竟这个行业的生产力太高,一个程序可能数亿人在使用,您说高不高!生产力那么高,您说薪水得多高?