5 ключевых достоинств и 3 главных недостатка Python

Код написанный на Python выглядит лаконичнее

В прошлый раз мы разобрали, почему Python – идеальный язык для входа в Data Science. Сегодня поговорим подробнее про его достоинства и недостатки. Читайте в нашей статье, как принципы PEP делают Python таким удобным для разработчика и почему простота этого языка программирования может обернуться ошибками и разочарованием.

Чем хорош Python: ТОП-5 преимуществ

  1. Простота. Python – понятный язык, с которым разберется любой желающий. Не требуется знать принципы ООП или сложные структуры данных. Возьмем для сравнения Java. Как на Java вывести в консоль «Hello, World»? Нужно создать класс, в котором объявить публичный статический метод main, принимающий в качестве аргумента массив строк. Далее в этом методе вызывается другой класс, который, наконец, выведет надпись в консоль. Как это делается в Python? Просто пишем: print(‘Hello, World’) и сразу же получаем результат.
    • Java:
    public class Example { // Класс
      public static void main(String[] args) { // Публичный статический метод
        System.out.println("Hello, world!"); // Статический класс
      }
    }
    • Python:
    print("Hello, world!")
  2. Расширяемость. Большое количество специализированных библиотек включает множество уже готовых программных конструкций. Это позволяет не тратить силы на их самостоятельную реализацию и экономит время программиста. Особенно стоит подчеркнуть библиотеки для Data Science: Scikit-learn, Matplotlib, Seaborn, Pandas, TensorFlow. Они включают различные алгоритмы Machine Learning, статистические инструменты, методы визуализации и интеллектуального анализа данных.
  3. Открытость. В отличие от закрытых и устоявшихся языков программирования, таких как Java (Oracle), C# (Microsoft) и пр., каждый разработчик может внести свой вклад в развитие языка. Например, если вы нашли какой-то баг или хотите расширить функциональные возможности языка, сделайте pull request в репозиторий на github или просто сообщите о своих идеях во вкладке issues [1] Такая открытость дает уверенность, что Python не содержит потенциальных уязвимостей, тайных функций слежений или других опасных аспектов.
  4. Читабельность. Python-сообщество имеет собственную конвенцию, так называемый PEP 8 [2], принципы которого они стремятся соблюдать на практике. Например, соблюдать отступ в 4 пробела после определения класса, функции или условия; импорт модулей делать в начале файла, а после ставить 2 пустые строки; в случае большого количества аргументов у функции, они должны быть написаны друг под другом, образуя визуальную таблицу:
    def long_function_name(var_one, var_two,
                                 var_three, var_four)

    Не приветствуется скомпонованные условия, когда несколько операций лежат на одной строчке:

    # Неправильно
    if foo == 'blah': do_blah_thing()
    do_one(); do_two(); do_three()
    
    # Правильно
    if foo == 'blah':
    do_blah_thing()
        do_one()
        do_two()
    do_one()
    do_two()
    do_three()
    

    Все это экономит время и силы разработчика при чтении чужого кода. Также отличная читаемость Python-кода достигается за счет лаконичности языка.

  5. Удобство. Встроенные структуры данных, такие как списки, словари, кортежи и множества, легко понятны и не отвлекают от работы по написанию кода. А способы их создания максимально просты и запоминаемы. Например, списки обворачиваются в квадратные скобки, кортежи — в круглые, множества и словари — в фигурные:
    fruits_l = ["banana", "apple", "lemon"] # список (list)
    fruits_t = ("banana", "apple", "lemon") # кортеж (tuple)
    fruits_s = {"banana", "apple", "lemon"} # множество (set)
    fruits_d = {"banana": 2, "apple": 6, "lemon": 3} # словарь (dictionary)

Что с ним не так: 3 ключевых недостатка

Обратной стороной вышеперечисленных достоинств являются следующие недостатки:

  1. Низкая скорость. Python – интерпретируемый язык, т.е. выполняется построчно и медленно. Как правило, в небольших проектах это не критично: обычно клиент даже не замечает, что код выполняется на полсекунды дольше. А в масштабных системах с большим объемом данных и сложными вычислениями разница уже заметна.
  2. Динамическая типизация, которая позволяет писать кратко, не объявляя тип переменной, например int. С одной стороны, это экономит время разработчика, но может привести к ошибкам при попытке выполнить операцию с несоответствующим типом данных. В результате могут появиться ошибки времени выполнения — runtime errors. Чтобы предотвратить это, потребуется дополнительное тестирование кода и добавление проверок на типы.
  3. Привычка к простоте.Человек быстро привыкает к хорошему: лаконичность и понятность Python-кода приводит к тому, что программист ищет этого же и в других языках. Например, читая Java-программу, питонист может возмутиться от обилия классов, круглых и фигурных скобок, странного объявления переменных и прочих неочевидных особенностей. Однако, мастер не должен зависеть от своего инструмента, а разработчик – от языка программирования.

В следующей статье мы рассмотрим 5 примеров написания Python-кода в одну строчку. А как на практике использовать все преимущества и обойти недостатки языка Python, вы узнаете на практических курсах по Python в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.

Источники
  1. https://github.com/python/cpython
  2. https://www.python.org/dev/peps/pep-0008/#indentation
2 Comments
    1. Исходя из какой статистики вы предполагаете, что язык умирает? Почти в каждой IT-области Python находится в топ-5 языков. В первую очередь это обусловливается его низким порогом входа, следовательно, больше людей им заинтересовываются. До этого все говорили, что Rust заменит Python, но что-то не видно этого.
      Скорость выполнения программ важна всегда, ведь чем она быстрее, тем лучше. Но для некоторых задач не критично, что программа выполняется на 0.5 миллисекунды дольше. А вот для задач где нужно считать каждый бит, то низкоуровневые языки могут пригодиться, но это узкий круг задач.
      Кроме того, в Python для увеличения скорости используется Cython, PyPy, Numba, многопоточность и асинхронность, какие-то внутренние реализации в виде генераторов или массивов NumPy. Если мы говорим о ML, то библиотеки TensorFlow и PyTorch предоставляют API для Python, т.е. вы пишете код в Python, но выполняется программа в C++.
      Поэтому пока стоит пользоваться чем есть, особенно, когда у Python высокая поддержка. Иначе можно состариться, дожидаясь нового чудо-языка программирования.

Добавить комментарий

Поиск по сайту