Никита Соболев

Никита Соболев

ЛКПП 2: +

ЛКПП 2: +

ЛКПП 1: int

ЛКПП 1: int

Трюки с ETS

Трюки с ETS

Elixir и Фин-Tech

Elixir и Фин-Tech

Elixir: Debug 101

Elixir: Debug 101

Phoenix и docker

Phoenix и docker

Сила Pattern Matching

Сила Pattern Matching

Пікірлер

  • @panch0us
    @panch0us5 күн бұрын

    Спасибо!

  • @glebmedvedkov3555
    @glebmedvedkov35556 күн бұрын

    А есть ли курсы по питону для безопасников?

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

    а чем безопасники отличаются от всех остальных? 🤔

  • @glebmedvedkov3555
    @glebmedvedkov35556 күн бұрын

    @@sobolevn хмм, да особо ничем. Просто я вроде не прям 0 в питоне, но чтение чужого кода и написание своего пока идёт с трудом. Думал вдруг какие-то есть интересные курсы/упражнения на написание кода (более сложного чем умею сейчас) и понимание чужого кода

  • @ztarlitz
    @ztarlitz7 күн бұрын

    первая часть все таки выглядит как что-то сильно притянутое за уши. как будто ставится знак равно между аннотациями и полноценной статической типизацией.

  • @ztarlitz
    @ztarlitz7 күн бұрын

    8:20 есть еще иррациональные числа I, подмножество R.

  • @SeliverstovMusic
    @SeliverstovMusic11 күн бұрын

    Очень интересно! Показывает сколько де я ещё не знаю 👍👍 Спасибо!

  • @VasilyRyabovVarjag
    @VasilyRyabovVarjag12 күн бұрын

    Чё это… я hex() и bin() пользовался часто, особенно когда работал с железом! Стоит упомянуть еще zero fill, но это для строк скорее, хотя полезно для hex dump’ов выровненных.

  • @user-mobilnik
    @user-mobilnik12 күн бұрын

    Условно бесплатно за 1000 рублей

  • @user-mobilnik
    @user-mobilnik12 күн бұрын

    Специальная функция для bool - not()

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

    Нет такой функции :) Есть `not ()` = `not tuple()` >>> import ast >>> ast.dump(ast.parse('not()')) 'Module(body=[Expr(value=UnaryOp(op=Not(), operand=Tuple(elts=[], ctx=Load())))], type_ignores=[])'

  • @vladimir2139
    @vladimir213914 күн бұрын

    Пишу в основном на Java, но бывает и на Python(ничего особенного, просто иногда bash-скрипты вырастают, и ради читаемости проще их переписать на чем-то более поддерживаемом). Спасибо за курс!

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

    У меня как-то раз bash скрипт вырос в github.com/sobolevn/git-secret 😱

  • @mefffauson8998
    @mefffauson899815 күн бұрын

    Подскажите пожалуйста, какие курсы для начинающих вы рекомендуете?

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

    Если с нуля, то я уважаю learn.python.ru Потому что много лет знаю всех, кто его делает. И очень много выпускников :)

  • @user-pf6of1lz5m
    @user-pf6of1lz5m15 күн бұрын

    Очень нравится. Жду следующий урок

  • @grigorytrofimov6513
    @grigorytrofimov651316 күн бұрын

    assert all([]) is True я думал это просто потому, что под капотом сначала делают flag=False, а потом ищут хотя бы одно исключение но я не думал, что это как то связано с теорией категорий)

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

    А тут такое! github.com/sobolevn/the-best-python-course/blob/8331d0f6534199159aab18bd8ce8e32e80094bd1/homeworks/4-bool.md#L4

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

    То, что bool в Питоне унаследован от int это довольно странная фигня, потому что наследование на неизменяемых типах делает противоречивым операцию сравнения и другие инварианты (Почему True == 1, ведь они разных типов?). Поэтому в Scala, например, наследование на case-классах запрещено.

  • @slubovsky
    @slubovsky18 күн бұрын

    Лучший курс!

  • @naivrick9782
    @naivrick978218 күн бұрын

    Спасибо 😊

  • @vandris_
    @vandris_18 күн бұрын

    Доброго времени суток! Спасибо за курс! А будет ли в рамках курса как-то освещаться работа сборщика мусора и счетчика ссылок?

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

    конечно, когда дойдем до объектов

  • @user-zl5sp9yh1n
    @user-zl5sp9yh1n18 күн бұрын

    Только сегодня посмотрел интересный ролик. Скажите, а почему тут ( print(1 or None and print("hello world")) ) второй print не выполнится? Точнее почему - ясно, но оно получается не бьется а тем что вы рассказывали про АСТ?

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

    Почему не выполнится, давайте разбираться. Смотрите, вот такой будет ast: gist.github.com/sobolevn/2b1e1c28e127feffb01bf435f37eb6e3 Далее, смотрим байткод: gist.github.com/sobolevn/2b1e1c28e127feffb01bf435f37eb6e3#file-boolop_dis-py В итоге получаем: ``` >>> None and print("hello world") >>> 1 or None 1 ``` Надеюсь, так понятно :) Ленивые штуки - всегда неочевидные!

  • @stensmitt
    @stensmitt19 күн бұрын

    Привет! Спасибо за урок)

  • @DAJakaRedAries
    @DAJakaRedAries19 күн бұрын

    Очень интересно, спасибо за курс!

  • @Reality-behind-
    @Reality-behind-19 күн бұрын

    11:56 Это пример из книги (Python к Вершинам Мастерства 2016 года) недавно перечитывал второе издание

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

    Безмерно уважаю Лучиано. Кстати, я как-то приглашал его к нам на конференцию: kzread.info/dash/bejne/Z4Bo0MOLqK7be9o.html Была возможность пообщаться с ним, от чего уважения только прибавилось :)

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

    Супер интересно, кайф, спасибо за курс

  • @zaharvarfolomeev1536
    @zaharvarfolomeev153619 күн бұрын

    Мне кажется очень важно под каждым видео курса писать теплые слова благодарности. Пламенное спасибо за курс такого качества! Речь, последовательность инфы, объяснение и примеры, все супер.

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

    Звук починил! Павел Пшеничный из компании Ядро, спасибо тебе! Единственная компания из многих десятков, кто откликнулся на призыв помочь со звуком. И вышло - просто кайф!

  • @lizenox
    @lizenox19 күн бұрын

    Походу я понял, чтобы вырасти из middle и стать senior на Python, мне нужно выучить C! =)

  • @amogusbokus976
    @amogusbokus97620 күн бұрын

    14:31 sq_concat, а не sq_add :)

  • @naivrick9782
    @naivrick978221 күн бұрын

    Что такое _Т_

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

    какое T? :)

  • @yuliyao192
    @yuliyao19224 күн бұрын

    typeshed упоминал и Рамальо, но что это в деталях, послушала бы конечно Спасибо за канал! Это лучшее, что видела по питону.

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

    Ставлю два лайка!

  • @alexandervalter
    @alexandervalter26 күн бұрын

    Просто Боженька!

  • @alyarock
    @alyarock27 күн бұрын

    Никогда не пользовался typeshed

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

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

  • @user-ff1sd6wl1h
    @user-ff1sd6wl1h27 күн бұрын

    Присоединился после пайтон-митапа от еврона. Чуть не упустил же этот ценный материал)

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

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

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

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

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

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

  • @denisdenis00
    @denisdenis0028 күн бұрын

    звук!

  • @denisdenis00
    @denisdenis0028 күн бұрын

    мощно но почему так тихо?((

  • @kodeng6333
    @kodeng633328 күн бұрын

    Единственный курс на ютубе продолжения которого захотелось ждать)💥

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

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

  • @JohnDoe-pm8cz
    @JohnDoe-pm8cz29 күн бұрын

    интересный подход, спасибо за курс

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

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

  • @naivrick9782
    @naivrick978229 күн бұрын

    Никита может по мимо Ютуба добавить всё на степик + задачки для усвоения

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

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

  • @chasubavil
    @chasubavil29 күн бұрын

    Формат превосходный, контент уникальный! Название курса полностью оправдано. Ведь это разработчик ядра снизошёл до нас, простых смертных, и разбирает всё досконально. Это вам не лапша от «синьёра за 3 года» 😼

  • @user-qx6ln1hv4v
    @user-qx6ln1hv4v29 күн бұрын

    1) Если после оптимизации сложения до BINARY_OP_ADD_INT мы сложим строки, то после неудачного сложения, будет вызвана BINARY_OP? Сколько раз нужно потом сложить строки, чтобы оптимизация стала BINARY_OP_ADD_UNICODE? 2) Как я понял ошибку с += для tuple, она возникает из-за того что мы после изменения списка, пытаемся присвоить "новый" список, вместо старого. Но если посмотреть id списка до += и после, то id совпадает, что намекает что список как объект остается тем же. Т.е. проблема в том что мы не можем менять объект, даже если это тот же самый объект?

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

    1) да, fallback в BINARY_OP предусмотрен 2) tuple не определяет *никаких* методов для мутации себя. сравнение значений даже не успевает произойти. метод не найден, ничего не вызывается :(

  • @user-rh8kb4fy9g
    @user-rh8kb4fy9gАй бұрын

    Разбор typeshed был бы очень уместен и приятен.

  • @user-qx6ln1hv4v
    @user-qx6ln1hv4vАй бұрын

    Никита, спасибо за курс! Есть понимание сколько всего будет уроков и как часто они будут выходить?

  • @sobolevn
    @sobolevnАй бұрын

    Надеюсь, что где-то 50 выпусков. В среднем раз в неделю, иногда чаще, иногда реже.

  • @stensmitt
    @stensmittАй бұрын

    Спасибо за курс. Интересно и информативно)

  • @linkernick5379
    @linkernick5379Ай бұрын

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

  • @sobolevn
    @sobolevnАй бұрын

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

  • @linkernick5379
    @linkernick5379Ай бұрын

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

  • @vitalyl1327
    @vitalyl132725 күн бұрын

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

  • @naivrick9782
    @naivrick978221 күн бұрын

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

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

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

  • @linkernick5379
    @linkernick5379Ай бұрын

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

  • @sobolevn
    @sobolevnАй бұрын

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

  • @linkernick5379
    @linkernick5379Ай бұрын

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

  • @notacatbeaver7853
    @notacatbeaver7853Ай бұрын

    ​@@linkernick5379Ok and?

  • @notacatbeaver7853
    @notacatbeaver7853Ай бұрын

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