Java или Python?

Рейтинг: 1Ответов: 4Опубликовано: 10.05.2011

По производительности в разных источниках пишут разное, в одних что Python в десятки раз медленнее, по другим источникам одного порядка. Вообще какие минусы есть у них относительно друг друга? В Python как я понял больше разных фишек, но смущает динамическая типизация, кажется это неудобно(никогда не использовал). Вобщем сбор мнений)

Ответы

▲ 8

Язык сам по себе не имеет такой характеристики как скорость исполнения. Важны средства времени исполнения.

  • CPython интерпретируется и обычно медленнее, чем Java, особенно если в Java используется JIT-компиляция;
  • JYthon интерпретируется в JVM и по скорости не отличается от Java;
  • Cython компилируется в машинный код и по скорости превосходит Java.
▲ 5
  1. Считать производительность нужно не в разах, а в "приемлимо/неприемлимо"
  2. Девиз развития языков программирования и методик начиная с 50ых: Как уменьшить время разработки/изменения программ, при сохранении приемлимых скорости выполнения программ и потребления памяти. Универсального рецепта до сих пор нет, потому что с одной стороны железо так и не стало обладать бесконечными быстродействием и размером памяти, а с другой - при увеличении сложности программы (и как следствии - увеличении количества разработчиков) выявились сложности для обеспечения приемлимого качества разработки.
  3. Динамическая типизация призвана (и увеличивает) скорость разработки. За счет - снижения эффективности выполнения программы. И при увеличении размера программы и количества разработчиков - меры по обеспечению приемлимого качества разработки могут в итоге уравнять общую скорость разработки (утрировано - пишем на Python'е как будто на Java и разводим бюрократию процесса согласования и проч).

Минусы-плюсы в итоге - это одни и те же качества ЯП.

Например вот так:

Java:

Минус - статическая типизация

Плюс - статическая типизация

Python:

Минус - динамическая типизация

Плюс - динамическая типизация

Вот такие минусы есть у них относительно друг друга

▲ 2

Если брать в чистом виде, то,

Плюсы джава:

  1. выполнение джавовского байт-кода на порядки шустрее питоновского интерпретатора.
  2. статическая типизация в джаве способствует отлову множества ошибок на этапе компиляции.
  3. ООП в джаве очень хорошо проработан, по сравнению с довольно странной реализацией классов в питоне.
  4. неслабые возможности отладки в современных ИДЕ, заточенных под джаву (netbeans, eclipse, IDEA).

Плюсы питона:

  1. скриптовый язык не требует компиляции, следовательно просмотреть результат можно мгновенно после внесения изменений.
  2. куча приятных плюшек в плане синтаксиса, типа срезов массива и прочих фич по работе с коллекциями.

Итого. В каждом конкретном случае решает вопрос совокупность преимуществ, либо даже наличие всего одного преимущества. Зачастую мало меняющаяся и требовательная к скорости выполнения часть проекта крутится на джаве. а часто изменяемые компоненты делаются на питоне. Похожий подход кстати нередко применяют в игрушках: основу и графику пишут на С++, а игровую логику - на Python, Lua.

PS. Согласен на счет C# - шикарный потомок сишки + отличная ИДЕ. Но имеет массу недостатков как любой продукт МС. Платформозависим, изрядно дорог, перспективы зависят только от политики МС. Не-програмные недостатки т.с. :)

▲ 1

Попробуйте решите пару простеньких задачек, сначала на одном языке, потом на другом. Приходится использоваться оба языка одновременно, один для более трудоемких задач, другой для всякой мелочевки, типа парсинга логов :-)