我在50多岁学会了计算机编程语言-这是我发现的
一天在2017年,我有了一个现在看来显而易见但当时令人震惊的认识:几乎我所做的一切都受到计算机代码的影响。
随着代码涌入我的世界,而这个世界似乎不是变得更好,而是变得更糟。我开始思考为什么。两种可能性立即浮现在脑海中。一种是编写代码的人-程序员-长期以来在流行文化中被描绘为一群模糊的、崇拜托尔金的怪人。另一个是许多人所处的超级资本主义体系,在其中,硅谷这个异常诡异的地方成为了典型代表。是不是二者中的一者或者两者都在利用代码来重新塑造人类环境,使之更符合他们的需求?还有第三种可能性,这种可能性我几乎不敢去思考,因为其前景是如此可怕。如果我们计算的方式与人类的方式存在抵触怎么办?我从未听说过有人提出这样的可能性,但理论上,至少是存在的。慢慢地,逐渐明了,想要找到答案唯一的办法是通过学习编程来深入了解机器内部。
每种语言都有其独特的精神和追随者,演变成对应的激情和狂热程度与我年轻时成长经历过的青年亚文化-朋克、摩德、死硬等一样完全的亚文化。
作为一个没有技术背景的50多岁作家,我对代码如何运作知之甚少。但几年前,在写一篇关于比特币的杂志专题报道时,我遇到了程序员,对他们产生了兴趣。比特币的匿名创造者中本聪在消失前没有留下太多关于自己身份的线索。但他留下了10万行代码,我发现他的同行们像阅读文学作品一样阅读这些代码。我了解到有成千上万的编程语言用于与计算机通信,其中有几十种大型语言的名称往往暗示着玫瑰或不可原谅的强力清洁产品(Perl、Ruby、Cobol、Go),每种语言都有其独特的精神和狂热追随者,演变成对应的激情和完全的类似于青年亚文化的亚文化。
在我50多岁、没有技术背景的情况下,我几乎对代码是如何运作一无所知。但我以前写过一篇关于比特币的杂志特写,对程序员产生了兴趣。比特币的匿名创造者中本聪在消失前没有留下太多关于自己身份的线索。但他留下了10万行代码,我发现他的同行们像阅读文学作品一样阅读这些代码。后来,我跟一位研究股票市场“高频交易”的理论物理学家交谈过,其中的算法在人类控制之外作用,互相试图愚弄彼此关于市场状态的情况。我惊讶又着迷,当他把这个代码的宇宙称为“第一个真正由人制造的生态系统”时。他的团队的研究发表在《自然》杂志上,而不是在物理或计算机期刊上。
保留的好奇心是我开始进入一个证明比我敢想象的领域,既古怪又有趣,而且经常令人发笑,第一次任务是选择一种语言。但基于什么?最终,我找到了一个非凡的网站freeCodeCamp,在那里我了解到大多数网站背后都有一个经典的语言三人组,许多学习者都从这三种语言开始。HTML,指的是超文本标记语言,由Tim Berners-Lee在万维网诞生时创建,并用于定义网页的结构,CSS(层叠样式表)允许对HTML元素进行样式设置。可选的,JavaScript可用于对这些元素进行动画处理。我喜欢前两者,解决了我面对的第一个代码危机,并体验到当机器执行我意图时的喜悦。直到有人指出,我可能喜欢HTML和CSS是因为它们不是“算法性的”:我只是在移动东西。换句话说,这不是编程。
编程的未来:解决生活问题的科技孩子阅读更多
然后发生了一些脏话。然而,在我的内心深处,我知道我选择并不是随机的。算法是难以掌控的,存在着错综复杂的环境,一个错误的逗号可能会导致飞机坠毁或卫星爆炸。显然,我的一部分想要避免它们。然后我看了JavaScript,这是网页三人组中强大的算法支柱-并且讨厌它。
从根本上说,算法是简单的东西,主要由“if”语句(如果“x”发生,则执行“y”;否则执行“z”)和“while循环”(只要“x”适用,则执行“y”;当“x”不再适用时,停止执行“y”)组成。因此,通过它们的性质,算法集中并强化它们所给予的内容。原则上,如果这些东西是好的,世界就会变得更好;如果它们是坏的,世界就会变得更糟。事实上,事情并不简单。我对JavaScript的沮丧不仅仅是对算法的不适,而是更多的情感和审美方面。令我感到奇怪的是,对于我一直认为是一个超理性领域来说,主要问题是审美的。情感上的。只要看一看JavaScript,带着它那让人不快的大括号、大括号以及似乎没必要的分号,就让我感觉很糟糕。似乎有25种不同的方法来完成每个任务,这些方法不断变化,使这种语言变成一种编程的荒野。我花在它身上的时间越长,我就越觉得:“我做不到这一点;编程不适合我-我的思维方式不对(而且从来不喜欢星球大战)。”
当我在Python编程者大会的第一天时,与我想象中的严肃聚会非常不同,更像是回到霍格沃茨的第一天。在这种低潮时,当一个支持编程的朋友的朋友向我建议在放弃之前尝试另一种语言时,我便有了幸运之神。他让我联系了一个名叫尼古拉斯·托勒维(Nicholas Tollervey)的人,他在Python语言社区中很有影响力。在给托勒维打电话之前,我看了看Python,立即觉得更适合我。我注意到的第一件事是其语法的简洁明了,使用缩进而不是丑陋的符号来界定指令给机器。这种语言是由一位自然协作的荷兰人吉多·范罗苏姆(Guido van Rossum)设计的,他看重交流、社区以及关心他的语言在野外的行为-换句话说,是同情心-高于一切。他以蒙提·派森(Monty Python)命名他的语言Python,这是一个有希望的俏皮的人类感触。当托勒维建议我前往俄亥俄州克利夫兰体验一下拥有4000人参加的PyCon大会时,我发现自己同意了,却不知道我在同意什么。
第一天并不像我想象中的严肃聚会,而更像霍格沃茨的开学第一天。我与托勒维会面,在皇家音乐学院毕业后转向编码的大号演奏家-这是我在PyCon经常听到的背景故事。我了解到Python首次出现在20世纪90年代初,但要过去近20年才逐渐为人所接受:范罗苏姆讲述了本世纪初在一次大型计算会议上召集一次聚会的经历,结果只有少数几位狂热者出席的情况。然而,随着程序大小和复杂性的增长,他的语言的优先级开始显现。当我问时任Python软件基金会主席娜奥米·西德尔(Naomi Ceder)如何看待Guido-对于“Pythonistas”来说,他永远只是Guido-如何预见编程环境的变化时,她说他没有。
这在外部世界似乎不值得注意,但在编码中却不同。创造了Perl语言的迷人博学家拉里·沃尔(Larry Wall)明确将他的语言定义为与Python相反。他说,后者是一种现代主义的创作,强加自己的审美观念,限制选择或解释的自由,降低了个体的优先级。Perl,他声称,是明确的后现代主义,为个体提供尽可能多的选择,让他们决定使用什么。我认为沃尔在这两个方面都是正确的,即使这是我以前从未想过与代码有关的讨论。然而,在PyCon上我开始感受到,编程语言中蕴含的价值观和假设决定了用它们来编写的软件,并相应地改变世界。当我了解到JavaScript的作者布伦丹·埃克(Brendan Eich)是一个反疫苗接种者,曾支持一场运动取消加利福尼亚州的同性婚姻时,我并不感到惊讶。
我惊讶地发现我与Python编程者一起有多么开心。编程领域存在着性别和种族问题,只有约5%的专业人士认为自己是女性或黑人、非洲裔或加勒比裔。我需要花几年的时间来了解为什么会出现这种情况。但在全球Python社区中,正在做出大力努力来解决这个问题,尤其是在非洲。一个试图扭转这种失衡的组织是PyLadies,传统上在会议的星期六晚上举行筹款拍卖会。我获得了一张门票,并第一次真正感受到一个社区,虽然在性别和种族方面仍然太过狭窄,但它是我见过的最文化多样和神经多样的群体。
对我来说,拍卖的亮点涉及到一位年轻的PyLadies所绘的一幅画。拍卖师解释说,前一年琳(Lynn) 曾遭受严重的疲劳,这在一个小动作就可能造成巨大影响的领域中很常见。她从编程中淡出开始尝试用水彩画寻求平静。其他PyLadies为说服她提供一幅描绘她猫的画作而努力,但当我坐在那里时,我看到她因焦虑而颤抖,依偎在幕后的同事身边。这幅画对她来说意义重大,但对其他人又意味着什么呢?
我目瞪口呆地看着起初缓慢开始的竞标,然后加速至最高点1410美元,而年轻的编程者则化为泪水,甚至泪流满面,就像悬崖溃塌入海一样地肆虐释放情感,我离开时觉得这是我见过的最美丽的事情之一;我知道这是一个我想更多了解的社区。
两年后,我将作为Code for America旧金山分队的一名志愿者,为湾区的疫情数据仪表盘编写我的第一个紧张的Python代码,并感觉自己是世界上最不可能被转变为代码文化的人。
尽管如此,当我深入研究硅谷及我所谓的“微观宇宙”时,我发现代码本身存在着一种内在的棱角,这与我们进化的方式相矛盾。有一种东西正在集中权力,磨损社会,并对我们作为一个物种施加算法咒语-直到我们将其控制住。正当我以为我的工作已经完成时,它才刚刚真正开始。安德鲁·史密斯(Andrew Smith)的《代码之恶:编程奥德赛》由Grove Press(16.99英镑)出版。要支持《卫报》和《观察家》,请在guardianbookshop.com订购您的副本。可能会收取送货费。探寻更多关于这些话题的内容:科技、观察家、计算机科学和IT、蒂姆·伯纳斯-李等等。
感谢阅读!如果您对AI的更多资讯感兴趣,可以查看更多AI文章:GPTNB。
我在50多岁学会了计算机编程语言-这是我发现的