Не пиши простой код
По мотивам статьи: Пиши простой код / Хабр
Комметарий, не поместившийся в комментарий. Здесь не будет об эффективности, о количестве тасков и деньгах инвесторов, но будет о чем то, на мой взляд более важном.
Искусство создания компьютерных программ
По мотивам статьи: Пиши простой код / Хабр
Комметарий, не поместившийся в комментарий. Здесь не будет об эффективности, о количестве тасков и деньгах инвесторов, но будет о чем то, на мой взляд более важном.
И это решит 95% проблем типичного стартапа. Как-то так повелось, что по всему СНГ и его окрестностям на работу набирают зумеров с колоссальным опытом в три года, и они начинают создавать идеальные архитектуры. Да, каждый из вас, как только получает возможность взять на себя хоть малейшую ответственность, сразу вспоминает все прочитанные и не прочитанные книги и пилит свою уникальную архитектуру, непохожую ни на что.
Привет, Хабр! Меня зовут Леша Жиряков, я техлид бэкенд-команды витрины KION, а еще в МТС я возглавляю Python-гильдию.
В 2025 году Python остается одним из самых популярных языков программирования, а его возможности для создания графических интерфейсов (GUI) продолжают радовать разработчиков. В этой подборке — шесть лучших инструментов, которые выделяются функциями, активностью сообщества и фишками. Погружаемся в мир кнопок, окон и виджетов — от проверенной классики до ярких новичков GitHub.
Наверное, я очень опоздал с изучением CUDA. До недавнего времени даже не знал, что CUDA — это просто C++ с небольшими добавками. Если бы я знал, что изучение её пойдёт как по маслу, я бы столько не медлил. Но, если у вас есть багаж привычек C++, то код на CUDA у вас будет получаться низкокачественным. Поэтому расскажу вам о некоторых уроках, изученных на практике — возможно, мой опыт поможет вам ускорить код.
Почти год назад я писал про ХрюХрюКар. Это экспериментальный проект, который проработал 7 месяцев в городе Балаково Саратовской области. За это время мы «поймали» около тысячи автомобилистов, разместивших свои авто на зеленых зонах, детских/спортивных площадках и тротуарах.
В этой статье я расскажу про совершенно новую версию ХХК, которую я написал на Go. Ну и отдам сообществу все исходники проекта.
Что если можно было бы подключить своё AXI-устройство на FPGA к Linux через PCIe за вечер? В этой статье рассказываю, как написать драйвер для UARTLite через XDMA, собрать свою TTY и начать работать с GPS прямо из терминала!
Хочу начать с личной предыстории. Давным‑давно, как и многие из вас, я читал умные книжки: «Чистый код» и «Чистая архитектура» Роберта Мартина, «Совершенный код» Стива Макконнелла и другие.
Также не обошли меня и классические принципы проектирования — SOLID, KISS, DRY — и, думаю, каждый читатель добавит сюда свои.
Безусловно, это всё важные и фундаментальные вещи.
Но однажды на горизонте появилось DDD — предметно‑ориентированное проектирование в изложении Эрика Эванса. Именно его «синяя книга» стала культовой и задала язык для архитектурного мышления.
Позже я открыл и «красную книгу» Вона Вернона, где DDD уже рассматривался с точки зрения практической имплементации: архитектура, код, реальные подходы в проектах.
Читая Эванса, рассматривая его диаграммы классов и примеры кода, я всё думал: как он это делает?
Самым большим открытием для меня стало то, что книга DDD хоть и показывает стратегические и тактические приёмы — агрегаты, объекты‑значения, спецификации, фабрики и т. д. — но не учит проектировать саму предметную область.
Складывалось ощущение, что мы это уже откуда‑то должны были знать. А откуда — остаётся загадкой.
Enum — одна из самых популярных фич Rust. Тип enum
может иметь одно из значений в заданном множестве вариантов.
/// Foo имеет значение или 32-битного integer, или символа.
enum Foo {
Int(u32),
Char(char),
}
Значениями типа Foo
могут быть или integer (например, вариант Foo::Int(3)
с полезной нагрузкой 3
), или символы (например, вариант Foo::Char('A')
с полезной нагрузкой 'A'
). struct можно считать AND-комбинациями их полей, а enum
— OR-комбинациями их вариантов.
Этот пост посвящён удивительной оптимизации, выполняемой компилятором Rust с представлением в памяти значений enum
, чтобы они занимали меньше места в памяти (спойлер: это не нишевая оптимизация). В общем случае, уменьшение размера значений может привести к ускорению программ, потому что значения передаются в регистрах CPU и в одну линию кэша CPU умещается больше значений.
Как я стал core-разработчиком CPython в 19 лет: История усилий и достижений
В этой статье я расскажу, сколько усилий потребовалось, чтобы стать частью команды разработчиков CPython и какие возможности это открыло для меня.
Пишу этот текст совершенно без намерения оскорбить авторов Excel. Это фантастически успешный софт, который по праву считается золотым стандартом среди табличных редакторов. Тем не менее, в этом году Excel уже стукнуло 40. В таком почтенном возрасте его семантика всерьёз страдает из-за костылей, которые накапливались не один десяток лет, обеспечивая обратную совместимость.
Одно из самых интересных дел, которыми мне приходится заниматься на работе — это обратная разработка Excel. Я выискиваю причуды в его поведении и решаю, как поступать с ними в нашем фирменном табличном редакторе. Благодаря моему повседневному труду, наши пользователи, возможно, и не подозревают, сколько недокументированных грехов совершила Microsoft ради совместимости. Приглашаю вас одним глазком взглянуть на те ужасы, с которыми мне приходится тягаться — и тогда вы тоже станете бояться Microsoft Excel — не потому, что чего-то не знаете, а наоборот, так как знаете слишком много.
Вспомни тот момент, когда ты впервые запустил программу, созданную тысячами невидимых рук. Linux, Firefox, PostgreSQL... За каждым из этих имён стоит революция — мир, где код принадлежит всем и каждый может доработать и улучшить его. Мир open source.
Сорок лет назад это казалось утопией. Софт для серверов и пользовательских компьютеров создавался на заказ и мог запросто стоить дороже железа, на котором разворачивался. И его нельзя было модифицировать, даже если он работал неправильно. Не желая мириться с ситуацией, в 1983 году Ричард Столлман запустил в Массачусетском технологическом институте проект GNU. Планы проекта были амбициозными: разработать столько свободного ПО, чтобы хватило на все задачи (почти как у Стругацких — ПО всем, даром, и чтобы никто не ушёл обиженным). Для достижения этой цели проект в 1984 году приступил к разработке операционной системы GNU (рекурсивный акроним от англ. GNU’s Not UNIX — GNU не Unix). Как мы знаем, у них получилось. Кто мог тогда подумать, что именно свободное программное обеспечение станет фундаментом цифрового мира в далёком 2025 году!
А теперь представь: твой код тоже часть этой революции. Твоё имя — в списке контрибьюторов проекта, который используют миллионы. Звучит круто, правда? Сегодня Хабр совместно с GitVerse — AI-first-платформой для работы с кодом со встроенным AI-ассистентом GigaCode — открывает сезон Open source: время, когда мы вместе будем исследовать, как создаётся, развивается и меняет мир ПО с открытым исходным кодом.
Привет, Хабр! Меня зовут Юра, я работаю тимлидом проекта Waterbase в KION, а в свободное время люблю читать, что нового происходит в мире ИТ и какие подходы к программированию есть в других странах. Сегодня хочу поговорить о ЯП с синтаксисом не на английском — здесь нет команд вроде if, print и while, к которым мы все так привыкли. Авторы стремились либо упростить вход в ИТ для носителей своего языка, либо переосмыслить само представление о ЯП. Ниже — пять таких проектов: LSE, VisuAlg, Aheui, Qalb и Kalaam. Погнали!
Сегодня поговорим о теме, которая вызывает живой интерес у многих разработчиков и энтузиастов ИИ — интеграции больших языковых моделей вроде DeepSeek или ChatGPT с собственной базой знаний.
В этой статье я подробно расскажу, как работают векторные базы данных, зачем они нужны и какую роль играют в построении эффективной связки между вашей внутренней информацией и мощью современных LLM. Если вы хотите научиться «обучать» ИИ на своих данных — добро пожаловать!
В std::move никто никуда не двигается
В undefined behavior поведение вполне себе определено, просто крашит игру
В GameObject нет ни игры ни объекта, а только баги и куча антипаттернов
Memory leak detector сам протекает
В PhysicsEngine физики столько же, сколько в сказке про Колобка
Из 8 часов работы 6 уходят на попытку собрать билд после мержа со стейблом.
В ProfileMode тормозит всё кроме профайлера
В retrospective meeting обсуждают, почему всё плохо, но оставляют как есть.
В debug билде багов меньше чем в релизном и выше фпс
Давным-давно, мне попадалась статья, в которой автор, рассматривая и сравнивая разные языки программирования, обнаружил одну удивительную закономерность и случайно открыл главный секрет популярности любого языка.
Исходную статью найти я не смог, но захотелось перепроверить факты из той статьи и я был удивлен тем, что я обнаружил! Не могу держать это в тайне, нельзя допустить, чтобы такое важное знание было утеряно!
Двоичная совместимость в Linux омрачена одним аспектом, который часто упускают из виду при рассмотрении выпуска ПО для Linux. В этой статье я расскажу, как можно увидеть этот аспект, как решать эту проблему при выпуске современного ПО и что же именно нужно сделать, чтобы устранить её полностью.