编程是21世纪最重要的技能之一。
编者按:生成式人工智能飞速发展的当今社会,兼具创造力和实用性的编程已然成为一种非常重要的个人技能。要想在这个竞争激烈的世界中脱颖而出,几乎每个行业领域的人员都需要懂得一些编程知识。它能帮助你理解数字世界,提高工作效率以及挖掘自身潜能,以更好地提高自身竞争力。本文将分享为何人人都应该学一点编程,文章来自翻译,希望能对你有所启示。
迈克尔·利特曼(Michael Littman)是布朗大学计算机科学教授,也是美国国家科学基金会信息与智能系统部门主任。利特曼是人工智能发展协会和计算机协会的成员,他被美国科学促进会选为公众参与人工智能科学的领导研究员。
下面,利特曼分享了他的新书《从编程到快乐:为什么每个人都应该学习一点编程》(Code to Joy:Why Everyone Should Learn a Little Programming.)中的五个关键见解。
在精不在多
计算机的一个神奇之处在于其“通用性”。同一盒电路可以充当计算器、照相机、电话、电视机、书籍以及创建方程、图像、声音、动画和文本的工具。它们是如何做到这一点的呢?可编程性。计算机的主要任务就是按照你给它的指令去做,告诉它该做什么任务即可。
你通常通过将计算机指向其他人编写的指令来给它指令,这就是当你下载软件然后点击它来运行它时所做的事情。但电脑能提供比这更精细的控制,你可以自己编写程序。考虑到计算机几乎可以做任何事情,你似乎必须学习大量的指令。但实际上只需要少数几个程序指令就够用。就像乐高大师模型生成器可以使用一小组积木就能搭建任何造型一样,你只需要一些编程概念来构建简单或复杂的程序。
这些构件包括命令、条件、变量、循环和函数。 每个单元都很重要,因为每个单元本身都很有用、很强大。 但是,当你学会如何以创造性的方式将这些单元组合在一起时,真正的超级能力才会显现出来。 通过单独学习其中的每一个单元,你将拥有一个非常棒的编程基础。
沉浸其中
构建模块对于编写任何程序和表达任何可以想象的任务都是足够的。所以,你会认为它们是相当高科技的。但事实是,它们早在计算机发明之前就有了,我们一直都在使用它们。当你告诉计算机该做什么时,这与你向另一个人解释如何完成一项特定的任务并没有太大的不同。
命令只是可以按顺序串在一起的单个步骤。你可以在电影剧本中感受到这一点,它可以是一段连贯的台词,或者是一段钢琴音乐,它是一串音符。
条件是分支点,用于指定何时适合执行特定命令。我们经常用“如果”这个词来表达此类想法。例如,国土安全部坚持:“如果你看到什么,就说出来。”托尼·奥兰多唱道:“如果你想要我,就在天花板上敲三下。”温斯顿在《捉鬼敢死队》(Ghostbusters quote)中说:“当有人问你是不是神时,你说‘是’!”
变量是其他值的替身。回到上述《捉鬼敢死队》的引文中,“某人”这个词正在扮演变量的角色。它可以代表向你提问的人。在捉鬼敢死队电影中,他是戈泽尔。但对于指令而言,无论谁提问,都应该采取同样的行为。单词在任何时候都是变量。如果我向你发出挑战,条件是“胜者为王”,那么“胜者”指的是谁?当然是指谁赢了。所以,“赢家”就是胜者,因此它就像一个变量。
循环就是要我们多次执行同一组指令。“做二十个俯卧撑!”是“做俯卧撑”、“做俯卧撑”、“做俯卧撑”......的简洁说法。“二十”这个词就像一个循环语句,告诉我们要把活动重复二十次。
函数提供了一种将一系列说明打包的方法,并为它们命名以供以后参考。我记得我带孩子们去查克奶酪店参加生日派对。查克会说:“当我说‘happy’的时候,你们说‘boithday’。他会在每个‘happy’之后停顿一下,让我们大喊‘boithday’。在这里,‘happy’就是一个函数,听到它我们就要大喊‘boithday’。如果函数听起来有点像变量,那是因为它们确实是,它们本质上是表示指令的变量。
从今天就开始学习编程
既然已经熟悉了基本的编程模块,那么没有什么可以阻止你尝试使用它们。当然,编写复杂的大程序需要大量的练习,但是有很多简单系统的例子,可以让你一次只用一个编程模块就能提高工作效率。同时使用它们是一种超能力,它将显著提高你的能力。
在Emacs文本编辑器中创建在线问卷和定义键盘宏可以帮助你练习命令排序。
利用交互式小说创作工具Twine,使用if-this-then-that或Alexa Routine编程指令,可以创建交互式故事和非线性叙事。
在电子表格中定义公式或创建自己的 BuzzFeed问答测试,可以将信息存储在变量中。
在Google日历、Apple日历、Yahoo日历之类的东西,或者使用在线工具设计视频游戏,都是将指令整合到循环中的好方法。
最后,在Google Apps Script中绘制程序和构建新行为的分组功能可以揭示函数定义的价值。
借助AI学习编程
俗话说:“平庸的老师只是叙述,好的老师讲解,优异的老师示范伟大的老师启发。”
叙述、解释、演示和启发这四个动词很好地映射了我们向计算机传达任务的四种主要方式。“叙述”对应于编码,即之前提到的循环和变量等概念。但其他三种都是机器学习的风格,它们在人工智能方面取得了惊人的进步,并有望极大地扩展所有人的能力,使计算机更强大,对自己更有用。
解释的概念是向计算机阐明其目标,而不是实现该目标所需的具体步骤。 从本质上讲,它们可以帮助人们构建解决任务的循环。这种机器学习模式被称为“强化学习”,因为它通常涉及为机器决定奖惩,并让它调整自己的行为以适应奖惩。
最先进的棋盘游戏和视频游戏程序都采用了这一理念,一些商业应用也是如此。例如在保持数据中心冷却的同时,最大限度地减少用电量,并最大限度地提高吞吐量。它们还用于股票交易和优化供应链,在这些问题上,人们更容易解释成功,而不是决定实现成功的具体步骤。
演示在现代计算机系统中也发挥着关键作用。机器学习的一个分支被称为“监督学习”,它通过实例来生成高性能软件。现在,通过向计算机提供大量的输入及其相应的输出集合,可以定期创建语音解码和语言翻译程序。有监督的机器学习方法创造出指令序列,使其成为现实。一种监督学习方法是通过生成被称为“决策树”的条件分支集合来解决问题。另一种是将中间计算组织成一组变量的值,称为“神经网络”。这些变量本身可以组织成类似函数定义的单元。
通过“启发、灵感”告诉机器该做什么的方法并不常见,但这种想法的一些重要应用正在出现。最近的一个例子是自动驾驶。很难告诉计算机在每个可能的地点和目的地选择哪条路线。甚至很难解释其目的是什么——大多数人更喜欢较短的路线,但如果某条路线虽然耗时短,但道路弯弯绕绕,人们有时会选择更方便的路线。我不知道时间会相差多少,你可以选择利用AI演示一下。
工程师们开始做的是使用演示和解释的结合:基本上,通过人们选择路线的演示提取一个规则,解释为什么他们选择这些路线而不是其他路线。一旦计算机提取了这条规则,它就可以将学到的解释应用到新的路线上。我认为这是一种灵感和启发。
“混搭”是编程未来的发展方向
聊天机器人非常酷,甚至可以帮助我们编程。但归根结底,还是要靠我们自己去理解我们希望机器做什么,并向它们传达这一信息。未来的编程可能会容易得多,但它仍然涉及到我们今天使用的同一套技能。我们在与他人打交道时已经使用了这些技能,所以这是一个很好的基础。但在人工智能时代,积极开发这些技能仍然至关重要,甚至可能更加重要。
机器学习让人们更容易告诉机器该做什么。但通常情况下,系统是通过告诉、解释、演示或启发来工作的。相比之下,当我们要求其他人为我们做某件事情时,我们通常会综合运用这些方法来传达任务,尤其是描述和举例。这是因为,没有实例的描述可能是抽象的、模棱两可的。而没有描述的例子会让你猜测对方的意图。两者都容易出错。
例如,卡尔·萨根(Carl Sagan)说:“我们DNA中的氮、牙齿中的钙、血液中的铁、苹果派中的碳,都是在恒星的内部制造的。所以我们是由恒星物质构成的。”
他告诉我们,我们是由恒星构成的。但他也举了一些例子,以确保我们真正理解他所表达的意思。同样,在告诉机器我们希望它们做什么的情况下,将规则与实例相结合将改变游戏规则。让引导计算机实现我们的愿望变得简单可靠,这才是我们真正看到人工智能充分发挥潜力的地方。
我希望你能从中受到启发,更加有意识地使用计算机,并具有自我效能感和能力。毕竟,计算机是我们可以将自己的意志委托给它的机器。委托我们的意志听起来确实很深奥,我想卡尔·萨根会为此感到自豪。
译者:Araon_
本文来自翻译, 如若转载请注明出处。