每个程序员都有自己的“真命”编程语言|Sambodhi策划

作者 | 戴夫麦克劳德

翻译 | 三菩提

规划 | 蔡芳芳

每个程序员都有自己的“真正的”编程语言。

虽然早在小学就玩过电脑,似乎注定要进入 IT 行业,但后来却屡屡失败。今年,当我 40 岁时,我终于学会了编程。也许我的经历会让你明白:只要你想开始,什么时候都不晚。有时,您只需要找到适合您的语言。

1 《在被送去参加比赛之前不想成为 Logo 明星程序员》

我的编程生涯始于 1980 年代我的第一台计算机。那是一个叫做 ADAM 计算机的怪物,它看起来像这样:

它是个人电脑、ColecoVision 游戏系统和打字机的混合体:两个磁带驱动器代替磁盘驱动器/盒式磁带,一台电视代替监视器,以及一个有趣的打印机,带有一个开关,可以将其变成完整的打字机. 许多其他 ADAM 计算机用户都有实际的磁盘驱动器,但这个没有,磁带需要很长时间才能加载。

我们刚拿到的时候,我爸爸在地下室有很多磁带,但我不知道为什么会有这么多游戏。我最喜欢的游戏之一是《Gateway to Apshai》(一款战斗视频游戏),这是一款类 Rogue 游戏(一款迷宫爬行视频游戏)。他后来解释说他是在 Forth 做的。以下是他的原话:

当我们有 Coleco Adam 计算机时,它有一个 Zilog Z80 CPU,所以我使用了一点 Forth。我不知道你是否记得,我从美国订购了一个磁带(用于磁带机),里面有几个黑客程序和一本名为“亚当黑客指南”的书,它允许我们将 ColecoVision 的游戏下载到空白磁带上,所以我们有很多游戏。我自己没有编写任何程序,但是磁带上的程序带有源代码,因此您可以按逻辑编写它们。在某些情况下,我需要调整参数并重新保存,以优化任何需要被黑的程序。这很有趣也很有趣。

关键是他向我展示了一种叫做 BASIC 的语言,当时我认为它是世界上唯一的编程语言。我开始学习编程语言,并阅读了诸如《银山之谜》和《狩猎 Wumpus》之类的书,并很快学会了如何编程。我从史蒂夫杰克逊的巫术开始!(巫术!)制作我自己的小型 RPG 游戏的书。

它们最终就像下面代码的更大版本,从维基百科复制而来,有很多 RAND 滚动和 GOTO 调用。随着时间的推移,我不得不添加越来越小的行号(例如,在第 60 行和第 70 行之间,我添加了 65,然后是 64,最后当我用完空间时,我不得不给整个段落代码重新编号)。

10 输入“你叫什么名字:”;U$30 INPUT “你想要多少颗星:”; N40 S$ = “”50 FOR I = 1 TO N60 S$ = S$ + “*”70 NEXT I80 PRINT S $90 INPUT “你想要更多的星星吗?”; A$100 IF LEN(A$) = 0 THEN GOTO 90110 A$ = LEFT$(A$, 1)120 IF A$ = “Y” OR A$ = “y” THEN GOTO 30130 打印“再见”; 140 美元结束

所有这些代码都是我自己完成的。那时,人们无法在网上搜索示例代码,所以每个人都认为我注定要从事 IT 职业。

同时,我们在学校学到了一种叫做 Logo 的东西。这不是很有趣,您需要做的就是让乌龟在屏幕上绘制形状。你可以给它一个类似 FD 90、RT 90 的函数,然后使用 REPEAT 4,它会重复四次,画一个正方形。画一个圆圈需要很长时间,因为你必须给 REPEAT 360 并看着乌龟重复 360 次来画一个圆圈。所以有时你可以稍微作弊,做 REPEAR 180,让乌龟一次向右移动 2 度,计算机最终会画出几乎相同的东西,但在 180 次计算中。

为了增加趣味,你可以做一个像下面这样的形状,让它做一个圆圈,然后让它向右转一点,开始下一个圆圈。

在看到 Bryan Cantrill 的视频之前,我几乎完全忘记了我使用 Logo。Cantrill 跟我差不多大,小时候学过 Logo。我们也有过类似的经历:完全不在意让乌龟画一个圆圈,但他很幸运遇到了 C 并真正开始编程,而我没有。这是我自己的原因。

在 1980 年代的电脑课上,我们都坐在卡尔加里牧场社区学校的一间没有窗户的房间里,让海龟们在电脑前画圈。因为 Logo 很容易学习,所以我和其他一些人觉得它根本不像是一门编程语言。老师们注意到了这一点,并说即将举行徽标比赛,我们应该去。那应该是全市级的比赛,也可能是省级的比赛。

比赛持续了两三天,最后一天我们终于修出了一款得到评委认可并有望获胜的产品。我的队友比我更投入,我开始表现出对比赛缺乏兴趣。我觉得我们能拿到第四或者第五名还好,但是队友不高兴。所以当比赛结束时,我松了一口气。我知道我不想编程,也不想赢得比赛然后被派到另一个比赛作为 Logo 明星程序员。

我当时的人生目标是让我在小学时暗恋的女孩喜欢我。同样在当时,懂电脑的人也被认为是书呆子。所以当时,我在公共场合与计算机保持距离以保持这种形象:是的,我很擅长计算机,但我不是计算机极客或任何东西。

看了两三天的 Logo-Proficient 比赛和他们做了什么,我们得到了一件 T 恤和一个瓶子作为参与的奖励,这也是我最后一次使用 Logo。同时,我也继续使用 BASIC 一段时间,直到 90 年代初,当我们用 386 替换 ADAM 计算机时,BASIC 完全被我忘记了,我也不打算花钱买一本关于编程的书。的书。

Bryan Cantrill 对 Logo 的第一次体验是这样的:

我认为我使用的第一种语言是 Logo,现在回想起来,这是一种虐待儿童的形式,而且 Logo 太可怕了!如果您现在查看 Wikipedia 上的徽标条目,您会说,“嗯,这很好,就像受影响的 Lisp 方言……”但这些都是错误的。“标志是一只不做任何事情的乌龟,我所说的乌龟是指大头显示器上的一个三角形,它什么也不做。就像你告诉它’box’(画一个正方形)一样神奇,它会告诉你“我不知道如何装箱”。

我记得我上三年级的时候,计算机是一门必修课。我还记得当时那种机械的、冷漠的感觉,因为这东西不知道怎么画方格,我也不在乎你会不会画方格。我第一次接触电脑是“我根本不在乎这个”。

2 Python、Ruby 还是 Lua?

从 90 年代到 2000 年代,我没有进行任何编程。然而,在此期间发生了两件至关重要的事情:我成为了《星际迷航:下一代》和《创世纪》的忠实粉丝7)。

数据是我最喜欢的角色,所以我想了很多关于宋博士是如何制作数据的,以及我们需要多长时间才能达到这个阶段。当我玩 Ultima VII 时,我曾经并且仍然有同样的感觉:这个世界充满了细节,我会继续玩它,即使只是为了和人聊天、去酒吧、看人们阅读。

所以,这段时间是我重新对编程产生兴趣的重要时期。编程不再是关于乌龟和令人沮丧的比赛,而是科幻小说、电影、奇幻游戏、音乐以及其他我认为很酷和有价值的东西。

那时,我知道有一种叫做 C++ 的编程语言可以用来开发游戏,也许有一天我可以做出像 Data 和 Genesis VII 这样看起来像 Android 机器人的游戏。这让我对 C++ 产生了一定的敬佩之情,但我却没有编程。

图片[1]-每个程序员都有自己的“真命”编程语言|Sambodhi策划-老王博客

我从加拿大搬到日本,然后搬到韩国。有一天,我遇到了一位来自多伦多的韩裔加拿大人,他在韩国做程序员。作为一个韩国人,他可以在没有雇主严格许可的情况下让他保持签证的自由职业者,只需整天坐在星巴克用两种语言编程:PHP 和 Python。我知道 PHP 这个名字,一直以为它只是一个公告板名称。他告诉我应该试一试,因为我可以快速学习新技能,这将有助于我的职业生涯。

他向我推荐了 Python,并说我应该从这门语言开始。第一次用Python很迷茫,只有几个小成功。我记得读过关于 Python 2 和 Python 3 的文章,关于 Python 2 如何变得更好以及 Python 3 如何迫使每个人接受它。不管这意味着什么,我注意到一些熟悉的东西,比如 print从机器语言程序员看,但是熟悉的 $ 不见了,并且没有任何行号或 GOTO。我设法在没有 main 函数的情况下将一些东西放在一起,但我真的不知道没有行号和其他有用的东西,程序如何从头到尾运行。

那时,互联网开始普及,人们会在网上将一种语言与另一种语言进行比较和讨论。我注意到一种叫做 Ruby 的语言更符合我的风格,所以我试了一下。然后我看到了一种叫做 Lua 的语言,感觉它是为我而生的。我不知道如何使用它,但我只是相信 Lua 是我想要的。我认为 Lua 是最容易学习的编程语言,如果我能学好这门语言,我可以学习所有其他编程语言。

几个月后,我在星巴克再次遇到了这位韩裔加拿大人,他问我用 Python 做得怎么样。我告诉他我认为 Lua 是适合我的编程语言,但我说不出为什么,显然我还不知道如何编码。他最后评论说:“好吧,也许你没有对基因进行编程。”

我不知道为什么,但我固执地认为我有这个基因。我在小学的时候自学了 BASIC,我知道我有这个天赋。我只需要真正喜欢 Lua 并学好它……还是我应该学习 JavaScript?但是每个人都说你应该先学习 Python,虽然我更喜欢 Ruby……我一直在无休止地挣扎,直到我再次失去兴趣。

最后,我回到加拿大住了几年,编程根本不在我的考虑范围之内。在 2011 年到 2015 年期间,我听到的唯一与编程有关的事情是,下一个办公楼里到处都是 C++ 编写者,为管道和其他能源项目定制 SAP,并且赚了很多钱。

3 40岁,第一次学习编程

2015年,油价暴跌,卡拉加里经济随之崩溃,我们整个团队解散了。在收到丰厚的裁员补偿后,我决定开始真正学习编程。

我学会了如何编写函数、如何创建对象等,但是 self 关键字仍然令人困惑,使用对象也是如此。多一点努力就足以解决这些问题,但我的旧习惯又回来了:

“Python 在制​​作游戏方面很糟糕——它不会让你制作像 Ultima VII 这样的东西。

“为什么不试试 C++?不,那太难了!C# 怎么样?让我们试试吧。”

“哇,好复杂。不过,C#看起来是个不错的选择!等等,这是什么?F#?这语言真的很酷。为什么不是所有的语言都这样?”

“F#太棒了!为什么没有更多的人使用它?也许我应该完成学习Python……”

“然后是 Python,它简单易用!除非它是 JavaScript。所以我可以在浏览器中做任何事情。也许我可以从一些基于浏览器的游戏开始?是时候尝试一下了……”

后来,裁员补偿的钱快用完了,又要另谋高就了。找到工作后,我去城里和以前的同事吃饭。认识了一个我90年代中期就没有见过的老朋友,他在金融界工作,问我在做什么,我告诉他我找到了一份新工作,下周开始工作。“哦,我敢打赌这是编程工作!你一直擅长编程,”他说。我回答说:“哦,不是编程……我已经很久没有这样做了。这是项目控制方面的事情。”

我清楚地记得这次谈话,因为它让我思考为什么我从来没有学过编程,而且无论如何,我似乎在年轻时就注定要这样做。但我忙于其他事情,并没有再次尝试编程。

2018年回到韩国。次年8月,我向我所在的公司提交了辞职信,当时我是一名文案。距离我正式辞职还有一个月的时间。我开始考虑学习一门技术。也许这一次我真的要学Python了。我可以每天花几个小时在最后一天掌握好,然后再花一个月左右的时间找工作。这样做了几天后,我的旧病又出现了。“嗯,你可以稍微看看其他语言,”我对自己说,“但你必须专注于 Python。”

那是我第一次尝试 Rust。我听说它非常精确和高效,但很难学习,喜欢它的人会对此赞不绝口。我在“在 Y 分钟内学习 X”和“Rust 语言”Rust 操场上开始学习 Rust。

当我开始学习 Rust 时,我查看了该语言的用途,答案毫无例外地是它几乎可以做任何事情。所以我可以制作像创世纪七这样的东西,或者任何我想要的东西。更有趣的是,语言的细节和语言的底层内容并没有让我感到厌烦:我发现自己更加吸引人。随着我对这门语言的了解越来越多,我产生了很多怀旧情绪。

我写的所有东西都直接转换成二进制,我可以再次看到计算机的内部结构。很多关于 Rust 的讨论都是关于如何优化代码,我觉得这很有吸引力。但是语言是高级且安全的,如果我全心全意,它几乎可以使任何事情成为可能(至少在语言可以做到的程度)——这就是为什么我的旧病完全没有了。

谁知道这种代码会成功!

《Programming Rust》这本书一开始对我来说太难读了(一方面是对 C++ 和 C 的引用太多),所以我在阅读了这本书的其他书籍后又回到了这本书,最终爱上了它。

不过,对我帮助最大的是流媒体视频。第一个是 Javascript 开发人员 Brooks Builds 的 70 多个视频,他在其中录制了 Rust Book 的每一步。看着其他人努力学习一种你也在学习的语言,这会给你一种精神上的参与感,这是其他类型的流媒体所无法做到的。“这是 mit einer deutschen Familie,而不是 mit einem deutsche Familie!” 或“只需使用 into_iter() 编译!” 等等,当你觉得你真的在和别人一起学习时(事实上,你正在学习)。

从那以后,我开始观看 Brian Myers,他基本上是通过在 bing.com 上搜索来学习 Rust。Jon Gjengset 我把它保存到最后(在 Rust 的 Crust 教授更简单的东西之前),还观看了 Hello Rust、Ryan Levick、Doug Milford、Tensor Programming、这个 Rust 速成课程、dcode 等的 Rust 视频。所有视频(不是全部按顺序)。另一个我喜欢的视频流是 rhymu8354,一个 25 岁的 C++ 爱好者,他制作了一个类似于 Genesis V 的游戏,最近开始学习 Rust。

半年后,我发现我有生以来第一次学会了正确的编程。不过,这并不是什么秘密:它确实是对 Bing 搜索结果的单一关注和勤奋使用。

由于只有一台 Surface Go 笔记本电脑,我确保避开任何有太多插件的东西。但是我做了一些像汉字转换器(Kangja是韩国使用的汉字)之类的东西,效果很好,最后我整理了一本叫做“用简单的英语学习Rust”的书,目的是让那些人更容易具有第二级英语学习语言,而无需使用翻译成本国语言的 Rust 相关书籍。

我认为这个故事的寓意是经典的“找到你喜欢的东西并继续做下去”。这对我来说并不新鲜,只是我花了很长时间才找到适合我的语言。它使其他语言变得如此易读易懂,包括 C 和 C++。

我想说两点:一、问题变化和注意力不集中不一定是永远的;二、每个人的性格不一样,最简单的语言不一定是你喜欢的语言。

Reddit 的 /R/LanguageLearning 和其他论坛经常有这样的讨论:“我真的很想学习(著名的 X 语言),但我是否应该继续学习更简单的西班牙语/法语等,即使我讨厌它?” 当然答案是否定的——只要学习你想学的语言。这种建议更容易给出,因为自然语言不像编程语言那样与职业发展挂钩。但由于编程语言也有很多后继者从机器语言程序员看,同样的建议可能也适用。

Rust 肯定不是那种适合在大团队中成为初级程序员的语言,更不用说 40 岁了。但如果你是那种拿起编程一次又一次放下的人,也许找到正确的编程语言会让你继续前进。

关于作者:

Dave MacLeod,加拿大人,住在韩国首尔。专业翻译,精通韩语、日语、德语、法语和英语。业余 Rust 开发人员。

微软 OG 白皮书来了!“Azure混合云技术”+“混合收益”一气呵成!让您节省高达42%的云成本,最大化投资价值!不仅如此,还有Windows Server最新产品介绍、SQL Server十大亮点、AHUB(Azure Hybrid Equity)问答、云安全等重量级干货。你在等什么?

© 版权声明
THE END
喜欢就支持一下吧
点赞0
分享
评论 抢沙发

请登录后发表评论