小學(xué)就開(kāi)始學(xué)編程了,恐怖如斯!
哈嘍,大家好,我是廚子。
今天給大家分享一下魚(yú)皮小伙伴的經(jīng)歷。好家伙,又是一位從小學(xué)就開(kāi)始編程的大佬,而且后來(lái)竟然還通過(guò)寫(xiě)腳本當(dāng)上了 QQ 群的龍王哈哈。

給大家分享一下他的學(xué)習(xí)經(jīng)歷吧。
我的編程學(xué)習(xí)之路
小伙伴 99 ,正在浙江某雙非一本就讀,愛(ài)好計(jì)算機(jī)與音樂(lè)。
關(guān)于我從小就學(xué)編程這件事,首先要感謝我開(kāi)明的父母,沒(méi)有認(rèn)為學(xué)習(xí)技術(shù)熱愛(ài)技術(shù)是一種不務(wù)正業(yè)的行為。其次感謝我的世界這款游戲,讓我對(duì)技術(shù)產(chǎn)生了濃厚的興趣。
小學(xué)暑假(2015)
我最早接觸的編程語(yǔ)言是 C++,為什么一來(lái)就接觸 C++ 呢?其實(shí)就是隨便找了 “你好世界” 的代碼,覺(jué)得 CPP 的最好看,就決定學(xué)他了。

果不其然,我實(shí)力不足,感覺(jué)很難。當(dāng)時(shí)下了個(gè) vc6,對(duì),就是那個(gè)很落后的、連自動(dòng)補(bǔ)全都不完善的一個(gè)編輯器。迷迷糊糊創(chuàng)建了一個(gè)MFC 程序,然而我對(duì) MFC 一竅不通,基礎(chǔ)的東西問(wèn)大佬們,大佬們也沒(méi)有太多耐心回答,所以基本上就直接放棄了。
然后我又在百度的過(guò)程中了解到了易語(yǔ)言 —— 中文編程,對(duì)于那個(gè)時(shí)候英語(yǔ)水平拉胯的我來(lái)說(shuō),簡(jiǎn)直就是救贖,然后我就玩了一年易語(yǔ)言,在這一年里快速建立了寫(xiě)程序的框架思維,以及問(wèn)題解決的方法(這就是所謂的目標(biāo)與興趣導(dǎo)向型學(xué)習(xí)吧)。但同時(shí)為了我以后在技術(shù)的道路上走的更遠(yuǎn),我還是決定買(mǎi)一本《C++ Primer Plus》,系統(tǒng)學(xué)習(xí)標(biāo)準(zhǔn)庫(kù)等語(yǔ)言基礎(chǔ)知識(shí),最后也成功編寫(xiě)了第一個(gè)程序(代碼已經(jīng)丟了,隱約記得是個(gè)簡(jiǎn)陋的聊天程序)。這個(gè)過(guò)程中主要還是目標(biāo)導(dǎo)向與興趣導(dǎo)向,記得當(dāng)時(shí)自己目標(biāo)很明確:我要寫(xiě)聊天程序,那么就要有客戶(hù)端和服務(wù)端;它們需要進(jìn)行網(wǎng)絡(luò)通信,那么就要了解網(wǎng)絡(luò)通信的知識(shí)(Windows Socket);要編寫(xiě)界面,就要學(xué)習(xí)界面開(kāi)發(fā)的知識(shí)(MFC 現(xiàn)在不推薦學(xué)習(xí)了),如果是 C++ 的界面庫(kù),Sciter 和 QT 是不錯(cuò)的選擇,或者控制臺(tái),“畢竟 CPP 不配擁有界面”。
魚(yú)皮:這是一種非常好的自主學(xué)習(xí)習(xí)慣,在做項(xiàng)目的過(guò)程中需要實(shí)現(xiàn)哪個(gè)功能,就可以去網(wǎng)上搜索實(shí)現(xiàn)方案,學(xué)習(xí)對(duì)應(yīng)的技術(shù)后可以直接應(yīng)用,加深印象。
除此之外,出于愛(ài)好,我其實(shí)還學(xué)習(xí)了建站和網(wǎng)站服務(wù)器搭建的相關(guān)知識(shí)。這部分知識(shí)很零碎、不系統(tǒng),我大致說(shuō)一下我的學(xué)習(xí)策略。人的大腦其實(shí)從原理上更容易接受歸納式與試錯(cuò)式學(xué)習(xí),所以我踩了很多坑,熬了一個(gè)又一個(gè)夜試錯(cuò),最終找到了正確的搭建方法。
當(dāng)然,當(dāng)時(shí)的我沒(méi)有接觸 Linux,所以只是在 Windows Server 圖形化的幫助下,搭建了傻瓜化的網(wǎng)站。這里我說(shuō)一下當(dāng)時(shí)比較熱門(mén)的三個(gè)網(wǎng)站服務(wù)器,Apache、Nginx、IIS。穩(wěn)定性用 Apache、高并發(fā)用 Nginx、綜合省事兒用 IIS。一開(kāi)始我是用 Nginx 做代理用于負(fù)載均衡,Apache 做 PHP 網(wǎng)站服務(wù)器的,后來(lái)發(fā)現(xiàn)太折騰了,特別是 URL 規(guī)則配置,簡(jiǎn)直要命(當(dāng)時(shí)的我還不會(huì)正則表達(dá)式)!然后我就轉(zhuǎn)用 IIS 了,現(xiàn)在也依然是 IIS。至于當(dāng)時(shí)搭建了啥,一個(gè)基于 Discuzx3.2 的班級(jí)論壇和一個(gè) WordPress4 的博客,因?yàn)槟甏眠h(yuǎn)了,只找到了這一張截圖:

魚(yú)皮:現(xiàn)在的話 Nginx 是主流的 Web / 反向代理服務(wù)器,后端開(kāi)發(fā)的朋友一定要學(xué)習(xí)下。
初一 ~ 初二(2016.2 - 2017.6)
這時(shí)的我,由于學(xué)業(yè)的繁忙,技術(shù)學(xué)習(xí)有點(diǎn)滯緩了。不過(guò)也抽空接觸到了全新的編程語(yǔ)言,比如好用但是不火的 C#。
剛開(kāi)始玩 C# 其實(shí)還是用的 WinForm,寫(xiě)過(guò)一個(gè)日程管理小工具,現(xiàn)在回看代碼,血壓飆升。
源碼:https://styunlen.cn/softlib/dailytools
對(duì)了,WPF 程序編寫(xiě)小工具還是很好用的,界面庫(kù)用的是 Mahapps.Metro。
我用 WPF 寫(xiě)了一個(gè)博客文章閱讀器。因?yàn)榇罱艘粋€(gè)博客,我嫌瀏覽器麻煩,就想自己做客戶(hù)端(折騰、造輪子)。當(dāng)時(shí)還不知道Restful Api,Wordpress 好像也不支持,因此自己還編寫(xiě)了一個(gè)服務(wù)端程序,不過(guò)要手動(dòng)添加博客內(nèi)容,麻煩得很,最后這項(xiàng)目也是棄坑了。
在這期間,我了解到了閱讀官方文檔的重要性,以后的學(xué)習(xí)中也盡量都去看開(kāi)發(fā)文檔了。
其實(shí)除了 C#、CPP 這些寫(xiě)應(yīng)用程序的語(yǔ)言學(xué)習(xí),我還喜歡上了前端技術(shù),雖然只有一點(diǎn)點(diǎn),比如 HTML、CSS、JavaScript 三件套,以及一點(diǎn)點(diǎn) PHP。我用這些做了個(gè)丑不拉幾的 HTML 主頁(yè),主頁(yè)風(fēng)格受到了一點(diǎn)點(diǎn)釘子大佬 @Rrupmid Nyche 的影響(他的 WP 主題我從建站起一直用到高一),初三的時(shí)候甚至還二次開(kāi)發(fā)過(guò)他的主題。

初三(2017.6 - 2018.6)
這一年,我也忘了自己干了啥,好像沒(méi)啥進(jìn)步。翻了一下空間,我居然跑去玩 OpenGL 了!
這就是大佬的相冊(cè)么?紀(jì)念一下當(dāng)時(shí)連 gltools 的編譯都要折騰半個(gè)月的憨憨:

高一(2018 - 2019)
時(shí)光如流,不知不覺(jué)我就成為了一個(gè)高中生。其實(shí)現(xiàn)在挺后悔初中沒(méi)有用功讀書(shū),跑去學(xué)了技術(shù),但這都是取舍,重要的是我幸運(yùn)地找到了自己的熱愛(ài),并堅(jiān)持在這條道路上走了下去。
高一學(xué)習(xí)還是比較緊張的,浙江考生十一科連起來(lái)學(xué)習(xí)實(shí)在是過(guò)于充實(shí),因此也很少有空學(xué)習(xí)技術(shù)了。
高二(2019 - 2020)
高二過(guò)得很苦逼,因?yàn)槌煽?jī)下滑了不少、又遇到了分班等等雜事兒。但對(duì)編程技術(shù)的學(xué)習(xí)就像一道光,讓我苦苦地?fù)芜^(guò)了這一段高中最黑暗的時(shí)刻。
分班后,我的政治老師有節(jié)課提了一嘴,說(shuō)想要一個(gè)像我們語(yǔ)文老師一樣的語(yǔ)音點(diǎn)名程序,我就抽假期用 C# 寫(xiě)了一個(gè)語(yǔ)音點(diǎn)名程序,麻雀雖小、五臟俱全~

之后因?yàn)樘厥獾囊咔椋蚱屏怂械倪M(jìn)程,網(wǎng)課時(shí)代拉開(kāi)了序幕。
對(duì)于一個(gè)技術(shù)黨,網(wǎng)課當(dāng)然也要繼續(xù)好好學(xué)習(xí)(mo yu)啦 !所以,我重新下載了我的世界,開(kāi)啟了服務(wù)器,和小伙伴一起養(yǎng) ,當(dāng)然,技術(shù)學(xué)習(xí)也木有落下。
由于我是用電腦開(kāi)服,這就導(dǎo)致了我薛定諤的開(kāi)服時(shí)間,以及頻繁的在群里公布開(kāi)服消息。我本人比較懶,因此想讓電腦代替我的重復(fù)勞動(dòng)。于是跳出了 C# 的舒適圈,使用 C++ 的 Sciter UI 引擎開(kāi)發(fā)了一個(gè) MC 服務(wù)器狀態(tài)獲取小工具,這時(shí)的這個(gè)小工具只能獲取我自己服務(wù)器的信息。在高考結(jié)束后的暑假,我對(duì)這個(gè)程序進(jìn)行了修改,支持獲取自定義服務(wù)器信息了,并開(kāi)源在了 Github,代碼冗余,就不給大家看了~

除此之外,水群也是我的日常。可我每天那么認(rèn)真的水群、幣話不停,怎么還是輪不到我當(dāng)龍王?為啥總是群里的小伙伴是龍王?
我不服氣,然后一天時(shí)間入門(mén)了 Python,用 pywin32 模塊寫(xiě)了個(gè)刷龍頭腳本。原理很簡(jiǎn)單,趁十二點(diǎn)到早上六點(diǎn),大家都在睡覺(jué),我讓電腦每分鐘自動(dòng)發(fā)一條消息,這樣我就能發(fā)送 360 條消息,再加上我白天的努力,龍頭就非我莫屬了。
結(jié)果很出乎意料又在情理之中啊,我被禁言了。

哈哈哈,但是我學(xué)到了知識(shí),這是很強(qiáng)的正反饋。然后我就繼續(xù)寫(xiě)腳本刷釘釘?shù)淖詣?dòng)點(diǎn)贊,不過(guò)速度有限,每分鐘大概兩千下,鼠標(biāo)還不能動(dòng)。不過(guò)好在我的一個(gè)同學(xué)推了一篇酷安的文章給我,解釋了怎么用 fiddle 抓包修改網(wǎng)頁(yè)源碼的方式以更快的速度刷贊,甚至是強(qiáng)制刷贊(無(wú)視教師端控制)。當(dāng)時(shí)就很快樂(lè)啊,給同學(xué)直播間的一次測(cè)試,簡(jiǎn)直不要太爽。
離譜!當(dāng)然還玩了教室面板彩色字體顯示啥的,不過(guò)現(xiàn)在的釘釘不行啦。
說(shuō)完軟技術(shù),來(lái)聊聊硬技術(shù)。恰逢通用技術(shù)課上電控知識(shí),我想起來(lái)技術(shù)世界中還有單片機(jī)這種稀奇玩意兒,于是我斥巨資買(mǎi)了一塊arduino 原裝板(智商稅)和一套傳感器組件。現(xiàn)在建議買(mǎi) arduino 可以買(mǎi)非原裝的,便宜而且功能一樣甚至更豐富。
不過(guò),剛接觸硬件我就遇到了坑,剛?cè)胧值木拶Y arduino 還沒(méi)捂熱,剛寫(xiě)完 “你好世界” 就 GG 了。不過(guò)我了解到了單片機(jī)的工作原理以及如何給單片機(jī)編寫(xiě)驅(qū)動(dòng)程序,還有相關(guān)門(mén)電路的電控知識(shí),和這些收獲相比,失去反而顯得微不足道了。
高三(2020.8 - 2021.6)
時(shí)間來(lái)到了中學(xué)時(shí)代的終點(diǎn)線前,為了提醒自己高考剩余的時(shí)間我又開(kāi)發(fā)了一個(gè)桌面端的倒計(jì)時(shí)小程序,代碼已經(jīng)開(kāi)源,目前已支持自定義主題功能,也編寫(xiě)了一丟丟主題開(kāi)發(fā)文檔,歡迎大家為這個(gè)可憐的小程序貢獻(xiàn)漂亮高端的主題。

由于高三時(shí)間緊迫,初期的代碼以實(shí)現(xiàn)功能為主,因此存在不夠規(guī)范的地方,希望諒解。目前的版本,也存在諸多不夠規(guī)范的地方,我也在抽出緊張的時(shí)間做些完善。
源碼:github.com/Styunlen/ReminderOfNEMT
大一 ~ 至今
由于選科的限制,我并沒(méi)有進(jìn)入計(jì)算機(jī)專(zhuān)業(yè)學(xué)習(xí),因此到了大學(xué),技術(shù)還是以自學(xué)為主。而專(zhuān)業(yè)課的時(shí)間沖突又導(dǎo)致我很難有充足的時(shí)間投入技術(shù)學(xué)習(xí)中,因此學(xué)習(xí)速度也有所放緩。不過(guò),我一定會(huì)堅(jiān)持下去的!
大一了,我最想彌補(bǔ)自己算法上的不足,因此決定在大學(xué)期間去參加 ACM 競(jìng)賽,而競(jìng)賽又免不了耗費(fèi)大量的時(shí)間精力,所以我每天的學(xué)習(xí)狀態(tài)就像在經(jīng)歷高四。
最近學(xué)習(xí)了 Vue3 框架,并用 Vue3 為我們班編寫(xiě)了一個(gè)微信小程序。其他的感覺(jué)倒也沒(méi)啥了,主要還是時(shí)間沖突問(wèn)題,讓我自己也很焦慮、很累。
?? 結(jié)語(yǔ)
這就是我濃縮版的學(xué)習(xí)經(jīng)歷了,可能只是作為愛(ài)好者接觸了編程知識(shí),對(duì)于很多技術(shù)的認(rèn)知還很淺薄、還停留在技術(shù)海洋的表面,但我會(huì)繼續(xù)努力鉆研的!如果有必要,我后面再給大家分享一期如何以目標(biāo)或興趣作為導(dǎo)向來(lái)學(xué)習(xí)編程技術(shù)的指引吧。
對(duì)了,其實(shí)算法思想和編程技術(shù)還是有區(qū)別的。算法更側(cè)重邏輯與數(shù)學(xué)能力,而編程技術(shù)其實(shí)更側(cè)重編程語(yǔ)言基礎(chǔ)和解決問(wèn)題的能力等多種不同能力的綜合,所以雖然我算法一般但寫(xiě)程序時(shí)沒(méi)有感到什么壓力。但不得不說(shuō)算法思想是非常重要的,在寫(xiě)復(fù)雜的邏輯時(shí)可以更得心應(yīng)手一些。
不過(guò)無(wú)論是算法還是寫(xiě)程序本身都有個(gè)特點(diǎn),那就是你只需要有一顆愛(ài)折騰的心,就能夠在這兩者的痛苦學(xué)習(xí)中找到不一樣的樂(lè)趣。
熱愛(ài)終將會(huì)將我們導(dǎo)向我們所向往的生活!
往期推薦
