對於當下一些熱門的軟體技術背後的原理有興趣,這個 github 專案收集了許多使用各式程式語言實現的技術重現
這個專案用了一張代表圖,裡面引用了費曼的名言
What I cannot create,I do not understand – Richard Feynman
意思是如果我自己無法實做一次,我就無法理解這理論背後的精髓
軟體工程師有兩種 – 一種是呼叫別人寫好的 API ,一種是會寫 API 讓別人呼叫
當然軟體界也有一個名言- 不要重新發明輪子!
要思考一件事 – 在軟體業平均 3 年就會出現新的技術變革,所以工程師經常會忙於追求新的程式語言,學新的框架 …. 有時候想想也蠻累人的
但是軟體開發難道沒有不太會變的東西 ?其實還是有的,例如演算法/資料結構,或是作業系統運作的底層架構,資料庫/SQL …
分享一篇文章 – 我是如何建立學習專案 – How I Build Learning Projects — Part I
這篇文章小編有寫摘要筆記( 晚點再補上 ) 裡面看到一個重點
在當今世界,技術變革的速度往往太快,任何一個人都無法消化。
在這種變化速度下,我認為使用任何特定框架或工具的能力本身並不是一項基本技能。 相反,這些工具所啟用的工作流程模式( workflow patterns ) 才是基礎。 框架和工具通常是有用的,因為它們抽象了我們工作流中乏味的部分,但是不知道我們為什麼首先要遵循這些工作流程,我們只是機械地使用這些工具,沒有靈魂。
所以你想瞭解一下目前在用的軟體工具,程式庫甚至作業系統在這個專案都可以找到如何如何實作的相關資源
所以這個 github 專案的存在目的是讓工程師去理解當前軟體背後的原理,而不是只會呼叫別人寫好的 API
這個專案包含了哪些軟體開發技術主題
- 3D render
- 擴增實境 AR
- 區塊鏈/加密貨幣
- Bot
- 命令列工具
- 資料庫
- Docker
- Emulator/虛擬機器
- 前端開發框架/程式庫
- 遊戲
- Git
- 網路層
- 類神經網路
- 作業系統
- 物理引擎
- 程式設計語言
- 正規表示式引擎
- 搜尋引擎
- Shell
- 樣版引擎
- 文字編輯器
- 視覺辨識系統
- Voxel Engine
- Web 搜尋引擎
- Web 伺服器
對於軟體運作原理追求有強烈好奇心,可以先找一個主題,然後閱讀專案提供的文件與追蹤程式碼來學習