Подтвердить что ты не робот

Java или Python для математики?

Я пытаюсь написать довольно сложный математический проект, который будет обрабатывать около 100 МБ + данных несколько раз в день, поэтому мне нужен быстрый язык, который довольно прост в использовании. Я бы поехал с C, но получить большой проект, сделанный на C, очень сложно, особенно с низким уровнем программирования на вашем пути. Итак, я был о python или java. Оба хорошо оснащены функциями OO, поэтому я не против этого. Теперь, вот мои профи для выбора python:

  • Очень простой в использовании язык
  • Имеет довольно большую библиотеку полезных вещей.
  • Имеет простую в использовании графическую библиотеку

Вот минусы:

  • Не совсем пылающий
  • Не существует активной нейронной сетевой библиотеки python
  • Я не могу закрыть исходный код без каких-либо проблем.
  • Развертывание кода на Python на компьютерах с клиентами трудно справиться, особенно когда клиенты являются идиотами.

Вот профи для выбора Java:

  • Огромная библиотека
  • Хорошо поддерживается
  • Простота развертывания
  • Довольно быстрый, возможно даже сопоставимый с С++
  • Библиотека Neuro Network Encog действительно активна и довольно удивительна
  • Поддержка сети действительно хороша.
  • Сильная типизация

Вот минусы для Java:

  • Я не могу найти хорошую графическую библиотеку, такую ​​как matplotlib для python
  • Нет встроенной поддержки больших целых чисел, это означает другую зависимость (я имею в виду ДЕЙСТВИТЕЛЬНО большие целые числа, а не только размер math.BigInteger)
  • Файл IO немного неудобен по сравнению с Python
  • Не тонна манипуляции массивом или "простой в программировании" тип функций, который имеет python.

Итак, я надеялся, что вы, ребята, можете мне сказать, что использовать. Я также знаком с обоими языками. Кроме того, предложения для других языков тоже велики.

ИЗМЕНИТЬ: WOW! вы, ребята, быстры! 30 минут на 10 ответов!

4b9b3361

Ответ 1

Java, как правило, быстрее запускается (не воспринимайте это как абсолютную истину), но медленнее писать.

Python - это противоположность. Поскольку библиотеки, такие как SciPy и NumPy уже существуют, которые основаны на быстром C-коде, я бы посоветовал пойти с Python, если вы предпочитаете идти "быстрее" с точки зрения написания кода. Если в SciPy + NumPy отсутствуют фундаментальные блоки для вашего приложения, и они существуют для Java.

Ответ 2

Почему бы не получить лучшее из обоих миров, воспользовавшись несколькими языками в JVM:

  • Записывайте узлы с высокой степенью детализации в Java (или используйте существующие большие библиотеки Java)
  • Используйте Jython, чтобы написать пользовательский интерфейс/приложение на Python и вызвать код Java при необходимости

Ответ 3

NumPy обычно накладывает немалый удар в вычислительную силу Python. Это стандарт defacto для любого реального количества хрустов в python. У меня нет реального опыта работы с Java в этом поле, поэтому я не очень квалифицирован, чтобы ответить на этот вопрос для вас.

Ответ 4

Развертывание кода на Python на компьютерах с клиентами с трудом справляется, особенно когда клиенты являются идиотами, я думаю, что это тоже проблема с Java.

Я не могу найти хорошую графическую библиотеку, такую ​​как matplotlib для python Вы пробовали JFreechart http://www.jfree.org/jfreechart/

Кроме того, предложения для других языков тоже велики, я бы предложил Groovy, он немного похож на Python и является JVM-языком, который хорошо интегрируется с Java.

Вы не спрашивали об этом напрямую, но я порекомендую вам библиотеку Apache Commons Math для математических вычислений Java.

Ответ 5

Если это выбор, тогда Java должен быть быстрее для интенсивной работы с математикой. Он скомпилирован (хотя да, он все еще работает с байтовым кодом).

Экзелиан упоминает NumPy. Там также пакет SciPy. Оба заслуживают внимания, но только на самом деле, похоже, дают ускорение для работы с большим количеством массивов и векторной обработки. Когда я попытался использовать их с NLTK для обычной математики, я обнаружил, что ускорения не было.

Для работы с интенсивной математикой в ​​эти дни я бы использовал C/С++ или С# (лично я предпочитаю С# над Java, хотя это не должно влиять на ваше решение). Мой первый работодатель из университета. заплатил мне, чтобы использовать Fortran для вещей, которые почти наверняка более интенсивны в математике, чем все, о чем вы думаете. Не смейтесь - компиляторы Fortran - одни из лучших для математической обработки на тяжелом железе.

Ответ 6

Что для вас важнее?

Если это была быстрая разработка приложений, я нашел, что Python значительно проще кодировать, чем Java, и я просто изучал Python, в то время как я кодировал Java на протяжении многих лет.

Если скорость приложения и возможность повторного использования существующего кода, вы должны, вероятно, придерживаться Java. Это разумно быстро и много исследований в настоящее время используют Java в качестве своего языка выбора.

Ответ 7

Кажется, Java может быть очень быстрым: http://blog.dhananjaynene.com/2008/07/performance-comparison-c-java-python-ruby-jython-jruby-groovy/
С другой стороны, Python очень хорош для математики, и там достаточно много возможностей для улучшения производительности, если вы используете его правильно (я имею в виду, с правильными идиомами/модулями/встроенными функциями).

Изменить: Предложения для других языков: Haskell. Это очень высокий уровень; записывая его в стиле "низкого уровня", он может быть очень быстрым (может довольно неплохо сравниться с C) и даже лучше, если вы можете использовать его многопоточность. Однако опыт говорит о том, что он никогда не учится использовать новые инструменты, пока они необходимы в проекте.

Ответ 8

Apache Commons Math поднял место, где JAMA остановился. Они вполне способны к научным вычислениям.

Итак, Python - NumPy и SciPy превосходны. Мне также нравится тот факт, что Python является гибридом объектно-ориентированного и функционального программирования. Функциональное программирование очень полезно для численных методов.

Я бы рекомендовал использовать тот, который вам лучше всего известен, но если выбор - это бросок, я могу наклониться к Python.