×

还在用应试教育那一套学编程?

96
stay4it
2016.10.25 09:55* 字数 1447

本篇内容是Stay个人的一些观点与见解,有时候跳出技术或者寻找其他的角度会让人重新认识一门语言。希望能抛出一些角度,和大家一起探讨,由此丰富自己的思维。

学习一门语言的最佳方式

先抛开技术语言,我们至少会两门语言:'汉语', '英语'。
如何快速的掌握语言?

无痛学习的三个节点: 环境, 词汇, 实践

环境: 我想不用再多说些什么,你看从小就会说方言,那是大环境所致
词汇: 没有足够的词汇量是很难高效的沟通,表达自己的意图。但语言设计出来是有意而为之,肯定多少有些规律。汉字有象形,有偏旁部首。英语有词根,前缀,后缀。种种组合在一起,形成了单字单词。假如你没背过这些,一直以一个顺序去死记硬背,那是相当笨拙的方式。
实践: 实践也就是利用语言去表达自己的想法,行为。一个人长期自闭肯定会忘了如何说话。要让自己能说会道,写文形如流水。最直接的方式就是多说多写。

写到这里,我们的大脑立马会有趋利避害的潜意识产生

道理谁都懂,说的简单,做起来难啊。要是一个月能搞定,拼了命我都会去学的。要不你先试试看?

再来看这个梗

相应的,我们从初中到大学学了10多年的英语都还有大部分人学不好,为什么有人会相信通过培训班能够让你在短期内精通一门技术语言呢?

如何学习一门机器语言

人类语言的学习方式能套到机器语言上吗?试试看

无痛学习的三个节点: 系统(环境), 语法与API(词汇), 编码(实践)

系统: 这个系统可大可小,操作系统,可运行的最小依赖环境,一个项目架构,一个独立功能模块等。都是一个代码块所依托的系统环境。在什么环境写什么代码。
语法与API: 语法是构成语言中的初始单元,API是与一个系统,一个独立模块等沟通的桥梁,没有它,就无法知道它能提供些什么,能通过它做些什么。如何去组合,造句,通过API再形成业务逻辑。
实践: 通过API调用组合成代码块,再将代码块组合成独立模块,再将功能合并成app。这些都算实践。

所谓语言是相通的,即使语法不一样,其wrapper出来的API是大体相似的。如何获得文件句柄,如何网络请求,如何access数据库等。不会有太大区别的。也就是说只要你掌握了一种语言,快速切换到其他语言时,可以再熟悉语法后,直接去实践,不会的再现查。(就像学会一种语言,其同语系的语言学起来也挺轻松)

但,这个学习方法有效吗?在语言学习上还可以通过应试方式来填鸭。机器语言可就未必。

按部就班的学习够不够

设想一下用应试教育那一套学习Java。
背单词(API), 记词根(语法), 做卷子(写代码)

这样就能应对日常工作吗?显然不能。

写代码不是做选择题,填空题。即使只用写一些业务代码和算法,调用API。这也是一个连续的过程,一直在当前的context上下文里处理事情。要比学英语复杂的多。

如果用笨方法死记硬背还能考个好成绩,同样的方法来学机器语言,没几天就坚持不下去了。

人类语言(汉语, 英语...)和机器语言(Java, C...)区别还是很大的。

  1. 说错不要紧,只要大意传达到,对方就能做出相应的回应。但机器要求严苛,非0即1。错了就是bug。
  2. 语言再怎么拓展也有限。累感不爱,因崔斯汀,asap这样的小缩写,哪有方法或封装类屌。
  3. 机器语言是确定性的,input进去,output出来,不管执行多少次,都是一样的。但语言不同,一千个人眼中有一千个哈姆雷特。
  4. 机器语言不仅得会调用,还得分析,研究其内部实现。而语言仅仅是调用就可以了。

按李笑来老师说的,一年即可全栈,我是不信的。除非-> js一统天下: )

那么问题来了。究竟如何学习才是高效的呢?

你是怎么认为的?不妨也说说吧~

本文为引言,会陆续出一个系列来展开Stay的观点。希望和大家一起交流,寻找最佳算法。

扩展阅读:
还需要再学习一门语言吗?
“一周一语言”是如何做到的?
程序员在'抽象化的OOP世界'里该如何发展?

日记本
Web note ad 1