小学就开始学编程了,恐怖如斯!

大家好,我是鱼皮,之前给大家分享了 星球 里一位小伙伴的真实经历:小学就自学编程,顺手黑了学校广播系统?

当时有同学还不相信,结果昨天又有一位小伙伴分享了自己的经历。我一看,好家伙,又是一位从小学就开始编程的大佬,而且后来竟然还通过写脚本当上了 QQ 群的龙王哈哈。

给大家分享一下他的学习经历吧。

我的编程学习之路

大家好,我是鱼皮 知识星球 中的小伙伴 99 ,正在浙江某双非一本就读,爱好计算机与音乐。

关于我从小就学编程这件事,首先要感谢我开明的父母,没有认为学习技术热爱技术是一种不务正业的行为。 其次感谢我的世界这款游戏,让我对技术产生了浓厚的兴趣。

小学暑假(2015)

我最早接触的编程语言是 C++,为什么一来就接触 C++ 呢?其实就是随便找了 “你好世界” 的代码,觉得 CPP 的最好看,就决定学他了。

果不其然,我实力不足,感觉很难。当时下了个 vc6,对,就是那个很落后的、连自动补全都不完善的一个编辑器。迷迷糊糊创建了一个MFC 程序,然而我对 MFC 一窍不通,基础的东西问大佬们,大佬们也没有太多耐心回答,所以基本上就直接放弃了。

然后我又在百度的过程中了解到了易语言 —— 中文编程,对于那个时候英语水平拉胯的我来说,简直就是救赎,然后我就玩了一年易语言,在这一年里快速建立了写程序的框架思维,以及问题解决的方法(这就是所谓的目标与兴趣导向型学习吧)。但同时为了我以后在技术的道路上走的更远,我还是决定买一本《C++ Primer Plus》,系统学习标准库等语言基础知识,最后也成功编写了第一个程序(代码已经丢了,隐约记得是个简陋的聊天程序)。这个过程中主要还是目标导向与兴趣导向,记得当时自己目标很明确:我要写聊天程序,那么就要有客户端和服务端;它们需要进行网络通信,那么就要了解网络通信的知识(Windows Socket);要编写界面,就要学习界面开发的知识(MFC 现在不推荐学习了),如果是 C++ 的界面库,Sciter 和 QT 是不错的选择,或者控制台,“毕竟 CPP 不配拥有界面”。

鱼皮:这是一种非常好的自主学习习惯,在做项目的过程中需要实现哪个功能,就可以去网上搜索实现方案,学习对应的技术后可以直接应用,加深印象。

除此之外,出于爱好,我其实还学习了建站和网站服务器搭建的相关知识。这部分知识很零碎、不系统,我大致说一下我的学习策略。人的大脑其实从原理上更容易接受归纳式与试错式学习,所以我踩了很多坑,熬了一个又一个夜试错,最终找到了正确的搭建方法。

当然,当时的我没有接触 Linux,所以只是在 Windows Server 图形化的帮助下,搭建了傻瓜化的网站。这里我说一下当时比较热门的三个网站服务器,Apache、Nginx、IIS。稳定性用 Apache、高并发用 Nginx、综合省事儿用 IIS。一开始我是用 Nginx 做代理用于负载均衡,Apache 做 PHP 网站服务器的,后来发现太折腾了,特别是 URL 规则配置,简直要命(当时的我还不会正则表达式)!然后我就转用 IIS 了,现在也依然是 IIS。至于当时搭建了啥,一个基于 Discuzx3.2 的班级论坛和一个 WordPress4 的博客,因为年代久远了,只找到了这一张截图:

鱼皮:现在的话 Nginx 是主流的 Web / 反向代理服务器,后端开发的朋友一定要学习下。

初一 ~ 初二(2016.2 - 2017.6)

这时的我,由于学业的繁忙,技术学习有点滞缓了。不过也抽空接触到了全新的编程语言,比如好用但是不火的 C#。

刚开始玩 C# 其实还是用的 WinForm,写过一个日程管理小工具,现在回看代码,血压飙升。

源码:https://styunlen.cn/softlib/dailytools

对了,WPF 程序编写小工具还是很好用的,界面库用的是 Mahapps.Metro。

我用 WPF 写了一个博客文章阅读器。因为搭建了一个博客,我嫌浏览器麻烦,就想自己做客户端(折腾、造轮子)。当时还不知道Restful Api,Wordpress 好像也不支持,因此自己还编写了一个服务端程序,不过要手动添加博客内容,麻烦得很,最后这项目也是弃坑了。

这个项目的源码在百度网盘,不方便直接挂,先放到鱼皮的星球里了~

在这期间,我了解到了阅读官方文档的重要性,以后的学习中也尽量都去看开发文档了。

其实除了 C#、CPP 这些写应用程序的语言学习,我还喜欢上了前端技术,虽然只有一点点,比如 HTML、CSS、JavaScript 三件套,以及一点点 PHP。我用这些做了个丑不拉几的 HTML 主页,主页风格受到了一点点钉子大佬 @Rrupmid Nyche 的影响(他的 WP 主题我从建站起一直用到高一),初三的时候甚至还二次开发过他的主题。

初三(2017.6 - 2018.6)

这一年,我也忘了自己干了啥,好像没啥进步。翻了一下空间,我居然跑去玩 OpenGL 了!

这就是大佬的相册么?

纪念一下当时连 gltools 的编译都要折腾半个月的憨憨:

二次开发钉子大大的主题时的留念:

高一(2018 - 2019)

时光如流,不知不觉我就成为了一个高中生。其实现在挺后悔初中没有用功读书,跑去学了技术,但这都是取舍,重要的是我幸运地找到了自己的热爱,并坚持在这条道路上走了下去。

高一学习还是比较紧张的,浙江考生十一科连起来学习实在是过于充实,因此也很少有空学习技术了。

高二(2019 - 2020)

高二过得很苦逼,因为成绩下滑了不少、又遇到了分班等等杂事儿。但对编程技术的学习就像一道光,让我苦苦地撑过了这一段高中最黑暗的时刻。

分班后,我的政治老师有节课提了一嘴,说想要一个像我们语文老师一样的语音点名程序,我就抽假期用 C# 写了一个语音点名程序,麻雀虽小、五脏俱全~

之后因为特殊的疫情,打破了所有的进程,网课时代拉开了序幕。

对于一个技术党,网课当然也要继续好好学习(mo yu)啦 !所以,我重新下载了我的世界,开启了服务器,和小伙伴一起养 ,当然,技术学习也木有落下。

由于我是用电脑开服,这就导致了我薛定谔的开服时间,以及频繁的在群里公布开服消息。我本人比较懒,因此想让电脑代替我的重复劳动。于是跳出了 C# 的舒适圈,使用 C++ 的 Sciter UI 引擎开发了一个 MC 服务器状态获取小工具,这时的这个小工具只能获取我自己服务器的信息。在高考结束后的暑假,我对这个程序进行了修改,支持获取自定义服务器信息了,并开源在了 Github,代码冗余,就不给大家看了~

除此之外,水群也是我的日常。可我每天那么认真的水群、币话不停,怎么还是轮不到我当龙王?为啥总是群里的小伙伴是龙王?

我不服气,然后一天时间入门了 Python,用 pywin32 模块写了个刷龙头脚本。原理很简单,趁十二点到早上六点,大家都在睡觉,我让电脑每分钟自动发一条消息,这样我就能发送 360 条消息,再加上我白天的努力,龙头就非我莫属了。

结果很出乎意料又在情理之中啊,我被禁言了。

哈哈哈,但是我学到了知识,这是很强的正反馈。然后我就继续写脚本刷钉钉的自动点赞,不过速度有限,每分钟大概两千下,鼠标还不能动。不过好在我的一个同学推了一篇酷安的文章给我,解释了怎么用 fiddle 抓包修改网页源码的方式以更快的速度刷赞,甚至是强制刷赞(无视教师端控制)。当时就很快乐啊,给同学直播间的一次测试,简直不要太爽。

离谱!

当然还玩了教室面板彩色字体显示啥的,不过现在的钉钉不行啦。

说完软技术,来聊聊硬技术。恰逢通用技术课上电控知识,我想起来技术世界中还有单片机这种稀奇玩意儿,于是我斥巨资买了一块arduino 原装板(智商税)和一套传感器组件。现在建议买 arduino 可以买非原装的,便宜而且功能一样甚至更丰富。

不过,刚接触硬件我就遇到了坑,刚入手的巨资 arduino 还没捂热,刚写完 “你好世界” 就 GG 了。不过我了解到了单片机的工作原理以及如何给单片机编写驱动程序,还有相关门电路的电控知识,和这些收获相比,失去反而显得微不足道了。

高三(2020.8 - 2021.6)

时间来到了中学时代的终点线前,为了提醒自己高考剩余的时间我又开发了一个桌面端的倒计时小程序,代码已经开源,目前已支持自定义主题功能,也编写了一丢丢主题开发文档,欢迎大家为这个可怜的小程序贡献漂亮高端的主题。

由于高三时间紧迫,初期的代码以实现功能为主,因此存在不够规范的地方,希望谅解。目前的版本,也存在诸多不够规范的地方,我也在抽出紧张的时间做些完善。

源码:github.com/Styunlen/ReminderOfNEMT

大一 ~ 至今

由于选科的限制,我并没有进入计算机专业学习,因此到了大学,技术还是以自学为主。而专业课的时间冲突又导致我很难有充足的时间投入技术学习中,因此学习速度也有所放缓。不过,我一定会坚持下去的!

大一了,我最想弥补自己算法上的不足,因此决定在大学期间去参加 ACM 竞赛,而竞赛又免不了耗费大量的时间精力,所以我每天的学习状态就像在经历高四。

最近学习了 Vue3 框架,并用 Vue3 为我们班编写了一个微信小程序。其他的感觉倒也没啥了,主要还是时间冲突问题,让我自己也很焦虑、很累,所以也加入了鱼皮的 知识星球 ,在这里认识了很多小伙伴、看到了前辈们的成长经历、也得到了大佬们的指点。我相信以后会好起来!

🤗 结语

这就是我浓缩版的学习经历了,可能只是作为爱好者接触了编程知识,对于很多技术的认知还很浅薄、还停留在技术海洋的表面,但我会继续努力钻研的!如果有必要,我后面再给大家分享一期如何以目标或兴趣作为导向来学习编程技术的指引吧。

对了,其实算法思想和编程技术还是有区别的。算法更侧重逻辑与数学能力,而编程技术其实更侧重编程语言基础和解决问题的能力等多种不同能力的综合,所以虽然我算法一般但写程序时没有感到什么压力。但不得不说算法思想是非常重要的,在写复杂的逻辑时可以更得心应手一些。

不过无论是算法还是写程序本身都有个特点,那就是你只需要有一颗爱折腾的心,就能够在这两者的痛苦学习中找到不一样的乐趣。

热爱终将会将我们导向我们所向往的生活!


看到这位同学的分享后,我也跟他交流了一段时间,得出的结论是:他不仅是未来的卷王,还是位鸡汤大师!!!还给我发鸡汤来着。

加入星球

👉🏻 点此加入星球