关于在40岁时终于学会编程的问题

2020-09-08 13:16:56

PermalLink GitHub是5000多万开发人员的家园,他们一起工作,共同托管和审查代码、管理项目和构建软件。

报名。

今年,我终于在40岁时学会了编程,经历了一次又一次的失败,尽管我对计算机了如指掌,似乎注定要在小学时就进入IT行业。也许它会对你有所帮助,让你知道永远不会太晚,或者有时候你只需要找到合适的语言就可以实现它。

对我来说,编程始于20世纪80年代我们的第一台计算机。这是一种叫做亚当计算机的怪兽,它看起来是这样的:

它是个人电脑、Colecovision游戏系统和打字机的混合体。正如你在图片中看到的,计算机本身就是这样的,用两个磁带机代替了磁盘驱动器或盒式磁带,用一台真正的电视机代替了显示器,还有一台有趣的打印机,它有一个开关,可以让你把它变成一台成熟的打字机。许多其他亚当计算机用户都有真正的磁盘驱动器,但我们没有,磁带永远也无法加载。他们会发出大约一两分钟的声音:RRR reee,RRR reee,RRR ree,RRR(重复)。RRR是缓慢向前移动的声音,而Reee是快速倒带的声音,所以它一定是在向前读,然后需要返回到位于它后面的下一个块。(如果你对这些驱动器的工作原理有更多了解,请随时在Twitter或Reddit上告诉我更多信息--我仍然很好奇。)。

我记得当我们第一次拿到它的时候,我爸爸在地下室做了很多磁带录音,但我不确定为什么它会让我们玩这么多游戏。(我最喜欢的游戏叫“阿普沙伊之门”,一种类似流氓的游戏。几个月前我问过他这件事,结果是他用Forth实现了这一点。他这样写道:

当我们有Coleco Adam计算机时,我用了一点Forth,它的CPU是Zilog Z80。不知道你是否记得,我从美国订购了一盘磁带(用于磁带机),它附带了几个黑客程序和一本名为“黑客亚当指南”的手册,它允许我们将ColecoVision盒式游戏下载到空白磁带上,所以我们得到了大量的游戏。我自己没有写任何程序,但是磁带上的程序附带了源代码,这样你就可以遵循逻辑了。在某些情况下,我需要调整参数并重新保存,以便优化任何需要破解的内容。做这件事很有趣,而且很有趣。

关键的一点是,他向我展示了一种叫做Basic的东西,当时我认为它是世界上唯一的编程语言。我喜欢上了它,并跟着读了像这本名为“银山之谜”和“猎杀野人”的书,很快就学会了如何编程。我开始根据史蒂夫·杰克逊的“魔法”制作我自己的小型RPG!书。

他们最终就像下面这段代码的一个更大的版本,复制自维基百科,在掷骰子和转到电话时使用了大量的兰德。我记得随着时间的推移,我不得不添加越来越精细的行号(在60到70之间添加一条第65行,然后添加一条第67行,最后在我用完空间时重新编号整个东西),不知何故在游戏开始时成功地在一张线条画的同时演奏了一个乐谱。

10输入";您的姓名:";;U$20打印";Hello";;U$30输入";您想要多少星:";;N40 S$=";";50 For I=1 to N60 S$=S$+";*";70 Next I80 Print S$90 Input";您想要更多星吗?";;如果是Len(A$),则A$100。Y&34;或A$=Y&34;Y&34;然后转到30130打印";再见";;$140U结束。

在能够在网上搜索示例代码之前很久,我就已经独自完成了所有这些工作,而且所有人都认为我注定要在IT行业工作。与此同时,在学校里,我们被教导使用一种叫做Logo的东西。这就没那么有趣了,几乎只需要让一只乌龟在屏幕上画出形状就行了。你给它一个函数,像FD 90,RT 90,然后让它重复4次,它就会画一个正方形。画一个圆要花很长时间,因为你必须重复360次才能实现,而且你必须看着海龟做360次运算才能做一个圆。所以,有时候你会作弊,重复180次,让乌龟一次向右移动2度,这样计算机最终就会画出几乎相同的东西,但只需进行180次计算,而不是360次。

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

有趣的是,在看到布莱恩·坎特里尔(Bryan Cantrill)的这段视频之前,我几乎完全忘记了这件事。坎特里尔和我差不多大,也有过童年时期的经历。对他来说也是一样的:他记得对整件事完全漠不关心,并试图让这只乌龟画画。对他来说幸运的是,他最终遇到了C语言,并真正沉迷于编程。我没有,但这是我自己做的。以下是我的感受:

因此,在20世纪80年代的计算机课上,我们都会坐在卡尔加里牧场社区学校一间没有窗户的房间里,坐在电脑前,让海龟们做一些事情。它超级容易使用,对我和其他几个觉得很容易的人来说,它甚至不像是一种编程语言。老师们注意到了这一点,并告诉我们很快就会有一场徽标大赛,我们应该参加。对比赛的记忆有点模糊,但我认为这是一场全市范围的比赛,或者可能是一场省级比赛,所以这意味着看到来自其他学校的孩子和你在同一个房间里的奇怪经历。作为一个孩子,当你试图总结和理解谁是最酷的孩子,谁不是,以及他们的学校氛围是什么样子的时候,遇到其他学校的孩子总是很奇怪的。所以我们学校的几个人去了,我们组成了团队,应该把一些能给评委留下深刻印象的东西放在一起。比赛持续了两三天,我们会在比赛中做一些工作,在家里做更多的工作,最后一天我们会有一个经过评审的产品,希望能赢得奖品。

这才是冷漠开始真正深入人心的地方。我的队友比我更投入到比赛中,我的兴趣开始显现出来。最终,我们做了一些我认为排在第4或第5位的事情,他对此并不满意。不过,比赛结束时,我感到松了一口气,因为当比赛结束时,我知道这个编程世界是我完全不想涉足的,我也不想赢,也不想作为明星徽标程序员被送到其他比赛中去。那时候,擅长电脑=书呆子,而我当时的生活目标就是让我在小学期间一直迷恋的女孩重新喜欢上我。因此,即使在那之前,我在公共场合都会与电脑保持一定的距离,这样我就可以保持这样的形象:是的,我擅长电脑,但我不是电脑爱好者或其他什么东西。

因此,在观看了两三天的Logo-Experent和他们拼凑的东西后,我们得到了一件T恤和一个瓶子(我想)用于参与,这是我最后一次用它做任何事情。与此同时,BASIC持续了一段时间,直到90年代初的一天,我们关掉了亚当的386计算机,我把它忘得一干二净。问题是,没有互联网可以快速搜索代码样本,而且我也不会真的花钱去买一本关于编程的书,据我所知,这本书会把我带回那个竞争的世界,而且(我确信)很可能会被那个女孩拒之门外。

顺便说一下,这是上面布莱恩·坎特里尔视频中的台词,把一切都带回来了。他对Logo的第一次体验是:

我反思了所有的语言,我猜我使用的第一种语言是Logo,事后看来,这是一种虐待儿童的行为。徽标太糟糕了。如果你现在阅读维基百科的Logo页面,你会发现这很好。它就像一种影响了它的里斯普方言,就像不,不,那是完全错误的。LOGO是一只什么都不会做的乌龟,我说的乌龟就像CRT上的一个三角形,什么都不会做。它的魔力就像你会告诉它盒子,它会告诉你我不知道怎么装箱。我记得,就像,我上三年级的必修计算机课,就像是我那个年代的那种。我记得当时的感觉--对于一个不一定会打拳击的人来说--但对这玩意儿不会拳击的冷漠之情让我不知所措。我不知道怎么喜欢,做了个盒子。比如,我不在乎你不会做盒子。我不认为它在乎它不知道怎么做盒子……然后你会告诉它,你会像这样做盒子,你知道,向前5,旋转90,向前5,旋转90,向前5,旋转,90……然后你会想告诉它,这就是你如何制作盒子的方式……这四个步骤就是这样做的,你知道的,你知道,向前5,旋转90,向前5,旋转90……然后你就会告诉它,这就是你如何制作盒子的方式……这是一种四步走的方法。然后你可以输入“盒子”,它就会变成一个盒子。我还是不在乎,我也不认为它在乎。就像,我第一次接触计算机就像是一个Tall";我一点也不关心这件事。

更新:我刚收到我妈妈的意见,关于她对我们学习Logo的房间的记忆:

是的。一间狭小、狭小、没有窗户的房间。一次10个学生?我想,刚开始学习计算机的时候,我觉得没什么新意。

具有讽刺意味的是,这是我最喜欢Logo课程的房间:黑暗的、没有窗户的房间里堆满了电脑,在当时感觉像是地狱一样的未来主义。你会走进学校的侧门,快速右转,然后发现自己置身于另一个世界,里面只有一间黑暗的房间,三面都是嗡嗡作响的电脑。这就是为什么更令人遗憾的是,它们只被用来做Logo和Logo。现在回到主题上来:

因此,从90年代到21世纪头10年,没有任何节目。然而,事实证明,在这段时间里确实发生了两件事:我成了“星际迷航:下一代”(Star Trek:The Next Generation)和“终极7”(Ultima 7)的铁杆粉丝。由于数据是我最喜欢的角色,我会经常思考宋楚瑜博士是如何把他组合在一起的,以及我们需要多长时间才能走到那个阶段。至于Ultima 7,只需阅读这篇文章即可。这篇帖子总结了我在这里的感受:

“终极7”可能是我玩过的第一款游戏,在这款游戏中,似乎很清楚,世界的存在并不仅仅是为了让我成为一名游戏者。店主并没有为了我的利益让他们的商店24小时营业。如果他们在吃饭或睡觉,我就不走运了。如果我闯入别人的房子,他们会冲我大喊大叫。如果我打碎了他们所有的罐子,并洗劫了里面的东西(大部分是无用的),那么当我离开房子回来的时候,罐子就不会再冒出来了--在接下来的游戏中,它们都是坏的。它以一种奇怪的方式感觉很真实。这听起来可能很傻,但它就像是我正在参观的一个世界。

当我玩“终极7”的时候,我曾经有过,现在仍然有同样的感觉:这个世界充满了细节,即使是现在,我也会玩它,只是为了和人们交谈,去酒吧,看人们阅读无数的书籍,只是在世界各地走走看看会发生什么。

因此,这段时间对于让我再次对编程感兴趣至关重要。节目不再是关于乌龟和令人沮丧的比赛,而是关于科幻小说、电影、奇幻游戏、音乐,以及其他我认为生活中很酷和有价值的东西。那时,我知道有一种名为C++的语言被用来制作游戏,也许有一天它可以让我制作像数据一样的Android和像Ultima 7这样的游戏,但我已经不再与编程联系起来,互联网仍然不是什么东西。这让我对C++产生了某种(好吧,很多)崇敬之情,但我在那里无处可去,我的主要兴趣在其他地方。

最终,我从加拿大搬到了日本,然后是韩国,在那里我也学会了这种语言,并继续生活。

有一天,我遇到了一个来自多伦多的韩裔加拿大人,他是一名程序员,在韩国工作,这激起了我的好奇心。作为一名朝鲜族人,他可以自由工作,不需要严格的雇主允许他保留签证,他只需要整天坐在星巴克用两种语言编程,他说这两种语言被称为PHP和Python。我知道PHP这个名字,但我认为这只是一个公告牌的名字,这要归功于当时很流行的一个用PHP3构建的外籍公告牌(现在仍然是!)。他告诉我,我应该试一试,因为我很快就学会了新技能,而且这只会对我的职业生涯有帮助。他说他推荐了这两个中的Python,我应该从这个开始。

使用Python的第一次体验或多或少是完全混乱的,只有几次小小的成功。我记得我读过关于Python2和Python3的帖子,以及2是如何更好的,而3是如何被迫让每个人咽下去的。不管那是什么意思。我注意到一些熟悉的东西,比如印刷品,但熟悉的$无处可见,也没有任何行号或GOTO。我设法在没有主函数的情况下将一些东西组合在一起,但是如果没有行号和其他有用的东西,我真的不知道一个程序从头到尾是如何进行的。

更糟糕的是,那时互联网已经足够有用了,人们很容易找到关于一种语言与另一种语言的好处的一次又一次的讨论。我注意到还有一种叫做Ruby的语言似乎更符合我的风格,所以我试了试。然后我看到还有一个叫Lua的,感觉可能是为我量身定做的。我不知道如何安装或使用它,但我有点确信Lua就是我想要的,因为谁知道是什么原因(我想是语法,或者我在什么地方读到它很容易)。我有一些模糊的想法,认为这是一个人可以学习的最容易的编程语言,如果我学得很好,我可以稍后再学习所有其他的编程语言。

几个月后,我在星巴克遇到了同一个朋友,他问我Python怎么样了。我告诉他我觉得Lua是我的语言,但没有给出任何真正的原因,而且很明显我还没有掌握如何编码。他最终评论说,嗯,也许这不是你的基因。我坚持说,不知何故,它是存在的。怎么可能不是呢?我在小学的时候就自学了BASIC,我知道我有这个基因。我只是必须真正进入Lua并学好它……或者我应该学习Javascript?人们说你应该先学会这一点…不,是蟒蛇。虽然我确实更喜欢Ruby……难道我不应该学习一下吗?不管怎样,到头来我都会对Python了如指掌了。一遍又一遍,直到我再次失去兴趣。我最终确实学会了如何在Python中接受用户输入并使用它来返回结果,但是如果我没记错的话,我想我没有使用一个外部函数来做这件事。

我最终又在加拿大生活了几年,编程完全不在我的考虑范围之内。我在一家名为TransCanada Pipeline的公司工作,在那里,成为一名优秀的项目负责人(或类似职位)对我们团队的员工来说是关键。在此期间(2011到2015),唯一与编程相关的事件是,有一次我们正在实施SAP,我们听说另一栋楼里有这么多C++人员。他们是承包商,在那里为管道和其他能源项目定制SAP,并从中获得大量报酬。那是在卡尔加里的时代,当时有太多的项目,你或多或少花不到100美元就不能把人们从床上叫起来。暑期班的学生在办公桌前打盹,但仍然没有松手,因为即使他们提供的一点点帮助也比什么都没有强……但最终那个时代也结束了。

2015年油价暴跌,卡尔加里经济也是如此,我们整个团队都被解雇了。有了一个不错的裁员方案,我决定现在是真正学习编程的时候了。在加拿大的这段时间(2011年到2018年),我想做的就是回到韩国,我考虑过要么完成大学学业,要么学习编程,并决定后者是w

Python做游戏太可怕了--它不会让你做任何像Ultima 7这样的东西。";Python不适合做游戏--它不会让你做任何像Ultima 7这样的东西。

";为什么不试试C++呢?不,那太难了。C#怎么样?让我们试试那个吧。

哇,这真是太复杂了。尽管如此,看起来C#仍是一条可走的路!等等,这是什么?F#?这种语言真的很酷。为什么不是所有的语言都是这样的呢?

";F#太棒了!为什么没有更多的人使用它呢?也许我应该好好学完Python...";

所以就是Python了,又好又简单!除非它是Javascript。这样我就可以在浏览器中做任何事情了。或许可以从一些基于浏览器的游戏开始?是时候试一试了……";

然后,裁员救济金开始枯竭,又到了重新找工作的时候了。找到另一份工作后,有一天我去市区和以前的同事一起庆祝。在房间对面的咖啡厅里,有人叫着我的名字--那是我的一位老朋友,自从90年代中期以来我就没见过他了。他在金融业工作,问我在卡尔加里市中心做什么,我告诉他我找到了一份新工作,下周开始工作。哦,我打赌肯定是节目!你总是那么擅长这一点。";他说。我回答说,哦,不是编程……我真的很久没有做过任何事情了。它在项目控制中。

当然,项目控制方面的工作还不错。但我对这次对话记忆犹新,因为它再次让我思考,为什么我从来没有学习过编程,而无论以什么标准衡量,我年轻的时候似乎注定要学会编程。虽然我忙于其他事情,没有再试一次编程。

我大学毕业,2018年回到韩国,第二年8月,我在当时工作的公司发出了担任文案的通知。离我的最后一天还有一个月的时间,我开始考虑学习另一项技能-也许这一次真的学习了Python。我可以每天投入几个小时,到最后一天变得相当不错,然后花一个月左右的时间狂欢,然后再找工作。所以我做了几天……然后旅游欲又来了。好吧,你可以稍微研究一下其他语言,我说,但你必须把Python作为你的重点。一天只有一个小时左右,剩下的就用Python。

就在那时,我第一次尝试了拉斯特。我读过一些关于它的书,听说它显然非常精确,很难学,但喜欢它的人对它信誓旦旦。更重要的是,它非常有表现力。在快速返回到Python的安全环境之前,它看起来像是一种很好、很难用的语言。

我从“铁锈”开始,在y分钟内学习x和“铁锈操场”。用于捕获要打印的变量的花括号与Python相同,但其中很多内容看起来像。

.