大家好,我是程序员吴师兄,一个坚持在 CSDN 日更原创的程序员。

前几天我的一篇文章为什么有人劝别选计算机专业? 上了 CSDN 热榜第一的文章,在此感谢大家的喜爱和 CSDN 的支持,没有看过的同学可以点击蓝色链接前往阅读。

发完这篇文章后,有不少的同学私信我,问的最多的一个问题就是:非专业学生如何系统的学习计算机编程?

这个问题我在知乎找到一个描述,所以根据这个描述来回答。

去年刚毕业,专业是新闻传媒,实习是在一家杂志社做小助理。。。其实小时候就一直对编程非常热爱,一直以来自己有买各种推荐书籍来学,但总觉得自己是架空了在学,也许看懂一些简单程序的代码,也许可以自己写一些小东西(计算器之类的),其实根本不懂这一切是为什么,慢慢就发现,计算机科学的博大精深不是这样的海市蜃楼能够涵盖的,现在也毕业了,如果有机会很想从新来一遍,真正系统的学习这门科学,学习编程,但当前的各种现实情况不允许,所以我想哪怕花个3年5年的,自己自学,感问各位前辈有什么好方法,什么推荐,真正学进去,学出来。

宠粉的吴师兄立马熬夜肝了一篇文章出来,老规则,有帮助记得点赞收藏转发评论哟:)

首先对问题做一下拆解,才能更加全面的分析,问题当中有三个关键词: “非专业”、“系统”、“编程”。

第一,非专业。程序员中除了来自于计算机专业的科班学生,有相当一部分的人是通过培训或者自学的方式入行的,所以非专业也是能学习好计算机编程。

第二,系统。题主想系统的学习计算机编程,估计意思是想系统的学习计算机专业的课程,比如数据结构和算法、操作系统、编译原理、计算机网络,这些内容科班的学生学习了四年,看描述,题主打算花费三五年去学习,所以理论上来说时间是足够的。

第三,编程。编程的概念实际上很广,打开电脑的文本编程器,敲个 Hello World 就已经属于编程了,能独立制作 App 也属于编程,通过题主的描述,没有发现题主有想通过编程去跨行另找工作的打算,姑且推测题主只想学习编程玩玩吧。

分析了这三个关键词之后,结合上题主的描述,我把问题修改了一下,这样才能更准确的回答。

非专业学生如何系统的学习计算机编程,可以独立制作自己的产品。

结合我本人的学习经历,谈谈我的看法。

废话不多说,直接上干货!

一、自学编程

学编程可以自学吗?

**答案是看到的,**对于所有编程学习者,尤其是想自学编程的同学,在学习的初期最好能想明白下面几个问题:

  1. 编程可以自学吗?
  2. 学习编程需要什么基础?
  3. 我应该学习哪种编程语言?

1、编程可以自学吗?

先给出结论,完全可以,但自学编程的弯路多得数不完,坑多得踩不完,这必定是一条充满挫折的道路。

有哪些坑呢?

  1. 好几天都没有成功搭建一个可以正常使用的编程环境,比如 Python、Java
  2. 敲了半天的代码,一运行发现提示几十个错误
  3. 学了很久,感觉会的很多,但不知道自己的实际水平怎么样

正如我们学习英语需要一个交流环境,编程的学习同样需要,特别是自学编程,以下几个网站尤其重要。

  1. GitHub
  2. Stack Overflow
  3. 菜鸟教程

以上三个网站,可以帮助你解决自学过程中 90% 的难题。

2、学习编程需要什么基础

学习编程不需要什么基础,不需要你的数学、英语有多好,也不需要你精通计算机网络、编译原理等。

这个结论是有现实依据的,很多培训班根本就不会培训这些内容,照样量产出一些基础虽然不牢固但却可以工作的程序员。(这里并不是为了说明培训班这种方式是正确的方式)

甚至我希望自学编程的初学者能一开始蔑视编程。

在战略上藐视编程的目的是为了在心理层面上克服恐惧,有这个心态可以学起来事半功倍。

我亲身经历过这样的改变。

作为一个转行程序员,在转行学习编程的那段日子,没有人告诉我说要去学数据结构,也没有人告诉我说要去刷 LeetCode,都是靠自己一个人摸索,绝大部分的时间都花在具体项目上,误认为自己和那些已经工作的程序员的区别在于有没有做过项目。

这就是科班出身和非科班出身的学生最大的区别,科班出身的学生知道去学什么,知道大学期间安排的每一门课程是干什么的,知道要先去做哪些小项目来循序渐进的编码练习,知道知识点在工作中能起到什么样的具体作用,非科班出身的程序员感觉计算机相关的知识点简直是一团乱麻。

这种情况导致我去找工作参加面试的时候,很多基础面都通过不了,最后侥幸进入一家要求不太高的创业公司,薪资不高,为了进大厂必须完善算法和计算机的知识。

因为未知,所以恐惧,恐惧导致盲目的崇拜,我认为那些科班出身的程序员太牛逼了,居然可以掌握那么多繁杂的计算机知识;那些写源码分析的程序员都是大神;那些写算法题解的程序员都是高手。

恐惧把小的问题放大,比如学到单调栈、双向链表、记忆化的内容,一看到题目要用到这些概念便觉得代码很难写,索性那些内容就不看,所以学了大半年还在原地踏步,还在原来的公司拿着微薄的工资做着 CURD。

几个月后,创业公司不行了,受迫于重新找工作的压力,只好咬着牙再去啃,再去刷题。

而当我开始写题解、做动画的时候,我就发现算法题也就那样,缺的只是时间去不断的重复练习。

单调栈无非就是在栈的概念基础上增加了排序,记忆化也就是增加一个数组用于存储,动态规划在面试和实际工作中用到的只需要掌握百分之五就行。

抱着编程技术也就那样的心态,学习了爬虫以及 Vue。

“自大”的认为爬虫能有多难,基本步骤无非以下几步:

  • 1、找到需要爬取内容的网页URL
  • 2、打开该网页的检查页面
  • 3、在 HTML 代码中找到你要提取的数据
  • 4、写 Python 代码进行网页请求、解析
  • 5、存储数据

下载安装 Pycharm,安装 Scrapy,根据步骤输入 URL 和数据格式,在完全不懂分布式、ip代理、js加密、模拟登陆、MongoDB的前提下,顺利拿到了自己想要的数据。

无论是分布式还是ip代理,爬虫的每个知识点深挖下去都大有文章,我所学习到的爬虫知识只是冰山一角,但这并不妨碍我们可以从战略上去蔑视编程,编程的很多内容没有那么高不可攀,缺的只是时间去学习,时间恰恰是我们可以去支配的。

关于计算机基础的内容,我整理了 4 本手册,全网累积下载100w次,几乎程序员人手一套,包含数据结构与算法、操作系统、计算机组成原理、计算机网络等硬核基础知识,图文+实战案例,平时开发+搞定面试,帮你快速建立对计算机科学的大局观,夯实计算机基本功,瞬间起飞~

点击下载图解操作系统、网络、计算机组成 PDF

3、我应该学习哪种编程语言?

可以通过下面这张图做个小测试,看看自己更适合哪种编程语言。

图片来源: Should You Learn Python, C, or Ruby to Be a Top Coder? (Infographic)-MediumWhich Programming Language Should I Learn First? 翻译:麻瓜编程

下面的图对比了最流行的9种编程语言,来帮初学者选择最适合自己的。

目前国内的大环境下 Java 的就业岗位相对是最多的,如果你没有特别的偏向于其它的编程语言,那么自学编程的第一门语言选择 Java 是一个不错的选择,关于如何学习 Java,可以点击下方链接阅读。

最新整理的 Java 开发学习路线!

如果你是一个 Java 面试官,你会问哪些问题?

二、系统的学习计算机编程

题主想系统的学习计算机编程,在时间充足的情况下,最好的学习方式就是跟着科班的课程内容走。

很多计算机专业一开始都是先教 Java、Python、C 等等高级语言,然后在大二才开设数据结构和计算机组成原理等课程,因为在用这些高级语言做出 Demo、小项目的过程中,肯定会遇到各种问题,而这些问题的答案就藏在那些专业课里面。

一方面做出小东西能有成就感更加容易坚持下去学习,另外一方面带着问题去找答案效率更高映像更深刻。

否则一开始让你去学编译原理,估计一年过去了都不知道编程有啥乐趣。

科班的内容就是以下这些,计算机组成原理操作系统计算机网络、数据结构与算法,编译原理。

怎么学习,请阅读这篇文章:

我是一个几乎没有计算机知识的人,怎样入门计算机?


觉得不错的话,记得点个赞哟,祝无论是自学编程还是计算机科班的学生,都能打好计算机基础,成为一名优秀的程序员。

也可以关注下我程序员吴师兄,一个致力于把每道算法题都用动画的形式讲清楚的七年老程序员,持续分享计算机相关内容的干货,希望能帮助每一个人在编程这条路上走的更舒坦。

关于计算机基础的内容,我整理了 4 本手册,全网累积下载100w次,几乎程序员人手一套,包含数据结构与算法、操作系统、计算机组成原理、计算机网络等硬核基础知识,图文+实战案例,平时开发+搞定面试,帮你快速建立对计算机科学的大局观,夯实计算机基本功,瞬间起飞~

点击下载图解操作系统、网络、计算机组成 PDF

作者简介

作者:大家好,我是程序员吴师兄,在 GitHub 上开源了一个项目 LeetCodeAnimation,目前有 60k star,通过动画的形式讲解算法,已经帮助成千上万的程序员入门算法了,欢迎关注公众号「五分钟学算法」,和我们一起学习算法。
点击了解程序员吴师兄
转载说明:未获得授权,禁止转载

非专业学生如何系统的学习计算机编程?相关推荐

  1. 初中生学计算机编程的好处,为什么初中生更加适合学习计算机编程?

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 在生活中,计算机程序无处不在,小到足以控制普通开关,大到足以操作无人驾驶飞机,甚至是操作卫星.这些都是计算机编程程序正在控制,计算机的影响力非常大,并且用 ...

  2. 论中国青少年学习计算机编程的必要性

    近年来,国内外青少年教育掀起了一股计算机编程学习浪潮.欧美国家将计算机编程能力作为与阅读.写作.算术能力并列的四大基本能力之一.最新的STEAM教育理念跨越了科学(Science,S).技术(Tech ...

  3. 初中不读学计算机难吗,为什么初中生更加适合学习计算机编程?

    在生活中,计算机程序无处不在,小到足以控制普通开关,大到足以操作无人驾驶飞机,甚至是操作卫星.这些都是计算机编程程序正在控制,计算机的影响力非常大,并且用途非常广泛,通常被称为"科学技术的驱 ...

  4. 在学习计算机编程不写代码_使用代码创建:通过制作游戏来学习和教授计算机编程

    在学习计算机编程不写代码 Create with Code is Unity Education's new, free program for teaching and learning compu ...

  5. 计算机编程数学不好能学吗,高中数学学的不好,对学习计算机编程有影响吗?...

    高中数学学的不好,对学习计算机编程有影响吗?以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 高中数学学的不好,对学习计算 ...

  6. 不玩游戏还学了计算机,青少年学习计算机编程是否有必要?

    随着互联网的发展,学习计算机编程的人越来越多,甚至青少年也都开始进入计算机编程的队伍,那么对于青少年而言是否有必要学习计算机编程呢?现在就跟随达内北京IT培训一起去了解一下吧. 1. 编程最培养人的计 ...

  7. 学计算机编程我有什么好处,学习计算机编程对我们都有什么好处?

    原标题:学习计算机编程对我们都有什么好处? 如今,计算机编程已经融入到了我们生活的方方面面.手机.智能家居和电脑等等,无一能离开计算机编程的身影.在计算机如此普及的今天,大家不应该学一点编程吗?学一点 ...

  8. 如何开始学习计算机编程

    你想学习计算机编程?现在比以前容易(便宜)多啦!90年我学编程的时候,花了$300买一个编译器包,还是"标准版".那时候这似乎是你学习C++的唯一选择.现在都变了好多了. 如果做商 ...

  9. 哪里学计算机编程,怎么才能有效学习计算机编程

    目前编程技术越来越受到年轻人的追捧,但是如何下手学习却让很多人犯了难,为此,以下是小编分享给大家的学习计算机编程的建议,希望可以帮到你! 学习计算机编程的建议 当然学习编程是一门苦差事,尤其是刚入门的 ...

  10. 如何系统地学习计算机编程?自学还是培训?怎么选?

    前言:生活不可能像你想象得那么好,但也不会像你想象得那么糟.我觉得人的脆弱和坚强都超乎自己的想象.有时,我可能脆弱得一句话就泪流满面,有时,也发现自己咬着牙走了很长的路. --莫泊桑 在校生要找到好工 ...

最新文章

  1. 鱼佬阿水竞赛相声:我是如何2小时杀进排名前10%的!
  2. MATLAB的iptchecknargin函数详解
  3. 前端构建工具gulpjs的使用介绍及技巧 (转)
  4. 数据库性能调优之后,进一步的验证和分析
  5. .NET Core 使用 K8S ConfigMap的正确姿势
  6. Java程序如何生成Jar、exe及安装文件
  7. codeblocks无法编译运行_编程必修课:一文弄懂python的运行机制
  8. 企业软件定制开发的流程,有五点是需要注意的!
  9. QCustomplot绘图性能的改善
  10. 深入理解JVM虚拟机读书笔记——垃圾回收器
  11. 基于C++和EasyX 实现的《双人贪吃蛇》小游戏,你不找个小伙伴陪你一起玩吗?
  12. 【Python】9×9数独计算器
  13. 64位win10系统中无法开启vmware的VT-X嵌套虚拟化功能的解决方法
  14. java 打印字间距 行距_[图片问答]LODOP打印的行间距字间距
  15. 关于‘go list‘ failed with: error obtaining VCS status error obtaining VCS status: exit status 128问题的解决
  16. 山海演武传·黄道·第一卷 雏龙惊蛰 第二章 修闵本饰邪
  17. Excel数据分析从入门到精通(十)28个图表之对比分析
  18. No CUDA runtime is found, using CUDA_HOME=‘/usr/local/cuda:/usr/local/cuda‘
  19. 水果店从哪里进货,开水果店怎么进货
  20. 自学Java day53 使用jvav实现 BitMap 数据结构 从jvav到架构师

热门文章

  1. Black Hat 2017:不容错过的七大主题演讲
  2. Pandas 库之 DataFrame
  3. SpringBoot+H5微信登陆(网页)
  4. matlab 矩阵一致性检验,层次分析法判断矩阵求权值以及一致性检验程序.doc
  5. 4步讲解一维数组传参与二维数组传参
  6. 巧妙利用回收站做文件隐藏
  7. 计算机中回收站的作用,windows7回收站的功能与作用
  8. EXCEL日期格式不一致设置统一显示格式的方法
  9. ae合成设置快捷键_AE常用的快捷键(UI动效方向)
  10. ReactNative 常用命令