2008 年,我开始学习物理,并接触到 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 Domain Sockets》等书籍激励我研究一些简单的概念。这个项目帮助我积累了有用的经验,因为将来我想通过启动一个新项目或加入另一个项目来为开源项目做出贡献。
7 条评论