首页 > 科技 > 如何快速上手任意一门编程语言?

如何快速上手任意一门编程语言?

在开始阅读之前,本文假设你已经掌握了至少一门编程语言,别慌,这其中的概念能够帮助你顺利开始学习第一门编程语言。

我上大学的时候,我的老师曾跟我们这群新手程序员说过一句话,让我记忆犹新:最难学的编程语言,是你将要学习的第二门编程语言。

别让这句话冲谈了你的斗志——这意味着在你第一次学习如何编程时,你已经对所接触的第一门编程语言有了相当的理解,于是在开始学习第二门编程语言时,你会不由自主地将两门语言之间的语法和假设关联起来。因此,当你学习第二语言时,你必须“忘掉”一部分已有的语法和假设。如果你正打算学习第二门甚至第三门编程语言,可以将这一点记在心中。


编程解剖学

编程语言五花八门,粗略统计已有超过5000种,但是TIOBE索引仅列出了最具代表性的前250种,而这列表中排行前20位的语言都有相似的标准库。

我认为学习编程的最好方法是将所有多余的“东西”去掉,这样以来,它们就只剩下最精华的部分了。

编程中的原子

每种编程语言里的每个层面都可以被简单粗暴地归结为。为什么?因为电是这样工作的——你要么带电,要么就不带电。内存以0和1的形式存储值,这个位(bit)可以带电,也可以不带电。

8位相当于一个字节,足以列出ASCII表中的任何字符。位的翻转顺序是这样的,它提供了字符的十进制表示。计算机知道如何把这种表示转换成字母。

理解了这一条概念之后,这个“为什么?”得以消除,余下的内容会更容易被消化。

那些工具们

每一门编程语言中的工具集都是大同小异的,虽然以什么顺序来学习它们都无伤大雅,但以下是我通常情况下采取的顺序:

变量

这看起来很简单,但说真的,如何创建变量呢?

操作符

什么是操作符,它们又是如何使用的呢?你可以假设你有基本的数学运算符,但是逻辑运算符方面呢?表达“AND”的操作符,是拼写为“and”抑或“AND”?又或者说它使用的是“&&”之类的符号来代替表述?

条件

令人惊讶的是,我读过的有关Swift和Python的文章中,大多数都与决策有关。接下来您需要了解的是如何在程序中做出决策。您正在学习的语言是使用传统的“if / else if / else”还是更符合Python风格的“if / elif / else”?你的语言中是否有“开关”或“保护”的语句?

循环

如何循环重复执行的任务?该语言是否包含for循环、while循环、do-while循环或for-each语句?

功能

有可能创建函数吗?如果有,你会怎么做?如何在这些函数中包含参数?知道如何正确地使用函数可以节省时间,让你的操作变得更加方便快捷。

类和结构体

这种语言理解类或结构的概念吗?这个问题听起来有点愚蠢,但有些语言确实没有这两个东西,或者只有两者之一。如果有,如何创建类或结构?类需要构造函数或init方法吗?

错误处理

错误是不可避免的。当错误发生时,这种语言是否有强大的错误处理解决方案?如果有,又该如何使用呢?是“try/catch”、“try/except”还是别的什么?是否有其他的子句,如“else”或“finally”,允许错误的其他选项?

测试

如何测试代码?是否有用于测试的内置库,或者必须下载单独的工具?

所有这些工具都应该使用最现代的编程语言。即使是像COBOL这样的老语言也有这些,但它们可能被称为不同的东西,如段落或抄写本。

逐渐上手

一旦您理解了这些工具,接下来需要做的就是使用它们并编写应用程序。你可以通过阅读文档来了解一门语言,但是你只有在用它写了几个应用程序之后才能了解它。

因为我上过C语言的课,读过C++的说明文档,所以我可以说我了解C++。但直到我实实在在地用C++写出一个应用程序,充分利用了这门语言的特性,才能称之为懂得使用C++。

就练习使用一门新的编程语言来说,二十一点游戏是一个非常不错的入门项目。制作二十一点游戏需要用到变量、操作符、条件、循环(基于玩家的数量)、函数、类/结构和错误处理。

对于更高级的项目,可以尝试重制一个类似大富翁的游戏,将关注重点放在游戏的机制上,让游戏基于文本进行即可。

要记住一个关键,如果你在制作游戏时刻意跳过一些复杂的机制,譬如跳过Double Down或是二十一点的分牌功能,这么做只会令你错过加深对一门编程语言理解的机会。

还有啥?

我知道上面列出的东西并不是一门语言所包含的全部内容。事实上,您可以使用上面列出的工具来编写任何东西,但是标准库中包含的附加功能只是使它变得更简单。大多数标准库都包含相同的函数,因此可以依赖于不同语言之间相似的名称。

你使用一种语言的次数越多,就会发现关于标准库的更多信息,但是一定要事先学习这些工具。

当你学习一门语言时,试着找出它的优缺点。这些将帮助您了解针对特定问题使用哪种语言。

本文来自投稿,不代表本人立场,如若转载,请注明出处:http://www.souzhinan.com/kj/233137.html