摘要:代码之髓读后感如何高效的学习语言技术读后感王垠如何掌握程序语言代码之髓这本书里提出了三种学习语言的方法如何高效的学习语言在比较中学习在历史中学习在实践中学习在比较中学习通过比较多种语言,总结出某种语言的独有特点,以及多种语言的共有特点。
title: 代码之髓读后感——如何高效的学习语言
date: 2017-07-08 17:17:00
categories: 技术
tags: 读后感
王垠:如何掌握程序语言
《代码之髓》这本书里提出了三种学习语言的方法—— 如何高效的学习语言?
在比较中学习
在历史中学习
在实践中学习
在比较中学习通过比较多种语言,总结出某种语言的独有特点,以及多种语言的共有特点。
借用王垠的一些话——
重视语言特性,而不是语言。
何一种“语言”,都是各种“语言特性”的组合。
每一种语言里面必然有一套“通用”的特性。比如变量,函数,整数和浮点数运算,等等。这些是每个通用程序语言里面都必须有的,一个都不能少。你只要通过“某种语言”学会了这些特性,掌握这些特性的根本概念,就能随时把这些知识应用到任何其它语言。
掌握了通用的语言特性,剩下的就只剩某些语言“特有”的特性了。研究语言的人都知道,要设计出新的,好的,无害的特性,是非常困难的。所以一般说来,一种好的语言,它所特有的新特性,终究不会超过一两种。如果有个语言号称自己有超过 5 种新特性,那你就得小心了,因为它们带来的和可能不是优势,而是灾难!
各种语言之中,都有着共性,这是基本,而个性只是部分点。
在比较中学习,可以帮助我们更清楚地意识到:
哪些点是共性——就是上面王垠所谓的“语言特性”,因为这才是语言的基本。掌握了这些共性,对于我们的语言学习有着极大的帮助。这通常确定着一门语言的基本架构方式,大致的代码雏形,以及基本流程。这会告诉我们如何去站立,如何去行走。
哪些点是个性——这个是需要我们深入使用时需要考虑的点。因为一般这些东西,都是一些在当前特定的条件下的,“如此做更为方便”的方法。有时候这些东西可能不是必要的考量,但是掌握他们,对于此门语言使用往往会起到提升整体质量的作用。甚至促使我们对于解决适当的问题有着更为灵活多选的方式。这会告诉我们如何在现在的路上奔跑,跳跃。因为这时候更加关注了这条路上的细节,哪里有坑,哪里有捷径...
因为掌握了语言特性的人都知道,自己需要的特性,在任何语言里面一定有对应的表达方式。
借用在当下的语境中,重视在对比中学习,体会到更多的语言特性,会帮助我们对于语言的学习变得更加有一种直观的感受。我们的思维中,解决问题变得自然而然。编程就是把思维映射到机器中的途径而已。我们已经知道什么样的想法可以用怎样的工具来实现,那实现想法也不就是一段段思路的拼接的过程么?
我们有时会发现,编程其实并不难,似乎就是需要了解下这门语言中有着哪些工具可供我们利用,我们需要做的就是熟悉这样一套系统,一台大型设备的各种功能。但是我们最后会发现,也只有那些其他工具也具有的功能,才是我们最起码要知道的。那些高精尖的技巧,也不过是在特殊环境下的应对方式。
感觉学起来好像很容易,但是实际上我们在学习中总是会迷失在各种细节中,最典型的就是类似于C中关于输出的格式的翻炒——
举个夸张点的例子。我发现很多编程培训班和野鸡大学的编程入门课,往往一来就教学生如何使用 printf 打印“Hello World!”,进而要他们记忆 printf 的各种“格式字符”的意义,要他们实现各种复杂格式的打印输出,甚至要求打印到文本文件里,然后再读出来……
对于掌握编程的核心概念来说,这些其实都是次要的。
总而言之,通过对比学习,你会更容易发现真正的语言特性究竟是什么。学习编程到底要学习什么。
在历史中学习通过追溯语言的发展历史,了解语言是如何产生,变化,消失的,探寻语言发展演变的轨迹。
有时候,我们在学习中,对于一些功能的学习,往往会不明所以,这其实是因为,对于这种功能,你自己从内在其实并没有觉得理所当然,就像是为什么要有类这一类的问题其实潜在的就在你的心头萦绕着,这使得你的学习,会变得茫然,就像我们最初学习线性代数,上来就整一堆定义,先把你整晕,再来一堆定理,往往不明所以,直接就迷失了,到头来脑袋空空,真正的实际应用中,什么也变不出来。所以我到现在对于线性代数还是充满了敬畏。
在历史中学习,能帮助我们更加清晰地了解那些被掩埋的细节。回看语言设计者为了解决何种问题而创造出这样一种语言,阅读其发展变迁的历史,那些功能的缘由就会变得清晰,你也就会更加认同其中所蕴含的现实意义。
而从历史中学习,也是有助于我们更容易了解到语言的特性,那些非特性的部分为什么被创造出来,是为了解决一种什么样的具体问题。这些都有助于加深我们对于语言的理解。
在实践中学习亲自进行程序设计,边实践边思考如何编程,才能深入了解设计者的意图,同时也能发现自己原先理解的不到位之处。
这是这行的至上真理。
三种学习的方式,实际上是为了满足我们学习语言的三种情绪:希望快速掌握的迫切,对于未知事物的求真以及对于自我认知的测验
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/67242.html
摘要:两篇文章今天看了两篇文章我觉得对我的影响会很大当然都是相关的一篇是在大会上的演讲有视频也有文字版关于数据库另一篇是关于的文章从上看到的关于架构来源前面一篇是在的文档上看到的这文档上有不少我关心的技术的作者最近在上 两篇文章 今天看了两篇文章, 我觉得对我的影响会很大, 当然, 都是 React 相关的: 一篇是 Martin Kleppmann 在 Strangeloop 2014...
摘要:日期和时间使用类完成读取设置比较和计算日期与时间。单元测试单元测试是从编写开始,贯穿于整个开发周期的一种用于保证函数类和方法的行为与预期一致的编程方法。是应用的单元测试框架的业界标准,其他几个可选框架是行为驱动开发行为驱动开发有两种方式和。 《php之道》阅读地址:http://wulijun.github.io/php-the-right-way/#code_style_guide ...
摘要:标签不区分大小写,但推荐小写。标签可以嵌套,但不能交叉嵌套。标签也称为元素。比如行内标签亦可成行内元素。 ❤️HTML必备知识详解❤️ 第一部分:HTML框架简介...
摘要:作为一名前端架构师,你的工作是不断地探索和评估新的技术平台方法和框架。世界上没有一刀切式的解决方案,而前端架构师的使命正是将项目的需求与前端开发的实际情况相结合。 做前端工作一段时间了,也写了不少的项目。但是突然好像快要失去了兴趣。美工、后台、项目经理、测试等人员多层夹击。美工说就这么设计,你就得完全按着来。后台说这个需求做不了,得那样做,于是已经做好的页面推倒重来。测试说,这样做更符...
阅读 3382·2021-11-24 09:39
阅读 1786·2021-11-17 09:33
阅读 3474·2021-10-12 10:12
阅读 5001·2021-09-22 15:51
阅读 1101·2019-08-30 13:11
阅读 3558·2019-08-30 10:59
阅读 556·2019-08-30 10:48
阅读 1302·2019-08-26 13:48