写点什么

学习一门新编程语言的 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:047787
用户头像

发布了 538 篇内容, 共 286.7 次阅读, 收获喜欢 1571 次。

关注

评论 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
回复
没有更多了
发现更多内容

玖章算术CEO叶正盛:程序员必须掌握的数据库原理

NineData

数据库 程序员 开发 dba 数据库技术

Volcano 社区 v1.7.0 版本正式发布 | 云原生批量计算

华为云开发者联盟

云计算 云原生 华为云 Volcano 企业号 1 月 PK 榜

中冶赛迪*IoTDB | 多项目全流程以IoTDB为时序数据处理方案,预计写入查询效率提升一倍

Apache IoTDB

国产时序数据库

企业内部沟通,即时通讯软件要怎么选?

BeeWorks

【提升团队运营效率】交易履约之订单中心实践

京东科技开发者

平台搭建 平台赋能 数智创新 效能提升 企业号 1 月 PK 榜

IoTDB 可实现的基本操作 : 数据导入、基本查询、聚合查询 | 小白教程文档(三)

Apache IoTDB

国产时序数据库

一个 go-sql-driver 的离奇 bug

SOFAStack

特定领域知识图谱(DKG)融合方案:技术知识前置【一】-文本匹配算法、知识融合学术界方案、知识融合业界落地方案、算法测评KG生产质量保障

汀丶人工智能

自然语言处理 知识图谱 实体对齐

一次偶然机会发现的MySQL“负优化”

骑牛上青山

MySQL 数据库 索引

技术型创业公司如何把握发展与管理的节奏感?

石云升

极客时间 1月月更 技术领导力实战笔记

来自掘金和 InfoQ 的“新年礼物”,时序数据库 TDengine 荣登两大知名技术社区重磅榜单

TDengine

数据库 tdengine 时序数据库

为什么MySQL数据删除了一半,表文件体积却没变小?

程序员拾山

MySQL

阅文加入 OpenCloudOS 操作系统社区,作为成员单位参与社区共建

OpenCloudOS

Linux

Databend v0.9.0 版本发布

Databend

Sealer 0.9 :帮助集群和分布式应用实现 Build、 Share、Run

阿里巴巴云原生

阿里云 开源 云原生 sealer

致 Tapdata 开源贡献者:聊聊 2022 年的进展和新一年的共建计划

tapdata

WorkPlus移动办公平台,助力企业随时随地“指尖办公”

BeeWorks

IoTDB 可实现的基本操作 —— 数据写入、删除、导出、元数据管理、时区设置 | 小白教程文档(四)

Apache IoTDB

时序数据库 国产数据库

OpenHarmony如何切换横竖屏?

OpenHarmony开发者

OpenHarmony

Cloud Kernel SIG月度动态:建立社区第三方驱动研发流程、发布ANCK 4.19-027版本 | 龙蜥 SIG

OpenAnolis小助手

内核 龙蜥社区 sig 版本发布 anck

华为云云原生数据库:A Philosophy about “less”

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

适配 Laravel 多版本的开源项目版本号规划

ModStart

TDengine 时序数据特色查询语法详解,助力时序场景下的应用开发

TDengine

数据库 tdengine 时序数据库

华为云GaussDB(for MySQL)通过中国信通院“可信数据库”评测

华为云开发者联盟

数据库 后端 华为云 企业号 1 月 PK 榜

MySQL性能优化浅析及线上案例

京东科技开发者

MySQL 性能优化 索引性能 数据库· 企业号 1 月 PK 榜

北邮一号卫星搭载 IoTDB 成功发射!高效轻量数据管理,助力航天观测分析

Apache IoTDB

数据库 时序数据库 国产数据库

利用 IoTDB 替换 Druid.io 服务太极股份电厂、军工制造类项目,采集精度达纳秒级

Apache IoTDB

时序数据库 国产数据库

服务网格领域的百花齐放,是否存在一个更优解?

API7.ai 技术团队

Service Mesh 服务网格 APISIX

理想问鼎销冠,数据库能帮助新能源车企赢得下半场么?

YMatrix 超融合数据库

案例分享 新能源汽车 造车新势力 超融合数据库 YMatrix

软件测试/测试开发 | 接口自动化测试中,如何做断言验证?

测试人

软件测试 自动化测试 接口测试 测试开发

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