本文假定你至少已掌握了一门编程语言,然后,可以帮助你更好学习编程。
作者 | Bob Roebling
译者 | 弯月,责编 | 郭芮
出品 | CSDN(ID:CSDNnews)
以下为译文:
上学的时候,一位老师在与新手开发人员分享经验的时候曾说:最难学的编程语言是第二门语言。
不要为此感到难过,这句话的意思其实是说,在你第一次学习编程时,就已经对编程有了一些先入为主的想法。你会在语法上做很多的联想和假设。因此,在学习第二门语言时,你必须首先忘掉这些假设。在你学习第二门甚至是第三门语言时,一定要牢记这一点。
现有的编程语言已经超过了5,000种,但是TIOBE指数只列出了前250种语言。而排名在前20的编程语言都拥有相似的标准库,这绝非偶然。
我认为思考编程的最佳方法是,剔除所有的“多余部分”,剩下的就只有必需品了。
每种语言的每个方面都可以归结为真与假。为什么?电的工作方式就是这样:要么有电,要么没电。内存以0和1的形式存储值,这个最基本的单位叫做比特,而比特要么为真要么为假。
8比特等于一个字节,足以表示ASCII表中的任何字符。这些比特以特定的顺序翻转,以提供字符的十进制表示形式。计算机知道如何将这种表示形式转换为字母。
基本的二进制表示形式,表示了单词Hello。
理解这个概念后,后面的内容就很好理解了。
所有语言中的这些工具都是相同的,你可以按照任意顺序学习,但是我通常会采用以下顺序:
变量
这似乎很简单,但话说回来,如何创建变量呢?
运算符
什么是运算符,如何使用?你明白基本的数学运算符,但是你明白逻辑运算符吗?“AND”运算符的正确拼写是“and”还是“AND”,还是使用诸如“&&”之类的符号?
条件语句
出人意料的是,我写的最受欢迎的Swift和Python文章都与决策有关。接下来,你需要知道如何在程序中做出决定。你学习的语言使用的是传统的“ if/else if/else”,还是像Python一样使用“ if/elif/else?你的语言是否带有“switch”或“guard”语句?
循环语句
如何遍历重复的任务?你学习的编程语言否包含for循环、while循环、do-while循环或for-each语句?
函数
是否可以创建函数?如果可以,那么该怎么创建?如何在这些函数中包含参数?你是否知道如何正确使用函数才能节省时间,并减轻你的工作负担?
类和结构
这种语言是否有类或结构的概念?这个问题听起来有点愚蠢,但有些语言要么没有,要么只有一种。如果有,那么该创建类或结构?类是否需要构造函数或初始化方法?
错误处理
错误是不可避免的。当出现错误时,这种语言是否拥有强大的错误处理解决方案,你又将如何使用呢?应该使用“ try/catch”、“ try/except”还是其他语句?是否还有其他子句,比如能进行其他处理的“else”或“finally”?
测试
如何测试代码?是否有用于测试的内置库,还是说你必须下载单独的工具?
大多数现代编程语言都包含上述工具。即使是稍旧的语言(例如COBOL)也拥有大多数工具,只不过它们有不同的称谓,例如pharagraph或copybook。
在了解这些工具后,接下来要做的就是使用这种语言并编写应用程序。你可以通过阅读文档来学习一种语言,但是直到你编写一些应用程序之后,才能真正掌握这种语言。
编写应用程序能强迫你像那门语言的程序员那样思考。在参加了C的课程并阅读了有关C++的文档后说,我可以我了解C++,但是只有真正使用C++特有的功能编写应用程序后,才算真正掌握了C++。
二十一点(Blackjack)是一个不错的入门项目。二十一点需要用到变量、运算符、条件、循环(根据玩家的数量)、函数,类/结构和错误处理。你还可以尝试潜在故障的测试用例,例如牌发完了等。
还有一些其他的入门项目,比如爬楼梯游戏、快艇骰子或老虎机等游戏。
如果想尝试更高级的内容,则可以尝试重新创建“大富翁”之类的游戏。多多思考游戏的机制,界面以文本为基础即可。
请务必记住,如果你不愿接受有难度的挑战(例如不去尝试二十一点中的双倍下注或拆牌功能),那么你对这种语言的理解就会很有限。
本文无法涵盖语言必须提供的所有内容。事实上,你可以利用上面介绍的工具编写任何内容,标准库中包含的其他功能只不过减轻了编程的负担。大多数标准库都包含相同的功能,因此在各个语言之间也享有相似的名称。
随着使用语言的次数增多,你可以从标准库中找到更多的信息,但是一定要先学习这些工具。
在使用某种语言的时候,你需要搞清楚语言本身的优缺点。这可以帮助你决定针对某个特定的问题应该使用何种语言。
如果你需要快速进行一些数据科学研究,那么可以参考Python或R的几个包。如果你需要快速编写一个服务,那么可以考虑C或Go。如果你需要Web服务器,则可以考虑JAVA或Python。
光靠看书或文章不足以学好一门编程语言,你需要真正的实战。
学习新语言是一种挑战,祝你好运!
原文:https://medium.com/better-programming/how-to-learn-any-new-programming-language-quickly-94996895669b
作者:Bob Roebling,高级系统管理员和技术传播者,拥有多种编程语言的背景。
本文为 CSDN 翻译,转载请注明来源出处。
【END】