一个人如何从零到精通学习一门语言的

Ming_Up
  • 345
  1. 刚刚和室友讨论一个问题就是,那些学习好的学生从零开始学习一门语言到写出产品需要多久,室友回答,两小时,一个小时学习看文档,下一个小时完成。好学生如何做到的?
  2. 如何快速的使用官网文档快速的学习一门语言或者快速的使用一个语言的某个框架
回复
阅读 3.3k
8 个回答
krun
  • 6.9k

更新

题主更新了问题,那么原答案就当回到第一问了,至于第二问,讲讲我个人的看法吧:

其实编程这个东西,很大程度上上是一个经验工种,前期也许需要一点所谓的理解能力去搞懂一些抽象的东西,也可以不去搞懂,只是这样的话天花板来的会很快;中期需要横向拓展,因为很多东西是相同的,比如缓存机制,从硬件一路用到分布式,但是你不靠经验去了解它是很难搞明白怎么用好它的;后期需要纵向深入,中期积累的各方面经验足够你在一个领域去爆发的时候,你就可以尝试一下所谓的一通百通。

当然所谓的前中后期的说法是我自创的,不代表普适规则,但是终究多数人是平庸的(无贬义 毕竟我自己也只是个平庸的普通人),在没有足够惊艳的天赋时,只能靠经验来强化自己的能力,又由于这个行业的特殊性,几乎可以说一生都在学习。

我从初三开始学习编程,批处理入的门,也进过学校的信奥班(奈何智商不够,没读完 ORZ);

高中主用易语言,我知道很多人瞧不起这个东西,但是靠它我可以很快得上手 windows gui 编程,这让我明白了很多 gui 系统的消息机制到底是什么,也让我明白了一个通用ui组件的抽象化是怎么做的,中间断断续续学过 phppython(为了折腾 ss),在此期间我买过 vps 绑过域名也通过 http 权威指南 懂了一个http请求的历程;

高中的过分沉迷编程让我的文化课成绩异常糟糕,我那一届98%的人上了本科而我就是那2%,所以读了大专

到了大一,按部就班学习 c 语言和网页,此时的我对 c 已经没太多兴趣因为用过高级语言就不想用那么麻烦的东西了 Orz,而网页我也只是处于知道盒模型但是搞不定兼容 js 更是一窍不通的水平;

到大二我开始用 node.js ,我现在的所有js知识全部来源于此,5月份我开始学习 java,哪怕一行也没写过,我也能看过基础语法后当晚用 java 就写一个把 .java 转换为 .jsp 的东西(当时猜测 jsp 的性质与 php 类似);

现在我大三正准备找实习呢 Orz

讲我的经历是因为,以我现在的经验,还有对于编译原理的一些理论了解(比如我在 sf 倒数第二篇文章),对于一些 oo 的语言我可以根据文档很快上手,其框架也大抵如此,不过这是将将能用而已,很多我重新造轮子的地方后面就发现框架已经提供了我不知道而已。

因此一个语言是变化的,一个框架也是会更新换代的,经典的思想虽然不会太快过时,但也避不过时代巨轮的碾压,毕竟硬件性能足够了我们可能就不那么需要扣内存了(所以现如今不用太会算法也足够找份吃饭的工作了),所以是学不完的。

那么到底怎么快速上手一门语言或者框架呢,无他,唯手熟尔。

这个答案可能不会被很多人看到,但是我自己是个从弯路走上来的人,甚至可以说不算是一个科班出身的,希望能帮到一些人吧。

原答案

突然看到标题说的是从0到精通???

精通这个词,就不提 c++ 那种多范式的变态,java 这种 语言规范 加 虚拟机规范 合起来近千页的,0基础一个小时看的完?那还有 Spring 等等之类的文档还没开始看呢。

假定我们讨论的是,写的产品的代码量是一个小时内能写完的。

我见过有研究生写的代码是『一个main几千行』,没有任何编程思想(指的是抽象 模块化 这些)在里面。

事实上,语言本身是可以用数学抽象的,不排除有人对语言的理解就是能一目了然,甚至可以按部就班硬写个所谓的产品(只要求跑的起来,结果正确)。

但是还有个大前提,那就是他写的是这个产品,包不包含其他知识点,你可以用 c 写个纯数学算法,但是你用 c 写个 http 响应哪怕是个 socket,你都得还要学习一下网络协议,这种情况下,一个小时能不能把网络协议看完都是未知数,遑论写产品。

为什么要强调清华学生,扎心了老铁。
何况从零到精通,两个小时就可以的话,那他们编程系的学生岂不全都可以牛的上天了?
别讨论清华学生怎么学了,自己加油。

如果写个HelloWorld的话是可以的

夏彬
  • 2
新手上路,请多包涵

从0到精通这个过程,我个人觉得这个周期的长度是因人而异的。如果你是小白,那么你想入门很简单,但是你想精通你需要很长的一段时间,除非你功底特别好。对操作系统,数据结构,编译原理,网络相关的都比较熟悉。在学习语言的过程中,除了掌握当前语言的特性之外,还要多问几个“为什么”?比如:“为什么会这样实现多态?”等等之类的问题。然后找几个这个语言的开源项目,记住不要找太大的,然后阅读下源码。如果这门语言有其内核相关的资料,然后去阅读下,比如php,去了解下php的内核了解下zval,了解下它的生命周期。总结一下,从入门到精通是一个渐进的过程,我们说的方法只提供参考,你要根据你自己情况来安排。

所谓的精通是什么?
语法知识可能1-2小时可以学完,但精通(很好的理由语言特性)可能需要很多理解,这也是为什么有那么多 Think in XXXX(语言) 之类的书了。

三小时太夸张了。
有公司招聘有多年经验的程序员,没有用过Go 语言的,给三天学习时间,三天后用Go语言开发项目。

xxxxx
  • 2
新手上路,请多包涵

一个小时太恐怖啦,对于我这种半瓶水而言。
想起来react的官方教程 里面的教程案例 todolist,看完也就差不多写完了。但是大项目来说 好难啊,一个App 我都要写一周Orz

其实当你掌握了一门语言后,再去学习其他的语言,很快可以上手做项目,但是如果真的是从0开始,连基本语法,运算符都不懂,2个小时根本没可能

宣传栏