<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">El 13 de marzo de 2015, 12:28, <a href="mailto:piranna@gmail.com">piranna@gmail.com</a> <span dir="ltr"><<a href="mailto:piranna@gmail.com" target="_blank">piranna@gmail.com</a>></span> escribió:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">> Yo nunca he usado npm (ni pienso) pero te contesto con otra pregunta<br>
> (honestamente no la sé): ¿en Node.js hay paquetes que combinan JavaScript,<br>
> C, C++ y Fortran?<br>
<br>
</span>Definitivamente, si :-) npm es agnostico al lenguaje y a la plataforma<br>
(vamos, como apt) asi que se puede meter dentro lo que quieras.<br>
Fortran no lo he visto pero no habria ningun problema.<br></blockquote><div><br></div><div>Al igual que Python y pip. El problema lo tiene el empaquetador y la responsabilidad que quiera adquirir con determinados usuarios.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Respecto a C/C++ hay muchos modulos compilados en npm (realmente se<br>
compilan en el cliente con node-gyp que se ha convertido en el entorno<br>
de compilacion oficial de npm, pero usando node-pre-gyp puedes usar<br>
algun modulo precompilado si el autor lo ha subido para tu plataforma<br>
a AWS o similar). Hasta la version 0.8 se compilaba directamente<br>
contra los headers de Node.js, pero a partir de la version 0.10 se ha<br>
puesto de moda el usar NAN (<a href="https://www.npmjs.com/package/nan" target="_blank">https://www.npmjs.com/package/nan</a>) que son<br>
una serie de macros que abstraen de las diferencias en las APIs entre<br>
versiones y en la version 0.12 ya es la forma oficial de hacer modulos<br>
compilados.<br>
<br>
Respecto a si hay paquetes que combinan varios lenguajes, ws es la<br>
libreria para WebSockets por excelencia y permite ser usada solo con<br>
Javascript o usano modulos compilados de C++ para aumentar el<br>
rendimiento, y en NodeOS tenemos un monton de dependencias compiladas<br>
para poder acceder a los syscalls de Linux o para montar los sistemas<br>
de ficheros :-)<br>
<br>
<a href="https://github.com/NodeOS/nodeos-mount" target="_blank">https://github.com/NodeOS/nodeos-mount</a><br>
<a href="https://www.npmjs.com/package/nodeos-mount" target="_blank">https://www.npmjs.com/package/nodeos-mount</a><br>
<br>
Ahi tienes un ejemplo "sencillo" (se lee en 5 minutos) de Javascript y<br>
C++ viviendo en armonia, e instalable desde npm :-) Simplemente tienes<br>
que hacer "npm install" y ya lo tienes :-D<br>
<br>
(Y si, esa "magia" es la que me gusta de npm, lo sencillo e integrado<br>
que esta todo. Quizas sea ese su secreto...)<br></blockquote><div><br></div><div>Yo también hago 'pip install numpy' y me instala ficheros python, C, C++, Cython, Fortran,...</div><div><br></div><div>En el mundo de los paquetes hay dos grandes problemas.</div><div>-Al instalar. Pip resuelve el 95% de los casos de forma satisfactoria (nunca he tenido problemas serios con pip, de hecho, creo que pip no tiene la culpa de ello). Pip se encarga de hacer lo que diga el setup.py.</div><div>-Al crear el paquete. Aquí existen muchos problemas porque cuando el paquete no es puro Python y tiene muchas dependencias no hay una forma obvia y bien explicada de hacer las cosas. Aquí, y solo aquí, es donde conda puede aportar cosas, intentando unificar este problema y resolverlo.</div><div><br></div><div>El problema de crear el paquete también viene derivado de la diversidad/fragmentación existente en el software en general (sistemas operativos, versiones de sistemas operativos, compiladores, versiones de lenguaje, que cada loco mete lo que quiere en su jardín y no es compatible con lo del resto porque se dedica a eso y tiene sus propios intereses,...).</div><div><br></div><div>Nos metemos todos los días con pip pero creo que pip no es el problema y creo que el problema no es único de Python.</div><div><br></div><div>Y crear millones de copias del mismo paquete para cada paquete que lo requiere no creo que sea una solución muy satisfactoria pero node es cool y en node todo mola... Cambia node por python, julia, elyxir o el lenguaje del que esté s enamorado en el momento de hacer tu afirmación.</div><div><br></div><div>Saludos.</div></div></div></div>