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