存在哪些接口将Erlang与C++联系在一起?将Erlang与C++集成
回答
Native implemented functions:在最新的Erlang/OTP版本,可以让你实现你的任何功能C.
Port drivers:您可以将所需的C代码到二郎山VM,和访问使用port_command。
C节点:通过ei库,您可以模拟虚拟机并使用Erlang分发格式与您的Erlang虚拟机交谈。
对于Zed的优秀答案,我会加open_port()
。它可以让你启动一个外部程序并使用标准的Erlang与Erlang进行通信。你可以通过给出{line,L}选项来像Unix管道一样使用它,或者也有长度前缀的{packet,N}选项,我发现它更安全和更高效。
这比NIF和端口驱动程序的优点是你的Erlang代码完全与C代码无关。 C程序可以粉碎它自己的堆栈,双倍空闲的内存块,进入无限循环等等。这些都不会阻止你的Erlang代码。最糟糕的是,如果事情变成梨形,你关闭Erlang端口并重新打开它。
任何有兴趣用Erlang/C++集成方面,也可能想看看这篇文章:Rewriting Playdar: C++ to Erlang, massive savings:
我听说过很多趣事和权利要求书有多少行代码,当你写保存在Erlang中而不是[C++/other language]。我很高兴地报告,我现在有第一手的经验和一些数据可以分享。
我最初在C++(使用Boost和Asio库)中编写Playdar,从今年2月份开始。我很幸运能够与一些有经验的开发人员合作,他们帮助我了解C++。直到几个月前,我们有三个人经常对它进行攻击,尽管对C++来说是相对陌生的事情,但我会说,我们最终设计了一个设计良好且健壮的代码库,所有事情都考虑在内。
他们开始编写了8,035行代码,几周后他们写了10,067行代码中,他们扔掉了80%的代码,在这个过程中没有添加新的功能,这是一个节约?必须是开源的东西,因为企业无法证明这一点。 (写在Erlang开始将是另一回事) – 2010-02-28 16:21:23
这是减少未来技术债务的主要节约。更少的代码行数=稍后更易于维护,调试和添加新功能。 – DSimon 2015-07-14 20:29:24
- 1. 将Prolog与C集成#
- 2. 将Java与C#集成在一起.net
- 3. 将pygame与C模块集成
- 4. 将C#集成到C++中
- 5. 将Spring MVC与Spring集成集成
- 6. 与C#的RDF集成
- 7. C#与MySql的集成
- 8. 集成织物(Crashlytics)与C++
- 9. 与Chartboost集成objective-c
- 10. rabbitmq - erlang客户端与ejabberd模块集成
- 11. 将Nhibernate.Search与Nhibernate 2集成
- 12. 将Apache kafka与Angular.js集成
- 13. 将Bluesnap API与Salesforce集成
- 14. 将ExtJS与JAX-RS集成
- 15. 将Okta与Windows集成ACS
- 16. 将Trac + SVN与Doxygen集成
- 17. 将Angular.js SPA与.NET集成
- 18. 将gmf与xpand oaw集成
- 19. 将Optimizely与Adobe Analytics集成
- 20. 将生菜与TeamCity集成
- 21. 将Eclipse与MySQL集成
- 22. 将PHPUnit与CakePHP 1.3集成
- 23. 将枝条与react.js集成
- 24. 将AWS Lex与Skype集成
- 25. 将Opbeat与Totaljs集成
- 26. 将jquery-mobile与struts2集成
- 27. 将PartCover.NET与NAnt集成
- 28. 将wordnet与solr集成
- 29. 将学说与PyroCMS集成
- 30. 将zendframework与drupal集成
NFI仍然是实验性的...但我希望并热切地等待这些稳定的接口! – jldupont 2009-11-28 11:39:35
确实,它们是实验性的,但是有一个“后备”Erlang函数实现非常好,它甚至值得为每个即将发布的版本改变你的C代码:) – Zed 2009-11-28 15:44:46
是的,我同意! – jldupont 2009-11-28 16:58:32