Boa编程指南-The Boa Programming Guide

Boa编程语言简单介绍

Boa是一种特定于领域的编程语言,是一种用于支持和简化大规模挖掘软件及其发展的研究的基础设施。Boa有以下主要组成部分:

  • 一种领域特定的编程语言
  • 语言编译器
  • 一个经过管理的数据集(近700k个开源项目,参见详细信息)
  • 基于map-reduce的后端来分析数据集,以及 一个基于web的前端来编写挖掘软件仓库(MSR)程序。
  • 首先,让我们考虑下面一个简单的Boa程序。给定一个数据集,此程序的目标是找出在该数据集中创建大多数项目的年份。

一个简单的Boa程序。给定一个数据集,此程序的目标是找出在该数据集中创建大多数项目的年份。

# which year were projects created most?
p: Project = input;
yearCount: output top(1) of int weight int;
yearCount << yearof(p.created_date) weight 1;

为了理解这个Boa程序,为了便于讨论,让我们假设您在一个拥有70万个开源项目的输入数据集上运行它。Boa 2013年9月的输入数据集确实包含了这么多项目。考虑这个程序的逻辑模型是,它为输入数据集中的70万个项目中的每个项目实例化一个Boa任务(Boa编译器当然做了一些聪明的优化以使其快速运行,但现在让我们关注语义模型)。每个Boa任务实例的工作是分析单个项目。
另一个需要注意的重要一点是,输出变量(这里是yearCount)可以被看作是程序中所有Boa任务共享的过程。与输出变量对应的进程可以发送一个值,例如使用第3行中的语法,其中yearCount被发送一个值。输出变量可以组合以各种方式发送给它们的值。例如,输出变量yearCount表示,它将组合发送给它的所有整数值,并保留由整数权重决定的最上面的整数。
在将要讨论的示例程序中,当Boa任务得到它必须分析的项目时,它将向输出变量发送两个值:项目创建的年份和权重1。
总的来说,当这个Boa程序运行时,每个Boa任务将年份发送给输出变量,然后该变量计算并输出最高年份,从而实现了程序的目标。如果使用基于web的Boa基础结构来运行这些程序,可以从web界面查看输出变量的名称及其结果。
左边的链接提供了关于Boa语言的各种组件的详细信息。

相关文章是:

  1. “Boa: A language and infrastructure for analyzing ultra-large-scale software repositories”
  2. “Boa Meets Python: A Boa Dataset of Data Science Software in Python Language”
    这个数据集提供了:
    一个用于分析Python数据科学项目的大型数据集,包含1,558个Github开源项目,包含4,977,680个Python文件修订版本。
  • 其具体方式是:1. 从GitHub上收集python 为main language的项目,为了保证project的质量,以star为衡量标准,因此选择star>1的。不要fork的文件,收集metadata和other API URLs形成Json file。再进一步用machine learning库的做过滤,得到1558个projects。
  • 每一个project会在本地cache,clone,再将这些源码用AST抽取出来,用data writer将AST转为sequenceFiles,sequenceFiles以key-value形式存储,transferred to Hadoop Cluster。

*一个data schema,有效地存储该数据在Hadoop序列文件,以使其内存效率和并行访问。
DOMAIN-SPECIFIC TYPES FOR STORING REPOSITORY

*数据集在Boa基于web的基础设施[5]上公开可用。可以使用Boa语言编写MSR查询,并将作业提交到Hadoop集群进行进一步处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值