自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

目录

编程话题下万赞答主来强答一波~可以先看目录

编程初学者路线推荐:计算机科学速成课→C语言→计算机基础→选择一门编程语言进阶。

本回答很长很硬核,建议可以先点赞&收藏以防迷路,后面你肯定会需要经常翻出来看的。

如果你的目标是想通过自学并找到一份不错的计算机相关工作,我的回答一定要认真看!

(一)计算机科学速成课

如果是对计算机一无所知的,建议你可以先去B站学习《计算机科学速成课》。

是来自YouTube上非常热门的计算机课程,然后被翻译到了B站,非常适合入门计算机,建立基础概念。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

总共40集,包含计算机早期历史、中央处理器、编程原理、计算机网络、计算机安全等分类,概括了计算机的大部分内容。

每节课都控制在 12 分钟左右,总计 8 小时,基本上花一个白天的时间就能看完。这门课程通过生动形象的讲解方式,向普通人介绍了计算机科学相关的基础知识。因为每一集比较短,也不容易产生枯燥的感觉。

看过的小伙伴都在评论区说好:

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

新晋厕所排队经典读物:

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

我把课程目录贴一下:

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?
自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

这个课程可以帮助你建立起对计算机的基本认知,培养学习兴趣,零基础非常适合。

(二)C语言入门

把这个视频课程看完之后你就可以选择一门编程语言开始入门了,我个人比较建议先学C语言。

1、初学者先看视频

如果是零基础的纯小白,不建议上来就啃书,可以先从视频课程入门。

推荐中国大学慕课上翁恺老师的2门C语言课程:

程序设计入门--C语言_浙江大学_中国大学MOOC(慕课)

C语言程序设计进阶_浙江大学_中国大学MOOC(慕课)

视频不要光看,一定要跟着课程动手去写!

课程里面会带你用C语言完成一些有趣的项目,一定要跟着实操!

2、书籍推荐

如果想看书的话,这里推荐3本书,难度依次递增。

①难度较小的推荐《啊哈!C语言

简单易懂,初中生都能学会,很适合零基础的小伙伴入门。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

②难度中等的推荐《C Primer Plus

也是C语言书最好的入门书籍之一,0基础完全可以,比较权威。

可以说是满分入门书籍,内容循序渐进,这本书重要的不止是让你学会了C语言,更重要的是能够锻炼你的编程思想,这对以后的学习很有帮助。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

③有能力的可以看《C 程序设计语言

这本属于比较进阶的,不太适合小白。

作者是C语言之父,相当经典,“hello,World"程序就是由本书首次引入的。

这本书一定要啃下来!这本书一定要啃下来!这本书啃下来C语言就基本上没问题了。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

3、C语言实战项目推荐

学编程技术最重要的就是实战!实战!实战!

下面这几个项目,手写代码搞起来。

①C语言制作斗地主发牌器

C语言:斗地主的发牌器 - 网易云课堂

②C语言快速实现五子棋(收费)

C 语言快速实现五子棋_C - 蓝桥云课

再来唠叨2句,有些书籍最好不要买,比如21天精通XXX,完全就是割韭菜的。

学习计算机一定不要想着速成,没有什么捷径和超能力。要下苦功夫去啃那些经典书和源码,然后自己动手写,所有技术大佬都是一行行代码敲,一本本书啃出来的。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?
我看过的书籍里的一部分

我在大学期间,为了把专业学好,看了大量经典的专业书籍,整理了这份计算机必读的高分经典书籍:

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?
需要的戳下面链接下载

这份书单对于CS学习的同学帮助非常大且十分系统,这些书籍的电子版已经整理好了。

需要的直接戳这里领:计算机必看经典书籍(附pdf下载),请注意查收~

(三)计算机基础

C语言学完之后需要把计算机基础补上,只有把基础打扎实,后面学任何一门语言都会更加的轻松。可以先从数据结构入门,推荐《大话数据结构》。

这本书的优点在于语言比较接地气,不是那么枯燥无味,另外给出了大量图示,以及代码案例,方便理解。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?
自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

然后就可以开始学习算法、操作系统、网络、数据库了。

基础课程推荐的视频课程和书籍有:

1、操作系统

①MIT6.268

课程官网:https://pdos.csail.mit.edu/6.828/2018/schedule.html

网友的一些homework实现:

https://github.com/SmallPond/MIT6.828_OS/tree/master/xv6-publicMIT6.828 是一门公认的硬核课程,一直以来都有很高的知名度,也广受好评,是理论与实践相结合的经典。

建议是在上过学校的OS课,或者阅读过操作系统导论类再来学习这门课。最好在开始之前熟悉C和汇编,也对计算机组成有一定了解。

然后只要你跟着项目一步一步走,做完 6 个实验,就能实现一个简单的操作系统内核

lab是这门课的重点:Lab1: C, Assembly, Tools, and Bootstrapping. 熟悉课程使用的工具qemu,C语言,以及汇编。讲解了bootstrapping:从计算机从通电,到开始运行操作系统,这个过程中发生了什么。Lab2: Memory management. 实现虚拟内存,分页机制。Lab3: User-level Environments. 实现进程管理,中断机制(interrupt),系统调用(system call),缺页处理(page fault handling)等。Lab4: Preemptive Multitasking. 实现多CPU的支持,Round-Robin进程调度,Copy-on-Write机制,抢占式多任务(preemptive multitasking), 进程间通信(IPC)。Lab5: File system, spawn, and sh. 实现文件系统

,完善sh。Lab6: Networking. 实现网络功能。

②国内哈工大

的操作系统实验课

https://github.com/hoverwinter/HIT-OSLab

2、计算机网络

推荐standford课程cs144结合书籍《计算机网络:自顶向下方法》。

课程链接:

https://www.scs.stanford.edu/10au-cs144/

https://cs144.github.io/

书籍选择《计算机网络:自顶向下方法》,豆瓣评分9.3分。

这位知乎大佬 @胡津铭

有一个专栏讲如何自己实现一个TCP,强烈推荐:

https://zhuanlan.zhihu.com/p/175998415如果想找一本简单的入门书籍,推荐《图解TCP/IP》。

实战的话推荐《Wireshark网络分析就这么简单》,可以亲手尝试抓包分析数据报文的信息。

3、数据库

① standford CS145/CS245/CS346逐步递进的学习。

课程链接:

CS145:Introduction to Databases Course Information

https://cs145-fa20.github.io/http://infolab.stanford.edu/~junyang/cs145/info.html

CS245:Principles of Data-Intensive Systems

https://web.stanford.edu/class/cs245/

CS346:Database System Implementation

https://web.stanford.edu/class/cs346/2015/

伯克利

的数据库导论

https://www2.eecs.berkeley.edu/Courses/CS186/③CMU的数据库系统

数据库系统设计域实现,涵盖数据模型、存储模型、查询语言、存储架构、事务处理、恢复、并发架构等等,并结合开源和商业数据库

给出案例讲解。

https://15445.courses.cs.cmu.edu/fall2020/④书籍推荐《数据库系统概念

4、数据结构与算法设计

①MIT 6.006 Introduction to Algorithms

MIT 6.006 是经典的数据结构和算法入门课程,涉及到排序、哈希、图论、动态规划。Lecture非常翔实,伪代码可读性强,在辅以专门的practice,用py实现的。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

课程链接:

https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-006-introduction-to-algorithms-fall-2011/

②书籍推荐《算法》,豆瓣评分9.4分。

内容全,源码示例多。

比如普林斯顿大学

教材使用的就是这本书,然后有配套的教程网站,上面有很多文档和demo:

https://algs4.cs.princeton.edu/lectures/
自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

视频:

https://www.youtube.com/watch?v=1QZDe28peZk&list=PLRdD1c6QbAqJn0606RlOR6T3yUqFWKwmX

建议通过可视化的方式学习算法和数据结构,能很容易看出其基本原理、各种操作是怎么实现的。

数据结构和算法可视化学习网站这里强烈推荐:

visualgo:

https://visualgo.net/zh

Data Structure Visualizations:

https://www.cs.usfca.edu/~galles/visualization/Algorithms.html

5、计算机组成原理

国外大学是怎么学习计算机组成原理的-

https://www.zhihu.com/question/38838088http://www.cs.cmu.edu/~213/http://web.stanford.edu/class/cs107/

关于公开课,更多的可以参考这个github项目,维护了众多推荐的公开课程资源:(star 14K)

https://github.com/ForrestKnight/open-source-cs/blob/master/README.md

老外OSSU组织总结的自学计算机学习路径,star 92K:

https://github.com/ossu/compute

(四)选择一门编程语言进阶

按照现在的市场来讲,Java是现在工业上运用比较多的语言,也是最好找工作的语言之一。其次是C++、Python等。就目前的形式来看,iOS和安卓等移动端开发是比较不好找工作的,但如果你确实很感兴趣,成为了这方面的大佬,那么前景也还是不错的。

1、C++入门到进阶学习路线

C++是非常难掌握的一门语言,想学好,需要花很大的精力。

下面说下我自己对如何学C++的一点看法。

首先,可以找一本稍微薄一点的书入门,经典的有《Essential C++》。掌握基本的语法和概念,对C++有一个初步的认识。

然后,就可以看《C++ Primer》了,这本书强烈推荐。这本书有点厚,需要耐心。一定要认真读完,并且尽量实现一些例子,自己动手去写,去debug。这本书吃透C++的基础基本掌握了,编写常用的程序不是问题。

接下来可以进阶了。面向对象程序设计,侯捷翻译的《深度探索C++对象模型》必读。这本书讲的是底层编译器C++面向对象 的实现原理,继承、虚函数等等的机制。这本书比较有难度,个人认为需要至少读2遍。

然后是《Effective C++》,讲了55条准则,提高C++编程质量的。如果有一定的C++开发经验,读起来更有感触。

关于泛型编程,可以先读《C++标准程序库》,对STL有个基本认识,学会使用。

然后可以去研究stl源码,侯捷的《STL源码剖析》值得推荐。源码面前,了无秘密。阅读经典源码往往能获得很大的收获。

如果有精力,可以再学学boost库,号称准标准。

到这里,你的C++入门到进阶之路就基本完成了。

2、Java入门到进阶学习路线

入门书籍1-《head first java》

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

首推《Head First Java》,这本书相比常见的另外两本书《Java编程思想》和《Java核心技术》,偏趣味性,语言也比较轻松,能将高深的知识讲的浅显易懂,不会让人觉得枯燥无味。

另外2本书大块头,部分章节比较枯燥难以理解,容易让初学者钻进去出不来。

入门书籍2-《Java并发编程实战》

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

要写出工业级的代码,必然和并发脱离不了干系。程序员面试,并发也是必考知识点之一。

书中从并发性和线程安全性的基本概念出发,介绍了如何使用类库提供的基本并发构建块,用于避免并发危险、构造线程安全的类及验证线程安全的规则,如何将小的线程安全类组合成更大的线程安全类,如何利用线程来提高并发应用程序的吞吐量,如何识别可并行执行的任务,如何提高单线程子系统的响应性,如何确保并发程序执行预期任务,如何提高并发代码的性能和可伸缩性等内容,最后介绍了一些高级主题,如显式锁、原子变量、非阻塞算法以及如何开发自定义的同步工具类。

进阶书籍1-《深入理解Java虚拟机》

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

作为Java程序员,不懂JVM是不行的。

本书详细讲解了类加载、java内存原理、垃圾回收机制等知识。只有掌握了JVM,才能在实际生产环境遇到线上问题如GC频率过高、内存溢出等应对自如、还有应用系统JVM参数合理配置。

本书是JVM公认的推荐好书,是Java进阶必看书籍。

进阶书籍2-《Java性能权威指南》

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

市面上专注于Java性能的并不多,能游刃有余地展示Java性能优化难点的更是凤毛麟角,本书即是其中之一。

通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,最终使程序如虎添翼。

进阶书籍3-《大话设计模式

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

如果以前未接触过面向对象程序设计,那么本书必读,毕竟面向对象程序设计和C语言中面向过程设计有很大的不同。

分布式书单推荐-《数据密集型应用系统设计》

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

吐血推荐,本书豆瓣评分9.7分,堪称分布式领域圣经,本人非常后悔没有更早的阅读本书。

本书并没有局限于那种分布式框架,而是着重讲解分布式整体架构设计理念和基础知识。

作者水平非常高,本书广度非常大(诚然并不是很深,要在一本书里将那么多知识深度讲解也是不可能的),深入浅出,大家不用担心晦涩难懂(在这里更加推荐英文基础好的话直接读英文原版)。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

书中有大量插图,将分布式系统高深的技术形象生动的描述,通俗易懂,比如下图是讲数据库多副本 并发写的问题的:

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

而且我昨天刚写了一个类似的回答,刚发出去不到1天的时间就获得了700+点赞和2000+收藏,说明这本书推荐得非常正确,评论区也全部都是好评。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

数据库-《高性能MySQL》

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

本书深度讲解了mysql引擎架构、索引设计、SQL查询优化的实战技巧、复制、分片等原理,还有运维技能。适合精读。

关于Java的学习,下面这些回答你可能也会需要:

①为什么阿里巴巴这么喜欢Java?好在哪里?

②Java代码写得太烂了有什么拯救方法???

③Java学习应该如何进阶???

④Java有什么必看的书???

3、Python入门到进阶学习路线

如果想往大数据方向走,可以选择Python,也是市面上使用比较多的编程语言。

Python相对C++/Java等语言来讲是一门门槛稍低的语言,并且应用非常广泛,如数据处理、网络编程、机器学习、游戏开发等场景,因此也广受欢迎。

零基础Python入门非常简单,给大家推荐一门课程吧。百词斩旗下夜曲编程出品的Python课程,非常适合零基础的新人学习。

在手机上就能直接学习,而且省去了小白安装环境的复杂步骤。

课程采用的是交互式的学习方式,每节课都有几十个代码练习,模拟真实环境撰写代码,代码写错了也会自动报错,参考示例代码就能知道自己错在哪里。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

课程学习是集代码卡闯关式的形式,学习时长完全可以自由控制,阅读和学习能力强的差不多5-8分钟就能完成一节课的学习。我觉得这种学习形式会比视频高效很多,视频必须得从头到尾看完。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?
自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

而且整个Python课程设置很清晰,循序渐进,很适合小白入门,感兴趣的话可以关注【夜曲编程】公棕号发送【免费教程】先体验一下~

Python的学习进阶如何安排呢?

其实学完第一部分基础以后,就可以开始动手写代码,写实际的项目了,在实战中成长更快。

Python的应用很广,方向很多,在基础打扎实后可以挑选自己感兴趣的方向进行深入学习。

比如夜曲编程的Python进阶部分,分为编程应用和数据分析两大模块,不同模块又分为几个方向,你可以选择自己感兴趣的模块进行实战训练。

自学计算机该先从什么开始?如何自学?入门推荐学什么语言?

再补充一个大家最近问的很多的,关于计算机专业电脑选购的问题。

按照不同的预算给大家推荐了几款电脑,闭着眼睛买就行:

每个价位只帮大家挑了最值得买的几款 终结选择困难症戳下面文章看

希望本回答能对你有所帮助~

原创文章,作者:afeng135,如若转载,请注明出处:https://www.wegosn.com/2943.html

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注