【AICon】探索RAG 技术在实际应用中遇到的挑战及应对策略!AICon精华内容已上线73%>>> 了解详情
写点什么

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

发布了 523 篇内容, 共 237.4 次阅读, 收获喜欢 1543 次。

关注

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

2021年Android大厂面试分享,实战篇

android 程序员 移动开发

2021年来看看Android的发展,程序员如何应对中年危机

android 程序员 移动开发

谈 C++17 里的 Chain of Responsibility 模式

hedzr

设计模式 Design Patterns 职责链模式 c++17 消息分发

Zookeeper 客户端错误:Packet len8854970 is out of range!

看山

zookeeper 10月月更

DeFi智能合约DAPP系统开发公司(现成)

Groovy动态添加方法和属性及Spock单测

FunTester

Java 动态 spock Groovy FunTester

2021年大厂程序员进阶宝典,flutter面试题

android 程序员 移动开发

2021年大厂程序员进阶宝典,真是经典中的经典

android 程序员 移动开发

在 pygame 中好好玩玩精灵,滚雪球学 Python 游戏番

梦想橡皮擦

10月月更

第 22 章 -《Linux 一学就会》- 跳出循环-shift参数左移-函数的使用

学神来啦

Linux linux运维 linux云计算 linux一学就会

2021年GitHub上那些优秀Android开源库总结,花2万块买的教程

android 程序员 移动开发

阿里云边缘云ENS再升级 产业数字化落地向何方?

阿里云Edge Plus

Apache APISIX 助力有赞云原生 PaaS 平台,实现全面微服务治理

API7.ai 技术团队

云原生 PaaS API网关 Apache APISIX

2021年Android春招面试经历,阿里秋招面试真题解析

android 程序员 移动开发

2021年Android程序员职业规划,Android开发技巧

android 程序员 移动开发

2021最新Android常用开源库总结,retrofit源码

android 程序员 移动开发

Go 中如何使用结构体标签

baiyutang

golang 10月月更

Defi挖矿系统开发简介(现成案例)

Python代码阅读(第43篇):构造组合函数

Felix

Python 编程 Code Programing 阅读代码

掘金万亿新IT服务大市场,联想智慧服务核心能力持续跃升

科技大数据

Vue进阶(幺肆伍):Vue-elementUI实现操作栏位更多效果

No Silver Bullet

Vue 10月月更

解密诡异并发问题的幕后黑手:可见性问题

华为云开发者联盟

并发编程 线程 并发 可见性 单核CPU

DeFi流动性挖矿系统开发资料(源码)

2021最值得加入的互联网公司有哪些,阿里三面

android 程序员 移动开发

2020-2021蚂蚁金服Android面试真题解析,使用指南

android 程序员 移动开发

2021年Android高级面试题,成功入职字节跳动

android 程序员 移动开发

2021年大厂程序员进阶宝典,Android开发基础面试题

android 程序员 移动开发

2021年字节跳动+京东+美团面试总结,查漏补缺

android 程序员 移动开发

Vue进阶(幺肆肆):(window,parent,opener,top).location.reload方法分析

No Silver Bullet

Vue 页面刷新 10月月更

全球6G专利独占4成,中国能否借此“制霸”元宇宙?

海比研究院

揭开MySQL Volcano模型迭代器性能提升千倍的秘密

华为云开发者联盟

MySQL 数据库 华为云数据库 MySQL Volcano 模型迭代器

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