您的位置  > 互联网

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

作者 | 戴夫

译者|

规划| 蔡芳芳

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

虽然我从小就很擅长玩电脑,似乎注定要进入IT行业,但后来却经历了一次又一次的失败。 今年,四十多岁的我终于学会了编程。 也许我的经历会让你明白:只要你想开始,永远不会太晚。 有时,您只需要找到适合您的语言即可。

1 “我不想成为Logo明星程序员,然后被派去参加比赛”

我的编程生涯始于 20 世纪 80 年代,当时我拥有第一台计算机。 那是一个叫做ADAM计算机的怪物,如下图所示:

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

当我们第一次拿到它时,我爸爸在地下室里有很多磁带,但我不知道为什么有这么多游戏。 我最喜欢的游戏之一叫to(一款战斗视频游戏),它是一款rogue-like(发呆爬行视频游戏)。 后来他解释说他是用 Forth 实现的。 以下是他的原话:

当我们拿到 Adam 计算机时,它有一个 Zilog Z80 CPU,所以我使用了一点 Forth。 我不知道你是否还记得,但我从美国订购了一个磁带(用于磁带驱动器),里面有几个黑客程序和一本叫做《亚当指南》的书,它允许我们将游戏下载到空白磁带上,给我们大量的游戏集合。 我自己没有写过任何程序,但是磁带上的程序带有源代码,因此您可以遵循逻辑。 在某些情况下,我需要调整参数并重新保存,以优化任何需要破解的程序。 这很有趣,也很有趣。

关键是他给我展示了一门语言,叫BASIC。 那时,我认为 BASIC 是世界上唯一的编程语言。 我开始学习编程语言,阅读了《银山之谜》和《猎杀狮子》等书籍,很快就学会了如何编程。 我是根据史蒂夫的《女巫!》开始的。 》(!)这本书创造了我自己的小型RPG游戏。

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

10 INPUT "What is your name: "; U$30 INPUT "How many stars do you want: "; N40 S$ = ""50 FOR I = 1 TO N60 S$ = S$ + "*"70 NEXT I80 PRINT S$90 INPUT "Do you want more stars? "; A$100 IF LEN(A$) = 0 THEN GOTO 90110 A$ = LEFT$(A$, 1)120 IF A$ = "Y" OR A$ = "y" THEN GOTO 30130 PRINT "Goodbye "; U$140 END

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

同时,我们在学校学到了一个叫做Logo的东西。 这不再那么有趣了,你所要做的就是让乌龟在屏幕上画出形状。 你可以给它一个函数,比如FD 90,RT 90,然后使用4,它会重复四次并绘制一个正方形。 画一个圆需要很长时间,因为你必须给360并且看着乌龟重复360次才能画一个圆。 所以有时你可以作一点小作弊,做 180 度,让乌龟一次向右移动 2 度,这样计算机最终会画出几乎相同的东西,但只进行 180 次计算。

为了让事情变得有趣,你可以做一个像这样的形状,告诉它做一个圆圈,然后告诉它向右转一点,然后开始下一个圆圈。

我几乎完全忘记了我曾经使用过徽标,直到我看到布莱恩的这段视频。 你和我年纪差不多,我小时候也学过logo。 我们的经历非常相似:他因为让乌龟画一个圆而完全分心,但他很幸运地遇到了C语言并真正进入了编程,而我却没有。 这是我自己的原因。

在 20 世纪 80 年代的计算机课上,我们都坐在社区学校一间没有窗户的房间里,让海龟在电脑前画圈。 Logo 非常容易使用,对于我和其他一些人来说,它根本不像一种编程语言。 老师们注意到了这一点,并说即将举办一个标志比赛,我们应该参加。 那应该是全市级的比赛,也可能是省级的比赛。

比赛持续了两三天,最后一天我们终于拿出了一个产品,得到了评委的认可,有望获奖。 我的队友比我更投入,而我开始表现出对比赛缺乏兴趣。 我以为如果我们能获得第四或第五就可以了,但我的队友们并不满意。 所以当比赛结束后,我松了口气。 我知道我不想编程,我也不想赢得一场比赛,然后被派去参加其他比赛,作为标志明星程序员。

我当时的人生目标就是让那个我从小学就暗恋的女孩爱上我。 而且,当时人们认为懂计算机的人都是书呆子。 所以当时我会在公共场所与电脑保持一定的距离,以维持这样的形象:是的,我擅长电脑,但我不是电脑爱好者什么的。

经过两三天的观察Logo竞赛和他们所做的事情后,我们得到了一件T恤和一瓶作为参与奖励,那是我最后一次使用Logo。 与此同时,我继续使用了一段时间的 BASIC。 直到20世纪90年代初期,当我们用386取代ADAM计算机时,我完全忘记了BASIC,我也无意花钱买一本编程的书。 的书.

Bryan 对 Logo 的第一次体验如下:

我认为我使用的第一种语言是徽标。 现在回想起来,这是一种虐待儿童的行为。 标志太糟糕了! 如果您现在查看上面的 Logo 条目,您会说,“嗯,这很好,就像受 Lisp 影响的方言......”但这都是错误的。 “Logo是一只什么都不会的乌龟。当我说乌龟时,我指的是大头显示器上的一个三角形。它什么都做不了。它的魔力就像你告诉它“盒子”(画一个正方形),它会告诉你“我不知道如何拳击”。

记得三年级的时候,计算机是必修课。 我记得那种机械的、冰冷的感觉,因为这东西不知道如何画正方形,而且我不在乎你是否知道如何画正方形。 我第一次接触计算机时是“我才不在乎这个”。

2.Ruby还是Lua?

从 20 世纪 90 年代到 2000 年代,我没有做过任何编程。 然而,这段时间发生了两件至关重要的事情:我成为了《星际迷航:下一个》和《创世纪 VII》的忠实粉丝。

Data是我最喜欢的角色,所以我经常思考宋博士是如何创造Data的,以及我们花了多长时间才走到这一步。 我在玩《创世纪 VII》时曾经有过并且现在仍然有同样的感觉:世界充满了细节,我会继续玩游戏,即使只是为了与人交谈,在酒吧闲逛,看人们读书。

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

那时我知道有一种编程语言叫C++,是用来开发游戏的。 也许有一天我可以用它来制作一款像 Data 和 VII 这样看起来像机器人的游戏。 这让我对C++产生了一定的敬佩,但我与编程没有任何联系。

我从加拿大搬到日本,然后又搬到韩国。 有一天,我遇到了一位来自多伦多的韩裔加拿大人,他在韩国担任程序员。 作为一名韩国人,他能够在没有雇主严格许可的情况下从事自由职业以保持签证,并且整天坐在星巴克里用两种语言编写代码:PHP 和 . 我知道PHP这个名字,但我一直以为它只是一个电子公告板的名字。 他告诉我应该尝试一下,因为我可以很快学习新技能,这对我的职业生涯很有帮助。

他向我推荐了它并说我应该从这门语言开始。 第一次非常混乱,只取得了一些小成功。 我记得读过关于 2 和 3 的帖子,关于 2 如何更好以及如何将 3 强加给每个人。 不管这意味着什么,我注意到一些熟悉的东西,比如 print,但是熟悉的 $ 丢失了,并且没有任何行号或 GOTO。 我设法在没有主函数的情况下将一些东西组合在一起,但我真的不知道程序如何在没有行号和其他有用的东西的情况下从头到尾运行。

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

几个月后,我在星巴克再次遇到那个韩裔加拿大人,他问我过得怎么样。 我告诉他我认为Lua应该是适合我的编程语言,但我无法解释为什么。 显然我还没有掌握如何编写代码。 他最后评论道:“好吧,也许你没有编程基因。”

不知道为什么,我就是固执地相信自己有这个基因。 我在小学的时候自学了 BASIC,我知道我有这个天赋。 我只需要真正喜欢Lua并学好它...或者我应该学吗? 但每个人都说你应该先学它,尽管我确实更喜欢Ruby……结果我无休止地挣扎,直到再次失去兴趣。

最终,我回到加拿大几年,编程甚至不在我的考虑范围内。 从2011年到2015年,唯一和编程有关的事情就是听说隔壁办公楼全是写C++的人。 他们为管道和其他能源项目定制了 SAP,赚了很多钱。

3 40岁,第一次学习编程

2015年,油价暴跌,经济随之崩溃,我们整个团队解散了。 在收到慷慨的裁员方案后,我决定开始真正学习编码。

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

后来,裁员补偿金快用完了,我只好另谋出路。 找到工作后,我去市中心和以前的同事一起吃饭。 那时,我遇到了一位自 20 世纪 90 年代中期以来就没见过的老朋友。 他在财务部工作,问我做什么工作。 我告诉他我找到了新工作,下周开始工作。 “哦,我打赌这是编程工作,对吧?你一直很擅长编程,”他说。 我回答说:“哦,不是编程……我已经很长一段时间没有真正做过这些事情了。这是项目控制方面的事情。”

我清楚地记得这次谈话,因为它让我思考为什么我从未学习过编程,以及为什么,无论出于何种意图和目的,我似乎注定要在年轻时学习编程。 但当时忙于其他事情,就没有再尝试编程。

2018年我回到了韩国,第二年8月,我向当时担任​​文案的公司递交了辞呈。 距离正式辞职还有一个月的时间,我开始考虑学习一些技能。 也许这次我真的应该好好学习了。 我可以每天花几个小时,到一天结束时就掌握得很好,然后花一个月左右的时间找工作。 这样做了几天后,我的老习惯又回来了。 “好吧,你可以看看其他语言,”我对自己说,“但你必须优先考虑它。”

那是我第一次尝试 Rust。 我听说它非常准确和高效,但很难学习,喜欢它的人会对其赞不绝口。 我开始从《Learn》(Rust)开始学习Rust。

当我开始学习 Rust 时,我查阅了该语言的用法,答案无一例外是它几乎可以做任何事情。 所以我可以制作像《创世纪 VII》这样的东西,或者任何我想要的东西。 更有趣的是,语言的细节和语言的底层内容并不让我感到厌烦:我发现自己更被它吸引。 当我对这门语言了解得更多时,我感到很怀旧。

我写的所有东西都直接转换成二进制文件,我又可以看到计算机的内部结构了。 很多 Rust 讨论都是关于如何优化代码,我觉得这很有趣。 但该语言是高级且安全的,如果我全身心投入其中,它几乎可以使任何事情成为可能(至少在语言可以做到这一点的程度上)——这就是为什么我的老问题完全消失了。

谁知道这样的代码会成功!

《 in Rust》(Rust)这本书在我刚开始读的时候对我来说太难了(一方面是C++和C的参考太多),所以在读了其他书之后我又回到了这本书。 书,最后爱上了它。

不过,对我帮助最大的是流媒体视频。 第一个是开发者制作的70多个视频。 他记录了阅读Rust Book的每一步。 看着其他人尝试学习你也在学习的语言,会给你一种其他类型的流媒体无法提供的精神投入感。 “是 mit einer,不是 mit einem!” 或“只需使用 () 即可编译!” 在这些时刻,你会感觉你真的在和别人一起学习(事实上,你确实在学习)。

从那时起,我开始看 Brian Myers,他基本上是通过在 Bing() 上搜索来学习 Rust 的。 Jon 我把它留到了最后(这是在 Crust of Rust 教更简单的事情之前),并且还观看了 Hello Rust、Ryan、Doug、这个 Rust 崩溃、dcode 的 Rust 视频以及所有视频(并非全部按顺序)。 我喜欢的另一个视频流是他是一位 25 岁的 C++ 爱好者,制作了一款类似《 V》的游戏,最近开始学习 Rust。

半年后,我发现我人生第一次正确地学会了编程。 不过,这并不是什么秘密:这实际上是一个一心一意的专注和勤奋的 Bing 搜索的问题。

由于我只有一台 Go 笔记本电脑,因此我确保避免使用太多插件。 但我做了一些东西,比如一个汉字转换器(汉字是韩国使用的汉字),效果非常好,最后我编了一本叫做《Learn Rust with easy》的教材,目的就是为了让对于处于第二水平的英语使用者来说,无需使用翻译成本国语言的 Rust 相关书籍,就可以更轻松地学习该语言。

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

我想强调两点:1、改变想法和注意力不集中不一定是永久性的;2. 2.每个人都有不同的性格,最简单的语言可能不是你最喜欢的语言。

网站上经常有关于/R/等的讨论:“我真的很想学(著名的语言)。答案当然是否定的——就学你想学的语言。这种建议更容易给出,因为自然语言与职业发展的联系不如编程语言那么紧密,但由于编程语言也有许多后继者,因此同样的建议可能适用。

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

关于作者:

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

原文链接:

推荐活动

微软OG白皮书来了! “Azure混合云技术”+“混合效益”一气呵成! 让您节省高达42%的云迁移成本,实现投资价值最大化! 不仅如此,还有最新产品介绍、SQL十大亮点、AHUB(Azure )问答、云安全等重要信息。 还等什么?扫描二维码或点击【阅读原文】即可下载