Terence
Terence

Let's geek and art.

学习一门新语言时我会关注哪些东西

因为6.824的关系大概看了一点关于Golang的whirlwind tutorial。一个粗浅的感觉是,Go的很多syntax还是很有个性的,精简而优雅。特别是关于interface、concurrency的特性设计,初次接触就会激发起你的一些兴趣。大概看了几个简单应用的实例,感觉上手还是挺快,还需继续做深入的研究。

学习新的编程语言会随着你自身level的提高而变得不同。若是在以前,大概掌握了这门语言的syntax可能就会产生学会了的错觉。但事实上,对于新语言的考察,应该在syntax之外。

1、学习一门新语言,最粗浅的作用可能就是把它当做学习一门外语一样,只起到一个翻译性的作用。比如你的工作涉及到了某个中间件,你需要深入了解这个中间件的某个特性。于是,你必须掌握编写这款软件的语言。你需要的可能仅仅是读懂想要知道的内容。

2、再来是你进入一个team,这个team的某个小项目使用的是这门语言。于是,你可能需要更精准地掌握这门语言的语法规则,至少能够轻松地独立写出小项目。

3、如果你工作的主项目或者自己的业余项目的需求,决定了需要使用这门语言,你就需要更深入地去理解这门语言,而不仅仅是停留在语法层面。此时,你需要了解这门语言的底层model,即以什么样的方式来看待很多基础性的概念。

例如同样是OOP,js和java对object与class的处理方式是完全两样的。如果你用java的模型去写js,势必会写出效率低下、bug叠出的代码来。

又或者是处理并发问题,你就更需要仔细研究背后对锁机制、共享变量、同步异步等问题的model。以何种方式去看待这些基础概念,决定了你应该以什么样的方式去应用这门语言。

4、当你对这门语言的底层model有了较为充分的了解后,你就可以进一步去思考为什么这门语言要以这种视角去设计那些基础概念(当然,你在了解底层model的过程中也可以探索这个问题)。

此时,你就不应该再局限于技术世界,而应该跨越到业务领域,弄清楚这门语言的诞生之初是为了解决什么业务领域的什么问题。这个业务领域的商业模式是什么、市场需求是什么、业务痛点是什么,面对这些需求和市场特点,为什么已有的语言工具会不够用?如果让你来打造一门工具来应对这些需求变化,你会如何下手?

一边思考这些问题,一边再将这门新语言的特性和底层model联系起来,你就会逐步以更高的视野来重新审视这门语言,并开始留意一些之前不曾注意的微小特性。经历了这个过程之后,这门语言的特性、设计理念和对通用性计算问题的思考视角,对你来讲应该要像呼吸一样自然。

如果还有让你感觉不舒服的地方,你应该继续迭代上面的步骤,继续趋势自己做更深入的思考。





近期回顾

paper为什么这么难读以及应该如何吃掉它

气定神闲背后的手段与手腕

《后浪》中的浪中浪



 

如果你喜欢我的文章或分享,请长按下面的二维码关注我的微信公众号,谢谢!


  

更多信息交流和观点分享,可加入知识星球:


CC BY-NC-ND 2.0 版权声明

喜欢我的文章吗?
别忘了给点支持与赞赏,让我知道创作的路上有你陪伴。

加载中…

发布评论