Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >如何学习一门新的语言?

如何学习一门新的语言?

作者头像
前端教程
发布于 2018-08-06 07:39:16
发布于 2018-08-06 07:39:16
3440
举报
文章被收录于专栏:程序员IT圈程序员IT圈

首先要说,这并不是一篇教你如何学习的文章,因为到今天为止我也没有找到一种通用的方法来解决如何学习的问题。但是在探索的道路上,我确实产生过一些思路,我想把这些思考的过程分享出来让大家探讨。如果这对你有帮助的话,那我会非常高兴。

我最近在学习 Rust ,这是一门很酷但是相对冷门的语言(学习冷门语言可能是我的一大爱好,比如我就非常喜欢 CoffeeScript ,这是 JavaScript 的一门方言)。自从在某些语言的舒适区待久之后,经常会产生自己无所不能的错觉,这也是我不断想学习新语言的一大动力。

而我的学习过程跟大多数人类似,就是先在网上找文档然后自学。而在看文档的过程中,我就发现了一些问题。

手册的作用

“去看文档喽。”这是老鸟在面对新手时最喜欢扔的一句话,我通常也是这么扔给自己的。但当你打开一门语言的手册,你会发现它除了教你语法外,几乎没有教你什么其它东西。于是你会陷入这样一个境地:

“背下来了么?” “背不下来,太难懂了。” “再看一遍,给我背下来。” 。。。 “背下来了么?” “大部分背下来了。” “给我写个程序,实现个XX功能。” “不会。。。” “。。。”

在一个高级开发者眼里,你会了语法理所当然就应该会写程序了,但实际情况并非如此。这让我想起前段时间跟一个朋友关于目前编程教育市场的一个讨论。我出于自己的经验提出一个想法:让大牛开发者来教新手入门。在我的设想中,大牛开发者拥有强大的实战经验,以及丰富的专业知识,更是自带光环,这不比现在市场上那些半吊子的讲师好多了。在我为自己“伟大”的想法得意的时候,朋友给我浇了一盆冷水。他告诉我这样根本行不通,大牛根本不知道菜鸟需要什么知识,你可能以为基础语法讲清楚就好了,人家却连编辑器是什么都不清楚。设想一下,让一个大学教授去教一群小学生,这对两者来说都是一种灾难吧。

这些语言的创造者,或者文档的作者,无疑都是一些大神。它们在撰写一个语言手册的过程中,只能尽量负责地把这个语言的全貌准确地有组织地展现给你。然而这种全面的展现,对于一个没有任何引导的初学者来说并不完全是一件好事。简单来说就是,你会在一些次要的事情上浪费太多时间,而一些主要的概念又没有理解透彻。

关于看真实代码

当觉得文档满足不了你的时候,老鸟们往往会扔给你第二招:看代码。看什么代码呢?那还用说,当然是被业界奉为经典的,在 GitHub 上至少有一万颗星的知名开源项目代码啦。

当你怀着崇敬的心情,打开扔给你的网址,看着满屏幕的代码时,你会对自己问出那三个经典的哲学问题。这是什么东西?它是怎么做到的?为什么要这么写?搞不好某些人还会因为惊吓过度,从而失去了学习下去的信心。

那么让我们一起来看看这些代码里有什么鬼东西,会吓得新手信心不足。

大段的注释

说一件事你们不要笑,在我还是个萌新的时候,我曾经对这些穿插在代码中的神秘文字产生了深深的困惑,我还以为它们对代码有某种加成作用,以至于我还试验过把注释去掉会对代码执行产生什么影响。而现实中好的代码会让后面的维护者方便很多,但不好的甚至错误的注释会让人迷惑不已。

语法糖

语法糖是个好东西,它大大简化了我们的编程过程,高手用起语法糖写起代码来简直不要太爽,所以越强大的项目这玩意儿越多。但是对于初学者来说,语法糖隐藏了一些细节,而且让语法看起来很怪异。有些代码如果你用标准语法来写是很好懂的,但如果用语法糖来写的话很难让人一下子明白。

初学者为了弄懂这些语法往往要花大量时间,但其实这些时间在这个阶段是没必要的浪费。你看不懂它觉得它是一个很重要的东西,其实它只是一个做工精巧的小玩意儿,离开了它这些代码照样能工作。而随着你的经验丰富,也可以随时随地用起来,用的方法可能也不尽相同。

代码里的重点

对于一个开源项目来说,往往 50% 的代码可能都是在适配各种不同的运行环境,将系统的 API 抽象成项目里通用的接口,这部分代码除非你自己要做类似的项目,要不然的话对初学者来说参考意义不大。更何况,为了适配某些系统奇葩的运行环境,开发者往往会大开脑洞,创造出一些非常奇怪的代码。这些旁门左道充满了玄学和不确定性,初学者看多了可能会发生如武侠小说里练功出差错的结果:走火入魔。

剩下的代码里 20% 是项目内部的接口抽象和定义,最后 30% 才是真正值得看的东西,它们往往散落在各个地方,但又为了一个设计核心服务。让初学者识别出这些代码来,未免太强人所难。

野文档

这是我自己的一个定义,我把一切非官方的开发文档都称为野文档。初学者会在搜索引擎里得到大量的相关文档,他们很多是学习心得,很多人在写这篇文章时水平可能比你也高不了多少。这就造成了这些文档的水平参差不齐,所面向的重点也不同,也许你花了大把时间弄懂的是一个错误的或者过时的知识。而大部分号称教你入门的文章,可能也就是告诉了你如何搭建一个运行环境,这门语言的精髓和重点作者自己估计也没弄明白。

而如果你碰到一篇被奉为经典的好的入门文章,那你真的要好好感谢作者。因为这意味着作者付出了大量的深入思考,深入浅出这四个字说起来简单,做起来可是需要相当的功底的。

相对较好的做法

在这么多语言的学习过程中,我也总结了一些相对比较好的学习方法。我认为看代码是非常有必要的,因为光死记语法是无法掌握好这门语言的。但是去看一些大型项目代码的缺点我在上面也说了,到底该如何是好呢?

我建议大家可以去看官方给出的,专门供初学者学习的 Step-By-Step 代码,这种代码一般在官方的文档页就可以找到链接入口,它有如下好处:

  1. 由浅入深,富有层次。这些代码往往是跟随者文档的深入,慢慢把语法细节展开的。不会一下给你展现太多,让你无法 GET 到重点。每段代码都会有一个重点要表现的特性,这样看起来会一目了然。
  2. 有质量保证。这些代码的撰写一般是官方人员负责,这可以在很大程度上保证准确性。
  3. 更新及时。我们知道很多语言的细节是会随着版本的升级有所改变的,而很多网上的第三方文档往往缺乏维护,但官方文档一般都会同步更新。

我建议大家一边看手册一边看代码,这样印象会更深刻。眼睛看了之后,我认为要尽快找一些好的例子来练手,不需要一上来就搞比较复杂的大型项目,也是由浅入深。这种练手项目去哪里找呢,很多语言的 tutorial 板块就是干这个的,做的比较完善的甚至还提供在线的教学体验环境,大家应该好好利用。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-07-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员IT圈 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
​语言选型通史:快速整合产生的断层
关键字:兼容后端多语言体系,免binding一体化后端,llvm cling:全栈全范式语言系统
minlearn
2020/09/29
4300
学习 Python 编程的 19 个资源
作者 codecondo 编译 wzhvictor segmentfault.com/a/1190000004187319 用Python编写代码一点都不难,事实上它一直被赞誉为最容易学的编程语言。如果你准备学习web开发, Python是一个不错的开始,甚至想做游戏的话,用Python来开发游戏的资源也有很多。这是快速学习这门语言的途径之一。 许多程序员都把Python作为编程之旅的开始,然后是像PHP和Ruby这样的语言。它也是2014年最热门的web开发语言之一,并极力推荐学习。但是,P
CDA数据分析师
2018/02/23
1.5K0
学习 Python 编程的 19 个资源
有人对他说:如果连 Python 都学不会,你就不要学编程了
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前段时间,有读者在后台留言问我,「新手入门编程,怎么避免从入门到放弃?」,在我看来,这个问题很难三言两语就说清楚。 有一次,一个朋友向我推荐了侯爵的课程和教程,我一看,确实比我当初自学时的教程更生动易懂一些,看得出来排版和设计上也花了些心思,看着不觉得枯燥。 后来知道,侯爵本人的学习经历也和我接触过的人不太一样,他是设计背景出身的,不像科班出身的很自然就能养成编程思维,而是通过自学克服
昱良
2018/04/08
8670
有人对他说:如果连 Python 都学不会,你就不要学编程了
如何从零开始学一门程序语言?
今天一大早排队挂号给孩子看病,耽搁了,现在才发。 说实话,『能花钱的,就不要花时间』是篇即兴之作,本该随着时间被有限的听众渐渐淡忘。但没想到前有 @老赵 微博转发,后有知乎日报鼎力提携,这篇文章火得一塌糊涂,一下子把我推到了风口浪尖。我其实想委婉地表达一个意思:程序员的时间很宝贵,只要有能用合理价格买来的用来提高效率的产品和服务,就不要花时间找免费或廉价的替代品。但显然还是被不少人误读。不少人质疑的焦点放在了:『你是有钱了,可我们是屌丝,买不起正版软件,正版图书,盗版不也一样用么?』我没想到随手举的一个买正
tyrchen
2018/03/28
8140
我是如何学习一门新技术的
因为近期在业余时间看了一些书和文章,而且也都让自己颇有些心得,以前的快乐是打几把游戏现在的快乐是学会一个新知识,写一篇博客,享受写的这一个过程,所以今天又突然想写一篇感想类的文章,也是对自己的学习路上的一个小总结,因为本人也是正处于“IT工程师伟大发展之路”的初级阶段,所以平时还是要用大量的时间来学习积累。我一直认为不是所有的学习都有方法可言,都有捷径可走,即使我们每个人都希望自己能高效的学习,但是每个人的头脑和学习方式都可能是独一无二的,因此在这里我不讨论什么高效的方法,只讲讲自己学习每个知识点的一个小过程,不喜勿喷哦。
闫同学
2022/10/31
2750
我是如何学习一门新技术的
如何系统地自学 Python?
是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓? 幸运的是,Python 是一门初学者友好的编程语言,想要完全掌握它,你不必花上太多的时间和精力。 Python 的设计哲学之一就是简单易学,体现在两个方面: 语法简洁明了:相对 Ruby 和 Perl,它的语法特性不多不少,大多数都很简单直接,不玩儿玄学。 切入点很多:Python 可以让你可以做很多事情,科学计算和数据分析、爬虫、Web 网站、游戏、命令行实用工具等等等等,总有一个是你感兴趣并且
CDA数据分析师
2018/02/05
1.3K0
如何系统地自学 Python?
学习新的编程语言的12个方法
来自:开源中国 链接:https://my.oschina.net/editorial-story/blog/882272 原文:https://opensource.com/article/17/4/12-ways-study-new-programming-language 听说,你决定要为你的 “技能树” 再添加一门特定的编程语言。那该怎么办呢? 在这篇文章中,作者提出了 12 项关于学习技术的建议。记住每个人学习的方式都不一样。其中一些可能对你十分有用,而其他的则可能无法满足你的需求。如果你开始担心
企鹅号小编
2018/02/20
7750
学习新的编程语言的12个方法
什么叫“语法糖”?搞懂才不怕别人装13! | 附微软官方M语法及函数手册下载
在微软官方M语法及函数手册(关注公众号,发送消息“M手册”即可下载)里,有两个地方提到“语法糖”(Syntactic sugar)这个词,很多朋友看到都会觉得很奇怪,“语法糖”到底是个啥呢?
大海Power
2021/08/31
2.4K0
【编程技巧】如何学习一门编程语言
如果你有兴趣创建电脑程序,手机app,网站,游戏或者其他的软件,那么你应该很想学习怎么去创建它。程序是通过编程语言创建的,编程语言可以让程序运行与某个机器上,可能是电脑,手机或者其他的硬件。 现在世界
程序员互动联盟
2018/03/12
1.2K0
【编程技巧】如何学习一门编程语言
如何利用AI辅助学习一门新的开发语言
在当今快速发展的科技时代,掌握一门新的开发语言对于特效药开发者而言具有至关重要的意义。从深入研究药物分子模拟到高效处理临床数据分析,不同场景下合适的开发语言能极大提升我们的工作效率与创新能力。然而,学习一门全新的开发语言绝非易事,充满了各种挑战。值得庆幸的是,随着人工智能(AI)技术的飞速发展,它成为了我们学习征程中的得力助手,为整个学习过程带来了全新的可能和显著的助力。
Front_Yue
2025/03/21
1210
如何利用AI辅助学习一门新的开发语言
我该选择哪一门语言?
你准备好学习一门新的编程语言了吗? 也许你刚刚来到程序开发的世界,那么欢迎你!也许你已经有很多年开发经验,只是现在你觉得可以去尝试点新鲜东西。 选择一门编程语言是个艰难的决定,太多的语言让你陷入选择恐
Crossin先生
2018/04/16
5960
我该选择哪一门语言?
如何选择第一门编程语言?
译者:“互联网+”时代,不懂点计算机、不会点编程是不行的。但是编程语言数目众多,近几年还诞生了Rust、Ceylon等新生语言,到底该如何选择?
鲜枣课堂
2019/07/22
1.3K0
如何选择第一门编程语言?
给Python初学者的6个实用建议
编程作为一项技能,需要长期的训练以达到熟练的地步。每天写一点代码,保持对代码、语法和逻辑的敏感度,有利于初学者巩固新接触的知识和概念。
州的先生
2020/08/27
5450
给Python初学者的6个实用建议
C加加的学习方法!
学习C++重在理解其各种语言设施所代表的语义,以及C++所能表示的语义所代表的设计思想。首先从宏观上入手,你需要明白的是C++是程序设计语言的本质。在此我把C++最重要的性质写下来:C++是一门静态类型检查,基于C内存模式,支持四种基本程序设计范型的语言。注意,这里说明了三个本质特性,静态说明了语言的类型检查性质,基于C内存模式告诉我们在C++中所有与内存有关的操作都需要程序员自己来负责,这样就带来了很多设计程序时的需要注意的地方,而理解支持的四种基本范型却是理解各种语言设施的基础。 分享之前我还是要推
企鹅号小编
2018/01/24
8770
python入门 2018最新最全学习资料免费获取啦
是否非常想学好 Python,一方面被琐事纠缠,一直没能动手,另一方面,担心学习成本太高,心里默默敲着退堂鼓?
原来是泽镜啊
2018/08/16
6160
一门编程语言如何理解?
记得刚开始学编程那会儿,没有任何计算机基础,编程语法大多靠背——C++语法,操作系统各项定义,计算机网络各种协议......
主机优惠
2019/06/20
7300
如何快速掌握一门技术
今早体检去了,发晚了,见谅。 几周前一个朋友也打算通过跑步来甩一甩脂肪,控制一下自己那已经严重扭曲了的身材 —— 他便求教我从衣服到鞋,从腕表到心率带,都买了什么装备,性能如何,他好照着原样来一套。我告诉他我什么装备都没买,跑了半年多了,我还是随便套上件纯棉的T恤,穿条舒服的运动短裤,蹬着跑鞋,抓着手机,就这么跑将起来。他连连说不信,一个连排汗速干的衣服,臂包,运动腕表都没配的人,怎么也能(配得上)跑步? 这让我想起了我在撰写「程序人生」公众号经常会遇到的一些读者留言: 「我想学rails,有没有推荐的ru
tyrchen
2018/03/28
1K0
如何学习一门编程语言
前言 这里筑梦师,是一名正在努力学习的iOS开发工程师,目前致力于全栈方向的学习,希望可以和大家一起交流技术,共同进步,用简书记录下自己的学习历程. 个人学习方法分享 本文阅读建议 1.一定要辩证的看待本文. 2.本文主要记录自己如何学习一门编程语言. 3.觉得哪里不妥请在评论留下建议~ 4.觉得还行的话就点个小心心鼓励下我吧~ ---- 目录 1.如何学习一门编程语言 2.如何快速学习编程语言 3.学习编程语言的特点 4.如何进行系统的编程语言学习 5.如何拓展自己 6.其他书籍 ---- 如何学习
筑梦师winston
2018/05/10
2.2K0
怎样学习一门编程语言
1、选择一门语言 2、确定你感兴趣的领域 你可以开始学习任何编程语言(尽管其中一些被描述地比其他的更加“易学”),你得去问自己自己想用通过学习这门语言完成什么样的工作。这将会帮助你确定你应该追求的编程
程序员互动联盟
2018/03/13
1.5K0
怎样学习一门编程语言
如何在选择一门编程语言后,进行深入造化?
关于编程,是选择去培训还是自学,这是一个千人千面的问题,小编之前看过一篇文章,感兴趣可以去围观:《想编程,是勤奋自学还是去培训班学习?》,而今天文章主题是 做了选择之后该如何一步步走下去?
逆锋起笔
2020/04/15
6480
如何在选择一门编程语言后,进行深入造化?
相关推荐
​语言选型通史:快速整合产生的断层
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档