NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

学习一门新编程语言的 6 步

  • 2019-09-27
  • 本文字数:3109 字

    阅读完需:约 10 分钟

学习一门新编程语言的6步

有些人学习编程刚开始头脑发热,买了很多书,下载很多视频,收藏上百 G 的资料,没过几天,热情就褪去了,最后完成了从入门到放弃的全过程,究其原因主要是缺乏清晰的目标,没有方向,或者方向不明确。那么,我们应该要怎么学习才能掌握新的编程语言呢?让我们来看看 Jun Wu 是怎么做的。



学习一门新编程语言是一个让你能学到重要人生经验的过程。


我们要求程序员学习很多东西。随着大数据、人工智能、机器学习和云计算的普及,开发人员正努力克服系统开发中的大量挑战。我们所有的开发人员都不再仅仅是程序员了。藉由新的体系结构,我们可以熟练地学习我们系统的新基础设施设计。通过新的人工智能机器学习算法,我们在学习数学、统计学和函数式编程方面很熟练。有了大数据,我们就能擅长学习所有可用于分析数据的不同 API。


在某种程度上,我们作为开发人员的工作,正日益趋向多学科化。在这个蓬勃发展的多学科世界里,我们面临的最大挑战就是学习。


快速学习编程语言和深入了解不同学科是一项挑战。但这是一个非常有趣的过程。对我来说,正是学习,让我一次又一次地回到编程上来。


通过不断学习,你可以通过以下几种方式为你的生活增添光彩:


  • 拜见该领域的新专家

  • 在思考你的项目时,引入新的创造力

  • 拓展你的职业前景

  • 当你对目前工作变得自满时,克服无聊

  • 在技术领域中保持领先地位

  • 发现生活中的新激情


在我上一篇文章《如何快速学习一门新的编程语言》(How To Learn a New Programming Language Fast)中,我曾介绍了一个秘诀,如何能够以快速和敏捷的方式掌握许多编程语言。


在本文中,我将对学习过程进行拆分,这样你就可以对学习新的语言和概念有一个大致了解。有时候,学习一门新语言需要十年时间,就像徒步攀登高山一样。当你认为自己是 Python 大师的时候,你就会发现,你可以做更多其他种类的项目,这些项目将提高你对 Python 在特定目的上的使用水平,这些都是你以前从未想过的。


最终,一切都在掌控中。


一旦你成为专家,你就可以像体操运动员那样敏捷地编程,你的手指将会引路,而你的大脑是一个富有效率、充满创造性的司机。


你得到的回报并不是工作保障,而是生活上的安全感。


这是一种安全感,知道自己可以学到任何复杂的东西,可以克服解决问题的任何障碍。


在心理学中,知识的内化也包括行为的内化。通过知识的内化,你就创造了新的思维路径,这将得到以下结果:


  1. 将知识从短期记忆转移到长期记忆。

  2. 创建能够吸收新知识的知识路径。

  3. 能够创建新的知识获取、知识保留和知识创建的行为。

一、先从关键要素和概念开始

最初,当你学习一门新的编程语言时,你想将学习重点放在那门编程语言的关键要素和概念上。列出一份这门编程语言的“核心”学习清单,然后一步一步地进行学习,这才是正确的方法。


知所知,知弗知


如果你想学习 Python,可以请 Python 专家或老师为你画一张“核心”学习的清单。你还可以通过学习一门课程来逐步了解 Python 编程的基础。搜索该编程语言的面试问题清单。

二、进行发散,提出足够多的问题,找出正确答案

当你在学习编程语言中的“核心”概念时,你是否经常列出要提问的问题清单?我经常发现自己离题十万八千里。也就是说,我倾向于沿着我的思路,打破砂锅问到底。


所以我从关于 Python 的概念 A 开始,然后在 Google 上搜索一大堆关于 Python 中面向对象编程的内容,这就发现了一个以后可能要做的项目。


通过这一过程,我将语法约定、面向对象的编程概念和一系列常用的数据结构加入了书签。要问的正确问题可能就隐藏在我刚刚加入书签的其中一个网页中。通过浏览这些网站,我就将能够编制出一份关键问题的清单。


你要学会提出正确的问题来掌握核心技能。

三、养成每天学习的习惯

在我的职业生涯中,从学习许多编程语言中得到的一些最好的收获就是,我在生活中养成提高效率的习惯。我每天至少要花两个小时学习,这一习惯贯穿了我的职业生涯中。


每天两个小时看似不多,但一年下来,并坚持 15 年呢?那将是一个可观的数字:2x365x15=10950 小时!工作之余,就像健身训练一样,我还有一个长达 10950 小时的健脑训练,已持续 15 年,让我能够 得以学习到新的东西。


大部分时间,我只是在早上 5 点起床而不是早上 7 点,或者晚上 11 点而不是 9 点睡觉,这样我就有更多的时间用来学习。


你终将知晓,学习是有趣的,学习是在你自己的时间,学习是一种激情。

四、雪球效应

当你克服学习复杂概念和项目的复杂障碍后,你的信心就会像滚雪球那样越滚越大。我在工作中也目睹过。这并不完全是“流”的状态。它更像是一种激励你的能量,让你整个人都充满活力。这与喝咖啡、果汁或过健康的生活方式一样。汝欲乘长风,破万里浪兮。


这种激励能量转化为想要学习所有关于基础设施、设计和存储的知识之动力。这种动力转化为想要尝试不同的方式进行编程:命令性、事件驱动、流程驱动等。


这种激励能量转化为提出一些问题,比如“为什么我们要这样设计系统的这一部分?为什么我们要在这个项目使用这种编程语言?为什么我们要选择这种基础设施技术来扩展项目?为什么我们要用这种方式来对项目的这部分进行编码?为什么我们要这样设计错误处理?为什么我们要这样设计消息处理?”


问这些问题会让你找到解决问题的方法。在项目上工作,会让你不断学习如何正确回答“为什么……”这一系列问题,可以让你更快地变得精通起来。


你要有动力去问为什么,这样你才能找出答案。

五、养成反复实践的习惯,敢于冒险,勇于创新

你是自己编程生涯的主人。每个人对风险的接受程度并不一样。是编程,让我学会了在职业生涯中承担一定的风险。是编程,让我对自己解决问题的能力有了信心。是编程,让我学会了要对自己的创造力充满信心。


这一切都是因为我反复练习编程语言,而这些语言是我最熟悉的编程语言。反复练习未必枯燥乏味。事实上,要想真正精通一门编程语言,参加能让你学习编程语言不同部分的项目是必不可少的。


只有学会了不同解决问题的方法,你才能学会在解决问题的过程中发挥创造性。只有在考虑编写代码的最佳方式时,你才能提高代码的效率。只有通过反复的练习,你才能对代码片段产生“啊哈”的感觉,让你编写出最有效的代码。


通过学习来提高效率和创造性,你学会了精通。

六、依靠你所知道的来实现跨越

最后,当你已经学会并练习了你所熟悉的编程语言时,你现在就可以在职业生涯中实现跨越了。这通常就是当你从初级开发人员晋升到高级开发人员的时候。


你将凭藉掌握“原因和做法”的知识在面试中取得了优秀的成绩,进入你的编程生涯的下一阶段。你可以用自己所熟悉的语言以一定的灵活性来编写代码。


你不再长时间进行工作了。你终于有时间和你朋友出游。你完成你的工作然后去休假。你开始指导初级程序员,你在工作中示范并使用最佳实践。你在架构会议上踊跃发言,并发表自己的观点。你在团队中是出了名的专家。


恭喜你!你已经将你所学的编程语言内化成了长期记忆。现在,它就像你的母语一样。


现在,你已经知道学习任何一门新的编程语言的过程了。你知道,在学习之旅中不能半途而废。花在编程上的每两个小时,就是你离开所爱的人的两个小时。因此,要让这两个小时变得有意义。让每一个两小时,每天成倍增长,直到你学会并内化了这些概念。


一旦你在完成足够多的项目之后变得精通了,你要知道,这远非结束。这是一个新的开始。从零开始,再次学习并内化新的编程语言和新的编程概念。一旦你在整个编程栈中增加了新的知识广度和深度,学习就会自然而然地流动起来,成为你生活的一部分。


你还在等什么呢?


作者介绍:


Jun Wu,是单亲妈妈,也是作家、技术专家和诗人。爱好广泛,涵盖了技术、人工智能、数据科学、领导力、心理学、育儿、教育、生活、工作和诗歌等等。


原文链接:


6 Stages of Learning a New Programming Language


2019-09-27 18:047234
用户头像

发布了 526 篇内容, 共 241.6 次阅读, 收获喜欢 1544 次。

关注

评论 5 条评论

发布
用户头像
很多错的文章,对于想从事技术的技术人指明了方向,谢谢作者的方向。
2019-09-29 16:56
回复
用户头像
对于新手来说,如何去学习一门新的语言,也不是一件容易的事。这篇文章很有启发性。
2019-09-28 02:01
回复
用户头像
说得特别好呢,也适用于国内程序员掌握新语言的思路。这是不分国界的。
2019-09-27 22:01
回复
用户头像
第三段,markdown语法**没打出来,变成斜体
第四段,功能性应该是函数式,程序性应该是面向过程的
2019-09-27 18:49
回复
谢谢指正,已修改
2019-09-28 15:58
回复
没有更多了
发现更多内容

关于小游戏引擎你还了解哪些?

没有用户名丶

小程序游戏

大数据开发机构如何选择比较好

小谷哥

ZooKeeper 避坑实践: Zxid溢出导致选主

阿里巴巴云原生

zookeeper 阿里云 云原生

银斯微, W-Sharing取得TTA与PaaS-TA兼容级别1双项认证

科技热闻

渲染行业需要什么,云渲染的优势是什么?

Renderbus瑞云渲染农场

云渲染 云渲染农场 云渲染平台

软件测试 | 流程管理平台

测吧(北京)科技有限公司

测试

全景剖析阿里云容器网络数据链路(四):Terway IPVLAN+EBPF

阿里巴巴云原生

阿里云 容器 云原生

前端开发培训机构学习方法

小谷哥

“采访”ChatGPT看看它对我们GreatSQL社区有什么看法

GreatSQL

MySQL greatsql greatsql社区

陕西旅游集团旗下景区春节期间累计接待超200万人次,这背后也有火山引擎VeDI的身影

字节跳动数据平台

大数据 数据中台 字节跳动 数据产品

软件测试 | 项目管理与跨部门沟通协作

测吧(北京)科技有限公司

测试

软件测试 | 软件测试体系

测吧(北京)科技有限公司

测试

五大要点,让你掌握代码整洁之道!

SoFlu软件机器人

区块链项目开发技术团队源码交付

开发微hkkf5566

大规模敏捷测试怎么做?--基础篇

QE_LAB

敏捷测试

2022Q4手机银行新版本聚焦提升客群专属、财富开放平台、智能化能力,活跃用户规模6.91亿人

易观分析

金融 银行 经济

为什么越来越多的团队选择放弃Jira?有哪些替代产品?

PingCode

大数据 项目管理软件

软件测试 | 常用测试管理平台

测吧(北京)科技有限公司

测试

java培训学习怎么选择

小谷哥

软件测试 | 什么是测试用例

测吧(北京)科技有限公司

测试

4道数学题,求出极狐GitLab CI 流水线之最优解|第1题:有向无环图流水线

极狐GitLab

ci DevOps cicd pipeline 极狐GitLab

Flink SQL 在米哈游的平台建设和应用实践

Apache Flink

大数据 flink 实时计算

明道云致几位重度抄袭者的公开信

明道云

代码质量管理平台 SonarLint 在监控宝中的实践总结

云智慧AIOps社区

监控 监控宝 监控告警 云智慧 监控体系

软件测试 | 黑盒测试的方法

测吧(北京)科技有限公司

测试

直播预告 | 数据库自治平台 KAP 监控告警架构及实例演示

KaiwuDB

监控告警 KaiwuDB 数据库自治

案例 | 在肯尼亚,青年们正在说着“Sheng”语...

澳鹏Appen

人工智能 nlp 数据标注 训练数据 小语种

软件测试 | 测试流程体系

测吧(北京)科技有限公司

测试

智商狂飙,问了ChatGPT几个数据库问题后,我的眼镜掉了

NineData

人工智能 MySQL 数据库 ChatGPT NineData

如何通过Java应用程序将OpenDocument 演示文稿(.odp)转换为PDF

在下毛毛雨

Java PDF 转换格式 ODP文档

万亿级对象存储的元数据系统架构设计和实践

Baidu AICLOUD

对象存储 百度沧海

学习一门新编程语言的6步_文化 & 方法_Jun Wu_InfoQ精选文章