¿Qué interfaces existen para vincular Erlang con C++?Integrar Erlang con C++
Respuesta
Native implemented functions: disponible en la versión más reciente de Erlang/OTP, le permite implementar cualquiera de sus funciones en C.
Port drivers: se puede enlazar un código C para la máquina virtual de Erlang, y acceder a ella usando port_command.
C Nodos: Con la biblioteca ei puede imitar una VM y hablar con sus máquinas virtuales Erlang utilizando el formato de distribución Erlang.
Lo más parecido que conozco para interactuar con Erlang C++ directamente EPAPI es. Por supuesto, se basa en el probado C erl_interface
que viene de serie con la distribución de Erlang.
Para la excelente respuesta de Zed, agregaría open_port()
. Le permite iniciar un programa externo y comunicarse con él desde Erlang usando su entrada y salida estándar. Puede usarlo como las tuberías de Unix dando la opción {line, L}, o también existe la opción {paquete, N} con prefijo de longitud que me parece más segura y más eficiente.
La ventaja de esto sobre NIF y controladores de puerto es que su código Erlang está totalmente aislado del código C. El programa C puede destruir su propia pila, bloques de memoria doblemente libres, ingresar un bucle infinito, lo que sea. Nada de esto detiene su código Erlang. En el peor de los casos, cierra el puerto de Erlang y lo vuelve a abrir si las cosas van en forma de pera.
Cualquier persona interesada en el aspecto de integración Erlang/C++, también puede que desee revisar este artículo: Rewriting Playdar: C++ to Erlang, massive savings:
He escuchado muchas anécdotas y reclamos acerca de cuántas líneas de código se guardan cuando se escribe en Erlang en lugar de [C++/otro idioma]. Me complace informar que ahora tengo experiencia de primera mano y algunos datos para compartir.
Inicialmente escribí Playdar en C++ (usando las bibliotecas Boost y Asio), comenzando en febrero de este año. Tuve la suerte de trabajar con desarrolladores experimentados que me ayudaron a aceptar C++. Hubo tres de nosotros hackeando regularmente hasta hace unos meses, y a pesar de ser relativamente nuevo en C++, diré que terminamos con una base de código sólida y bien diseñada, considerando todo.
Comenzaron a escribir 8,035 líneas de código, y unas semanas más tarde escribieron 10,067 líneas de código. código, el 80% de los cuales tiraron, no había agregado ninguna funcionalidad nueva en el proceso, esto es un ahorro? Debe ser una fuente de código abierto, ya que no hay forma de que un negocio justifique eso. (Escribirlo en Erlang para empezar sería una cuestión diferente) –
Es un ahorro importante cuando se trata de reducir la deuda técnica futura. Menos líneas de código = más fáciles de mantener, depurar y agregar nuevas características más adelante. – DSimon
- 1. mejor manera de integrar erlang y python
- 2. Erlang - C y Erlang
- 3. ¿Se puede integrar Doxygen con Netbeans C++?
- 4. erlang incrustado en C
- 5. Integrar solr con mySql
- 6. Integrar Spring con IntelliJ
- 7. ¿Integrar SVN con Notepad ++?
- 8. Integrar generación de código con eclipse C++ compilación
- 9. Cómo integrar Redis con SQLAlchemy
- 10. ¿Integrar Hudson con MS Test?
- 11. ¿Cómo integrar CKFinder con CKEditor?
- 12. Cómo integrar ezComponents con Magento
- 13. ¿Cómo integrar websocket con emberjs?
- 14. Cómo integrar NHibernate con Lucene.Net
- 15. ¿Cómo integrar NSURLConnection con UIProgressView?
- 16. Erlang C nodo relacionado pregunta
- 17. ¿Hay herramientas para integrar Java y C++?
- 18. Cómo integrar OpenStreet Map en C# winforms
- 19. Cómo integrar MailChimp en C# /. Net
- 20. Erlang y binario con cirílico
- 21. ¿Es posible integrar Spring MVC con Guice?
- 22. ¿Cómo integrar solr o elasticsearch con JPA?
- 23. Integrar mi aplicación con el contacto
- 24. ¿Cómo integrar ZF2 con Doctrine Mongo ODM?
- 25. ¿Cómo puedo integrar PayPal con ASP.NET?
- 26. Cómo integrar JQGrid con Django/Python
- 27. ¿Cómo integrar Tapku con el servicio CalDAV?
- 28. Cómo integrar PayPal con Zend Framework
- 29. ¿Tiene sentido integrar backbone.js con ASPNET MVC?
- 30. ¿Se puede integrar Magento con CakePHP?
NFI son todavía experimentales ... pero estoy esperanzado y esperando ansiosamente una interfaz estable para estos! – jldupont
Cierto, son experimentales, pero tener una implementación de la función Erlang "fallback" es tan buena que incluso vale la pena cambiar tu código C para cada próxima versión :) – Zed
¡Sí, estoy de acuerdo! – jldupont