usados programas programar programacion para mejor mas lenguajes lenguaje aprender java python math stocks

programas - ¿Java o Python para matemáticas?



programas para programar (8)

Estoy intentando escribir un proyecto bastante pesado basado en matemáticas, que analizará aproximadamente 100 MB + de datos varias veces al día, así que necesito un lenguaje rápido que sea bastante fácil de usar. Hubiera optado por C, pero lograr un gran proyecto realizado en C es muy difícil, especialmente con la programación de bajo nivel que se interpone en tu camino. Entonces, yo estaba sobre python o java. Ambos están bien equipados con características OO, así que no me importa. Ahora, aquí están mis ventajas para elegir python:

  • Lenguaje muy facil de usar
  • Tiene una biblioteca bastante grande de cosas útiles
  • Tiene una biblioteca de trazado fácil de usar

Aquí están los contras:

  • No exactamente ardiendo
  • No hay una biblioteca de red neuronal nativa de Python que esté activa
  • No puedo cerrar la fuente de mi código sin pasar por un poco de problemas
  • Implementar el código de Python en las computadoras de los clientes es difícil de manejar, especialmente cuando los clientes son idiotas.

Aquí están los pros para elegir Java:

  • Enorme biblioteca
  • Bien apoyado
  • Fácil de implementar
  • Bastante rápido, posiblemente incluso comparable a C ++
  • La biblioteca de la red neuronal de Encog es muy activa y bastante impresionante
  • El soporte de red es realmente bueno
  • Mecanografía fuerte

Aquí están los contras para Java:

  • No puedo encontrar una buena biblioteca de gráficos como matplotlib para python
  • No hay soporte integrado para los enteros grandes, eso significa otra dependencia (me refiero a los enteros REALMENTE grandes, no solo a las matemáticas. Tamaño de Ingeniero Grande)
  • El archivo IO es un poco extraño en comparación con Python
  • No es un montón de funciones de manipulación de matrices o de "simplificación de programación" que Python tiene.

Entonces, esperaba que ustedes me dijeran qué usar. Estoy igualmente familiarizado con los dos idiomas. Además, las sugerencias para otros idiomas también son excelentes.

EDITAR: ¡GUAU! ustedes son rápidos 30 minutos a 10 respuestas!


¿Por qué no aprovechar lo mejor de ambos mundos aprovechando múltiples idiomas en la JVM?

  • Escriba las partes de rendimiento intensivo en Java (o use las grandes bibliotecas de Java existentes)
  • Use Jython para escribir la interfaz de usuario / aplicación en Python y llame al código Java cuando sea necesario

¿Qué es más importante para ti?

Si se trata de un rápido desarrollo de aplicaciones, me pareció que Python era mucho más fácil de codificar que Java, y estaba aprendiendo Python, mientras que yo había estado codificando en Java durante años.

Si se trata de la velocidad de la aplicación y la capacidad de reutilizar el código existente, entonces probablemente debería quedarse con Java. Es razonablemente rápido y muchos de los esfuerzos de investigación en este momento utilizan Java como el idioma de su elección.


El Apache Commons Math retomó donde JAMA lo dejó. Son bastante capaces para la computación científica.

Así es Python - NumPy y SciPy son excelentes. También me gusta el hecho de que Python es un híbrido de orientación a objetos y programación funcional. La programación funcional es muy útil para los métodos numéricos.

Recomiendo usar el que mejor conozcas, pero si la elección es un lanzamiento, podría inclinarme hacia Python.


Java generalmente será más rápido de ejecutar (no tome esto como una verdad absoluta), pero más lento de escribir.

Python es lo contrario. Dado que ya existen bibliotecas como SciPy y NumPy , que se basan en el código C rápido, sugeriría ir con Python si prefiere ir por la vía "más rápida" en términos de escritura de código. A menos que falten bloques fundamentales para su aplicación en SciPy + NumPy, y que existan para Java.


Parece que Java puede ser realmente rápido: http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
Por otro lado, Python es muy bueno para hacer matemáticas, y hay bastante espacio para mejorar el rendimiento si lo usas correctamente (es decir, con los idiomas / módulos / funciones incorporados adecuados).

Edición: Sugerencias para otros idiomas: Haskell. Es muy alto nivel; escribiéndolo en "estilo de bajo nivel" puede ser muy rápido (puede compararse bastante con C) y es aún mejor si puede hacer uso de sus capacidades de subprocesos múltiples. Sin embargo, la experiencia indica que nunca es bueno aprender a usar nuevas herramientas mientras se necesitan en un proyecto.


Si esas son las opciones, entonces Java debería ser más rápido para el trabajo intensivo de matemáticas. Se compila (aunque sí, todavía está ejecutando el código byte).

Exelian menciona NumPy. También está el paquete SciPy. Vale la pena mirar a ambos, pero solo parecen dar mejoras de velocidad para el trabajo con muchos arreglos y procesamiento de vectores. Cuando traté de usar estos con NLTK para una rutina de matemáticas intensivas, descubrí que no había tanta aceleración.

Para el trabajo intensivo de matemáticas en estos días, estaría usando C / C ++ o C # (personalmente prefiero C # sobre Java, aunque eso no debería afectar tu decisión). Mi primer empleador fuera de la universidad. me pagó para usar Fortran para cosas que es casi más intensiva en matemáticas que cualquier cosa que estés pensando. No se ría: los compiladores de Fortran son algunos de los mejores para el procesamiento matemático en hierro pesado.


NumPy general, NumPy pone bastante valor en la fuerza computacional de Python. Es el estándar de facto para cualquier crujido de números reales en Python. No tengo ninguna experiencia real con Java en este campo, por lo que no estoy realmente calificado para responder esta pregunta.


Implementar el código de Python en las computadoras de los clientes es difícil de manejar, especialmente cuando los clientes son idiotas. Creo que esto también es un problema con Java.

No puedo encontrar una buena biblioteca gráfica como matplotlib para python. ¿Has probado JFreechart http://www.jfree.org/jfreechart/

Además, las sugerencias para otros idiomas también son excelentes. Yo sugeriría Groovy, se parece un poco a Python y es un lenguaje JVM que se integra bien con Java.

No lo preguntaste directamente, pero te recomendaré la biblioteca matemática de Apache Commons para cálculos de Java en matemáticas.