关于我
我最早接触编程是初中的时候,当时我们班有一个和我玩的很好的朋友建立了一个网站,当时我就觉得很酷,因为我从小就喜欢自己创建一些有意思的东西,比如小时候的乐高,我的世界中的红石,命令方块等等。然后我就问怎么创建一个自己的网站,然后他就告诉我需要买一个远程主机,买一个域名,然后把别人写好的代码上传到指定的位置就行了。后来我按照他的做(当时对计算机一窍不通),自己一顿乱捣鼓,看网上的视频,自己查资料,后来也建立了一个小网站,然后就感觉用别人的代码一点都不酷,想自己写代码,搭建一个完全属于自己的网站。后来我发现html-css前端并不是我感兴趣的方面,因为html-css是一种标记行语言,需要记忆很多关键词去实现不同的功能,当然可以在需要用特定的标记的时候去查阅,但是效率真的很慢。
后来我抛弃了这个想法(因为我经过我这么久对计算机的摸索我发现还有很多其他有意思的语言可以实现其他的事情,不仅仅是网站)后来了解到一般c语言是学编程的第一门语言,在我初二的时候我开始了自学C语言之路第一本书是谭浩强的c语言红书,这本书看得很痛苦,看了二十几页就放弃了,后来在b站上看到鱼c-小甲鱼的视频感觉还不错,就开始使用小甲鱼的教材,但是那时候学完了函数和指针就没接着往下学了(不好理解)逐渐放弃了自学编程。但是我还是关注着一些计算机相关的知识,当时没有自己的电脑,想在手机上编程,逐渐了解了iapp这一软件(该软件作者应该是写了个解释器将作者创造的裕语言转为java后再编译成app)后一年就用这个软件开发了一个软件,包含前端后端,也认识了很多朋友,有些朋友至今还联系,后来感觉这个软件很鸡肋放弃了这个软件,后来慢慢的学了一些硬件层面的知识,到了中考完,我了解到了嵌入式这一领域,我买了一些开发板玩,但由于很多都是基于c语言的,所以我没学下去。
一直到高一,python开始兴起,python语法简单,易学等优点让我重燃了自学编程的路,又由于在b站上看到ele实验室(我很早就关注的up主)的人工智能课程也很便宜所以我就买了这门课程,这门课程也是用python写的,虽然当时我并没有学会python。但是就抱着科普的视角去听了这门课,由于有一点编程基础,这门课也很简单易懂,边学着python把这门课学完了,高一结束后把python学会了。这期间也没放弃嵌入式这一领域,开始了解到树莓派(类似一台小型计算机可以运行linux当然你想跑windows也不是不行,它提供了很多gpio可以与一些电子元器件通信)这一产品,刚开始买回来还不会装系统,和怎么用自己的电脑与他通信,前前后后折腾了很久,终于是把他变成了一台小型服务器(也就是现在的博客使用的服务器),使用免费的内网穿透使外部的设备能访问到树莓派。进入高二我想这学了python这么久一个项目都没有,让后用python复刻了人工智能LeNet-5算法,能成功识别手写体字体。
后来学一点python学一点硬件,学了cpu是如何计算的,自己用三级管做了一个半加法器,然后了解到了树莓派pico(嵌入式设备),并且树莓派pico是支持micropython的后来就重心一直放在树莓派pico上,点灯,花样点灯,oled等等项目,之前买的电子元器件终于派上用场了,后来我有一个很有意思的想法,在树莓派pico上运行人工智能算法,进行手写数字识别,说做就做,先完成了画图库,列表操作库,绘制ui,oled控制,按钮响应,knn算法(由于嵌入式设备性能堪忧不可能跑神经网络的,在我当时的认识下,现在用腾讯的ncnn应该可以)用knn算法就需要使用数据集,后来我自己采集了一些数据集并使用卷积算法(由于嵌入式设备的内存很小,不能存放大数据),将数据的特征提取出来,再放入训练集,这样就能压缩数据完成了这个项目。
再后来想着使用python完成一个LeNet-5算法也不算什么,没有完成一些实质性的项目,在当时我上高三,对物理非常感兴趣(当然现在也是),所以想用python完成一个简单的物理引擎,后来在youtube上找到了一个教程,按照教程我也完成了一个python版的简单2d物理引擎,在完成物理引擎后,由于是python编写的,自然新能低下,当时就想着想使用C++再写一个,但是当时正值高三,所以放弃了学习C++,去备战高考了。
高考结束,第二天我就开始了自学C++,这个过程还是挺困难的,因为第一门语言是python学C++很多地方都不理解,很容易写错,但是好在我有C语言基础,我花了1个多月把C++的基本语法学会了,以后也打算以C++为自己的第一语言。上了大学开始自己的第一个C++项目,就是物理引擎,但是C++编程效率慢并且我还是初学者,而我大学的专业是信息与计算科学,是一个数学与计算机的交叉学科,第二学期才开计算机课程,教的还是python,Java,所以用了接近一个月才完成了这个项目还存在待优化问题,和许多bug。时间到这就是现在我写这篇文章的日期了2024/10/30.
往回看,学编程断断续续也有5年了(但是真正正式学习编程和硬件知识可能不过2年),真的很感谢之前的自己没有放弃对编程的热爱,没有自己的坚持也没有现在的有一些计算机知识的自己,继续保持下去可能对我的未来有帮助,也感谢当年那个带我建立我的第一个网站的初中同学。
看向未来,我会的知识是远远不够的,我对C++的理解只停留在软件层,还没有深入理解硬件层面的知识,深入理解这些对C++开发很关键。我还要学习计算机图形学,人工智能,游戏引擎开发,后端开发等计算机知识。
而非计算机知识,我要学的也有很多,如数学:数学分析123,高等代数,概率论与数理统计,数值分析,离散数学,常微分方程, 偏微分方程,复变函数,实变函数,泛函分析等,物理:大学物理,理论力学,电动力学,统计力学,量子力学,流体力学,有限元方法,量子场论,相对论等。这些都是我热爱的东西,也不知道自己能不能坚持下去,但是我相信我在课余时间断断续续学编程都能因为热爱学了5年,这些东西尽管很可能不能在大学四年中学完,但是人生就是一个不断学习的过程,相信我有生之年能把这些学会,并对人类做出自己微不足道的贡献。