據 CSDN 調研數萬名開發者的資料顯示,近六成的開發者表示自己寫下第一行代碼的年齡是在 16-20 歲間,其次有 31.68% 的受訪者是在 21-25 間首次接觸了編程,

不得不承認,編程的主力軍越來越趨于年輕化,不過也有不少網友表示,“這純屬是別人家的孩子,我的高中可能還是在玩泥巴”,
又屬有些拉“嫉妒”系列,近日國外再次有一位別人家的孩子榮登熱搜,起因于其在 Reddit 發布了一篇主題為《一個 16 歲的高中生從零開始構建 C++ 機器學習庫》的帖子,引來數百個用戶的點贊與評論,

靈感萌生
據悉,這位網名為 @u/novak-99 的高中生開發了一個 13000+ 行代碼的 C++ 機器學習庫——MLPP(GitHub 地址:https://github.com/novak-99/MLPP),值得注意的是,該庫覆寫了統計學、線性代數、數值分析、機器學習、深度學習等多主題技術,
之所以開發這個庫,作者解釋主要有兩層因素,
一是不少工程師容易忽視 ML 演算法背后的具體實作與細節,
“時下其實想要實作 ML 演算法并不難,但是很多工程師經常忽略其背后的實作原理和運用的技術細節”,@u/novak-99 無奈地說道,
所謂學習編程思維往往比實作某一功能的開發來得更為實在,@u/novak-99 表示,如果不了解演算法背后的數學技術細節,就無法在實作某些特定用例時反過來優化 ML 演算法,
確實如此,“重復造技術輪子,缺乏創新”是當前技術圈中存在的痛點之一,而在學習編程的同時,了解工具背后的實作原理,也有助于進一步提升編程思維與創新,
當提及第二個原因時,@u/novak-99 表示,“ C++ 在 ML 領域缺乏支持,使用 C++ 開發的機器學習前端庫更是少之又少,”
在 @u/novak-99 看來,在 TensorFlow、PyTorch、Numpy 等主流的機器學習框架中,不乏有很多庫采用了 C/C++ 或某種 C/C++ 衍生工具進行優化和提高運行速度,不過,@u/novak-99 特別指出,這里的機器學習領域并非是后端開發,而是前端,
@u/novak-99 表示,其上手的第一門編程語言就是 C++,這門語言高效且有利于快速執行,因此他在 15 歲開始學習了解各種機器學習演算法實作時,發現大多數都是用 Python、MatLab、R、Octave 來實作的,
”尤其是與 Python 的數量相比,C++ 機器學習中的框架數量相形見絀,此外,即使在 PyTorch 或 TensorFlow 等流行的框架中,C++ 的實作也沒有 Python 的那么完整:缺乏檔案參考、并非所有的主要功能都能應用上、沒有多少人愿意貢獻等等,
此外,C++ 不支持 Python 的 ML 套件的各種關鍵庫;Pandas 缺乏對 C++ 的支持,Matplotlib 也是如此,這增加了 ML 演算法的實作時間,因為資料可視化和資料分析的元素更難獲得,“
由此,這也讓他萌生了使用 C++ 開發一個機器學習庫的想法:
C++ 在 ML 領域缺乏使用的主要原因是由于缺乏用戶支持和 C++ 的復雜語法,Python 有數千個用于數學、線性代數、機器學習和深度學習的庫和包,而 C++ 沒有這種用戶支持,現在,你可以期待一下使用 C++ 開發的最強大的機器學習庫,
不過,針對這一點,有不少人反駁道:
實際上,大多數(/所有相關的)ML 框架都是用 C++ 實作的,
Pytorch、Tensorflow 等只是提供廣泛的 Python 系結,以便開發者能夠更快地進行實驗和開發,所有繁重的作業量都在極其優化的 C++/C/CUDA 代碼中處理,
在大多數情況下,Python 性能和開銷是可以忽略的,例如,在 1 小時的程序中節省 10 秒并不是什么大問題,尤其是當您仍處于實驗階段時,
如果你想不惜一切代價避免使用 Python,你可以使用 Pytorch 的 C++ API,
不過,無論 @u/novak-99 對 C++ 在 ML 領域的應用情況判斷是否有誤,其初心僅是想要進一步讓 C++ 在 ML 領域得以應用,同時也想呼吁更多的開發者多關注演算法背后的實作,
具體實作
@u/novak-99 表示,其計劃開源所有的實作檔案,并詳細地解釋庫中每個機器學習演算法背后的所有數學實作,借此,希望能夠對其他工程師們有所幫助,
以下是統計部分的摘錄:

在具體的專案中,@u/novak-99 所開發的 ML++ 覆寫回歸、Prebuilt 神經網路、自然語言處理、計算機視覺等 19 大技術主題,53+ 技術細節,以此想要將其成為普通開發者和機器學習工程師之間的橋梁:
與此同時,ML++ 也在緊隨技術實時更新,除了以上,ML++ 還聚焦:
-
卷積神經網路
-
支持向量機的內核
-
支持向量回歸
寫在最后
別人的 16 歲,或許對于技術的趨勢判斷有誤,或許開發的演算法暫時并不能在實踐中應用,或許還存在許多的不足,但是作為一個高中生,他的編程思想、實踐操作仍值得我們為其喝彩與學習!
參考資料:
https://www.reddit.com/r/MachineLearning/comments/srbvnc/p_c_machine_learning_library_built_from_scratch/
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/431479.html
標籤:AI
