从零到一百,如何快速学习新编程语言?
本文默认你已经了解至少一种编程语言。
一种也不会?
别怕,文中的概念会帮助你从编程开始学起。
在学校里老师常跟小芯说的一些东西,小芯可以分享给新手开发人员:
最困难的编程语言永远是你将要学习的第二个编程语言。
不要因为小芯分享的故事而垂头丧气——小芯故事的意思是,当你开始学习如何编程,你会对编程有预先的想法。最后,你会做出比理应更多的句法连接和假设,由此,在开始学习第二种编程语言时,你必须忘记上述假设。倘若你尝试学习第二种甚至第三种编程语言,你就应该把小芯说的牢记于心。
编程分析
世界上有许多编程语言,一下就能列举出5000多种,但编程语言排行指数列出了前250名,位于列表的前20名编程语言有相似的标准程序库,这不足为奇。
在小芯看来,剔除“素材资料”所有额外的事情是思考编程很好的方式,由此,你接触到的就只是跟编程有关的必要事情。
原子
每门编程语言的每个层面都可以用true和false来看待(归结为真假)。为什么呢?因为电流就是这样工作的——要么有电荷,要么没有。记忆以0和1二进制代码的形式存储价值,该比特(二进制信息单位)要么带电,要么不带电。
八个比特等同于一个字节,这足够你在ASCII表上列出任何一个字符。比特就是这样一种翻转顺序,这种顺序提供了十进制字符的表示方法,计算机能够把这种表示转换为字母。
(如何创建Hello一词的基本二进制表示)
了解这一概念的原因后,理解接下来的内容就比较容易了。
工具
工具都是一样的,虽然每个人学习这些工具的顺序可能不同,以下是小芯学习这些工具的顺序。
变量
这看起来非常简单,但认真来讲,你该如何创造变量?
算符
何为算符?怎么使用算符?假定你已有基本的数学算符知识,但逻辑算符是什么呢?“AND”这个算符是该被拼写为“and” 、还是“AND,”呢?又或是这个词运用诸如“&&?”这样的符号?
条件
令人吃惊的是,关于Swift和 Python两种语言,小芯读到最多的是与决策有关。下一步你需要了解的是如何在自己的程序里作出决定。你在尝试学习的编程语言会用到传统的“if/elseif/else”判断结构、还是一些诸如“if/elif/else?”更Pythonic的编程语言?你的编程语言有”switch” 或“guard”语句吗?
循环
如何循环执行重复的任务?该编程语言包含for循环、while循环、do-while循环还是for-each语句?
函数
可能创造出函数吗?如果可以,你会如何处理?如何把参数包含在函数内?了解如何运用这些函数会节省时间,使生活更轻松。
类别和结构
你学习的这种编程语言能理解类别和结构的概念吗?这听起来像是个蠢问题,但有一些编程语言确实没有,或者只有一种类别和结构。假如这种语言真的没有,那么又该如何创建类别和结构呢?这种类别需要用到构建函数或初始化的方法吗?
错误处理
错误不可避免。当出现错误,该语言有稳妥的处理问题的办法吗?这时你又会如何使用这种语言?是会用“try/catch”、 “try/except”还是别的办法?该编程语言有像“else” 或 “finally”这样允许选择差错的子句吗?
测试
怎样测试编码?是用已经建好的算法库还是必须下载独立的工具来测试?
所有这些工具都应该适用于最现代的编程语言,甚至是像COBOL这些较早的编程语言大部分也具备这些工具,但可能叫法不同,例如可能会被叫做段落或复写本。
逐步优化
一旦你理解这些工具,下一步你需要做的是使用工具然后编写一个应用程序。你可以通过阅读文献了解一门编程语言,但只有真正编写一些应用程序,才能了解该语言。
通过编写一个程序,你不得不像某程序员那样思考。小芯可以说自己知道C++这门语言,因为小芯上过有关课程,阅读过有关文献,但直到用C++这门编程语言的特有特征完成一个程序的编写,小芯才真正了解这门语言。
扑克牌的二十一点(Blackjack)是一个比较好的初学项目,它需要变量、算符、条件、循环(基于许多玩家)、函数、类别/结构以及差错处理。你可以把潜在故障包含在测试情况内,比如牌用完这种情况。
其他一些项目如射击(Shoots)、梯子(Ladders)、快艇骰子(Yahtzee)或自动售货机(SlotMachine)也是较好的初学项目。
对于一些进阶项目来说,可以尝试再创造一个像《大富翁》这样的游戏,多关注运作方式,使其基于文本运行。
面对困难的任务(例如跳过双下或分离blackjack的特征),如果偷懒,就只会限制自己对该编程语言的理解,记住这一点至关重要。
还有呢?
小芯知道,上述内容不是一门编程语言的必要要素。事实是,你可以用上述列举的工具编写任何东西,但包含在标准算法库内的附加功能会使你的编写更加容易。大部分的标准算法库都有相同的功能,所以你可以使用编程语言间类似的名称。
使用一门编程语言进行的工作越多,关于标准算法库就会发现越多,但一定要提前学习这些工具。.
当你用一门编程语言工作,要试着找出这种语言的优缺点,这些会帮助你了解针对特定问题选择使用特定编程语言。
需要快速做一些数据科学?去看些Python程序包吧。或需要编写一个快速服务?那就去看看C语言或Go语言吧。编写网页服务器?那就去看看Java或Python吧。