Binding 包装器、绑定和端口之间有什么区别?

Binding 包装器、绑定和端口之间有什么区别?,binding,port,wrapper,portability,Binding,Port,Wrapper,Portability,在软件可移植性上下文中,这三个概念之间的区别是什么 例如,我想使用这个库,原来的NCURESS库是用C编写的,但是我的应用程序是用C++编写的,然后我发现了“ncRESS包装器”、“nclipse绑定”和“ncices端口”。我应该用哪一个 每种方法的优点和缺点是什么?A是一种代码,它位于其他代码之上,用于回收其功能,但具有不同的界面。这通常意味着使用相同的语言编写接口。还应该注意的是,有时人们会说wrapper,而他们在技术上的意思是绑定(包括我自己) 优点: 它的语言与原文相同 包装器在不

在软件可移植性上下文中,这三个概念之间的区别是什么

例如,我想使用这个库,原来的NCURESS库是用C编写的,但是我的应用程序是用C++编写的,然后我发现了“ncRESS包装器”、“nclipse绑定”和“ncices端口”。我应该用哪一个

每种方法的优点和缺点是什么?

A是一种代码,它位于其他代码之上,用于回收其功能,但具有不同的界面。这通常意味着使用相同的语言编写接口。还应该注意的是,有时人们会说wrapper,而他们在技术上的意思是绑定(包括我自己)

优点:

  • 它的语言与原文相同
  • 包装器在不需要完全重写的情况下增强或重用功能
  • 相对较快地完成
  • 当源库发生更改时,会进行琐碎的更新。您可能只需要绑定新函数,除非它们通过更改函数/类的预期输入/输出而破坏了向后兼容性
缺点:

  • 包装整个库可能非常重复
A是位于其他代码之上的另一段代码,用于回收其功能,但这次绑定使用的语言与它们绑定的语言不同。一个值得注意的例子是PyQt,它是QT的python绑定

优点:

  • 将其他语言的功能引入到您选择的语言中
  • 与港口相比,速度相对较快
  • 需要与包装中相同级别的琐碎更改—您可能只需要包装新的函数/类,除非它们通过更改函数/类的预期输入/输出破坏了向后兼容性
缺点:

  • 就像包装纸一样重复
  • 您可能会受到相当大的性能影响,尤其是任何一端都涉及解释语言的包装器
是指当您翻译一些代码以在不同的环境中工作时。常见的类比包括游戏,比如说。。。XBox和PS3随后发布

优点:

  • 使您有机会在看到不足之处时对代码库进行改进
  • 您将非常熟悉代码的运行方式,而不仅仅是它的功能
缺点:

  • 到目前为止,时间最长的解决方案/需要完全重写
  • 您需要确保源库在一种语言中所需的任何功能在目标端口语言中都可用,否则最终会包装所需的功能(并且可能会破坏目的)
  • 每次源库更新时,您也必须通过翻译他们所做的任何更改来进行更新,否则可能会落后

我应该使用哪一个?


您应该使用到ncurses的
绑定
。绑定是应用程序、库等的特定版本,它与原始版本不同,只是因为您可以将其与另一种语言一起使用。常见的例子包括Windows管理器(GTK++C,GTKMM = C++;Qt= C++,PyQt= python;ECC)。然而,人们经常使用诸如wrapper或port之类的其他词来指代绑定,因此很容易让自己感到困惑。

除非您提供更多的上下文,否则无法说出您在说什么。wrapper对性能有显著影响吗?我应该在性能非常重要的基准测试应用程序中使用包装器吗?每个包装器都是一个“性能打击”,因为您正在有效地将数据传递给另一个进程,并等待它返回。好的一面是,如果你以更快的速度完成某项任务,那么收益可能会抵消打击!我想到的一个例子是用go编写的Hekad项目,它包含一个lua解释器来执行一个C正则表达式包装器。。。。这比go的本机正则表达式处理程序ATM快。//您需要确保源库在某种语言中所需的任何功能在您的目标端口语言中都可用,否则最终会包装所需的功能(并且可能会达不到目的)。//您是指绑定对吗?您可能需要为缺少的功能编写绑定。