Круто, да и конкурентов в opensource немного (cockroachDB ?). Но хотелось бы что бы перечслили и недостатки. Из статьи не совершенно не понятно: - поддержиывется ли ACID? - а интерактивные транзакции? - на скольео YQL соответствует ANSI SQL, в чем причина для нового языка?
Интересно, может ли применение принципа разделения интерфейсов вступать в конфликт с принципом единства ответственности — например если для сохранения объекта в БД нужен перечень полей и их типов (для создания миграций), тогда получается, при расширении полей объекта придется добавлять поля в 2-х местах, что противоречит принципу S...
Только вчера добавил оригинал в закладки, а тут уже перевод! Спасибо! По существу отличная статья для того что бы въехать в доносящийся из всех углов сегодня web3.
> Вместо того, чтобы хранить данные в цепи, NFT содержат URL-адрес, указывающий на данные.
Вот прямо никак не ожидал что там все так плохо, по сути люди урл покупают?
На сколько я понимаю PyInstaller не является компилятором. Это просто упаковщик который запихивает интерпритатор и ваши пакеты в один файл, их легко можно потом достать, а ускорение достигается за счёт быстрого импорта, т.к. все данные уже в памяти. Если интересно подробнее разобраться в компиляции python то вот статья Как скомпилировать python
Отличная статья, спасибо. После rust-book осталось ощущение что тема ошибок не до конца раскрыта. thiserror - хорош. Странно, что его нет в стандартной библиотеке, писать boilrerplate для преобразования ошибок очень утомительно, и не сильно читабельно.
Не очень понимаю при чем тут статическая типизация! Pydantic это библиотека, которая использует синтаксис аннотации типов для описания сигнализаторов/валидаторов, которые в отличие от сигнализаторов DRF, можно использовать как объекты. В DRF же вам придется либо использовать промежуточные классы либо как раньше писать всю логику на dict-ах. ModelSerializer подходит только для банальных случаев.
Созданные с pydanctic классы поддерживаются type cheker-ами. Но это бонус, никто не заставляет вас их использовать, пока сами не захотите.
т.е. переписть код на Cython? Hо если код уже содержит аннотации типов, то не разумно ли их использовать? mypyc как раз опирается на стандартную аннотацию типов, а mypy гарантирует соответствие объявленных типов их использованию в коде.
С холодного старта? В любом случае впечатляет (если это не какая-то оптимизация). Но все таки JIT это совсем другая технология. И у PyPy есть свои недостатки, из-за чего его еще сложно встретить в реальной жизни.
И обращаю ваше внимание на статью Jukka Lehtosalo, там он говорит, что перевод на PyPy существенно ситуацию (скорость работы mypy) не улучшил, это и сподвигло его к созданию mypy.
Кстати расширения компилируемые mypyc могут работать и с PyPy, для этого генерируются отдельные варианты функций.
Интересно, мне в основном попадались проекты по внедрению JIT-а: psyco, Unladen Swallow, Pystone, Nimba, PyPy. Но не про AOT компиляцию. Про RPython читал, но на сколько я понимаю, он не совместим с обычным python, т.е. не получится использовать сторонние python пакеты, из-за чего применение его в реальности, практически невозможно. С mypyc же можно компилировать модули импортирующие обычные пакеты (при их использовании расширение будет возвращать управление интерпретатору). Поэтому мне этот путь видится наиболее перспективным.
Что касается динамических конструкцию, то mypy уже вносит достаточно ограничений, осталось исключить monkey patching.
Код на С тут присутствует как промежуточная стадия компиляции, и не более того, читать его практически невозможно и не нужно (если вы не занимаетесь оптимизацией самого компилятора). Это не отменяет сам факт, компиляции. По аналогичной схеме работают компиляторы Nim, Vala.
Может нужно было вручную сразу переписать (необходимый) код на С
По моему, из введения, должно стать понятно, что речь про компиляцию python-кода, а не CPython интерпретатора. В любом случае, надеюсь, что время потрачено не зря.
Круто, да и конкурентов в opensource немного (cockroachDB ?). Но хотелось бы что бы перечслили и недостатки. Из статьи не совершенно не понятно:
- поддержиывется ли ACID?
- а интерактивные транзакции?
- на скольео YQL соответствует ANSI SQL, в чем причина для нового языка?
Согласен, что stash для этих целей использовать странно, нет чувства безопасности
Интересно, может ли применение принципа разделения интерфейсов вступать в конфликт с принципом единства ответственности — например если для сохранения объекта в БД нужен перечень полей и их типов (для создания миграций), тогда получается, при расширении полей объекта придется добавлять поля в 2-х местах, что противоречит принципу S...
Это правда, но думаю, автора смущает, что бензиновый двигатель преподносится как водородный
Только вчера добавил оригинал в закладки, а тут уже перевод! Спасибо! По существу отличная статья для того что бы въехать в доносящийся из всех углов сегодня web3.
> Вместо того, чтобы хранить данные в цепи, NFT содержат URL-адрес, указывающий на данные.
Вот прямо никак не ожидал что там все так плохо, по сути люди урл покупают?
"Выжимка по темам" - это конечно хорошо, но какой от нее толк без возможности посмотра докладов?
На сколько я понимаю PyInstaller не является компилятором. Это просто упаковщик который запихивает интерпритатор и ваши пакеты в один файл, их легко можно потом достать, а ускорение достигается за счёт быстрого импорта, т.к. все данные уже в памяти. Если интересно подробнее разобраться в компиляции python то вот статья Как скомпилировать python
Интересто, а ведь
std::error::Error
для этих же целей задумывался, но как-то не прижился...А мне не показалась она удобной. Пробрасывать ошибки конечно легко, но вот обрабатывать выше уже не удобно
Отличная статья, спасибо. После rust-book осталось ощущение что тема ошибок не до конца раскрыта. thiserror - хорош. Странно, что его нет в стандартной библиотеке, писать boilrerplate для преобразования ошибок очень утомительно, и не сильно читабельно.
Не очень понимаю при чем тут статическая типизация! Pydantic это библиотека, которая использует синтаксис аннотации типов для описания сигнализаторов/валидаторов, которые в отличие от сигнализаторов DRF, можно использовать как объекты. В DRF же вам придется либо использовать промежуточные классы либо как раньше писать всю логику на dict-ах. ModelSerializer подходит только для банальных случаев.
Созданные с pydanctic классы поддерживаются type cheker-ами. Но это бонус, никто не заставляет вас их использовать, пока сами не захотите.
т.е. переписть код на Cython? Hо если код уже содержит аннотации типов, то не разумно ли их использовать? mypyc как раз опирается на стандартную аннотацию типов, а mypy гарантирует соответствие объявленных типов их использованию в коде.
И обращаю ваше внимание на статью Jukka Lehtosalo, там он говорит, что перевод на PyPy существенно ситуацию (скорость работы mypy) не улучшил, это и сподвигло его к созданию mypy.
Кстати расширения компилируемые mypyc могут работать и с PyPy, для этого генерируются отдельные варианты функций.
Что касается динамических конструкцию, то mypy уже вносит достаточно ограничений, осталось исключить monkey patching.
Может сразу на ассемблер, чего уж?