Programming languages 是否将库/代码从lang.x移植到lang.y sane?

Programming languages 是否将库/代码从lang.x移植到lang.y sane?,programming-languages,choice,Programming Languages,Choice,和许多人一样,如果不是全部的话,我也有一种我最喜欢的编程语言,我喜欢在项目中使用,阅读,提倡,睡觉等等。。我称之为lang.y 为了不重新发明轮子,我在项目中尽可能多地使用他人的作品。但有时,已经制作好的轮子是用其他语言(lang.x)编写的,而不是我正在使用的语言 这通常发生在我需要使用不太常见的应用程序时,这些应用程序大多是由大型组织或学术项目创建的 如果实现我需要从该项目中使用的功能没有那么复杂,我主要是从Strath用lang.y编写的 如果没有,我会尝试使用lang.x,直到我对lan

和许多人一样,如果不是全部的话,我也有一种我最喜欢的编程语言,我喜欢在项目中使用,阅读,提倡,睡觉等等。。我称之为lang.y

为了不重新发明轮子,我在项目中尽可能多地使用他人的作品。但有时,已经制作好的轮子是用其他语言(lang.x)编写的,而不是我正在使用的语言

这通常发生在我需要使用不太常见的应用程序时,这些应用程序大多是由大型组织或学术项目创建的

如果实现我需要从该项目中使用的功能没有那么复杂,我主要是从Strath用lang.y编写的

如果没有,我会尝试使用lang.x,直到我对lang.x中所有我不喜欢的废话感到恼火,并搜索桥接应用程序,使之能够与lang.y一起使用该应用程序/库

我也失败了,我只是倾向于放弃。因此,对于这个问题,从lang.x到lang.y的移植对我来说似乎是合理的(对于osi批准的许可应用程序/库),但我也希望有其他人的想法


你会选择port,还是选择lang.x

如果库是成熟的、经过良好测试和封装的,我会将其保留为原始语言。但在COM或.NET中更容易实现,因为它们具有良好的互操作性和较低的开销


只有当环境发生重大变化、语言过时,或者库需要进行重大的前瞻性开发工作时,我才会进行移植,这实际上意味着它无论如何都需要进行全面的重新测试。

如果库是成熟的、经过良好测试和封装的,我会将其保留为原始语言。但在COM或.NET中更容易实现,因为它们具有良好的互操作性和较低的开销

我只会在环境发生重大变化、语言过时或库需要重大前瞻性开发工作时进行移植,这实际上意味着它无论如何都需要重新进行全面测试。

这取决于

显然,从Lisp到C#的端口将是一种重写而不是端口,但我经常从更相似的语言中移植东西

如果你发现Y语言的工具集如此缺乏,也许你应该评估一下你对它的选择?

这取决于

显然,从Lisp到C#的端口将是一种重写而不是端口,但我经常从更相似的语言中移植东西


如果您发现Y语言的工具集非常缺乏,也许您应该评估一下您对它的选择?

如果您首选的语言互操作性不好,那么在需要大量互操作的项目中使用它可能是一个错误

例如,python是Eve在线服务器场的理想选择,但该项目几乎都是用python开发的,没有多少互操作性。对于必须与许多其他不变产品集成的企业应用程序来说,Python可能不是一个很好的选择。尽管这门语言很神奇,但它不是万能的,不应该被误用

我对我说的那些废话感到非常生气 不喜欢lang.x


必须有一个折衷方案,在没有lang.x所有失败的情况下,实现比lang.y更好的互操作。一些高级语言可以很好地处理本机代码。想到C#。

如果您喜欢的语言互操作性不好,那么在需要大量互操作的项目中使用它可能是一个错误

例如,python是Eve在线服务器场的理想选择,但该项目几乎都是用python开发的,没有多少互操作性。对于必须与许多其他不变产品集成的企业应用程序来说,Python可能不是一个很好的选择。尽管这门语言很神奇,但它不是万能的,不应该被误用

我对我说的那些废话感到非常生气 不喜欢lang.x


必须有一个折衷方案,在没有lang.x所有失败的情况下,实现比lang.y更好的互操作。一些高级语言可以很好地处理本机代码。C#出现在我的脑海中。

正如其他人所说,这要看情况而定

如果重新编码是非常重要的,那么当原始lang.x库发生更改时,您将面临一个进退两难的境地——您是否重新移植更新的版本,以及如何做到这一点

通常,最好用lang.y编写一个库包装器,调用lang.x库。这样,您就可以在“真正”使用库的代码中使用lang.y的良好特性,并且只需担心接口代码中的混乱。很可能一个稳定的库不会经常(不是每个版本)更改其接口,因此您可以升级lang.x库,而无需重新编码包装器代码。当您确实需要增强包装器代码时,添加新函数或修改一个或两个更改的接口通常是一个简单的练习

另一种选择是成为lang.y中库的维护者。您必须同时编辑lag.y实现和lang.x实现。您可以非正式地这样做(也就是说,您和您的雇主可能是唯一的受益者——注意图书馆的许可条款!),或者正式地成为图书馆开发团队的一员。然后,您可以影响库的设计,以便lang.y实现更容易与lang.x实现保持同步


摘要:尽可能长时间地保留库中的原始语言。除非您愿意进行必要的维护,否则在进行转换时要小心。

正如其他人所说,这取决于您的意愿

如果重新编码是非常重要的,那么当原始lang.x库发生更改时,您将面临一个进退两难的境地——您是否重新移植更新的版本,以及如何做到这一点

一般来说,最好用lang.y编写一个库包装器,即ca