2008年,我开始学习物理,并接触到了 Linux,因为很多人使用它进行数据分析和模拟。在这些人的帮助下,我很快就理解了 Linux,并且受到了很大的鼓励去使用 Linux 完成工作。我在笔记本电脑上安装了 Ubuntu,并很快熟悉了 Bash 和标准工具。
几年后,我转向了理论物理。在撰写硕士论文期间,我可以使用一台运行 Scientific Linux 的工作站和一个拥有数百个核心的集群系统。我印象深刻的是,我的每个同事都实现了自己定制的工作流程,并且完全可以通过键盘工作,这对于 Windows 用户来说是不可思议的。幸运的是,每天使用 Linux 使我的学习曲线变得陡峭。我的任务是编写一个软件,能够从实验人员提供的视频序列中确定材料属性。我用 C++ 实现了这个软件,它在令人满意的运行时内处理了图像分析和大量的数学运算,这是一个关键因素。这个项目可以在 Windows 上完成,但是使用 Bash 和强大的命令行工具,如 MEncoder、convert 和 AWK,使开发过程变得快速而高效。
在过去的近三年里,我一直专注于我的博士项目,完全使用 C++ 和 Bash。我喜欢旧的 C99 编码风格,没有智能指针、函数式和其他旨在使编码舒适的东西。在我自己编写的工具集中,我使用了 GNU Scientific Library、Cairo、OpenCV、OpenMP 等库。由于我生成了大量需要大量后处理的数值数据,如果没有 Bash shell 及其工具,我将寸步难行。 对于可视化,我使用 gnuplot 和 Visual Molecular Dynamics (VMD),它们是非常棒且易于使用的工具,可以节省大量时间。
在 Windows 中编码让我对理解隐藏在标准系统调用背后的机制感到不满意。因为我花了很多时间将大型数据块压缩成简单的图形,所以我对了解幕后发生的事情更感兴趣。这促使我开始了自己数据库项目,我为此工作了大约三年。当然,我知道已经有成百上千个现有的项目,但我有兴趣从底层开始理解它,而这正是 Linux 使之成为可能的地方。它涉及很多问题,可能很多人在我之前就解决了,但我喜欢这个挑战。阅读像《Linux 编程接口》和《Unix 域套接字》这样的书,激发了我去研究一些简单的概念。这个项目帮助我积累了有用的经验,因为将来我想通过启动一个新项目或加入另一个项目来为开源项目做出贡献。
7 条评论