非常详尽用3年左右时间可借助网络公开免费资源自学编程相关的网站,很全面。
https://github.com/pkuflyingpig/cs-self-learning/
附带作者的话,我们共勉,希望有天我们能够开始,希望有一天这些知识可以改变我们的命运,而不是仅仅是转发收藏。
作者:我的目标是让一个刚刚接触计算机的小白,可以完全凭借这些开源社区的优质资源,少走弯路,在 2-3 年内成长为一个有扎实的数学功底和代码能力,经历过数十个千行代码量的 Project 的洗礼,掌握至少 C/C++/Java/JS/Python/Go/Rust 等主流语言,对算法、电路、体系、网络、操统、编译、人工智能、机器学习、计算机视觉、自然语言处理、强化学习、密码学、信息论、博弈论、数值分析、统计学、分布式、数据库、图形学、Web 开发、云服务、超算等等方面均有所涉猎的全能程序员。此后,无论是选择科研还是就业,我相信你都会有相当的竞争力。
看到这条嘟的内容,觉得非计算机背景的朋友想自学,缺乏了必要的指导 (guideline)。
看到这条简单说说我的想法。
https://m.cmx.im/web/@chaojixyy1973/108775657985842622
.
最基础的:Codecademy 学会一门程序语言。按优先度排序,推荐 Python / JavaScript / Java. 学会一门语言就可以了。
时长:1 个月.
.
少量算法 + 基础数据结构知识。Coursera 上的这门课提纲很好:https://www.coursera.org/learn/data-structures
线上能搜到很多教程和资源,但比较零散,建议找一本书 (暂时没想到哪一本入门比较好) + 做做最简单的练习题。
时长:2~3 个月.
.
学到这里其实就已经本科计算机毕业了。普通学校里,大多数计算机系学生也就学到这个水平。
其实整个加起来最多大半年时间就能学完。只需要「简单看一下」,在实际写数据结构、写算法、逐渐积累写一些工具处理和小型程序的过程里,会迫使你回过去重新看待之前学过的内容,经验、理解是会逐渐积累的。
.
其他一些和实际项目相关的选择性学习,全部学完是不可能的,在大公司里做了二十年程序员的也不可能全部知道。
大概可以分为:
* 数据处理 (data engineer / finanace / bioinformatics)
* 前端开发 (web designer, app designer, artists)
* 人工智能 (data-related, or art-related)
* 后端开发 (algorithm, database)
* 图形学 (hardware / os related)
.
自学我觉得最好的是看 Coursera 的课程目录,只看目录就可以。对应的内容去找书。
更重要的是需要一个好的线上社群能够回答你当前的问题。以前的 StackOverFlow 很好,但现在已经不太友好了。
我觉得最后这点是 Mastodon / Discord 社群可以做的。 [参照]