从逃离到成为游戏开发,40岁了我才学会编程_40岁开始写代码(1)

我记得三年级的时候,计算机是必修课。我还记得当时那种机械、冷漠的感觉,因为这个东西不知道如何绘制正方形,而我也不在乎你知不知道怎么绘制正方形。我第一次接触计算机就是“我对这件事一点儿也不关心”。

2.Python、Ruby 还是 Lua?

从 90 年代到 2000 年代这段时间,我没有做过任何编程。然而,在这段时间里发生了两件至关重要的事:我成了《星际迷航:下一代》(Star Trek: The Next Generation)和《创世纪 VII》(Ultima 7)的超级粉丝。

Data 是我最喜欢的角色,因此我经常思考 Soong 博士是如何做出来 Data 的,我们需要多长时间才能达到这样的阶段。当我玩《创世纪 VII》时,我曾有过并且现在仍然有同样的感受:这个世界充满了细节,我会继续玩这个游戏甚至只是为了和人们聊聊天、逛酒吧、看人们读书。
在这里插入图片描述
所以,这段时间是让我对编程再次感兴趣的重要时期。编程不再是关于海龟和令人沮丧的比赛,而是科幻小说、电影、奇幻游戏、音乐以及其他一切我认为很酷、很有价值的一切。

那时候,我知道有一种叫做 C++ 的编程语言是用来开发游戏的,也许有一天我可以用它做出一个长得像 Android 机器人那样的 Data 和《创世纪 VII》那样的游戏。这让我对 C++ 产生了一定的崇拜,但我已经和编程无缘了。

我从加拿大搬到了日本,然后移居韩国。有一天,我遇到了一位来自多伦多的韩裔加拿大人,他在韩国当程序员。作为一名韩裔,他可以在没有严格的雇主允许让他保持签证的情况下从事自由职业,只需整天坐在星巴克用两种语言进行编程:PHP 和 Python。我知道 PHP 这个名字,一直以为它只是一个电子公告板的名字。他跟我说应该试一试,因为可以很快学到新技能,也会对我的职业生涯有帮助。

他向我推荐了 Python,说应该先从这门语言开始。初次使用 Python 非常迷茫,只有一些小小的成功。我记得我读过关于 Python 2 和 Python 3 的帖子,这些帖子都是说 Python 2 如何更好,Python 3 如何强迫每个人接受的。不管这意味着什么,我注意到一些熟悉的东西,比如 print,但熟悉的 $ 却不见了,也没有任何行号或 GOTO。在没有主函数的情况下,我设法将一些东西放在一起,但我真的不知道,一个程序没有行号和其他类似有用的东西该如何从头到尾运行。

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

几个月后,我在星巴克又遇到了那个韩裔加拿大人,他问我 Python 学得怎么样了。我告诉他,我觉得 Lua 应该是适合我的编程语言,但我说不出理由,显然我还没有掌握如何写代码。他最后评论说:“嗯,也许你没有编程基因。”

不知为何,我却固执己见地认为自己有这方面的基因。我小学的时候就自学了 BASIC,我知道我有这个天赋。我只是需要真正喜欢上 Lua 并学好它……或者我应该学习 JavaScript?但大家都说你应该先学 Python,虽然我确实更喜欢 Ruby……结果我一直没完没了地纠结着,直到我再一次失去了兴趣。

最后,我又回到加拿大生活了几年,编程根本不在我的考虑范围内。2011 年到 2015 年期间,唯一与编程有关的事情只有一次,就是听说隔壁办公楼里都是写 C++ 的人,他们为管道和其他能源项目定制 SAP,赚钱很多。

点此免费领取:CSDN大礼包:《python学习路线&全套学习资料》免费分享

3.40 岁,第一次学会编程

2015 年,油价崩盘,Calagary 经济也随之崩盘,我们整个团队也解散了。拿到了丰厚的裁员补偿后,我决定开始真正学习编写代码。

我学会了如何编写函数,如何创建对象等等,但是 self 关键字仍然让人困惑,使用对象也是如此。再努力点就足以解决这些问题了,但我的老毛病又犯了:

  • “Python 在制作游戏方面很糟糕——它不会让你做出任何像《创世纪 VII》这样的东西。
  • “为什么不去试试 C++?不,那太难了!C# 怎么样?让我们试试吧。”
  • “哇,这真是太复杂了。尽管如此,C# 看起来是个不错的选择!等等,这是什么?F#?这门语言真的很酷。为什么所有的语言都不是这样的呢?”
  • “F# 太棒了!为什么就没有更多的人使用它呢?也许我应该好好学完 Python……”
  • “那就 Python 吧,又简单又好用!除非是JavaScript。这样我就可以在浏览器上做任何事情了。也许我可以从一些基于浏览器的游戏开始?是时候试一试了……”

后来,裁员补偿的钱快用光了,必须重新找工作了。找到工作后,我去市区和以前的同事们聚餐。那时遇到了我的一个 90 年代中期后就没见过的老朋友,他在财务部门工作,问我在做什么工作,我告诉他我找到了一份新工作,下周开始上班。“哦,我敢打赌是编程工作对不对!你一直都很擅长编程。”他说。我回答说:“哦,不是编程……我已经很久没有真正做过这些事了。是做项目控制方面的。”

我对这次谈话记忆犹新,因为这让我思考为什么我从来没有学过编程,而且无论从哪个角度来看,我年轻的时候似乎就注定要学编程。不过我当时忙于其他事情,没有再去尝试编程。

我在 2018 年回到韩国。第二年八月,我给当时工作的公司提出了辞呈,那时候我是一名文案。离正式辞职还有一个月的时间,我开始考虑学门技术,也许这次真的要好好学习 Python 了。我可以每天花上几个小时,到最后一天就会掌握得很好,然后再花上一个月左右的时间去找工作。这样做了几天后,我的老毛病又犯了。“好吧,你可以稍微看一下其他语言,”我自言自语地说,“但你必须把 Python 作为重点。”

那是我第一次尝试 Rust 。我听说它确实很精确和高效,但很难学,喜欢它的人会赞不绝口。我是在《X 分钟速成 Y》(Learn X in Y Minutes)(译者注:GitHub 上的一个项目,包括了很多的简短的入门教程,比如算法、编程语言、开发工具等)和《Rust 语言游乐场》(the Rust playground)开始学习 Rust 的。

我开始学习 Rust 的时候,查了一下这门语言的用途,答案无一例外是,它几乎什么都能做。所以我可以做出《创世纪 VII》这样的东西,或者任何我想要的东西。更有趣的是,语言的细节和语言的底层东西并没有让我感到厌烦:我发现自己被吸引得更多了。随着我对这门语言的深入了解,我有了很多怀旧之情。

我写的所有东西都被直接转换成二进制文件,我又可以看到计算机的内部结构了。大量的 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 我留到了最后看的(这是在 《Crust of Rust》教更简单的东西之前),同时也看了 Hello Rust、Ryan Levick、Doug Milford、Tensor Programming、this Rust crash course、dcode 的 Rust 视频等所有的视频(不是全部按顺序排列的)。还有一个我喜欢的视频流就是 rhymu8354,他是一个 25 岁的 C++ 爱好者,自己做了一个类似《创世纪 V》的游戏,最近开始学 Rust。

半年后,我发现我有生以来第一次正确地学会了编程。然而并没有什么秘诀:真的是单一的专注和勤用必应搜索的结果。

由于只有一个 Surface Go 笔记本,我一定要避开任何有太多外挂的东西。但我做了一些东西,比如朝鲜汉字转换器(朝鲜汉字就是韩国使用的汉字),效果很好,最后我还整理了一本名为《用简单的英语学习 Rust》(Learn Rust with easy English)的教材,目的是为了让那些英语二级水平的使用者更容易学习这门语言,而不必用翻译成他们国家语言的 Rust 相关书籍。

这个故事的寓意我想就是经典的“找到自己喜欢的事情,然后一直做下去”。这对我来说并不新鲜,只是我花了那么长时间才找到适合自己的语言。它让其他语言变得如此易读易懂,包括 C 和 C++。

我想说明两点:一、见异思迁和缺乏专注不一定是永远的;二、每个人性格不同,最简单的语言不一定是你最喜欢的语言。

Reddit 网站上的 /R/LanguageLearning 等版块上经常有这样的讨论:“我真的很想学(著名的 X 语言),但我是否应该继续学更简单的西班牙语 / 法语等,尽管我讨厌它?”答案当然是否定的——只需学习你想学的语言就行了。这种建议更容易给出,因为自然语言并不像编程语言那样与职业发展紧密相连。但是由于编程语言也有很多后继的东西,同样的建议也许是可以适用的。

Rust 肯定不是那种为了成为大团队中的初级程序员而学习的语言,更不用是在 40 岁年纪的时候。但是,如果你是那种对编程屡次三番捡起后放下的人,也许找到合适的编程语言会让你坚持下去。

读者福利:知道你对Python感兴趣,便准备了这套python学习资料

👉[[CSDN大礼包:《python兼职资源&全套学习资料》免费分享]]安全链接,放心点击

对于0基础小白入门:

如果你是零基础小白,想快速入门Python是可以考虑的。
一方面是学习时间相对较短,学习内容更全面更集中。
二方面是可以找到适合自己的学习方案

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、机器学习等习教程。带你从零基础系统性的学好Python!

零基础Python学习资源介绍

  • ① Python所有方向的学习路线图,清楚各个方向要学什么东西
  • ② 600多节Python课程视频,涵盖必备基础、爬虫和数据分析
  • ③ 100多个Python实战案例,含50个超大型项目详解,学习不再是只会理论
  • ④ 20款主流手游迫解 爬虫手游逆行迫解教程包
  • ⑤ 爬虫与反爬虫攻防教程包,含15个大型网站迫解
  • ⑥ 爬虫APP逆向实战教程包,含45项绝密技术详解
  • ⑦ 超300本Python电子好书,从入门到高阶应有尽有
  • ⑧ 华为出品独家Python漫画教程,手机也能学习
  • ⑨ 历年互联网企业Python面试真题,复习时非常方便

👉Python学习路线汇总👈

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取哈)
在这里插入图片描述

👉Python必备开发工具👈

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

👉实战案例👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。
在这里插入图片描述

最后

不知道你们用的什么环境,我一般都是用的Python3.6环境和pycharm解释器,没有软件,或者没有资料,没人解答问题,都可以免费领取(包括今天的代码),过几天我还会做个视频教程出来,有需要也可以领取~

给大家准备的学习资料包括但不限于:

Python 环境、pycharm编辑器/永久激活/翻译插件

python 零基础视频教程

Python 界面开发实战教程

Python 爬虫实战教程

Python 数据分析实战教程

python 游戏开发实战教程

Python 电子书100本

Python 学习路线规划

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里无偿获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值