Язык питон в научных вычислениях

Содержание

Слайд 2

• Получаем данные • Обрабатываем их • Отображаем результат Интерпретатор vs компилятор

• Получаем данные
• Обрабатываем их
• Отображаем результат

Интерпретатор vs компилятор

Слайд 3

• Получаем данные • Обрабатываем их • Отображаем результат Интерпретатор vs компилятор

• Получаем данные
• Обрабатываем их
• Отображаем результат

Интерпретатор vs компилятор

Слайд 4

Компиляторы С / C++ Fortran LabView Java Интерпретаторы Matlab Mathematica R Python Интерпретатор vs компилятор

Компиляторы
С / C++
Fortran
LabView
Java

Интерпретаторы
Matlab
Mathematica
R
Python

Интерпретатор vs компилятор

Слайд 5

Интерпретаторы Matlab Mathematica R Python Языки для machine learning и data science Опрос Kaggle, 2018

Интерпретаторы
Matlab
Mathematica
R
Python

Языки для machine learning и data science

Опрос Kaggle, 2018

Слайд 6

Популярность языков программирования на stackoverflow

Популярность языков программирования на stackoverflow

Слайд 7

Диаграмма популярности языков программирования Популярность на GitHub (по кол-ву проектов) Популярность

Диаграмма популярности языков программирования

Популярность на GitHub (по кол-ву проектов)

Популярность на Stack

Overflow (по кол-ву тегов)
Слайд 8

Языки для научного программирования = языки, на которых удобно работать с

Языки для научного программирования

= языки, на которых удобно работать с формулами

и матрицами:
• исторически это:
– 1957 Algol (algorithmic language) на нем публиковали новые алгоритмы
– 1958 Fortran (formula translator) быстро считает формулы
– 1964 APL (a programming language) матрицы
– 1972 С, 1983 C++ системное программирование

• на сегодня это:
– 1984 Matlab (matrix laboratory) матрицы, графики

Слайд 9

Кто использует python в работе * физики, биологи, экономисты, для вычислений,

Кто использует python в работе

* физики, биологи, экономисты, для вычислений, вместо

Matlab/Mathcad:
– numpy операции с матрицами, scipy алгоритмы обработки данных
Слайд 10

Кто использует python в работе * физики, биологи, экономисты, для вычислений,

Кто использует python в работе

* физики, биологи, экономисты, для вычислений, вместо

Matlab/Mathcad:
– numpy операции с матрицами, scipy алгоритмы обработки данных
* веб-разработчики, фреймворки для создания сайтов, online игр:
– django, универсальный, наиболее популярный фреймворк на python
* системные администраторы, скрипты для автоматизации своей работы:
– fabric, выполнение программы на множестве компьютеров сразу
* программисты, для создания gui-приложений; в качестве языка макросов:
– есть биндинги для qt, wx, gtk виджетов
Слайд 11

Язык курса «Введение в программирование»

Язык курса «Введение в программирование»

Слайд 12

История развития python Гвидо ван Россум создал python в 1991 –

История развития python

Гвидо ван Россум создал python в 1991 –

начал работать над ним в 1989
– любитель скетчей Monty Python Flying Circus
– на 1991 год в python уже были классы и наследование

python 2.0 вышел в 2000 (garbage collector, unicode support), стал community-backed.
– все версии 2.х обратно совместимы

python 3.0 вышел в 2008: сброс «балласта» (местами обратно-несовместимое упрощение синтаксиса за счет избавления от устаревших конструкций, накопленных по пути с v2.0 до v2.7)

Слайд 13

Python 2 vs Python 3 • На сегодня: – Из 6000

Python 2 vs Python 3

• На сегодня:
– Из 6000 «стабильных»

пакетов:

96%

• Кол-во библиотек под python3:

релиз python3.0
– под python3 работают 345
из 360 самых скачиваемых пакетов

• Поддержка python2 заканчивается 31.12.2020

Слайд 14

if (a>b){ printf("а больше\n"); printf("чем b\n"); } if a>b: ␣␣␣␣print('а больше')

if (a>b){
printf("а больше\n");
printf("чем b\n");
}

if a>b:
␣␣␣␣print('а больше')
␣␣␣␣print('чем b')

C/C++

python

print('вот так')

printf('вот так\n')

Стандарт PEP8 (pep = python enhancement proposal):
– Spaces are the preferred indentation method over tabs.
– Use 4 spaces per indentation level.
– В python2 допускаются (но не приветствуются) смешанные
отступы, при этом 1 Tab = 8 пробелов. В python3 они запрещены.

• Настройте ваш редактор так, чтобы по нажатию Tab вставлялось 4 пробела

if a>b:
␣␣␣␣print('а больше')
␣␣␣␣print('чем b')

Readability counts: пробелы

Слайд 15

if (a>b){ printf("а больше\n"); printf("чем b\n"); } C/C++ python print('вот так')

if (a>b){
printf("а больше\n");
printf("чем b\n");
}

C/C++

python

print('вот так')

printf('вот так\n')

for a in range(100):
␣␣for

b in range(100):
␣␣␣␣for c in range(100):
␣␣␣␣␣␣for d in range(100):
␣␣␣␣␣␣␣␣for d in range(100):
␣␣␣␣␣␣␣␣␣␣print(a+b*c+d*e)

if a>b:
␣␣␣␣print('а больше')
␣␣␣␣print('чем b')
else:
␣␣␣␣print('b больше')

Readability counts: пробелы

Слайд 16

if (x=>0 && x printf(“one digit”); m[4][3][5] c++ (либо ++c либо

if (x=>0 && x<10)
printf(“one digit”);

m[4][3][5]

c++ (либо ++c либо c+=1)

c =

c + 1

c++

if x >= 0 && x < 10, disp 'one digit';
end

if x => 0 and x < 10:
print(‘one digit‘)

c += 1

m(4, 3, 5)

m[4, 3, 5]

if (x==1 || x==2 || x==3 || x==5)
printf(“prime”);

if any([1, 2, 3, 5]==x), disp 'prime';
end

if x in (1, 2, 3, 5):
print('prime')

if 0 <= x < 10:
print(‘one digit‘)

Readability counts: syntactic sugar

h=a; a=b; b=a

h=a; a=b; b=a

a, b = b, a

Слайд 17

Динамическая типизация Полиморфные функции def f(a, b): return a + b

Динамическая типизация

Полиморфные функции

def f(a, b):
return a + b

class A(object):
def

f(self, x):
return x*2
def g(self, y):
return y*3
a = A()
print a.f(10)
A.f = g
print a.f(10)
20
30

> f(3, 4) 7
> f('car', 'toon') 'cartoon'

«duck typing»

“When I see a bird that walks like a duck and swims like a duck and quacks like a duck, I call that bird a duck”

«monkey patching»

Изменение класса «на лету»

def f(a: int, b: int) -> int:
return a + b

guerrilla patch
gorilla patch
monkey patch

• тестирование
• исправление сторонних библиотек
без модификации их кода

Слайд 18

Способы ускорения python кода Pypy – альтернативная реализация python с JIT


Способы ускорения python кода

Pypy – альтернативная реализация python с JIT (just-in-time

compiling)
Numba – библиотека для JIT-оптимизации
Cython – компилятор, гибридный синтаксис между C/python
Ctypes, cffi – интерфейс к .dll / .so файлам
Слайд 19

Достоинства и недостатки python низкий порог вхождения грамотно спроектирован легко читаемый


Достоинства и недостатки python

низкий порог вхождения
грамотно спроектирован
легко

читаемый синтаксис
наличие огромного количества библиотек с кодом на любой случай жизни
переносимость: Windows, Linux, MacOS, Arduino, Raspberry Pi и пр.
скорость исполнения:
– критические по времени исполнения функции можно ускорять
– большая часть библиотек (numpy, scipy) уже ускорены
Слайд 20

Структура курса • Введение в питон: – базовые типы, – ООП,

Структура курса

• Введение в питон:
– базовые типы,
– ООП,


– исключения,
– модули,
– ввод-вывод,
– регулярные выражения

• Пакеты для научных вычислений:
– numpy, sympy: матрицы, формулы
– matplotlib, bokeh: визуализация
– интегралы, уравнения: sympy
– стат.обработка данных pandas
– арифметика произв.точности mpmath
– минимизация ф-й iminuit
– создание gui приложений pyqt5

• Технические вопросы:
– как пользоваться документацией
– «графичская консоль» jupyter
– виртуализация (virtualenv, conda create)
– ср-ва отладки (ipdb, пр.),
– фреймворки для тестирования (nose, pytest)
– профилирование кода
– ускорение кода (cython, pypy, numba)

Слайд 21

Страница курса vk.com/python_nsu_2019

Страница курса

vk.com/python_nsu_2019