各位若覺得我年幼無知、缺乏閱歷、不知天高地厚,盡可直言 —— 這些評價,真沒毛病。
要是覺得有些ai味,沒錯,實在不太善于表達,寫完之后用豆包潤色了一下
這是我的項目 CsGrafeq
http://www.rzrgm.cn/StuLittleLi/p/19055095 希望不吝點個star 鼓勵支持一下

自我介紹

我是上海一所高中的高二學生,就讀于 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 語句到底怎么用?”
慢慢摸索著,我寫出了人生中第一個 “完整程序”—— 一個解一元二次方程的腳本:

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

當時當然寫不出這么“優雅”的代碼,要比這粗糙很多。
剛學會東西的人總是有著莫名的不知天高地厚,冒冒失失去學cpp,對指針想不明白,結果到虛表徹底看不懂了。說起來,學習還是要循序漸進
繼續鉆研vbs??蓻]過多久,我就陷入了迷茫:VBS 其實也有很多可學的內容,比如 WMI(Windows 管理規范),但一點也不酷(誰都想當"嘉豪"嘛)。顯然,vbs既不能做出炫酷的效果,也不能想短視頻里的假黑客那樣裝逼,頂多只能命令行 彈彈窗。我想接觸新東西。
然而vbs網上的教程大多是 2000 年到 2010 年的,里面全是 DHTML、Java ScriptLet com這類古早技術,jquery在里頭都是新東西。
于是我遇到了 VBS 的 “兄弟”——被微軟忘記的干兒子JScript。我偶然發現,JScript 有個.NET 版本叫JScript.NET,至今還在.NET Framework 里靜默發布。這是我第一次接觸.NET 框架。但JScript.NET的資料太少了,幾乎找不到教程和示例。我在一個技術論壇上求到一個批處理腳本(后來我還在那個論壇上寫了不少關于JScript.NET的帖子,算是 “反向輸出” 了):

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 的論文,雖然沒怎么看懂,但大概知道個大體思路,做出來一個區間運算庫。
于是我做出了一個能用的函數繪圖器 —— 雖然運行起來有點卡(哪怕在同學的4060+i7上),現在放在項目的 OldVersion 文件夾里。
之后,我又在這個基礎上做幾何畫板:當我寫出一大堆繼承于 Shape 類的對象時,用同一個函數調用不同的內容,突然懂了 “面向對象” 的美 —— 原來代碼也能這么 “規整”,這么有邏輯。我開始做界面ui,從依賴窗口設計器,風格古早的winform轉為mvvm xaml的avalonia。
順便提一句,其實我不止一次試圖接觸過.net 和mvvm。當我第一次搜索vbs是 就下載過visual studio創建了一個vb.net控制臺應用。在winform學完后,也試圖學過wpf(其實對于xaml類ui框架興趣也來自于pcl2我的世界啟動器),奈何覺得xaml mvvm都是莫名其妙毫無卵用的東西遂放棄。 不得不說 眼界決定了上限,如果一直停留在vbs,hta這種古早的東西上,怕是永遠也接觸不到博客園,github等等吧

我對未來的期望

說實話,我從沒想過靠編程謀生,只希望它能一直是我的愛好,而不是一份 “必須完成的工作”,或是 “需要死記硬背的知識點”。
我知道,能對一件事保持純粹的熱愛,有多難得。如果有一天,我覺得寫代碼是負擔,那才是真的對不起現在這個為了一行代碼興奮半天、為了一個 bug 熬夜調試的自己。
未來的日子,我只想把這份熱愛保留下去:不管走哪條路,不管學什么專業,都能在空閑時打開編輯器,敲一段自己喜歡的代碼 —— 這樣就夠了。

我想說說我對一些問題的看法

英語是學習編程的壁壘嗎

似乎很多人認為 學好編程的必要條件是學好英語 但至少我不這么認為
從學編程起我靠編程學會了三個詞 formerly曾經 slice切 hub聚集地 其中只有一個slice會作為語言的函數名。 函數名往往不會是太過于復雜的詞匯,至少我從沒見過脫離高考考綱的詞。如果說語言障礙會影響到對于函數名的理解,那著實有點抽象了。
編程語言的教程總是有中文版的,至少對于寫語法,不需要去谷歌搜國外資料。
不明白為什么總是說語言限制,為了看懂代碼背單詞
當然這只是我的淺薄理解 或許有什么特殊的理由吧

最后求個star 滿足一下下我滴虛榮心 [手動狗頭]