===== Прикладное программирование =====
* Синтаксис языка программирования ([[base:cheat|шпаргалка]])
* Типы данных языка
* Приёмы работы (best practice)
* Платформа
* стандартная библиотека (os, sys, glob, ...)
* сторонние библиотеки (numpy, matplotlib, scipy, ...)
* способ установки (pip, https://pypi.org/, setup.py)
* Средства разработки (IDE, VCS, отладчик, тесты...)
* Алгоритмы
===== Почему Python? =====
* Лаконичный, емкий и простой синтаксис
* Кроссплатформенность
* Открытое ПО
* Богатая стандартная библиотека
* Огромное количество доступных для загрузки библиотек, в том числе для решения научных задач
* Огромное сообщество разработчиков
* Простота интеграции с библиотеками написанными на C
===== Почему не Python? =====
* Производительность*
* Непривычный по сравнению с C/C++/C#/Java синтаксис
* Больше ошибок времени исполнения из-за динамической типизация
* Не всегда есть исчерпывающая документация, особенно по сторонним модулям
* Нет IDE с поддержкой визуального создания пользовательского интерфейса
* Сложно создавать самостоятельные приложения для Windows и Mac
*Время разработчика дороже времени компьютера*
===== Для чего применяют Python? =====
* Гармонизация данных
* Научное программирование (Spyder, PyZo, Jupyter,...)
* Вычисления и анализа данных (NumPy, SciPy, Pandas, ...)
* Решение задач в конкретных предметных областях (ObsPy, AstroPy, ...)
* Построение веб-приложений (Django, Flask, ...)
* Макросы и текстовая консоль для приложений (Blender, QGis, LibreOffice, ...)
* Метапрограммирование (Keras, FEniCS, ...)
* Прототипирование ПО
* Утилиты для системного администрирования (Ansible, Fabric, Shinken, ...)
====== Python2 и Python3 ======
* До недавнего времени существовали две не вполне совместимые между собой версии языка Python: Python2 и Python3, для любознательных: [[http://sebastianraschka.com/Articles/2014_python_2_3_key_diff.html|подробный разбор различий]].
* Поддержка Python2 была прекращена в 2020 году. Динамику перехода различных библиотек можно посмотреть на [[http://www.python3statement.org/]].
* Процесс перехода на Python3 занял более 10 лет, за это время появились инструменты автоматического перевода программ Python2 → Python3 и средства позволяющие писать код совместимый с обеими версиями языка.
* До сих пор существует некоторое количество программ написанных на Python2, однако их число постепенно сокращается.
===== Что еще нужно знать о версиях Python? =====
* В данном курсе мы будем рассматривать только Python 3.
* Эталонная реализация языка — СPython, есть и [[https://wiki.python.org/moin/PythonImplementations|другие]].
* Последняя на сегодняшний день стабильная версия эталонной реализации — СPython 3.10.
* Все версии 3.* прямо (но не обратно) совместимы, хотя различия и не велики.
* CPython 3.4 — последняя версия, поддерживающая Windows XP, CPython 3.8 — последняя версия, поддерживающая Windows 7