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 使之成为可能的。它涉及许多问题,可能很多人在我之前就解决过,但我喜欢这种挑战。阅读 The Linux Programming Interface 和 Unix Domain Sockets 等书籍激励我研究出一些简单的概念。这个项目帮助我积累了有用的经验,因为在未来,我希望通过启动一个新项目或加入另一个项目来为开源项目做出贡献。
7 条评论