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

2024 ж. 2 Мам.
2 153 Рет қаралды

Лучший курс по питону: 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

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

    @sobolevn@sobolevn13 күн бұрын
    • Новый микрофон? 👀

      @AdorablePython@AdorablePython12 күн бұрын
    • Бусти сабки пошли в контент.)

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

      @OmgFiny@OmgFiny9 күн бұрын
  • Про импорты точно интересно, можно добавить пару слов про circular import error

    @OmgFiny@OmgFiny9 күн бұрын
  • Спасибо за лекцию! Самое то, чтобы успокоиться после сложения)

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

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

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

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

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

      @vitalyl1327@vitalyl13277 күн бұрын
    • - Какой Python язык? - Оказывается сложный

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

      @linkernick5379@linkernick53792 күн бұрын
  • Спасибо за урок узнал новое для себя)

    @user-hd8oy9xp8m@user-hd8oy9xp8m8 күн бұрын
  • про импорты было бы интересно послушать

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

    @alexdubkov6998@alexdubkov699811 күн бұрын
  • По системе импортов го видос

    @GLOBALeVGENIUS@GLOBALeVGENIUS13 күн бұрын
  • про импорты и неймспейсы интересно 🙏

    @alexpunches9042@alexpunches904213 күн бұрын
  • я тысячный зритель этого видео, ура

    @suenduk_dj@suenduk_dj10 күн бұрын
  • Давай видосы про litestar

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

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

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

      @lnking81@lnking8111 күн бұрын
    • А джава в итоге компилируемая или интерпретируемая?)

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

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

      @vitalyl1327@vitalyl13277 күн бұрын
  • Какой Python язык? Ответ: всех задравший!

    @lxgdark777@lxgdark7779 күн бұрын
  • Офигенно 🔥

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

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

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

      @linkernick5379@linkernick537912 күн бұрын
    • ​@@linkernick5379Ok and?

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