Python
Высокоуровневый язык программирования, применяемый для широкого спектра задач. Достаточно убог сам по себе, но исторически очень распространён (возможно из-за влияния корпораций в частности Google). Python неплох относительно другого мейнстрима.
Два основных фреймворка для web:
Ключевые слова:
- and
- as
- assert
- async
- await
- break
- class
- continue
- def
- del
- elif
- else
- except
- False
- finally
- for
- from
- global
- if
- import
- in
- is
- lambda
- None
- nonlocal
- not
- or
- pass
- raise
- return
- True
- try
- while
- with
- yield
Интерфейсы в Python:
- Абстрактные классы с использованием @abstractMethod
- Протоколы из MyPy
Ультимативная справка по языку: https://gto76.github.io/python-cheatsheet/
Профилирование и дебаг:
- Objgraph Рисует графы, созданных объектов
- Pympler Показывает сколько памяти едят те или иные объекты
- Mprof Рисует график потребления памяти с течением времени
Преимущества Python:
- Есть работа
- Маленький язык (не так много лексем, 1.2 миллионов строк кода на си, openjdk например около 20)
- Хоть какая-то интерактивная разработка и интроспекция
- Есть doc-string
Недостатки Python:
- Байткод никак не оптимизируется
- Boolean это числа -1, 0 и 1
- Нет Multiple Dispatch (https://github.com/mrocklin/multipledispatch) (Как перегружать функции в Python)
- Нет модификаторов доступа
- Нет интерфейсов
- Нет встроенной проверки типов
- Нет стандарта
- Низкая производительность
- Отсутствует jar / phar
- GIL
- Слишком сильно отличающийся синтаксис по сравнению с C / C++ / Java
- Множественное наследование
- Плохая поддержка функциональной парадигмы
- Замыкание реализовано через ООП костыль
- Неявные сокращения в стандартной библиотеке
- Нарушение совместимости (Python 2 => Python 3)
- Слишком много пакетных менеджеров
- Нет switch-case
- Не настолько сильно переносим на другие системы как Java (особенно под Windows)
- В документации не пишет полную API функций (например не пишет какие типы она конкретно принимает и возвращает), но это решается нынче аннотациями типов для стандартной библиотеки.
- 4 способа отформатировать строку
- List comprehensions сложные для чтения (фп подход был бы понятнее)
- Отсутствует Let
- Есть None
https://wiki.python.org/moin/PythonWarts
Видео:
Книги:
- От лутца
Веб-сайты: