您还未登录! 登录 | 注册 | 帮助  

您的位置: 首页 > 业务知识 > 正文

提升编码水平,这本Python软件工程开源书籍为研究人员量身打造

发表于:2021-02-05 作者:机器之心 来源:机器之心Pro

在科研领域,计算机软件的应用无处不在。但是,一些研究者因为自身并非毕业于计算机相关学科,所以有时不得不将大量的时间花费在自学软件工程上。对于有些想要提升自身编码与软件开发水平的研究者来说,合适的学习资料至关重要。本文介绍的这本开源书籍就是为这类研究者「量身打造」的。

目前,软件对于研究而言至关重要。这意味着研究人员需要了解如何创建、检查、使用和共享程序。但是,大多数编程指南侧重于开发商业应用,而不探索那些尚未得到解答的问题。而在本文介绍这本开源书籍《Research Software Engineering with Python》中,作者旨在向读者展示如何做到这一点,无论作为个人还是团队成员。

  • 书籍地址:https://merely-useful.github.io/py-rse/
  • GitHub 项目地址:https://github.com/merely-useful/py-rse

作者认为,每位研究人员都应该了解如何编写能够重复清理和分析数据的短程序,以及如何使用版本控制来跟踪自己做的事情。但正如一些天文学家致力于设计望远镜一样,一些研究人员专注于构建使研究成为可能的软件。从事这项工作的人被称为研究软件工程师(research software engineer),他们主要构建其他研究人员依赖的专用软件。在本书中,作者通过帮助读者为自己编写代码以及创建有助于整个领域进步的工具,为研究软件工程这一角色做好准备。

据书籍主页介绍,本书既可以作为大学层次的课程材料,也可以用于读者自学。俄勒冈大学助理教授 Grant McDermott 两次转推了该书籍,表示大多数研究人员将大量的时间花费在了自学软件工程上,这本书籍指南可以使研究人员在这方面做得更好。这本书还提供了软件工程方面的最佳实践,非常值得向学生推荐。

本书的目标读者是那些使用 Python 进行数据分析、但又想将自身编码与软件开发提升至更高水平的研究者。读者没有必要非常精通 Python,但应该已经习惯了从文档中读取数据以及编写循环体、条件语句和函数。此外,就书籍内容而言,本书并不只是简单地提供一些关于好的编码实践的参考资料,而侧重于创建软件包以解决实际的研究问题。

书籍目录

本书共有 15 章,涵盖了使用 Unix shell 管理数据和代码、使用 Python 构建命令行工具、使用 Git 和 GitHub 跟踪和分享工作、配置程序、测试软件、创建以标准方式安装的 Python 包等诸多方面。以下只列举了前 5 章的具体内容,其他章节内容可参考原书籍。

第 1 章:入门指南

  • 项目结构
  • 下载数据
  • 安装软件

第 2 章:Unix shell 的基础知识

  • 文件和目录
  • 移动
  • 创建新文件和目录
  • 移动文件和目录
  • 复制文件和目录
  • 删除文件和目录
  • 通配符
  • 阅读手册

第 3 章:使用 Unix shell 创建工具

  • 组合命令
  • Pipe 如何运行
  • 在多个文件中重复命令
  • 变量命名
  • 重做
  • 自动创建新文件名

第 4 章:使用 Unix shell 进一步探索

  • 创建新命令
  • 使脚本功能性更强
  • 将交互式转化为脚本
  • 在文件中查找
  • 查找文件
  • 配置 Shell 脚本

第 5 章:使用 Python 构建命令行工具

  • 程序与模块
  • 处理命令行选项
  • 文档
  • 词频计算
  • 管道
  • 位置和可选参数
  • 结果理序
  • 编写自己的模块、
  • 绘图
  • ……

主要作者介绍

Damien Irving,分别于 2009 年和 2016 年取得墨尔本大学的学士和博士学位。虽然目前主要从事海洋温度与盐度变化的检测与归因研究,但对科学计算与开放科学具有浓烈的兴趣。业余时间担任学习网站 Software Carpentry 的讲师。注:Software Carpentry 网站专为科学家和工程师提供在计算技能方面的速成课程。

个人主页地址:https://people.csiro.au/I/D/Damien-Irving

Greg Wilson,本科毕业于加拿大女王大学,之后在爱丁堡大学取得了人工智能硕士与计算机科学博士学位。在其丰富的职业履历中,他曾担任企业软件开发者、独立咨询顾问、高级软件工程师、大学助理教授、数据科学家、专业教育家等。此外,他还是学习网站 Software Carpentry 和开源软件架构(The Architecture of Open Source Applications)的联合创始人。

个人主页:https://third-bit.com/