FinOps有望降低企业50%+的云成本! 了解详情
写点什么

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

  • 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:304671

评论 2 条评论

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

深度融合,云管理平台助推政府实现“最多跑一次”改革

BoCloud博云

云计算 云管理平台 云管理

《分享几道高频 Redis 高频面试题,面试不用愁》

java小李

Redis Stream

架构实战营-模块三

Cingk

速来围观!大佬把Java基础核心知识整理成了PDF版

java小李

Java开发手册 Java 开发

幸福的人在当下就活出了幸福的样子|靠谱点评

无量靠谱

FBI 警告称,网络犯罪分子可能以 2021 年东京奥运会为目标!

郑州埃文科技

淘宝一面:说一下 Spring Boot 自动装配原理呗?

java小李

面试 java 14 sping

Vue进阶(九十四):自定义组件

No Silver Bullet

Vue 自定义组件 7月日更

向大佬学习!「mybatis查询匹配机制」,手动点赞

java小李

java 14 Mybati

GitHub标星139K的:“嵌入式Linux系统开发教程”

白亦杨

Recommending movies: retrieval

毛显新

tensorflow 推荐系统

解决方案| 全民抗“灾”- 实时音视频在应急指挥场景的应用

anyRTC开发者

音视频 WebRTC 指挥调度

基于 Java Spring Security 的关注微信公众号即登录的设计与实现ya

哈德韦

spring security 微信公众号 Apache Pulsar SSO

一条SQL语句执行得很慢的原因盘点

北游学Java

Java MySQL

《MyCat数据库的基础配置及使用》

java小李

java 14 mycat

最新流行的6大优秀DevOps工具

java小李

java 14 puppeteer

iOS底层面试题(下篇)

程序员 面试 ios开发

DAPP智能合约开发|智能合约搭建

Geek_23f0c3

区块链 智能合约 DAPP智能合约交易系统开发 DAPP系统开发

面试题:JVM在Java堆中对对象的创建、内存结构、访问方式

java小李

java 14 sping

请谈下Android消息机制,成功拿下大厂offer

欢喜学安卓

android 程序员 面试 移动开发

被面试官问的Android问题难倒了,深度集成!

欢喜学安卓

android 程序员 面试 移动开发

DeFi智能合约DAPP开发|DeFi项目源码

Geek_23f0c3

DeFi去中心化系统开发 DAPP智能合约交易系统开发

携生态伙伴展示AI计算盒参考设计最新成果 英特尔点亮智能边缘广阔机遇

E科讯

被转载10W次的:Java小白系统资料和职业规划路线

java小李

java基础

技术解码 | GB28181协议简介及实践

腾讯云音视频

腾讯云 ffmpeg 流媒体 视频监控系统

对象存储手把手教三 | 数据分段上传

QingStor分布式存储

对象存储 分布式存储 数据传输

大学四年Java学习路线规划,所有私藏资料我都贡献出来了

java小李

spring Java web

如何借用第三方APM工具, 为移动应用保驾护航

友盟全域数据

APM

华为助力高校释放能量,加速中国从开源使用大国向贡献大国转变

科技热闻

行云创新完成B轮融资,阿里云独家投资

行云创新

阿里云 云原生 投资

架构训练营模块3课后作业-学生管理系统详设文档

喻高咏        

  • 需要帮助,请添加网站小助手,进入 InfoQ 技术交流群
怎样快速学习一门编程语言?_文化 & 方法_Bob Roebling_InfoQ精选文章