你是否記得:剛學完程式設計基礎那會兒,特別想寫個東西,但動起手來卻發現到處碰壁?
你是否找到:一個好玩的開源專案,結果卡在了部署環境、安裝依賴上?最後"含恨而終"!
我剛學程式設計的時候,不止一次開啟 IDE 看著閃動的游標發呆,大腦和空白的頁面一樣,一片空白毫無頭緒。想寫點東西根本無從下手,想玩別人的專案也跑不起來。一下子從書本抄程式碼的階段,轉變到自己構思、設計、編寫程式碼,這跨度著實有些大。當時感覺自己學的那些什麼語法規則,都吃完拉了什麼都沒留下。
有沒有人和我一樣,有過上面的經歷或者正處於這種狀態。我當時就在想有沒有那種,比書上的例項程式碼長一些,有些實際用途的開源專案。即:
一個檔案、執行簡單、一看就懂,有趣的開源專案!
因為一個檔案的專案基本上覆制程式碼到編輯器裡就能跑,還可以通過除錯看每步的結果更容易讀懂程式碼。重點是它要有實際用途,不是程式碼例子,這樣就可以拿出去給別人看和使用,學起來很有動力。程式碼中再多來點註釋,相對於乾巴巴的教程文章,我更喜歡程式碼中的註釋,簡潔直給解惑效果更佳。
功夫不負有心人,終於讓我找到它們了:
OneFile 彙集了僅一個檔案,好玩的開源專案。
這裡有遊戲、編譯器、伺服器、工具、實用庫等,它們執行簡單甚至複製程式碼就能跑。
下面讓我們一起來把玩下吧!
1、點選停球
消磨時間的小遊戲,只需將球停在有顏色的區域即可得分。所有程式碼就只有一個 HTML 檔案,玩累了還可以右鍵“顯示網頁原始碼”,研究下原始碼如何作弊。
試玩:https://hellogithub.com/onefile/code/cc759276aefe4bad87ac259940042581
2、番茄時鐘
純 Python 實現的命令列番茄時鐘,另外還支援安裝擴充套件實現桌面通知。複製程式碼到 PyCharm 右鍵即可執行。
原始碼:https://github.com/521xueweihan/OneFile/blob/main/src/python/tomato-clock.py
3、迷你編譯器
用 JavaScript 寫的迷你編譯器,實現將 LISP 轉化成 C 程式碼。每一步寫的特別詳細註釋比程式碼多,人人都能看懂的編譯器專案。開啟瀏覽器的“開發者工具”跳轉到“Console”頁面,把程式碼貼上進去即可執行。
* LISP C
*
* 2 + 2 (add 2 2) add(2, 2)
* 4 - 2 (subtract 4 2) subtract(4, 2)
* 2 + (4 - 2) (add 2 (subtract 4 2)) add(2, subtract(4, 2))
原始碼:https://github.com/521xueweihan/OneFile/blob/main/src/javascript/the-super-tiny-compiler.js
4、字元視訊
開啟網頁授權開啟攝像頭,你將看到實時轉化成 ASCII 碼的影像。瀏覽器右鍵“顯示網頁原始碼”,即可檢視全部原始碼。
試玩:https://hellogithub.com/onefile/code/126093303b6b414dbab9d623c957fdd4
5、太空侵略者
原版的《太空侵略者》由大約 2k 行的 8080 彙編程式碼寫成,但組合語言太過底層不方便閱讀,今天講解的開源專案 si78c 是按照原版彙編程式碼用 C 語言重寫了一遍。這個專案雖然核心檔案只有一個,但執行稍微複雜,不怕我們有配套講解文章。
原始碼:https://github.com/521xueweihan/OneFile/blob/main/src/c/si78c.c
萬事開頭難,但這些專案一點都不難!
無數次想寫東西卻無從下手...無數個卡住的夜晚...無數次想砸電腦的衝動...
它們都將成為過去式,希望本期推薦的一個檔案開源專案,能讓你重拾信心發現程式設計的樂趣。點選發現更多!
開啟開源之旅
每個開源專案都是從一個檔案開始,通過不停迭代才成為了被人熟知和喜愛的知名專案。
如果你發現某個痛點或者靈光乍現,僅需建立一個檔案把它記錄下來,然後不斷更新迭代並開源出來。最終,它可以幫助到更多人,未來的某一天會驚豔到包括你在內的所有人!
如果讓你只用一個檔案展示“平生所學”,程式語言不限!你會交出什麼樣的作品呢?
一個檔案的程式設計挑戰,要求如下:
- 單個檔案、不可壓縮、體積小於 1 MB
- 程式碼結構清晰,包含註釋,行數小於 5000 行
- 不限程式語言,不可僅包含 Markdown 檔案
- 不引入任何外部檔案(圖片、視訊、CSS 等)
- 專案功能完整,具有學習或使用價值
- (可選)最多依賴一個開源庫或框架
輕點 即可參加,開啟你的開源之旅。