大学的时候就学的计算机,以下来自个人经验和实践,希望对题主有所帮助。
首先题主要想明白学计算机的目的:
- 掌握上层应用的开发,为了能够在IT公司找一份工作。是以就业为目的的自学。
- 以考试为目的的自学
- 为了解决工作中遇到的特定问题,提升专业技能,升职加薪。以个人的职业发展为目的。当然,题主可能还没到这些需求,不过不影响后面的讲述的哈。对于小白而言,首先要对计算机科学和计算机产业形成整体的认识。这方面可以读导论或者科普读物。建议先读吴军博士的《浪潮之巅》,这本书讲IT产业非常精彩。
紧接着,要做两件事:(1)掌握一门编程语言;(2)学好数学。
这两者是并行的。(1)掌握一门编程语言:
- 第一种:C是一种结构化的编程语言。如果不会C,后面的课程根本学不下去。
- 第二种:Java是一种典型的面向对象的语言。Java有活跃的社区和数之不尽的开源项目。
- 第三种:JavaScript 或者Python。这两个语言都是属于动态编程语言的范畴,应用极为广泛。JavaScript是全世界使用人数最多的一种语言,并且JS的各种框架层出不穷,进步飞快,业界的工作机会众多,对找工作是非常有帮助的。但实话实说,JS在计算机专业课程中用的并不多。Python却不同,它被国内外的很多大学选为新生的第一门语言。尤其是在这个大数据时代,Python真是火爆。
上面这四种语言,是学软件开发必须要掌握的,从任何一个语言开始学起都可以,建议题主从c开始学起。
(2)对于数学,我们必须掌握四门课程:
- 高等数学
- 离散数学
- 线性代数
- 概率论与数理统计
在掌握了编程语言,用编程语言写了一些应用程序之后,又学习了一些数学之后,你就可以进入计算机专业基础课程的学习。这些课程构成了计算机的核心课程群,我们通常把它称为「专业基础课」。专业基础课有十多门,其中最重要的是四门如下(这四个课程也是考研科目):
- 数据结构与算法
- 计算机组成原理
- 操作系统
- 计算机网络
除此之外,计算机基础课还包括:
*编译原理
- 面向对象的方法
- 关系数据库的理论
- 软件工程等等
这里我要强调的是:计算机专业基础课程的学习,和我们在工作中实用技术的学习,这两者不是相互矛盾的,而是相互促进的。比如计算机网络课程,对web开发框架有帮助;反过来,如果写了web框架,就能更深刻的理解计算机网络这门课程。
在完成专业基础课和实用技术的学习之后,就进入了一个新的自学阶段。这个阶段可以针对你感兴趣的特定领域深入钻研了。比如你对人工智能感兴趣,那可以学一下机器学习、spark等等。这个时候的学习目的非常明确,即:培养特定领域的专业技能,让你成为特定领域的专家。
我觉得零基础如果一本书都不看,那真是没法入门,因为连最基本的变量、语句、条件判断甚至指针都不知道怎么回事。
所以还是要看书的。
但是!当某人告诉你,某书是某领域最好的书籍,不要盲目相信,要经过自己亲自试验再下结论。通常情况下,一本别人眼中的好书,可能的确质量很高,但如果阅读它超过了你的能力,那对于你而言,它就不是一本好书,因为你不具备所需要的背景知识,和相关的技术经验。