还在继续开发Growth(Github: https://github.com/phodal/growth)的路上,很多功能似乎已经趋于完善,有些功能也让我百玩不厌——如最近添加的规则引擎。接着我开始陆陆续续地添加了这么多功能。直接今天我想我需要一篇文章放在最前面来告诉用户,你需要怎样去学习?因此,也就有了此文。

我不是一个学霸,大学挂了六科。也没有受过非常好的教育,上大的大学是二本倒数的。好在计算机学得比较早,也可以混点自学能力,也算混得还行。一直想着做一些有意义的事,并且可以获得更多的用户反馈。想法一直有的,直到有一天在整理资料的时候才想起来可以整理出一个APP。

尽管之前已经有技能树、成长书单和Web Developer 成长路线图的经验,说到底这也是很大的挑战。

一次语言学习体验

在我们开始学习一门语言或者技术的时候,我们可能会从一门hello,world开始。

好了,现在我是Scala语言的初学者,接着我用搜索引擎去搜索『Scala』来看看『Scala』是什么鬼:

Scala 是一门类Java 的编程语言,它结合了面向对象编程和函数式编程。

接着又开始看『Scala 'hello,world'』,然后找到了这样的一个示例:

object HelloWorld {

def main(args: Array[String]): Unit = {

println("Hello, world!")

}

}

GET到了5%的知识。

看上去这门语言相比于Java语言来说还行。然后我找到了一本名为『Scala 指南』的电子书,有这样的一本目录:

  • 表达式和值

  • 函数是一等公民

  • 借贷模式

  • 按名称传递参数

  • 定义类

  • 鸭子类型

  • 柯里化

  • 范型

  • Traits

  • ...

看上去还行, 又GET到了5%的知识点。接着,依照上面的代码和搭建指南在自己的电脑上安装了Scala的环境:

brew install scala

Windows用户可以用:

choco install scala

然后开始写一个又一个的Demo,感觉自己GET到了很多特别的知识点。

到了第二天忘了!

接着,你又重新把昨天的知识过了一遍,还是没有多大的作用。突然间,你听到别人在讨论什么是这个世界上最好的语言——你开始加入讨论了。

于是,你说出了Scala这门语言可以:

  • 支持高阶函数。lambda,闭包...

  • 支持偏函数。 match..

  • mixin,依赖注入..

  • 等等

虽然隔壁的Python小哥赢得了这次辩论,然而你发现你又回想起了Scala的很多特性。

你发现隔壁的Python小哥之所以赢得了这场辩论是因为他把Python语言用到了各个地方——机器学习、人工智能、硬件、Web开发、移动应用等。而,你还没有用Scala写过一个真正的应用。

让我想想我来能做什么?我有一个博客。对我有一个博客,我可以用Scala把我的博客重写一遍:

  1. 先找一Scala的Web框架,Play看上去很不错,就这个了。这是一个MVC框架,原来用的Express也是一个MVC框架。Router写这里,Controller类似这个,就是这样的。

  2. 既然已经有PyJS,也会有Scala-js,前端就用这个了。

好了,博客重写了一遍了。

感觉还挺不错的,我决定向隔壁的Java小弟推销这门语言,以解救他于火海之中。

『让我想想我有什么杀手锏?』

『这里的知识好像还缺了一点,这个是什么?』

好了,你已经GET到了90%了。如下图所示:

希望你能从这张图上GET到很多点。

如果大家对C/C++感兴趣的话,可以加一下我们的学习交流Q群:637  935  295,免费领取一套学习资料和视频课程哟~

输出是最好的输入

上面那张图『学习金字塔』就是在说明——输出是最好的输入。

如果你不试着去写点博客、整理资料、准备分享,那么你可能并没有意识到你缺少了多少东西。虽然你已经有了很多的实践,然并卵。

因为你一直在完成功能、完成工作,你总会有意、无意地漏掉一些知识,而你也没有意识到这些知识的重要性。

从我有限的(500+)博客写作经验里,我发现多数时候我需要更多地的参考资料才能更好也向人们展示这个过程。为了输出我们需要更多的输入,进而加速这个过程。

而如果是写书的时候则是一个更高水平的学习,你需要发现别人在他们的书中欠缺的一些知识点。并且你还要展示一些在别的书中没有,而这本书会展现这个点的知识,这意味着你需要挖掘得更深。

所以,如果下次有人问你如果学一门新语言、技术,那么答案就是写一本书。

如何应用一门新的技术

对于多数人来说,写书不是一件容易的事,而应用新的技术则是一件迫在眉睫的事。

通常来说,技术出自于对现有的技术的改进。这就意味着,在掌握现有技术的情况下,我们只需要做一些小小的改动就更可以实现技术升级。

而学习一门新的技术的最好实践就是用这门技术对现有的系统行重写。

第一个系统(v1): Spring MVC + Bootstrap + jQuery

那么在那个合适的年代里, 我们需要单页面应用,就使用了Backbone。然后,我们就可以用Mustache + HTML来替换掉JSP。

第二个系统(v2): Spring MVC + Backbone + Mustache

在这时我们已经实现了前后端分离了,这时候系统实现上变成了这样。

第二个系统(v2.2): RESTful Services + Backbone + Mustache

或者

第二个系统(v2.2): RESTful Services + Angular.js 1.x

Spring只是一个RESTful服务,我们还需要一些问题,比如DOM的渲染速度太慢了。

第三个系统(v3): RESTful Services + React

系统就是这样一步步演进过来的。

尽管在最后系统的架构已经不是当初的架构,而系统本身的业务逻辑变化并没有发生太大的变化。

特别是对于如博客这一类的系统来说,他的一些技术实现已经趋于稳定,而且是你经常使用的东西。所以,下次试试用新的技术的时候,可以先从对你的博客的重写开始。

超实用编程技术指南!为什么你还学不会一门编程语言?相关推荐

  1. 编程指南_halide编程技术指南(连载一)

    本文是halide编程技术指南第一更,作为引子.后面的章节会陆续更新. 公众号:麻瓜智能 Halide是一种编程语言,使得在现代机器上编写高性能图像和数组处理代码更加容易.Halide支持如下的平台: ...

  2. 编程达人教你如何快速掌握一门编程语言附技术书阅读方法论

    附Java/C/C++/机器学习/算法与数据结构/前端/安卓/Python/程序员必读书籍书单大全: 书单导航页(点击右侧 极客侠栈 即可打开个人博客):极客侠栈 ①[Java]学习之路吐血整理技术书 ...

  3. 编程达人教你如何快速掌握一门编程语言

    现在的开发工作要求我们能够快速掌握一门编程语言.怎样才能快速掌握一门编程语言呢?一般来说应对这种挑战有两种态度:其一,粗粗看看语法,就撸起袖子开干,边查Google边学习:其二是花很多时间完整地把整个 ...

  4. halide编程技术指南(连载一)

    本文已同步至公众号,欢迎关注. Halide是一种编程语言,使得在现代机器上编写高性能图像和数组处理代码更加容易.Halide支持如下的平台: CPU体系结构:X86,ARM,MIPS,Hexagon ...

  5. 新手编程:程序员 5 种编程入门方法,快速学会一门编程语言!

    程序员要精通一门语言,还是要掌握多门语言? 对于这个问题,公说公有理,婆说婆有理. 技术更新太快,精通一门编程语言已经实属不易,又怎么好意思说精通多门语言呢? 不过呢,当你精通一门语言同时,涉猎一下其 ...

  6. Go 开发关键技术指南 | Go 面向失败编程 (内含超全知识大图)

    作者 | 杨成立(忘篱) 阿里巴巴高级技术专家 关注"阿里巴巴云原生"公众号,回复 Go 即可查看清晰知识大图! 导读:从问题本身出发,不局限于 Go 语言,探讨服务器中常常遇到的 ...

  7. 觉得还不错的国内外编程技术网站、论坛列表

    http://www.iteye.com/ ITEYE技术论坛 网站/论坛:CSDN 网址:http://www.csdn.net 介绍:由<程序员>杂志社主办,集新闻动态.技术文档.论坛 ...

  8. 上周技术关注:函数式编程另类指南

    [网站设计, 用户体验] 改进网页可读性(Readability)的7个方法 >> [用户体验, delicious] 美味书签(del.icio.us)的用户体验改进项目 >> ...

  9. 还在犹豫学不学编程技术?未来十年AI将改变世界,犹豫将错失高薪就业机会!

    61岁的比尔·盖茨在给大学毕业生的信息中称当前时代是"一个非常好的时代".当他幸运的时候,他有机会参加20岁时改变世界的数字革命,盖茨如果你今天寻找的机会与你在世界上产生同样的影响 ...

最新文章

  1. LeetCode简单题之最长和谐子序列
  2. 深入浅出linux三剑客之sed必杀技一例
  3. oracle雾化试图_Oracle创建物化视图
  4. fio模拟mysql写入速度_IO压力测试工具 -- FIO 使用说明
  5. s4-介质访问控制子层-1 MAC子层
  6. 关于visual studio类视图和资源视图不显示类和资源的问题
  7. 基于OpenGL编写一个简易的2D渲染框架-07 鼠标事件和键盘事件
  8. String转换为int类型
  9. Java工作笔记-注解的进一步理解
  10. LeetCode--11.盛最多的水(双指针,暴力)
  11. java中的浮点数相加
  12. IOS学习笔记06---C语言函数
  13. python调用matlab绘图_python初步调用MATLAB及网址存档
  14. python用什么软件编程-python开发用什么编辑器
  15. yolo v4模型训练过程(超详细)
  16. 发那科机器人注油_东莞发那科工业机器人维保中心
  17. 深入浅出Yolo系列之Yolov3Yolov4Yolov5Yolox核心基础知识完整讲解
  18. 用python编程小程序制作_一个非常适合Python新手的编程案例——投票小程序
  19. Pearson相关分析
  20. 宠物商店信息管理系统(C++)

热门文章

  1. 2021数字化就业新职业新岗位研究报告
  2. java图片失真_java 图片合成 解决图片失真问题
  3. 为什么要写this在访问成员变量的时候_C++幕后故事(一) --对象模型this指针调整...
  4. 全栈工程师薪水_2019Java 全栈工程师 进阶路线图!一定要收藏!
  5. 2015年《大数据》高被引论文 Top10
  6. 【2016年第1期】大数据隐私保护技术综述(下)
  7. 作者:董诚,华中科技大学计算机科学与技术学院硕士生。
  8. 动态规划求解装箱问题(洛谷P1049题题解,Java语言描述)
  9. 【Java】《Java编程的逻辑》第3章 类的基础 笔记+感悟分享
  10. 【数据结构与算法】共享栈的Java实现