如何决定何时从头开始包装/端口/写入

时间:2012-04-11 20:12:36

标签: python wrapper porting smalltalk pharo

我将在Smalltalk(Pharo)中建立一个项目。还有一个python库,我打算用它来做同样的事情。现在,有3个选项:

  • 那些python库的Smalltalk包装器
  • 将python库移植到Smalltalk
  • 从头开始编写库(在Smalltalk中)以便在我的项目中使用

以下是我的疑问:

  1. 移植/包装的“基本”差异是什么(在任何地方都找不到令人满意的解释)
  2. 如何知道何时使用(三者中的哪一个)?
  3. 我可以获得进一步帮助的一些资源或指示/一些启动我的项目。
  4. 谢谢!

1 个答案:

答案 0 :(得分:11)

包装

以本机语言编写函数,其唯一目的是调用外部库中的函数。目标是尽可能少地使用母语。例如,将数据类型从本机语言翻译为外部库语言等

当外部库是:

时,包装有意义
  • 用比本机代码更有效的语言编写(例如,从Python调用的C ++库)
  • 大/复杂且耗时或容易翻译
  • 定期更新;在维护良好的库中,接口(包装器所关注的)将比实现功能的更改频率更低;所以如果你有关于这个功能的包装器,那么更新到这个库的新版本应该是相当简单的

移植

端口只是从一种语言到另一种语言的翻译。通常,尽可能保持相同的逻辑。

移植在以下情况下有意义:

  • 本地语言比外部库更有效
  • 库很简单,人们希望节省包装所需的开销
  • 一个打算用母语制作和维护移植代码的更改
  • 没有计划以自己的语言使用外部库
  • 一个人想要学习一种或两种语言

重新写

将重写写为具有大量重构的端口。目标是利用母语的功能以某种方式改进库(效率,可读性等)

重写在所有与移植相同的场景中都有意义。决定是做简单端口还是完全重写通常归结为一个问题:

  • 是否有更好的方法以母语实现外部库的功能?