据CSDN调研数万名开发者的数据显示,近六成的开发者表示自己写下第一行代码的年龄是在16-20岁间。其次有31.68%的受访者是在21-25间首次接触了编程。
不得不承认,编程的主力军越来越趋于年轻化。不过也有不少网友表示,“这纯属是别人家的孩子,我的高中可能还是在玩泥巴”。
灵感萌生
之所以开发这个库,作者解释主要有两层因素。
一是不少工程师容易忽视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++开发一个机器学习库的想法:
C++在ML领域缺乏使用的主要原因是由于缺乏用户支持和C++的复杂语法。Python有数千个用于数学、线性代数、机器学习和深度学习的库和包,而C++没有这种用户支持。现在,你可以期待一下使用C++开发的最强大的机器学习库。
不过,针对这一点,有不少人反驳道:
Pytorch、Tensorflow等只是提供广泛的Python绑定,以便开发者能够更快地进行实验和开发。所有繁重的工作量都在极其优化的C++/C/CUDA代码中处理。
在大多数情况下,Python性能和开销是可以忽略的。例如,在1小时的过程中节省10秒并不是什么大问题,尤其是当您仍处于实验阶段时。
如果你想不惜一切代价避免使用Python,你可以使用Pytorch的C++API。
具体实现
@u/novak-99表示,其计划开源所有的实现文档,并详细地解释库中每个机器学习算法背后的所有数学实现,借此,希望能够对其他工程师们有所帮助。
以下是统计部分的摘录:
在具体的项目中,@u/novak-99所开发的ML++覆盖回归、Prebuilt神经网络、自然语言处理、计算机视觉等19大技术主题,53+技术细节,以此想要将其成为普通开发者和机器学习工程师之间的桥梁:
与此同时,ML++也在紧随技术实时更新,除了以上,ML++还聚焦:
写在最后
别人的16岁,或许对于技术的趋势判断有误,或许开发的算法暂时并不能在实践中应用,或许还存在许多的不足,但是作为一个高中生,他的编程思想、实践操作仍值得我们为其喝彩与学习!