2010-01-27 1 views
4

Мне нужно написать прототип приложения для инжиниринговой компании. Большая часть работы - это расчет различных инженерных свойств (я говорю о трубах и реальных вещах здесь, а не о разработке программного обеспечения).Выберите язык для написания технических технических заданий (могу ли я использовать Java?)

Тем не менее, также должна быть GUI для:

  • ввода параметров
  • отображения результатов
  • некоторых базовые диаграммы

  • Работа расчета на данный момент не включают в себя сложные математические элементы (не матрицы в данный момент), просто журналы, квадратные корни, относительно простые формулы. Позже я должен сделать некоторые из них:

  • аппроксимации кривой
  • численное приближение

  • мне было интересно, если Java используется для реальных инженерных приложений?

    Существуют ли библиотеки для такого рода вещей?

    Или мне лучше писать в MatLab, а затем подключаться к коду через Java?

    Также доступен на других языках (хотя мы являемся магазином Java).

    ответ

    4

    Python имеет несколько инструментальных средств приличная GUI, а также NumPy, и легко и весело писать.

    +0

    Если он работает в магазине Java, я бы не использовал библиотеку python, хотя это может быть более забавно. Графический интерфейс не является главной проблемой проекта, вы можете использовать любую панель любой структуры Gui. – bertolami

    +0

    Вот почему я упомянул NumPy. Это похоже на MatLab, но без MatLab. –

    +0

    Вы можете использовать Jython, если вам нужно взаимодействовать с Java. Я не знаю, есть ли проблемы с использованием Jython с SciPy, но есть проблемы с использованием Iron Python с SciPy: вам нужно, чтобы IronClad вызывал функции, встроенные внутри C. –

    4

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

    Плюсы:

    • универсальный графический инструментарий для настольных приложений в стандартной библиотеке (свинг),
    • (относительно) кросс-платформенный,
    • большие библиотеки, например, от Apache; отличная математическая библиотека для просмотра будет colt; для графиков и диаграмм, вы можете, как jfreechart ..

    Минусы:

    • "не столь быстрые" возможности прототипирования

    Дальнейшее чтение:

    4

    Я проделал определенную работу, где мне пришлось переопределить код Matlab на Java, поэтому это, безусловно, возможно. Код Java может оказаться довольно многословным по сравнению с оригиналом Matlab, поскольку Matlab может работать непосредственно на матрицах/массивах и т. Д.

    Некоторые математические библиотеки, которые вы можете посмотреть, чтобы увидеть, если они поддерживают функциональные возможности вы ищете:

    1

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

    +0

    вы также можете использовать GNU octave (free, GPL) – Demi

    14

    У меня есть опыт как Matlab, так и Java для научных/инженерных типов кодов. Да, Java используется для реальных научных и инженерных кодов, и есть доступные библиотеки. Вы, конечно же, можете делать то, что хотите, либо я не уверен, что вы могли бы разумно отличить эти два на основе ваших текущих требований. Я задал себе следующие вопросы:

    1. Насколько я могу при программировании передовых математических операций? Операции, такие как минимизация функций, решатели дифференциальных уравнений, матричная алгебра. Если ответ не очень, то наклонитесь к Matlab, который предоставит все эти готовые файлы (хотя вам могут понадобиться дополнительные панели инструментов). Если вы выберете Java, убедитесь, что вы очень довольны арифметикой с плавающей запятой и имеете дело с теми ошибками, которые возникают при ее использовании.
    2. Я хочу кодировать все в Java, все в Matlab, или я счастлив использовать оба и бороться с, скажем, графическим интерфейсом Java на движке Matlab? Я думаю, что вы можете сделать намного лучше (в неопределенном смысле) графические интерфейсы с Java, чем с Matlab, но возможности графического интерфейса Matlab достаточно хороши для большинства его пользователей, что сложность интеграции Matlab с Java не стоит решать. Но тогда многие пользователи Matlab не являются разработчиками программного обеспечения.
    3. Какая скорость разработки необходима для работы прототипа? Если бы вы были в равной степени квалифицированы на Java и в Matlab, я бы предположил, что вы можете сделать это быстрее в Matlab, потому что числовые данные уже предоставлены, вы можете сосредоточиться на графическом интерфейсе. Но если вы опытный Java-программист, выходящий недавно в Matlab, вы можете решиться придерживаться того, что знаете.
    4. Как я смогу разработать и развернуть производственное приложение, если прототип будет успешным? Если Matlab не соответствует вашим идеям развертывания, тогда его изучение и забывание могут не быть полезными.

    Наконец, поскольку вы запрашиваете рекомендации на другом языке: забудьте Java, забудьте о Matlab, забудьте Python, забудьте R, используйте Mathematica, это намного веселее и очень мощно.

    +0

    +1 для полного размышления над рекомендацией. – Kena

    0

    Я бы сделал поиск программного обеспечения, которое написано для расчета трубопроводов. Эта проблема была решена. (Как вы уже отметили, расчеты не должны быть трудными.) Как минимум, я бы рекомендовал вам знать, что доступно для вас, сколько это будет стоить, и где точка безубыточности предназначена для затрат на разработку.

    Коммерческий продукт будет иметь огромное преимущество над чем-либо, что вы напишете: у него будет более широкое сообщество пользователей, которое будет стучать по нему и обнаруживает ошибки в течение более длительного периода времени, чем ваш прототип. Это тоже стоит того.

    Какова ваша возможность? Что еще вы могли бы сделать со временем разработки, которое принесло бы больший доход?

    0

    Не забудьте numpy или scipy. Оба позволяют вызывать быстрые библиотеки матриц из Python.

    Смежные вопросы