В прошлый раз мы разобрали, почему Python – идеальный язык для входа в Data Science. Сегодня поговорим подробнее про его достоинства и недостатки. Читайте в нашей статье, как принципы PEP делают Python таким удобным для разработчика и почему простота этого языка программирования может обернуться ошибками и разочарованием.
Чем хорош Python: ТОП-5 преимуществ
- Простота. 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!")
- Расширяемость. Большое количество специализированных библиотек включает множество уже готовых программных конструкций. Это позволяет не тратить силы на их самостоятельную реализацию и экономит время программиста. Особенно стоит подчеркнуть библиотеки для Data Science: Scikit-learn, Matplotlib, Seaborn, Pandas, TensorFlow. Они включают различные алгоритмы Machine Learning, статистические инструменты, методы визуализации и интеллектуального анализа данных.
- Открытость. В отличие от закрытых и устоявшихся языков программирования, таких как Java (Oracle), C# (Microsoft) и пр., каждый разработчик может внести свой вклад в развитие языка. Например, если вы нашли какой-то баг или хотите расширить функциональные возможности языка, сделайте pull request в репозиторий на github или просто сообщите о своих идеях во вкладке issues [1] Такая открытость дает уверенность, что Python не содержит потенциальных уязвимостей, тайных функций слежений или других опасных аспектов.
- Читабельность. 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-кода достигается за счет лаконичности языка.
- Удобство. Встроенные структуры данных, такие как списки, словари, кортежи и множества, легко понятны и не отвлекают от работы по написанию кода. А способы их создания максимально просты и запоминаемы. Например, списки обворачиваются в квадратные скобки, кортежи — в круглые, множества и словари — в фигурные:
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 ключевых недостатка
Обратной стороной вышеперечисленных достоинств являются следующие недостатки:
- Низкая скорость. Python – интерпретируемый язык, т.е. выполняется построчно и медленно. Как правило, в небольших проектах это не критично: обычно клиент даже не замечает, что код выполняется на полсекунды дольше. А в масштабных системах с большим объемом данных и сложными вычислениями разница уже заметна.
- Динамическая типизация, которая позволяет писать кратко, не объявляя тип переменной, например int. С одной стороны, это экономит время разработчика, но может привести к ошибкам при попытке выполнить операцию с несоответствующим типом данных. В результате могут появиться ошибки времени выполнения — runtime errors. Чтобы предотвратить это, потребуется дополнительное тестирование кода и добавление проверок на типы.
- Привычка к простоте.Человек быстро привыкает к хорошему: лаконичность и понятность Python-кода приводит к тому, что программист ищет этого же и в других языках. Например, читая Java-программу, питонист может возмутиться от обилия классов, круглых и фигурных скобок, странного объявления переменных и прочих неочевидных особенностей. Однако, мастер не должен зависеть от своего инструмента, а разработчик – от языка программирования.
В следующей статье мы рассмотрим 5 примеров написания Python-кода в одну строчку. А как на практике использовать все преимущества и обойти недостатки языка Python, вы узнаете на практических курсах по Python в нашем лицензированном учебном центре обучения и повышения квалификации ИТ-специалистов в Москве.
Умирающий язык, просто потому что скорость выполнения программы доминирует, а значит надо ждать что-то типа ассемблера, но более простого и портируемого.
Исходя из какой статистики вы предполагаете, что язык умирает? Почти в каждой IT-области Python находится в топ-5 языков. В первую очередь это обусловливается его низким порогом входа, следовательно, больше людей им заинтересовываются. До этого все говорили, что Rust заменит Python, но что-то не видно этого.
Скорость выполнения программ важна всегда, ведь чем она быстрее, тем лучше. Но для некоторых задач не критично, что программа выполняется на 0.5 миллисекунды дольше. А вот для задач где нужно считать каждый бит, то низкоуровневые языки могут пригодиться, но это узкий круг задач.
Кроме того, в Python для увеличения скорости используется Cython, PyPy, Numba, многопоточность и асинхронность, какие-то внутренние реализации в виде генераторов или массивов NumPy. Если мы говорим о ML, то библиотеки TensorFlow и PyTorch предоставляют API для Python, т.е. вы пишете код в Python, но выполняется программа в C++.
Поэтому пока стоит пользоваться чем есть, особенно, когда у Python высокая поддержка. Иначе можно состариться, дожидаясь нового чудо-языка программирования.