写点什么

怎样快速学习一门编程语言?

  • 2019-11-18
  • 本文字数:2202 字

    阅读完需:约 7 分钟

怎样快速学习一门编程语言?

本文假设你已经至少了解一门编程语言;但是,本文的概念将帮你从头开始学习编程。



当我还在学校时,一位老师对我说了一句话,我想告诉开发者新手:你曾学习的最难编程语言是你所学的第二门语言。


不要因此沮丧——它含义是,当你第一次学习如何编程时,你对编程的所有方面都有了先入为主的想法。你最终建立起更多的语法联系和假设,有些甚至不应该建立的你也有了。


因此,当你学习第二门编程语言时,你不得不想办法“忘却(unlearn)”这些假设。当你想尝试学习第二门,甚至第三门编程语言时,始终记住这点。


对编程进行剖析

编程语言有很多,稍作统计就能找到5000多种,但是TIOBE排行榜仅列出前 250 种语言。无一例外,所有排名前 20 的编程语言都有相似的标准库。


我认为理解编程的最好方式就是“剔除”所有多余的东西,然后你就能看到那些必要的基本元素。


原子

每种编程语言的每个方面都可以归纳成 true 和 false。为什么这么说呢?因为电路就是这样工作的——要么有电荷,要么没有电荷。内存以 0 或者 1 的方式存储数值,这一位要么有电荷,要么没有。


8 位(bits)是 1 个字节,这已经足够列出ASCII表中的任何字符了。位(bits)按照某种顺序翻转,它提供了字符的十进制表示。计算机能够理解怎样把这种表示翻译成一个字母。



基本的二进制表示,显示了 Hello 这个单词是怎样创建出来的


理解这个概念之后,“为何这样表示”会帮助你更容易地理解其他部分。


工具


工具都是相同的,我们可以采用任何顺序来学习使用这些工具,而我通常使用以下顺序。


变量

这个看起来太简单了,但是仔细想想,变量是怎样创建出来的?


操作符

操作符是什么,怎样使用它们?假设你有一些基本的数学操作符,但是逻辑操作符会是怎样的?是“AND”(拼成“and”或者“AND”)操作符呢,还是说使用诸如“&&”这样的标记?


条件语句

我惊讶地发现,在自己撰写的关于 Swift 和 Python 的文章中,最受欢迎的都和做决策有关。你接下来需要了解的是在程序中如何做决策。你想要学习的语言使用传统的“if/else if/else”还是偏向 Python 的风格“if/elif/else”?你所学习的语言中是否有“switch”或者“guard”语句?


循环

你怎样循环遍历重复的任务?你所学习的语言包含 for 循环、while 循环、do-while 循环或 for-each 语句吗?


函数

语言中是否能够创建函数?如果可以,你会怎样创建?怎样在这些函数中包含变量?了解如何正确地使用函数会给你节省时间,让你的生活更轻松。


类和结构体

这门语言是否提供类或者结构体的概念呢?这看起来是不言自明的问题,但是有些语言两者都不具备,或者只具备其中之一。如果确实是这样,你会怎样创建类或者结构体?这个类需要一个构造函数还是 init 方法呢?


错误处理

错误是在所难免的。当它们发生时,这门语言是否具备鲁棒性的错误处理解决机制,你会怎样使用这个机制?这种机制是“try/catch”、“try/except”还是其他方法?是否有其他语句,如“else”或者“finally”,可以给出其他错误处理选项。


测试

你怎样测试你的代码?是否有内置的代码库做测试,或者需要下载独立的工具来做测试?


所有这些工具会出现在最现代化的编程语言里。即使是古老的编程语言,如 COBOL 也有其中大部分工具,但是其叫法不太相同,比如 paragraph 或者 copybook。



如何获得良好的效果

一旦你理解这些工具,下一步要做的就是使用它们,写一个应用程序。你可以通过阅读文档了解一门语言,但是直到你用这门语言写了一些应用程序后,才能真正了解这门语言。


在编写应用程序时,你不得不像一位 X 程序员一样思考。我可以说,我了解 C++语言,因为我上了一门 C 语言的课,并且阅读过 C++的文档,但是,直到我用 C++特有的功能写了一个应用程序后,才能说我真正了解了 C++这门语言。


Blackjack 非常适合作为起步阶段的项目。它需要变量、操作符、条件语句、循环(基于玩家个数)、函数、类/结构体和错误处理。为防止可能的程序崩溃,你可以包含一些测试用例,比如测试扑克牌用完的情况。


其他不错的入门项目,包括 Chutes 、Ladders、Yahtzee。


对于更高级的功能,可以试着重新创建一个像 Monopoly 这样的游戏。更多地去思考创建机制,这个游戏可以只是基于文字的。


关键是要记住,如果你给自己降低任务的难度(比如跳过二十一点的双倍下注或者分牌功能),这只会限制住你对这门语言的综合理解。


是否还有其他学习小窍门?

一门语言能提供的远不止我以上列出的这些方面。事实是,你可以用上面列出的工具写出任何东西来,但是标准库中包含的额外功能可以让你更轻松地写出任何东西来。大部分标准库包含同样的函数,所以在不同的语言中你可以使用相似的函数名。


你使用一门语言越多,你就可以找到更多的标准库,但是得确保先学会了以上提到的工具。


当你使用一门语言时,试着弄清楚这门语言的优势和劣势分别是什么。在面对一个具体问题时,这能帮助你弄清楚应该使用哪种语言。


需要快速做一些数据科学方面的事情吗?可以看一些 Python 包或者 R 语言。需要快速写一个服务吗?可以看看 C 或者 Go 语言。Web 服务器搭建又如何?看看 Java 或者 Python。


仅仅是看这些语言的文档,还不能深刻地了解它们。我通过使用这些语言来学习它们。


由于这可能是我迄今为止最短的一篇文章,我希望给你提出一个挑战,那就是去学习一门新的语言吧,祝你好运!


原文链接:


How To Learn Any New Programming Language Quickly


关于作者:


Bob Roebling 是一位高级系统管理员和技术布道者,拥有多种编程语言背景。


2019-11-18 14:304558

评论 2 条评论

发布
用户头像
blackjack
2020-05-06 09:40
回复
用户头像
赞偶
2019-11-20 19:02
回复
没有更多了
发现更多内容

如何设置跨域隔离启用 SharedArrayBuffer

JAVA活菩萨

Java 程序员 后端 大厂技能 大厂实践

如何进行技术面试?

flow

签约计划第三季

云渲染平台是互联网和云计算的发展产物

Finovy Cloud

云渲染 渲染农场 渲染价格

Nacos配置中心之服务端长轮询处理机制

周杰伦本人

8月月更

关于 SAP UI5 floating footer 显示与否的单步调试以及使用 SAP UI5 的收益

Jerry Wang

前端开发 SAP SAP UI5 ui5 8月月更

gulp 的常用 API

Jason199

js gulp 8月月更

Kubernetes信息安全

CTO技术共享

开源 信息安全 Kubernetes 集群 签约计划第三季 8月月更

云渲染掀起虚拟演唱会新热潮

3DCAT实时渲染

架构实战营课程学习感受

极客土豆

为什么互联网大厂一边疯狂裁员,一边不停招聘?

Jackpop

Docker基础:Docker 常用命令梳理

天使不哭

#开源 8月月更

在常州“超级虚拟工厂”,中国智造正在“原力觉醒”

脑极体

什么是好的应用程序?

flow

签约计划第三季

如何管理LAXCUS计算机集群

JAVA活菩萨

Java 程序员 后端 大厂技能 大厂实践

设计模式:里氏替代原理(LSP)

flow

签约计划第三季

Linux的难题,终于有解了!

Jackpop

SRv6网络典型部署场景

穿过生命散发芬芳

8月月更 SRv6

Service Mesh迁移原则

阿泽🧸

Service Mesh 8月月更

头脑风暴:零钱兑换

HelloWorld杰少

8月月更

React组件应用于Spring MVC工程

JAVA活菩萨

Java 程序员 后端 大厂技能 大厂实践

备份和恢复Kubernetes集群中的Etcd数据

JAVA活菩萨

Java 程序员 后端 大厂技能 大厂实践

最好的编程语言

flow

签约计划第三季

VS Code如何打造C/C++开发环境?

Jackpop

百家号打击挂载恶意导流链接行为,必须严厉打击恶意挂链灰产

石头IT视角

为什么企业需要使用 Wiki 工具?

Geek_da0866

IT人才知道的二进制爱情,羡慕ing

ioik

爱情 二进制 java; 签约计划第三季

C++为什么始终无法取代 C 吗?

Jackpop

Kubernetes微服务Pod 影响力

CTO技术共享

开源 Kubernetes 集群 签约计划第三季 8月月更

华为研究院19级研究员几年心得终成趣谈网络协议文档,附大牛讲解

JAVA活菩萨

Java 程序员面试 大厂技能 秋招 大厂面经

技术内幕 | StarRocks Community Champion、阿里云技术专家解读 Optimizer 实现

StarRocks

数据库

C++深拷贝与浅拷贝,初始化列表,对象成员,静态成员相关分析

CtrlX

8月月更

怎样快速学习一门编程语言?_文化 & 方法_Bob Roebling_InfoQ精选文章