作为一个高中生开发者,我的所思所想

各位若觉得我年幼无知、缺乏阅历、不知天高地厚,尽可直言 —— 这些评价,真没毛病。
要是觉得有些ai味,没错,实在不太善于表达,写完之后用豆包润色了一下

自我介绍

我是上海一所高中的高二学生,就读于 xx 大学附属中学。
常听人说高中生活 “卷”,但我很庆幸生在上海:这里的升学环境相对宽松,父母为我提供了优渥的生活条件,学校更从不会克扣双休与法定假期。(这点,连我在衡水中学的朋友都忍不住羡慕 [手动狗头])
更幸运的是,我有一台属于自己的办公本 —— 这是我敲开编程世界大门的钥匙;而还算不错的学习成绩,又让我能在完成课业后,有余力钻进代码里琢磨。

自我"们"介绍

其实在我身边,像我这样的中学生编程爱好者并不少。
有人是为了冲击信息学奥赛,有人是被 Scratch 启蒙后,对其底层的 “HTML5+JavaScript” 产生了好奇;也有人是玩网页小游戏时想 “作弊”,搜代码时意外栽进了编程坑;还有人是因机器人社团入门,或是单纯向往 “黑客” 的酷,又或是想靠技术 “装个小逼”……动机虽千差万别,但我们对编程的热爱是纯粹的:不管是用 QT 还是 Node,用.NET 还是 Java,哪怕暂时说不出这些工具能 “干出多大事”,至少能靠自己的手,敲出一个能跑的小玩意儿 —— 这种 “从 0 到 1” 的快乐,足够让人满足。
[PS:插个小推荐 —— 同学做的课表工具真的 “小而精”,不仅功能全,还支持课程拖动、修改,感兴趣的可以看看→https://github.com/DuguSand/Class_frame]

我作为高中生,因而遇到的问题

1.知识储备:非科班的 “先天不足”

作为一个纯靠自学的 “野生程序员”,我的知识储备短板太明显了:曾经不知道 APK 文件本质就是压缩包,至今没搞懂 Git 命令(全靠 GitHub Desktop “傻瓜式” 操作),看了无数教程也没摸透 GitHub Action;
没有专业老师带,我的 “老师” 是博客园的技术帖、菜鸟教程的入门课、GitHub Discussion 的问答区,还有在 QQ 群、论坛里问 “蠢问题” 的勇气 —— 比如 “为什么myelement.innerhtml获取不到元素内容?”
但这些 “不足” 也意外锻炼了我的学习能力:现在的我,不会对着一篇技术文档、一本专业书晕头转向,更不会因为 “学不会” 就轻易放弃。遇到陌生的知识、卡壳的 bug,我第一反应不是慌,而是打开搜索引擎,把问题拆解开,一点一点找答案。

时间不足:挤出来的 “编程窗口”

我终究不是全职程序员,没法把所有时间扑在代码上。
即便在上海,我的高中也有晚自习,每天要待到晚上九点半(当然,比起河南、河北那些 “卷王” 省份,已经算轻松了)。
我确实很喜欢编程,如果你质疑我的热爱……我好像也没法证明…… 总之我的确抓紧一切有空的时候,投入学习,对我来说,能安安静静敲会儿代码,本身就是一种放松。

3.动力不足:最磨人的 “自我怀疑”

比起知识和时间,我想对我们来说最糟糕,最头疼的其实是 “动力不足”。
知识能补,时间能挤,但当我陷入 “我为什么要写代码” 的迷茫时,连敲键盘的手都会变重。
我们这种 “高中生开发者”,身份没优势,技术也没成熟到能赚钱(唯一一次接近 “创收”,是差点靠写脚本赚 50 块,最后也没成)—— 当然,作为脱产学生这点钱什么也做不了;
可如果自己写的东西没人用,GitHub 上的 Star 全是自己开小号刷的,难免会钻牛角尖:“我花这么多时间写代码,放弃了打游戏、和朋友出去玩,到底收获了什么?”“没人在意我的作品,我这是在自娱自乐吗?”
每次 emo 到想放弃时,我都会跟自己说:“自娱自乐,也没什么不好。”想通了其实很简单:比起打游戏,我就是觉得写代码更有意思。那 emo 过去之后,继续敲键盘就好了。

谈谈我的自学经历

我的编程启蒙,说起来有点 “偶然”—— 始于网课时期。
那是很多同学第一次长时间接触电脑,我某天不知从哪儿下了个 VBS 脚本(后来才知道,VBS 所属的 ASP 技术,早在十几年前就不流行了):

t()
function t()
dad=inputbox("叫爸爸")
if dad="爸爸" then
msgbox "好儿子"
wscript.quit
end if
msgbox "不乖!"
t()
end function

这个脚本的逻辑很简单:不输入 “爸爸”,就一直弹窗。
当时我特别好奇:为什么只能输 “爸爸”?输 “dad” 或者 “爹” 行不行?
于是我用记事本打开脚本,试着把t()改成d(),把 “不乖” 改成 “abcdef”—— 没想到真的能跑通!后来又发现,只要改if dad="xxx" then里的 “xxx”,程序就会按我的想法执行。
那一刻的激动,我到现在都记得:就像突然拥有了一个 “新器官”,我的意识居然能 “指挥” 电脑做事。
从那以后,我开始追着各种问题问:“VBS 是什么?”“字符串是什么?”“为什么算判别式时,bb-4ac会报错?”“函数和子程序有什么区别?”“递归、循环、if 语句到底怎么用?”
慢慢摸索着,我写出了人生中第一个 “完整程序”—— 一个解一元二次方程的脚本:

/* by 01022.hk - online tools website : 01022.hk/zh/enphp.html */
a=inputbox("a")
b=inputbox("b")
c=inputbox("c")
delta=b*b-4*a*c
if delta<0 then
    msgbox "无解"
else 
    x1=(-b-sqrt(delta))/(2*a)
    x2=(-b+sqrt(delta))/(2*a)
    if delta=0 then
        msgbox "有一解"&x1
    else 
        msgbox "x1="&x1&" x2="&x2
    end if
end if

当时当然写不出这么“优雅”的代码,要比这粗糙很多。
可没过多久,我就陷入了迷茫:VBS 其实也有很多可学的内容,比如 WMI(Windows 管理规范)。然而vbs网上的教程大多是 2000 年到 2010 年的,里面全是 DHTML、JavaScriptLet 这类古早技术,jquery在里头都是新东西。为此我也花时间学习JavaScript。
于是我遇到了 VBS 的 “兄弟”——被微软忘记的干儿子JScript。我偶然发现,JScript 有个.NET 版本叫JScript.NET,至今还在.NET Framework 里 “低调” 发布。这是我第一次接触.NET 框架。但JScript.NET的资料太少了,几乎找不到教程和示例。我在一个技术论坛上求了好久,才拿到一个批处理脚本(后来我还在那个论坛上写了不少关于JScript.NET的帖子,算是 “反向输出” 了):

/* by 01022.hk - online tools website : 01022.hk/zh/enphp.html */
jsc.exe /target:xxx /out:xxx xxx.js

靠着这个脚本,我第一次体验到了 “编译” 的神奇:黑窗口里跳出 “Hello World”,生成的 EXE 文件用记事本打不开 —— 这种 “神秘感”,又把我勾进了新的领域。
那段时间,我还学了 VB6.0 和 HTA(HTML Application),甚至花了一整个学期做了个 HTA 编辑器,成品真的能用,感兴趣的可以看看我的vbs编辑器。
再后来学 PowerShell 时,发现用Add-Type必须写 C# 代码。我索性把 C# 代码摘出来,单独建了个.cs 文件,试着编译、运行,再对照菜鸟教程一点点琢磨。也就是从这个 “小项目” 开始,我才算有底气说:“我是个业余程序员。”

我的第一个开源项目

真正让我沉下心做 “完整项目”,是因为被 Desmos 的函数图形吸引 —— 我觉得 “把数学公式变成图形” 太神奇了,于是决定自己做一个函数绘图工具,也就是我的开源项目CsGrafeq。
这个项目的开发过程,说起来有点 “笨拙”:一边写代码,一边查资料,一边改框架 —— 从 Winform 换成 Avalonia,表达式编译从用 CodeDom(调用 csc.exe)改成 DynamicMethod 和 ExpressionTree,每一步都走得磕磕绊绊。
我试着啃过 Jeff Tupper 的论文,虽然没怎么看懂,却顺着参考文献一路查下去,最后实在超出了我的能力范围,才不得不放弃。
但好在,我还是做出了一个能用的函数绘图器 —— 虽然运行起来有点卡,但至少实现了核心功能,现在还放在项目的 OldVersion 文件夹里。
之后,我又在这个基础上做几何画板:当我写出一大堆继承于 Shape 类的对象时,用同一个函数调用不同的内容,突然懂了 “面向对象” 的美 —— 原来代码也能这么 “规整”,这么有逻辑。

我对未来的期望

说实话,我从没想过靠编程谋生,只希望它能一直是我的爱好,而不是一份 “必须完成的工作”,或是 “需要死记硬背的知识点”。
我知道,能对一件事保持纯粹的热爱,有多难得。如果有一天,我觉得写代码是负担,那才是真的对不起现在这个为了一行代码兴奋半天、为了一个 bug 熬夜调试的自己。
未来的日子,我只想把这份热爱保留下去:不管走哪条路,不管学什么专业,都能在空闲时打开编辑器,敲一段自己喜欢的代码 —— 这样就够了。

无界云图(开源在线图片编辑器源码)是由四川爱趣五科技推出的一款类似可画、创客贴、图怪兽的在线图片编辑器。该项目采用了React Hooks、Typescript、Vite、Leaferjs等主流技术进行开发,旨在提供一个开箱即用的图片编辑解决方案。项目采用 MIT 协议,可免费商用。 无界云图提供了一系列强大的图片编辑功能,包括但不限于: 素材管理:支持用户上传、删除和批量管理素材。 操作便捷:提供右键菜单,支持撤销、重做、导出图层、删除、复制、剪切、锁定、上移一层、下移一层、置顶、置底等操作。 保存机制:支持定时保存,确保用户的工作不会丢失。 主题切换:提供黑白主题切换功能,满足不同用户的视觉偏好。 多语言支持:支持多种语言,方便全球用户使用。 快捷键操作:支持快捷键操作,提高工作效率。 产品特色 开箱即用:无界云图采用了先进的前端技术,用户无需进行复杂的配置即可直接使用。 免费商用:项目采用MIT协议,用户可以免费使用和商用,降低了使用成本。 技术文档齐全:提供了详细的技术文档,包括技术文档、插件开发文档和SDK使用文档,方便开发者进行二次开发和集成。 社区支持:提供了微信技术交流群,用户可以在群里进行技术交流和问题讨论。 环境要求 Node.js:需要安装Node.js环境,用于运行和打包项目。 Yarn:建议使用Yarn作为包管理工具,用于安装项目依赖。 安装使用 // 安装依赖 yarn install // 启动项目 yarn dev // 打包项目 yarn build 总结 无界云图是一款功能强大且易于使用的开源在线图片编辑器。它不仅提供了丰富的图片编辑功能,还支持免费商用,极大地降低了用户的使用成本。同时,详细的文档和活跃的社区支持也为开发者提供了便利的二次开发和集成条件。无论是个人用户还是企业用户,都可以通过无界云图轻
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值