写点什么

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

发布了 536 篇内容, 共 270.9 次阅读, 收获喜欢 1561 次。

关注

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

是什么增加了系统的复杂度

Bruce Talk

敏捷开发 Agile Product Owner

Character Animator 2024 (Ch2024角色动画设计软件) Mac/win

Rose

2023 re:Invent 用 Amazon Q 打造你的知识库

亚马逊云科技 (Amazon Web Services)

人工智能

Dapp开发技术指南,快速入门,掌握实战技能

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

Solidity案例详解(三)飞机管理合约

BSN研习社

区块链 Solidity

运用 Argo Workflows 协调 CI/CD 流水线

SEAL安全

开源 Kubernetes CI/CD

几个有趣的C/C++语言『冷知识』

伤感汤姆布利柏

C语言 编程语言、 c++语言

如何避免被公司裁掉?

小齐写代码

Garden Planner园林设计: 让您的绿意梦想照进现实!

Rose

亲测可用!Acrobat Pro DC 2023中文破解版 Mac/win

Rose

直播回顾 | 张乐、何勉、余伟、任晶磊共议研发效能的破局之道

思码逸研发效能

BRC20铭文智能合约系统开发规则指南

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

青团社:亿级灵活用工平台的云原生架构实践

阿里巴巴云原生

阿里云 云原生 可观测

水杉Metasequoia 4:开启全新的三维建模时代

Rose

Pydantic:强大的Python 数据验证库

霍格沃兹测试开发学社

AI 编程如何颠覆生产力 | 参与体验免费领取 ArchSummit 架构师峰会专属门票

阿里巴巴云原生

阿里云 云原生

熬了一晚上,开放签电子签章移动端上线了~

开放签开源电子签章

电子合同 电子签章

FxFactory 8 Pro视觉效果插件:从粒子系统到3D动画

Rose

免费好用的菜单栏Cpu可视化监测工具:跑猫RunCat for mac

Rose

喜报 | 思码逸 DevInsight 通过DaoCloud兼容性互认证

思码逸研发效能

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