Докладчик:
Александр Маршалов (ЦФТ)
Описание: Мы узнаем, что из себя представляет дерево синтаксического разбора (AST / Abstract Syntax Tree) в языке Python
и какие магические возможности можно получить с помощью модификации AST.
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python Meetup
Python AST: между исходным текстом и байт-кодом / Николай Карелин / Системный архитектор VPI Development Center
Николай познакомит слушателей с деталями устройства Python AST и, в частности, расскажет некоторые интересные факты о работе диалекта Hy.
Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup
Распространено мнение, что навык пакетирования своих наработок необходим только гуру в Open Source. Стас развенчал этот миф и показал несколько практических задач, решаемых при помощи пакетирования кода.
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup
"SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек", Алексей Черкес
Кратко рассказано о том, что такое биндинг и Pуthon c API. Краткий обзор средств биндинга для Python. SWIG: что такое, зачем нужен, особенности, схема работы утилит, порядок запуска и сборки, принципы работы, как происходит сопоставление объектных моделей С++ и целевого языка. Примеры на Python и C#. Опыт применения, плюсы/минусы.
Python AST / Николай Карелин / VPI Development Center [Python Meetup 27.03.15]Python Meetup
Python AST: между исходным текстом и байт-кодом / Николай Карелин / Системный архитектор VPI Development Center
Николай познакомит слушателей с деталями устройства Python AST и, в частности, расскажет некоторые интересные факты о работе диалекта Hy.
Python Meetup - встречи минского сообщества любителей языка программирования Python.
Присоединяйся к нам!
Мы в twitter: https://twitter.com/pythonminsk
Мы на youtube: http://www.youtube.com/pythonMinsk
Мы на slideshare: http://www.slideshare.net/MinskPythonMeetup
Распространено мнение, что навык пакетирования своих наработок необходим только гуру в Open Source. Стас развенчал этот миф и показал несколько практических задач, решаемых при помощи пакетирования кода.
SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотекPython Meetup
"SWIG — cоздание мультиязыковых интерфейсов для C/C++ библиотек", Алексей Черкес
Кратко рассказано о том, что такое биндинг и Pуthon c API. Краткий обзор средств биндинга для Python. SWIG: что такое, зачем нужен, особенности, схема работы утилит, порядок запуска и сборки, принципы работы, как происходит сопоставление объектных моделей С++ и целевого языка. Примеры на Python и C#. Опыт применения, плюсы/минусы.
Python&Printer / Андрей Пучко / penta.byPython Meetup
Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
Видео доклада: https://www.youtube.com/watch?v=slnQBoxsHPU
Rust - системный язык программирования, который быстро исполняется, предотвращает почти все падения, и устраняет гонки по данным.
Как он этого достигает? Про это доклад.
Докладчик:
Александр Сапронов
Описание:
Мы рассмотрим популярные библиотеки для функционального программирования на Python — fn.py, functools, itertools, funcy, hask, Toolz. Узнаем возможности каждой из библиотеки, а также как в динамическом язык имитировать мощную систему типов. Затронем характеристики функционального программирования и проверим помогают ли библиотеки выполнить.
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионаловSergey Platonov
В докладе перед нами откроется великолепный мир велосипедов и устаревших технологий, которые люди продолжают переносить в новые проекты и повсеместно использовать. Мы поговорим о:
Copy-On-Write
разработке без оглядки на готовые решения и к чему это приводит
force inline
оптимизациях, которые отлично себя показывают на бенчмарках и плохо себя ведут в реальной жизни
бездумно отключаемых оптимизациях компилятора
тонкостях стандартной библиотеки для повседневного использования
супер качественном велосипедостроении
«Парсим CSS», Роман Дворнов (Avito)
В ходе работы над CSSO мне пришлось погрузиться в процесс парсинга CSS. В результате парсер (тот, что в CSSO) был не раз переписан. Пришло время сделать его отдельным инструментом. Новый быстрый детальный парсер CSS, его AST, области применения и кое-что ещё.
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
Теория языков программирования (немного об интерпретаторах, триадах, оптимизации, парсерах и прочее)
Compilers construction some lectures of whole course, it covers some methods on interpreters, optimisations, antlr, dsl (introduction)
Python&Printer / Андрей Пучко / penta.byPython Meetup
Андрей рассказал о личном опыте сражений за печать отчетов из программ на Python. Речь шла о полезных инструментах и форматах документов (PDF, RTF, DOCX, XLS, ODT, HTML) которые можно готовить к печати при помощи Python.
Быстрые конструкции в Python - Олег Шидловский, Python Meetup 26.09.2014Python Meetup
В своем докладе Олег расскажет о замене стандартных функций на более быстрые и об ускорении работы python. Также продемонстрирует несколько примеров быстрых конструкций python.
Видео доклада: https://www.youtube.com/watch?v=slnQBoxsHPU
Rust - системный язык программирования, который быстро исполняется, предотвращает почти все падения, и устраняет гонки по данным.
Как он этого достигает? Про это доклад.
Докладчик:
Александр Сапронов
Описание:
Мы рассмотрим популярные библиотеки для функционального программирования на Python — fn.py, functools, itertools, funcy, hask, Toolz. Узнаем возможности каждой из библиотеки, а также как в динамическом язык имитировать мощную систему типов. Затронем характеристики функционального программирования и проверим помогают ли библиотеки выполнить.
Полухин Антон, Как делать не надо: C++ велосипедостроение для профессионаловSergey Platonov
В докладе перед нами откроется великолепный мир велосипедов и устаревших технологий, которые люди продолжают переносить в новые проекты и повсеместно использовать. Мы поговорим о:
Copy-On-Write
разработке без оглядки на готовые решения и к чему это приводит
force inline
оптимизациях, которые отлично себя показывают на бенчмарках и плохо себя ведут в реальной жизни
бездумно отключаемых оптимизациях компилятора
тонкостях стандартной библиотеки для повседневного использования
супер качественном велосипедостроении
«Парсим CSS», Роман Дворнов (Avito)
В ходе работы над CSSO мне пришлось погрузиться в процесс парсинга CSS. В результате парсер (тот, что в CSSO) был не раз переписан. Пришло время сделать его отдельным инструментом. Новый быстрый детальный парсер CSS, его AST, области применения и кое-что ещё.
Теория языков программирования некоторые слайды к лекциямSergey Staroletov
Теория языков программирования (немного об интерпретаторах, триадах, оптимизации, парсерах и прочее)
Compilers construction some lectures of whole course, it covers some methods on interpreters, optimisations, antlr, dsl (introduction)
Занятие №3 в рамках Курсов программирования Ruby on Rails.
Группа курсов «ВКонтакте»: http://vk.com/ruby_school
Организатор — Агентство интернет-маркетинга Мэйк makeagency.ru. Курсы проводятся на базе Кузбасского государственного технического университета, кафедры «Информационные и автоматизированные производственные системы».
Применение статического анализа при разработке программTatyanazaxarova
Статический анализ - это способ проверки исходного кода программы на корректность. Процесс статического анализа состоит из трех этапов. Сначала анализируемый код разбивается на лексемы - константы, идентификаторы, и т. д. Эта операция выполняется лексером. Затем лексемы передаются синтаксическому анализатору, который выстраивает по этим лексемам дерево кода. Наконец, проводится статический анализ построенного дерева. В данной обзорной статье приведено описание трех методов статического анализа: анализ с обходом дерева кода, анализ потока данных и анализ потока данных с выбором путей.
Универсальный сигнатурный анализ кода на C#, Java, PHPИван Кочуркин
В данном докладе затронуты такие темы, как теория и проблемы парсинга, построение и обход абстрактных синтаксических деревьев (AST) и разработка предметно-ориентированного языка (DSL).
Рассматриваются такие проблемы парсинга, как разбор контекстно-зависимых языков, обработка ошибок и др. В качестве примера применения теории приведена грамматика PHP, разработанная для генератора парсеров ANTLR.
Далее рассматриваются структура унифицированного AST, методы его обхода и сопоставления с паттернами.
Завершающей частью презентации является описание DSL, разработанного с целью записи существующих и будущих паттернов. Также приведены примеры некоторых паттернов для лучшей усвояемости материала.
Краткое введение в Scala для разработчиков на других языках. Рассмотрены несколько простых программ, написанных с использованием красивых возможностей Scala.
В презентации рассказывается о структурах памяти в JVM: Heap, Non-Heap, Stack, об атомарности операций и о garbage collector. Рассмотрен пример, как работает стек. Также, приведены примеры, как использовать jVisualVM и что она может показать.
Solit 2014, EcmaScript 6 in Action, Трухин Юрий solit
Юрий Трухин, Россия. Эксперт по облачным технологиям хостинговой компании InfoboxCloud. В прошлом – обладатель статуса Microsoft Most Valuable Professional. Гик, стратег, разработчик. Подробнее на trukhin.com
«Обзор InfoboxCloud для разработчиков». Development секция. Высокий уровень подготовки. Для разработчиков.
В этом докладе будет рассказано об устройстве InfoboxCloud из первых рук, о деталях внутренней реализации, о том, какую пользу несет облако для разработчиков и о будущем InfoboxCloud. Будут рассмотрены 2 кита облачных технологий: IaaS и PaaS без vendor-lock. Отличная возможность спросить обо всём, что касается PaaS/IaaS непосредственно архитектора и разработчика этих систем.
«EcmaScript 6 in Action». Development секция. Для разработчиков.
Поговорим о том, как жизнь разработчиков изменится с приходом нового стандарта.
Докладчик: Данил Руденко
О докладе:
По некоторым оценкам, больше половины профессий будет автоматизировано – это и есть максимальный объём, на который может быть увеличен рынок алгоритмов машинного обучения, ярчайшем представителем которого являются нейронные сети.
В докладе мы поговорим об общей концепции нейронных сетей, рассмотрим основные Python - фреймворки для машинного обучения, а также реализуем решение задачи классификации изображений с применением Keras.
Докладчик: Данил Руденко
О докладе:
У нашего зоопарка опять проблемы, которые необходимо решить максимально технологично!
На первом докладе мы поговорили о сверточных нейронных сетях, в этот раз рассмотрим такие виды нейронных сетей как автоэнкодеры и GAN’ы( генеративные состязательные сети). Также углубимся немного в Keras, напишем кастомный загрузчик данных и немного посмотрим на Jupyter Notebook.
Видео: https://youtu.be/tu-ee_4uAGY
Asyncio для процессинга распределенной базы данныхPyNSK
Докладчик: Никита Семенов
О докладе:
Появление asyncio стало новой вехой в истории питона. По-настоящему удобный и эффективный способ запускать асинхронный код.
В своем докладе я познакомлю слушателя с базовым синтаксисом, парадигмами и примитивами, чтобы можно было начать использовать всю мощь asyncio уже сегодня.
Для этого я возьму децентрализованные базы данных с web-интерфейсом, раскиданные по нескольким серверам, и покажу как их можно эффективно запроцесить только при помощи стандартных методов питона 3.4+ и aiohttp.
Видео: https://youtu.be/rpiHVA6vRTY
Докладчик: Станислав Каблуков
О докладе:
Расскажу о своём опыте использования Python для разработки игр. В каких игровых движках и программах для моделирования используется Python.
Как и почему стоит использовать python для создания игр, и в каких случаях лучше отказаться от данной идеи. О плюсах и минусах использования Python.
В докладе будет про: python, blender, Ren'py, KivEnt, Boo, UE4 и д.р.
Видео: https://youtu.be/2RrZx_J5twU
Python инструменты для нагрузочного тестированияPyNSK
В докладе я расскажу об использовании yandex.tank с BFG и locustio для нагрузочного тестирования.
Докладчик: Иван Гребенщиков
Видео: https://youtu.be/-kWm5V9pyCY
Python, Django и корпоративные информационные системыPyNSK
Софт для автоматизации бизнеса составляет значительную часть всего существующего на планете программного обеспечения. Рассмотрим требования к нему и особенности его разработки. Оценим, насколько Python для этого подходит, и облегчают ли фреймворки жизнь в кровавом энтерпрайзе.
Докладчик: Анатолий Щербаков
Видео: https://youtu.be/G_ks3sO1Mbs
Как показать релевантный текст для пользователя? Собрать данные, написать разные тексты, а потом написать кучу IF'ов?
В докладе я расскажу, как мы, в Welltory, делаем настройку контента под пользователя.
Поведаю о том, как content writer'ы могут писать 100 вариантов текстов на одно событие в системе.
И конечно, расскажу с чего начать вам.
Докладчик: Александр Сапронов
Видео: https://youtu.be/sG6kUxq6gDY
В докладе я расскажу об устройстве одноплатного компьютера и его периферии на примере raspbery pi.
Установку на него дистрибутива операционной системы, python 3 и управление с помощью него периферией (i2c spi uart и отдельными pin). А ещё я это покажу в живую
Докладчик: Иван Бакланов
Видео: https://www.youtube.com/watch?v=1WiIMeWHMY8
В докладе мы рассмотрим создание переносимого дистрибутива Python для любых нужд и операционных систем (Windows & Linux). Познакомимся с существующими и альтернативными решениями. Сравним их достоинства и недостатки.
Докладчик: Григорий Кареев (Odin)
Видео: https://www.youtube.com/watch?v=fvBJG_IKvaQ
Рассмотрю с практической стороны создание своего предметно-ориентированного языка. Продемонстрирую почти готовое решение возникшей задачи и расскажу, в каких случаях может потребоваться внедрение DSL.
Докладчик: Михаил Воротынцев (AgoraDoxa)
Видео: https://www.youtube.com/watch?v=Qf0TjcBG1oI
Докладчик:
Александр Сапронов
Описание:
Язык Python отлично подходит для прототипирования: простой синтаксис, множество батареек, много готовых решений. Это отлично для бизнеса и для разработчика.
Но давайте снимем розовые очки и озвучим негатив, который вас ждет, когда вы возьмете Python для проекта.
Видео:
https://www.youtube.com/watch?v=YE9Q78QlZiE
Как Python Дайджест работает с внешней статикойPyNSK
Докладчик:
Александр Сапронов
Описание:
В мини-докладе я рассмотрю простой велосипед (django-remdow), который позволяет в автоматическом режиме скачивать внешнюю статику. А также приведу простые инструменты для автоматической оптимизации вашего сайта.
Применение behave+webdriver для тестирования Web-проектовPyNSK
Докладчик:
Иван Гребенщиков
Описание:
Современные веб-проекты представляют из себя совсем не набор статических страниц, что повышает сложность их функционального тестирования.
В докладе будет рассмотрена связка инструментов behave+webdriver, способе их применения, возможные проблемы и пути их решения.
Докладчик:
Игорь Стариков
Описание:
Не секрет, что Питон, благодаря своим свойствам, имеет широчайшую область применения. Не являются исключением и мультимедийные (в том числе игровые) приложения.
В ходе этого выступления:
1. вы узнаете о некоторых средствах и принципах их построения, а также о том, как упомянутые средства могут использовать функции внешних библиотек, написанных на других языках программирования;
2. а я получу, наконец, достижение из одной известной игры, не запуская её.
Докладчик:
Александр Сапронов
Описание:
Мы вместе пройдем по популярным задачам — от парсинга сайтов до научных вычислений и рассмотрим мощь языка Python
Докладчик:
Александр Кацко
Описание:
Как только речь заходит про создание API, особенно для веб или мобильных приложений, то многие, не задумываясь, выбирают принцип REST. Но всегда ли это правильный выбор?
В докладе рассмотрим случаи, для которых хорошо подходит JSON-RPC, посмотрим примеры реализации на Django.
Докладчик:
Антон Голов
Описание:
Поговорим о некоторых функциях для интеграции TestRail c внешними системами и автоматизации деятельности QA. Будет немного про Google Docs, и некоторый набор методов работы с Testrail, рассмотрим возможности работы с системами автоматизированного тестирования.
38. Структура языка Python
Описана на языке Zephyr ASDL в файле «Parser/Python.asdl».
Язык ASDL (Abstract Syntax Definition Language) представляет из
себя простой формальный язык для описания синтаксической
структуры языка программирования.
38
39. Структура языка Python
Описана на языке Zephyr ASDL в файле «Parser/Python.asdl».
Язык ASDL (Abstract Syntax Definition Language) представляет из
себя простой формальный язык для описания синтаксической
структуры языка программирования.
Описание языка ASDL:
ftp://ftp.cs.princeton.edu/techreports/1997/554.pdf
39
40. Структура языка Python
Описана на языке Zephyr ASDL в файле «Parser/Python.asdl».
Язык ASDL (Abstract Syntax Definition Language) представляет из
себя простой формальный язык для описания синтаксической
структуры языка программирования.
Описание языка ASDL:
ftp://ftp.cs.princeton.edu/techreports/1997/554.pdf
Пример Python.asdl:
http://svn.python.org/projects/python/tags/r32/Parser/Python.asdl
40
43. Модуль ast
- Является стандартным (встроенным) модулем Python
- Состоит из двух частей:
43
44. Модуль ast
- Является стандартным (встроенным) модулем Python
- Состоит из двух частей:
- Модуль на языке C (Python/Python-ast.c),
который можно импортировать с помощью:
import _ast
44
45. Модуль ast
- Является стандартным (встроенным) модулем Python
- Состоит из двух частей:
- Модуль на языке C (Python/Python-ast.c),
который можно импортировать с помощью:
import _ast
- Модуль на Python (Lib/ast.py), который можно
импортировать с помощью:
import ast
45
49. Модуль ast
- AST - родительский класс для всех видов узлов в
абстрактном синтаксическом дереве.
49
50. Модуль ast
- AST - родительский класс для всех видов узлов в
абстрактном синтаксическом дереве.
- Add, And, Assert, Assign, …, For, FunctionDef, …, If,
IfExp, Import, ImportFrom, In, Index, …, While, With,
Yield, YieldFrom
50
51. Модуль ast
- AST - родительский класс для всех видов узлов в
абстрактном синтаксическом дереве.
- Add, And, Assert, Assign, …, For, FunctionDef, …, If,
IfExp, Import, ImportFrom, In, Index, …, While, With,
Yield, YieldFrom - классы, соответствующие
конкретным типам узлов в абстрактном
синтаксическом дереве.
51
52. Модуль ast
- AST - родительский класс для всех видов узлов в
абстрактном синтаксическом дереве.
- Add, And, Assert, Assign, …, For, FunctionDef, …, If,
IfExp, Import, ImportFrom, In, Index, …, While, With,
Yield, YieldFrom - классы, соответствующие
конкретным типам узлов в абстрактном
синтаксическом дереве.
- NodeVisitor
52
53. Модуль ast
- AST - родительский класс для всех видов узлов в
абстрактном синтаксическом дереве.
- Add, And, Assert, Assign, …, For, FunctionDef, …, If,
IfExp, Import, ImportFrom, In, Index, …, While, With,
Yield, YieldFrom - классы, соответствующие
конкретным типам узлов в абстрактном
синтаксическом дереве.
- NodeVisitor - класс для рекурсивного обхода
абстрактного синтаксического дерева.
53
54. Модуль ast
- AST - родительский класс для всех видов узлов в
абстрактном синтаксическом дереве.
- Add, And, Assert, Assign, …, For, FunctionDef, …, If,
IfExp, Import, ImportFrom, In, Index, …, While, With,
Yield, YieldFrom - классы, соответствующие
конкретным типам узлов в абстрактном
синтаксическом дереве.
- NodeVisitor - класс для рекурсивного обхода
абстрактного синтаксического дерева.
- NodeTransformer
54
55. Модуль ast
- AST - родительский класс для всех видов узлов в
абстрактном синтаксическом дереве.
- Add, And, Assert, Assign, …, For, FunctionDef, …, If,
IfExp, Import, ImportFrom, In, Index, …, While, With,
Yield, YieldFrom - классы, соответствующие
конкретным типам узлов в абстрактном
синтаксическом дереве.
- NodeVisitor - класс для рекурсивного обхода
абстрактного синтаксического дерева.
- NodeTransformer - класс для рекурсивного изменения
абстрактного синтаксического дерева.
55
56. Модуль ast
- AST - родительский класс для всех видов узлов в
абстрактном синтаксическом дереве.
- Add, And, Assert, Assign, …, For, FunctionDef, …, If,
IfExp, Import, ImportFrom, In, Index, …, While, With,
Yield, YieldFrom - классы, соответствующие
конкретным типам узлов в абстрактном
синтаксическом дереве.
- NodeVisitor - класс для рекурсивного обхода
абстрактного синтаксического дерева.
- NodeTransformer - класс для рекурсивного изменения
абстрактного синтаксического дерева.
56
57. Модуль ast
- а так же набор функций, среди которых нам
интересны:
57
58. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse -
58
59. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
59
60. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
- copy_location -
60
61. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
- copy_location - копирование позиции в коде с
одного узла AST в другой.
61
62. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
- copy_location - копирование позиции в коде с
одного узла AST в другой.
- fix_missing_locations -
62
63. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
- copy_location - копирование позиции в коде с
одного узла AST в другой.
- fix_missing_locations - рекурсивно проставляет
позиции в коде из родительских в дочерние узлы
там, где они не проставлены.
63
64. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
- copy_location - копирование позиции в коде с
одного узла AST в другой.
- fix_missing_locations - рекурсивно проставляет
позиции в коде из родительских в дочерние узлы
там, где они не проставлены.
- dump -
64
65. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
- copy_location - копирование позиции в коде с
одного узла AST в другой.
- fix_missing_locations - рекурсивно проставляет
позиции в коде из родительских в дочерние узлы
там, где они не проставлены.
- dump - преобразование AST в текстовый вид
(например, для отладочного вывода).
65
66. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
- copy_location - копирование позиции в коде с
одного узла AST в другой.
- fix_missing_locations - рекурсивно проставляет
позиции в коде из родительских в дочерние узлы
там, где они не проставлены.
- dump - преобразование AST в текстовый вид
(например, для отладочного вывода).
- increment_lineno -
66
67. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
- copy_location - копирование позиции в коде с
одного узла AST в другой.
- fix_missing_locations - рекурсивно проставляет
позиции в коде из родительских в дочерние узлы
там, где они не проставлены.
- dump - преобразование AST в текстовый вид
(например, для отладочного вывода).
- increment_lineno - увеличение номера строки для
переданного узла (например, при вставке новых
узлов). 67
68. Модуль ast
- а так же набор функций, среди которых нам
интересны:
- parse - преобразование исходного кода в AST.
- copy_location - копирование позиции в коде с
одного узла AST в другой.
- fix_missing_locations - рекурсивно проставляет
позиции в коде из родительских в дочерние узлы
там, где они не проставлены.
- dump - преобразование AST в текстовый вид
(например, для отладочного вывода).
- increment_lineno - увеличение номера строки для
переданного узла (например, при вставке новых
узлов). 68
100. Внимание!
Не повторяйте это дома
в продакшн! *
** Если вы не полностью понимаете, как именно это
работает
100
101. Внимание!
Не повторяйте это дома
в продакшн! *
** Если вы не полностью понимаете, как именно это
работает **
** или если понимаете и это вас пугает
101
105. Почему нужно быть
осторожным?
- Глюки отладки
- Возможность некорректной работы при «наложениях»
различных модификаций AST
Возможные последствия
105
106. Почему нужно быть
осторожным?
- Глюки отладки
- Возможность некорректной работы при «наложениях»
различных модификаций AST
- Странные ошибки
Возможные последствия
106
107. Почему нужно быть
осторожным?
- Глюки отладки
- Возможность некорректной работы при «наложениях»
различных модификаций AST
- Странные ошибки
- Зависимость от версии интерпретатора
Возможные последствия
107
109. Пример 1. Константы
Применяем оптимизацию Constant Propagation (распространение
констант).
То есть заменяем все обращения к «константным переменным»
на значения этих переменных.
109
110. Пример 1. Константы
Применяем оптимизацию Constant Propagation (распространение
констант).
То есть заменяем все обращения к «константным переменным»
на значения этих переменных.
Соответственно, для таких обращений не происходит поиска в
locals и globals и зачитывания значений переменной.
110
111. Пример 1. Константы
Применяем оптимизацию Constant Propagation (распространение
констант).
То есть заменяем все обращения к «константным переменным»
на значения этих переменных.
Соответственно, для таких обращений не происходит поиска в
locals и globals и зачитывания значений переменной.
Если в коде используется множество констант, то такая
оптимизация даст неплохой прирост скорости.
111
112. Пример 1. Константы
Применяем оптимизацию Constant Propagation (распространение
констант).
То есть заменяем все обращения к «константным переменным»
на значения этих переменных.
Соответственно, для таких обращений не происходит поиска в
locals и globals и зачитывания значений переменной.
Если в коде используется множество констант, то такая
оптимизация даст неплохой прирост скорости.
Источник идеи: http://blaag.haard.se/Using-the-AST-to-hack-
constants-into-Python/
112
118. Пример 2. Автологгер
Смысл «трансформации» в добавлении логирования к
необходимым событиям, например:
- вызов и возврат функции / метода (с выводом параметро
и результата
118
119. Пример 2. Автологгер
Смысл «трансформации» в добавлении логирования к
необходимым событиям, например:
- вызов и возврат функции / метода (с выводом параметро
и результата
- присвоение значения переменной
119
120. Пример 2. Автологгер
Смысл «трансформации» в добавлении логирования к
необходимым событиям, например:
- вызов и возврат функции / метода (с выводом параметро
и результата
- присвоение значения переменной
- импорте модуля
120
121. Пример 2. Автологгер
Смысл «трансформации» в добавлении логирования к
необходимым событиям, например:
- вызов и возврат функции / метода (с выводом параметро
и результата
- присвоение значения переменной
- импорте модуля
- и т.д.
121
122. Пример 3. Автопрофайлер
Идея та же, что и в автологгере, но при этом выполняется
засечки «до» и «после» каждого события и замеряется
время выполнения, например, работы каждой функции.
122
129. Пример 5. Расширение возможностей
языка
Для начала вспомним, в какой момент
формируется AST…
129
130. Пример 5. Расширение возможностей
языка
Для начала вспомним, в какой момент
формируется AST…
…Всякая хрень,
о которой все
уже забыли…
130
131. Пример 5. Расширение возможностей
языка
Для начала вспомним, в какой момент
формируется AST…
…Всякая хрень,
о которой все
уже забыли…
Синтаксический
анализатор
(parser)
131
132. Пример 5. Расширение возможностей
языка
Для начала вспомним, в какой момент
формируется AST…
…Всякая хрень,
о которой все
уже забыли…
Синтаксический
анализатор
(parser)
AST
132
133. Пример 5. Расширение возможностей
языка
Для начала вспомним, в какой момент
формируется AST…
…Всякая хрень,
о которой все
уже забыли…
Синтаксический
анализатор
(parser)
AST
…ещё
какая-то
хрень…
133
134. Пример 5. Расширение возможностей
языка
Для начала вспомним, в какой момент
формируется AST…
…Всякая хрень,
о которой все
уже забыли…
Синтаксический
анализатор
(parser)
AST
…ещё
какая-то
хрень…
Компиляция
в байт-код
134
135. Пример 5. Расширение возможностей
языка
Для начала вспомним, в какой момент
формируется AST…
Синтаксический
анализатор
(parser)
AST
Компиляция
в байт-код
135
136. Пример 5. Расширение возможностей
языка
Практически любая синтаксически верная
конструкция на языке Python с помощью
модификации AST может быть превращена в
компилируемый семантически верный код.
136