本文假设你已经至少了解一门编程语言;但是,本文的概念将帮你从头开始学习编程。
当我还在学校时,一位老师对我说了一句话,我想告诉开发者新手:你曾学习的最难编程语言是你所学的第二门语言。
不要因此沮丧——它含义是,当你第一次学习如何编程时,你对编程的所有方面都有了先入为主的想法。你最终建立起更多的语法联系和假设,有些甚至不应该建立的你也有了。
因此,当你学习第二门编程语言时,你不得不想办法“忘却(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 是一位高级系统管理员和技术布道者,拥有多种编程语言背景。
评论 2 条评论