ЛКПП 3: Какой Python язык?

Лучший курс по питону: 3
Какой Python язык?
- Типизация в Python
- ООП в Python и функциональное программирование в Python
- Компиляция Python
00:00 Вступление
00:37 Junior: Динамическая типизация против статической типизации, строгая и слабая типизация, явная и неявная типизация
06:04 Middle: ООП и функциональное программирования, скриптовые языки
12:34 Senior: REPL, компиляция против интерпретации, WASM, JIT, mypyc
22:45 Вывод
Полезные ссылки:
- Все материалы: github.com/sobolevn/the-best-...
- Мой GitHub: github.com/sobolevn
- Поддержать: boosty.to/sobolevn
- Сообщество: discord.python.ru
В данном уроке придусмотрена практическая часть домашки: поработайте с mypyc. Подробнее: github.com/sobolevn/the-best-...
#python #pythonprogramming #pythontutorial #python3

Пікірлер: 32

  • @sobolevn
    @sobolevn13 күн бұрын

    В следующем видосе качество звука будет значительно лучше :)

  • @AdorablePython

    @AdorablePython

    12 күн бұрын

    Новый микрофон? 👀

  • @astralromance9052

    @astralromance9052

    12 күн бұрын

    Бусти сабки пошли в контент.)

  • @OmgFiny

    @OmgFiny

    9 күн бұрын

    да обычный микро может быть норм, хорошенько эквалайзер покрути

  • @OmgFiny
    @OmgFiny9 күн бұрын

    Про импорты точно интересно, можно добавить пару слов про circular import error

  • @notacatbeaver7853
    @notacatbeaver785312 күн бұрын

    Спасибо за лекцию! Самое то, чтобы успокоиться после сложения)

  • @user-rg6dg4ip8b
    @user-rg6dg4ip8b10 күн бұрын

    Ничего не понято, но очень интересно. Россыпь кода, куда чего зачем знать необязательно.

  • @linkernick5379
    @linkernick537912 күн бұрын

    Далее аргумент о том, что таргетом и в Python и в Rust является LLVM, а следовательно они ничем не отличаются - это софистика. Тот код, который генерирует питонячий компилятор и код, который генерирует ржавый компилятор отличаются кардинально, скажем в перфомансе на порядки (за исключением узких случаев). И причина в том, что питонячий LLVM код реализует семантику Питона, вместе с GIL, счётчиком ссылок, динамической типизацией, косвенными вызовами, сборщиком мусора и прочими прелестями, а ржавый LLVM код реализует семантику языка RUST с контролем бинарного представления на уровне типов, уничтоженным алиасингом, прямыми вызовами и отсутствием GC. Так что говорить, что раз LLVM таргет есть и там, и там и следовательно они якобы теперь одинаковые - это лгать аудитории.

  • @sobolevn

    @sobolevn

    12 күн бұрын

    - Оно не компилируется - Оно всего лишь компилируется в инструкции VM - Оно компилируется в LLVM с другой семантикой ~~~ Вы находитесь здесь ~~~ - Оно компилируется в менее производительный код - Оно компилируется :(

  • @linkernick5379

    @linkernick5379

    12 күн бұрын

    @@sobolevn Ну я и говорю - софистика. В вашей теории разницы между, скажем, Go и Python нет никакой, а вот на практике разница есть и громадная. Подписался, жду с нетерпением следующей серии по языку программирования Python ;-)

  • @vitalyl1327

    @vitalyl1327

    6 күн бұрын

    ​@@sobolevnабсолютно любой язык можно компилировать. Более того, это совершенно тривиальная задача. Но вот что невозможно, так это из языка с настолько упорото динамической семантикой компилить в эффективный код . Дело не в комаиляции/интерпретации, а в динамизме. Просто питон дряной язык by design, и конфетку из него не вылепить никогда.

  • @naivrick9782

    @naivrick9782

    2 күн бұрын

    - Какой Python язык? - Оказывается сложный

  • @linkernick5379

    @linkernick5379

    2 күн бұрын

    @@naivrick9782да, Pyrhon сложность задачи помножает ещё и на свою излишнюю сложность, внося мутабельность, побочные эффекты и динамизм в программы, что приводит к невозможности протестировать полностью и тем более доказать корректность программ.

  • @user-hd8oy9xp8m
    @user-hd8oy9xp8m8 күн бұрын

    Спасибо за урок узнал новое для себя)

  • @Lelouch-
    @Lelouch-12 күн бұрын

    про импорты было бы интересно послушать

  • @alexdubkov6998
    @alexdubkov699811 күн бұрын

    Конечно, большинство всех питонистов вряд ли будут писать си-расширения. А вот mypyc компилятор, когда мы все дружно будем использовать типы - это интригует. Спасибо за лекцию!

  • @GLOBALeVGENIUS
    @GLOBALeVGENIUS12 күн бұрын

    По системе импортов го видос

  • @alexpunches9042
    @alexpunches904212 күн бұрын

    про импорты и неймспейсы интересно 🙏

  • @suenduk_dj
    @suenduk_dj10 күн бұрын

    я тысячный зритель этого видео, ура

  • @aiornerok3931
    @aiornerok39319 күн бұрын

    Давай видосы про litestar

  • @kirilltyupaev2447
    @kirilltyupaev244713 күн бұрын

    А что можете сказать по поводу того, что бы рассмотреть компиляторы и интерпретаторы с той точки зрения, что результат самодостаточен и может запускаться независимо от наличия программы транслятора на запускающей машине (ну или не может)? В целом в курсе что есть инструменты упаковки исходников + сам python в 1 бинарь, но фактически это же все равно таскание транслятора с собой.

  • @sobolevn

    @sobolevn

    13 күн бұрын

    Сложный вопрос: а если llvm с собой паковать? Плюс вопрос кросс-компиляции тут встанет в полный рост.

  • @lnking81

    @lnking81

    11 күн бұрын

    Нужно определить границы самодостаточности. А то вот скомпилировалось в exe, например, но требует Windows, DirectX, 5 версий C++ redistributable. Или использует специфические инструкции 13 поколения интелов и не запустится на 12

  • @user-lh6ou6de6l

    @user-lh6ou6de6l

    7 күн бұрын

    А джава в итоге компилируемая или интерпретируемая?)

  • @sobolevn

    @sobolevn

    7 күн бұрын

    @@user-lh6ou6de6l точно такая же, как и питон. только типы чаще проверяются до старта приложения.

  • @vitalyl1327

    @vitalyl1327

    6 күн бұрын

    ​@@sobolevnну это вообще за гранью. Сравнивать полноценный трассирующтй JIT с убожеством в Питоне - это перебор.

  • @lxgdark777
    @lxgdark7778 күн бұрын

    Какой Python язык? Ответ: всех задравший!

  • @eldos704
    @eldos70412 күн бұрын

    Офигенно 🔥

  • @linkernick5379
    @linkernick537912 күн бұрын

    GIL делает невозможным использовать Питон на низком уровне или в многопоточном окружении. Если вы сейчас начнёте приводить доводы в виде Multiprocessing или субинтерпретаторов, то это не является полноценной поддержкой многопоточности. Если приведёте в пример nogil, то это является _другим_ языком с синтаксисом Питона, подобно ситуации с pypy, MicroPython и другими вариациями. То есть Питон не язык низкого уровня никаким боком, от разработчика скрыта возможность контроля ресурсов на таком же уровне, на каком это доступно в C, питонячьи абстракции (тот же GIL) становятся препятствием для этого.

  • @sobolevn

    @sobolevn

    12 күн бұрын

    Что вам мешает отключать gil из C? Доступ к CAPI будет только у одного потока в один момент, но остальное - может работать как угодно. Куча библиотек так и делают для ускорения вычислений. И даже в stdlib так. Почему `nogil` является другим языком? Я пишу `.configure --disable-gil` и у меня нет органичения на количество потоков, всё. Если "другой язык" в плане семантики, то тут про любую фичу так можно сказать.

  • @linkernick5379

    @linkernick5379

    12 күн бұрын

    @@sobolevn Что мешает? Мешает, что 90% библиотек просто перестанет работать, и какое-нибудь исключение из недр какого-нибудь django сделает невозможным использовать этот фреймворк с понятными для проекта последствиями. Даже если ничего не сломается в библиотеках, это всё ещё не даёт возможность безопасно запускать Питон в многопоточном окружении - интерпретатор байткода и счётчик ссылок не предназначены для этого. Далее, вы привели в пример наличие FFI, где можно освободить GIL и считаете, что проблема решена. А я вот не считаю, что проблема решена, она просто вытолкнута на другой, более низкий, уровень, где можно получить быстрое и параллелизуемое решение, но ценой сильно возросших трудозатрат, и с течением времени проблем от наличия Питона становится больше, чем пользы - не каждая команда готова переизобретать аналог pytorch для своего проекта.

  • @notacatbeaver7853

    @notacatbeaver7853

    11 күн бұрын

    ​@@linkernick5379Ok and?

Келесі