编程入门指南 v1.5--阅读笔记(2018年10月27日)

参考链接:https://zhuanlan.zhihu.com/p/19959253

1.确定目标

这篇文章是写给那些真心想学编程的人看的——那些憋着一股狠劲儿,一定要做出个什么真东西,不学好不罢休的人。

我的目标:从现在开始,是真心想学编程,不再抱有任何侥幸心理,不再带着能够应付工作任务即可的心理。因此,加油!

目标:更具有就业竞争力,找个好工作。

2.不要浮躁

所谓的「捷径」或者说「银弹」是不存在的,智者说过,精通某个东西需要10年或10000个小时,也就是汉语中的「十年磨一」,所以不用着急,功不唐捐。

目前市面上确实太多的21天精通什么什么。。。2小时快速入门什么什么。。。这是一个浮躁的时代,21天,最多帮你养成一个习惯,但是精通?没有5年以上的沉淀,是很难的……但是目前的问题是,找准自己的方向,进行沉淀。

疑问:方向在哪里?machine learning?deep learning?python?Java?

初步答案:面要广,找准一个点学深,目前处于打基础中?深入的点肯定要跟工作结合才能够找准吧??

3.培养兴趣

编程应该十分有趣,若并非如此,就找出导致编程无趣的问题,然后解决之。

经过一段时间的机器学习训练营和cs231n训练营的学习,惊叹于AI的神奇,但是也带着对AI的很多怀疑。看到各种竞赛的赛题介绍,从某种程度上,是希望自己能够有一套自己的打比赛的方法,能够有朝一日达到老师说的状态,比赛打多了,你会发现,都是有套路的,套路到底是什么,待自己摸索。

4.警醒的故事

但是软件出故障了我不知道为什么,稍显庞大的编程问题无从下手,碰到现有的库做不到的事也只能两手一摊。虽然我每天不停地编码,但我发现自己的编程能力却是提高的如此缓慢,对于「迭代」与「递归」的概念只有极其有限的了解,可以说只是把计算机当成了计算器来使用。

博主初中就有这个意识了……竟然

此后我不再仅仅追求怎么做 (How),我开始问为什么 (why),开始回过头来,拾起那些最基础的部分,学习那些我之前我本该好好学的知识。这个回头的过程是痛苦的,希望你们能就此警醒,永远不要做这种傻事。

5.反思

编程是连接理论与实践的纽带,是计算机科学与计算机应用技术相交融的领域。正确的编程学习方法应该是:通过自顶而下的探索与项目实践,获得编程直觉与推动力;从自底向上的打基础过程中,获得最重要的通用方法并巩固编程思想的理解。

作为初学者,应以实践为主,理论为辅。

6.学编程应该学哪门语言?

问错了!你最先考虑的问题应该是「哪些东西构成了编程学习的基础」?

编程知识的金字塔底部有三个关键的部分:

  1. • 算法思想:例如怎样找出一组数中最大的那个数?首先你得有一个 maxSoFar 变量,之后对于每个数…
  2. • 语法:我怎样用某种编程语言表达这些算法,让计算机能够理解。
  3. • 系统基础:为什么 while(1) 时线程永远无法结束?为什么 int *foo() { int x = 0; return &x; } 是不可行的

7.启蒙阶段

  1. • 完成 MIT 6.00.1x (麻省理工:计算机科学和 Python 编程导论)。虽然该课程的教学语言为 Python,但作为一门优秀的导论课,它强调学习计算机科学领域里的重要概念和范式,而不仅仅是教你特定的语言。如果你不是科班生,这能让你在自学时开阔眼界;课程内容:计算概念,Python 编程语言,一些简单的数据结构与算法,测试与调试。
  2. • 完成 Harvard CS50x (哈佛大学:计算机科学)。同样是导论课,但这门课与MIT的导论课互补。教学语言涉及 C, PHP, JavaScript + SQL, HTML + CSS,内容的广度与深度十分合理,还能够了解到最新的一些科技成果,可以很好激发学习计算机的兴趣。支线任务:阅读《编码
  3. • 完成 Python 教程

8.入门以后

这时候也别过于深入特定的框架和语言,现在是学习计算机科学通用基础知识的时候,不要试图去抄近路直接学你现在想学的东西,这是注定会失败的。

小结:今天先看到这里,启蒙阶段结束后,再进行后续阅读。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

展开阅读全文

没有更多推荐了,返回首页