PythonTalk
4.8K subscribers
1.5K photos
49 videos
6 files
1.34K links
Привет, меня зовут Олег Булыгин 👋

🐍 Здесь я делюсь полезной информацией для тех, кто пишет код на Python: от разработки до Data Science.

По вопросам: @obulygin91
Download Telegram
Помните, все хоронили Stack Overflow? 📉

Мол, ChatGPT пришел и всё, R.I.P. Трафик падает, вопросы никто не задает, основатели вовремя продали проект и свалили в закат.

Так вот. Похоже, всё не так однозначно 🧐

Наткнулся на свежее исследование, которое показывает, что картина сложнее, чем простого "всё умерло".

ChatGPT не убил Stack Overflow. Он его отфильтровал от простого контента. Все эти бесконечные "как развернуть строку?" и "почему у меня цикл не работает?" ушли к ChatGPT.

А что осталось? Самый сок. Факты из исследования:
▫️ Вопросы и ответы стали значительно длиннее.
▫️ Код в примерах — объемнее (для Python, например, +21% 🔥).
▫️ Сложность вопросов резко выросла. Вместо "базовых структур данных" в топе теперь "ООП и разработка GUI".

Проще говоря: Stack Overflow из гугла для новичков превращается в консилиум для профи. За простым решением — к ИИ. За решением реальной, нетривиальной проблемы, где нужен человеческий опыт — к людям.

Возможно, SO не умер, а просто усложняется 🧐
Please open Telegram to view this post
VIEW IN TELEGRAM
👍21🔥933
Сегодня у нас в гостях экспонат, который пытается впихнуть логику низкоуровневых языков в наш Python.

Но сперва — минутка ликбеза, чтобы все были в теме.

В языках типа C/C++ ты сам себе хозяин памяти. Попросил у системы кусок через функцию malloc — будь добр, верни его потом через free. Забыл вернуть? Получил утечку памяти.

В Python же есть сборщик мусора, который сам ходит и всё прибирает. Пытаться делать это вручную — это... странно.
Вот вам #код_курильщика с попыткой это реализовать:

from ctypes import cast, c_void_p, POINTER

def malloc(size: int) -> int:
return cast(c_void_p(id
(bytearray(size))), POINTER
(c_void_p)).contents.value

def free(address: int) -> None:
del address


А теперь два вопроса в студию:

1️⃣ Почему free(address) в таком виде — это абсолютно, тотально, вселенски бессмысленная операция?

2️⃣ А что не так с malloc? Спойлер: там всё очень плохо, но не так очевидно.

Жду ваши версии в комментариях 👇 Завтра сделаю разбор.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥32👻2🙏1🤣1👀1
🧑‍💻 С Днем Программиста! 🖥

Сегодня праздник, к которому причастны, наверное, все на этом канале 🎉

🗓 Праздник официально закреплён в законодательстве относительно недавно – в 2009 году. Всегда отмечается на 256 день года.

Давайте оглянемся назад и посмотрим, как эволюционировал главный скилл в нашей профессии.

▪️2005 год: Умение виртуозно управлять памятью и не допускать утечек.
▪️2015 год: Умение нагуглить нужный ответ на Stack Overflow за 30 секунд.
▪️2025 год: Умение составить промпт из 42 уточнений, чтобы заставить нейросеть сгенерировать работающий hello-world.py.
▪️2030 год (прогноз): Умение войти в астральный контакт с кремниевым духом машины, чтобы понять, почему код, написанный одной нейронкой для другой, падает в третьей.

У вас в компаниях как-то отмечается? Может сами отмечаете? Расскажите 🎂
Please open Telegram to view this post
VIEW IN TELEGRAM
🎉2743🆒2
Итак, вчера мы увидели #код_курильщика с попыткой реализовать ручной сборщик мусора на Python.

Давайте разберем, почему этот код — тихое безумие.

1️⃣Почему free(address) — это абсурд? 🤡

Самый главный и фундаментальный обман здесь — это вера в то, что del в Python что-то «удаляет» или «освобождает» в смысле C++.

На самом деле, del не удаляет объект. Он удаляет имя (ссылку) из текущей области видимости.

Представьте, что у вас есть объект. На него указывает переменная my_address — это как стикер с надписью. Когда вы вызываете free(my_address), значение копируется в локальную переменную address (появляется второй стикер). del address просто отклеивает второй стикер. Объект и первый стикер остаются нетронутыми.

Вердикт: эта функция — чистейшее плацебо. Она не делает абсолютно ничего полезного.

2️⃣А вот с malloc всё гораздо интереснее и опаснее 💀

Если free просто бесполезен, то malloc активно вредит и создает висячий указатель (dangling pointer).

Что происходит в этой строке:
1. bytearray(size): Создается временный объект-массив. Он существует, но на него еще никто не ссылается постоянно.
2. id(bytearray(size)): Мы получаем адрес этого временного объекта.
3. И вот тут — катастрофа. Сразу после того, как id() отработал, на объект bytearray больше не остается ни одной ссылки. Сборщик мусора Python видит, что счетчик ссылок на этот объект упал до нуля, и имеет полное право немедленно его уничтожить.
4. Вся дальнейшая магия с ctypes просто возвращает нам тот самый адрес.

Вердикт: функция malloc возвращает адрес памяти, которая уже освобождена (или будет освобождена в следующий миг). Мы получаем адрес-призрак. Любая попытка им воспользоваться приведёт к проблемам.

Главный урок: не пытайтесь переписать на Python то, от чего он вас и должен был защищать. Управление памятью — одна из таких вещей.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥72👍1🙏1
🤯 93% работодателей недовольны айтишниками. Как так, если на одну вакансию по 14 резюме?

Вышла свежая статистика от hh. И она прекрасна. Если коротко: джунов — как грязи (18.6 человек на место), сеньоров — днём с огнём не сыщешь (3 человека на место).

Но главный прикол не в количестве, а в качестве. 93% компаний недовольны навыками кандидатов.

Думаете, все ищут спецов по Python и Go? Как бы не так. Топ-3 самых востребованных компетенций, которых дико не хватает на рынке:
1. 1С-программирование
2. PHP
3. TypeScript

Как думаете, сколько курсов есть по 1С по сравнению с Python? 🌝

Кто виноват, что делать? 😐
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4🥴4😁2😱2😢21💯1
🍭Синтаксический сахар: добро или зло?

Синтаксический сахар — это не костыль для новичков, а инструмент для опытных. Его главная цель — повысить читаемость кода, убрав всё лишнее и оставив только суть.

Многие считают, что такие конструкции только усложняют код и делают его непонятным. Другие уверены, что писать сегодня длинные циклы там, где достаточно однострочного list comprehension — дурной тон.

На чьей стороне вы? Сахар делает код чище и понятнее или, наоборот, запутывает команду?

#анатомия_питона
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54🔥32🙏21🗿1
Когда спрашивают, какие книги по Python стоит читать начинающим, то я последнее время в основном рекомендую "Think Python" Аллена Дауни.

В чём она хороша?

👉🏻 Никаких мучений с установкой

Вся книга — это набор Jupyter-ноутбуков. Вы просто открываете главу по ссылке в браузере (через Google Colab) и сразу начинаете работать: читаете теорию, тут же запускаете код, экспериментируете, решаете задачи. Не нужно возиться с установкой Python, настройкой окружения и редакторами. Это убирает много головной боли на старте.

👉🏻 Практика работы с AI-помощниками
Вот это прямо ход конем. В конце каждой главы автор объясняет, как использовать ChatGPT и аналоги для изучения темы. По сути это обучение мета-навыку — как правильно задавать вопросы AI, чтобы он помогал учиться, а не делал работу за вас.

👉🏻 Академическая структура
Дауни — профессор. Материал подается фундаментально, от простого к сложному, без каши в голове. Каждый термин определяется, прежде чем использоваться. Сложные темы вроде рекурсии разжевываются на несколько глав.

‼️ Важный нюанс: книга на английском.

Кому зайдет?
▫️Абсолютным новичкам: Это идеальная первая книга.
▫️Тем, кто пробовал и бросил: Структура и интерактивность помогут преодолеть барьер.

Кому будет скучно?
▫️Тем, кто уже программирует на другом языке: первые главы покажутся слишком медленными.
▫️Тем, кто ищет справочник: это учебник для последовательного прохождения.

Книга лежит здесь, бесплатно (открытая лицензия)
https://allendowney.github.io/ThinkPython/ 🎓
8👍621
OpenAI выкатили большое обновление Codex на базе GPT-5 🤖

Если коротко, что завезли:

🧠 Новая модель: По сути, это GPT-5, но на стероидах и специально заточенный под реальные инженерные задачи: рефакторинг, отладка, написание тестов и даже ревью кода. На простых задачах он работает быстрее, а над сложными может "думать" и итерироваться часами, прямо как джун на испытательном.

🧐 Киллер-фича — ревью кода: Codex теперь можно натравить на репозиторий в GitHub, и он будет автоматически ревьюить PR-ы. Он не просто смотрит на дифф, а анализирует зависимости, запускает тесты и пытается понять намерение автора. OpenAI утверждает, что у себя они так отлавливают сотни багов ежедневно, ещё до ревью человеком.

🔌 Глубокая интеграция: Обновили CLI, выкатили расширение для VS Code/Cursor. Идея в том, что вы больше не переключаете контекст. AI работает прямо там, где вы пишете код — в терминале, IDE, вебе. Можно даже скормить ему скриншот или диаграмму.

💸 Доступность: Всё это уже включено в подписки ChatGPT (Plus, Pro, Business и т.д.). Никаких отдельных прайсингов.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍61🔥1🙏11
В Python для структур данных есть два стула: встроенные dataclasses и вездесущий Pydantic.

Один простой, как табуретка, и верит всему, что в него пихают. Второй — кресло с фейс-контролем.

Собрал всю суть разницы в карточках ⬆️⬆️

#два_стула
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍117🔥52