Я начал программировать на Rust несколько лет назад, и это постепенно изменило мой подход к разработке программ на других языках программирования, особенно на Python. До того, как я начал использовать Rust, я обычно писал код на Python очень динамично, без подсказок типов, повсюду передавая и возвращая словари и время от времени возвращаясь к интерфейсам со «строковой типизацией». Однако, испытав на себе строгость системы типов Rust и заметив все проблемы, которые она предотвращает, я внезапно стал сильно беспокоиться всякий раз, когда возвращался к Python и не получал тех же гарантий.
Рубрика «Совершенный код»
Пишем на Python как на Rust
2023-05-22 в 19:54, admin, рубрики: python, Rust, Программирование, Проектирование и рефакторинг, Совершенный кодBlink: супербыстрый эмулятор x86_64 размером 119 КБ
2023-05-12 в 8:01, admin, рубрики: freebsd, jit, linux, mac, Microsoft Virtual PC, mips, netbsd, open source, OpenBSD, powerpc, qemu, Redbean, risc-v, timeweb_статьи, virtualbox, vmware workstation, wasm, windows, x86, Блог компании Timeweb Cloud, виртуализация, Совершенный код
На Хабре когда-то писали про талантливую программистку Джастин Танни, автора маленьких и очень быстрых приложений. Приятно знать, что она не останавливает свою неординарную деятельность. Например, одна из её последних разработок — крошечный эмулятор под названием Blink размером всего 116 КБ, который очень быстро компилирует WASM и выполняет Linux-программы x86_64 под разными платформами и даже в браузере.
Читать полностью »
Укрощение имен. Как нейминг помогает оптимизировать код
2023-05-04 в 9:32, admin, рубрики: ruby, ruby on rails, Блог компании МойОфис, именование, мойофис, нейминг, оптимизация кода, Программирование, разработка, Совершенный код, Софт
Что такое имя? Имя — это ярлык, дескриптор, указатель в вашей памяти. Это краткое изложение сложной идеи. Оно позволяет ссылаться на «экономику» или «догфудингЧитать полностью »
«Чистый» код, ужасная производительность
2023-04-13 в 11:23, admin, рубрики: c++, Блог компании Sportmaster Lab, высокая производительность, Программирование, производительность, Совершенный код, чистый кодНа самом деле, большая доля этих правил не влияет на среду исполнения кода, который вы пишете. Подобные правила невозможно оценить объективно, да это и необязательно, ведь на этом этапе они достаточно произвольны. Однако есть правила «чистого» кода, на которые делают особый упор — это правила, которые можно измерить объективно, поскольку они влияют на поведение кода в среде исполнения.
Если посмотреть на список правил «чистого» кода и вытащить из него правила, которые действительно влияют на структуру кода, то мы получим следующее:
- Отдавайте предпочтение полиморфизму, а не «if/else» и «switch»
- Код не должен знать о внутреннем устройстве объектов, с которыми он работает
- Функции должны быть маленькими
- Каждая функция должна выполнять одну задачу
- Принцип «DRY» — Don’t Repeat Yourself («не повторяйся»)
Эти правила достаточно чётко формулируют то, как должен создаваться конкретный фрагмент кода, чтобы быть «чистым». Но я задам такой вопрос: если мы создадим фрагмент кода, соответствующий этим правилам, какова будет его производительность?
Читать полностью »
Два типа разработчиков ПО
2023-04-10 в 10:29, admin, рубрики: Карьера в IT-индустрии, люди, Программирование, разработка программного обеспечения, Совершенный код, управление разработкой, хаос
В моей голове несколько недель вертелась мысль, крошечная теория о том, как люди воспринимают разработку ПО.
Согласно моей теории, есть два типа разработчиков ПО:
Когда тип 1 узнаёт о задаче, он думает: «Это легко, люди просто могут делать X».
Когда о той же задаче узнаёт тип 2, он думает: «Это очень сложно, ведь для этого нужно, чтобы люди делали X».
Тип 1 предполагает, что задача проста, если она не техническая, потому что «можно просто попросить людей делать X». Тип 2 считает, что она сложна, потому что она не техническая.
Читать полностью »
О вреде GOTO-фобии (с примерами на C)
2023-03-04 в 21:36, admin, рубрики: C, GOTO, Алгоритмы, Программирование, Совершенный код, чистый кодГотофобия – это боязнь использовать инструкции goto. Обычно возникает из-за непонимания и незнания контекста этой проблемы, а также из-за историй о незапамятных временах в истории программировании. Разработчики, страдающие готофобией, готовы жертвовать удобочитаемостью своего кода, только бы не прибегать к goto.
Каждая собака знает (уже мемородный) заголовок статьи Дейкстры Letters to the editor: go to statement considered harmful («О вреде оператора Go To») (изначально эта статья называлась A case against the goto statementЧитать полностью »
Борьба за человекочитаемость кода: опыт Хабра
2023-02-10 в 12:42, admin, рубрики: Блог компании Хабр, код, Программирование, Проектирование и рефакторинг, рефакторинг, Совершенный код, хабр, чистый код
Идеей о том, что нужно писать человекочитаемый код, уже никому Америку не откроешь. О том, как это стратегически важно для бизнеса и почему так полезно для разработчиков, написано много. Все, плюс-минус, это понимают, но контексты бывают разные, и каждый по-своему переносит это в свой опыт.
Делай нейминг как сеньор
2023-02-09 в 7:50, admin, рубрики: dodoengineering, dodopizzaengineering, Анализ и проектирование систем, Блог компании Dodo Engineering, нейминг, Программирование, Совершенный код, управление разработкой, чистый код
В чём разница между сочинением третьеклассника и статьёй в крупном таблоиде? Любой из нас сходу определит, что есть что. Даже если оба текста описывают одно и то же событие. А чем отличается код сеньора от кода мидла?
Хватит использовать [a-zа-яё]: правильная работа с символами и категориями Unicode в регулярных выражениях
2023-01-27 в 12:15, admin, рубрики: regex, regexp, Программирование, Разработка веб-сайтов, регулярное выражение, Регулярные выражения, Совершенный код, типографикаUnicode – это набор символов, целью которого является определение всех символов и глифов всех человеческих языков, живых и мертвых. Поскольку всё больше и больше программ должны поддерживать несколько языков или просто любой язык, юникод в последние годы приобретает всё большую популярность. Использование различных наборов символов для разных языков может быть слишком обременительным для программистов и пользователей.
К сожалению, юникод привносит свои требования и подводные камни, когда речь заходит о регулярных выражениях.
Поддержка юникод-совместимых регулярных выражений
«Кандидат сбежал в слезах»: 5 главных вопросов для собеседования на Python разработчика
2023-01-26 в 14:48, admin, рубрики: python, python3, Карьера в IT-индустрии, Программирование, сарказм, собеседование, собеседование вопросы, собеседования задачи, Совершенный код, управление персоналомВ июле и августе 1991 года я, с подачи Гвидо Ван Россума, проводил технические интервью на позицию Middle Python Backend developer. И, видимо, буду вынужден продолжать проводить, о чём ниже.
Задача формулировалась как «найти человека, который сможет задать и поддерживать высокий уровень профессионализма в применении языка Python». Под эту задачу я сформировал новый опросник вместо того, которым пользовался несколько дней — старый имел слишком жесткий закос под промышленное программирование.
И вот что я хочу сказать вам, коллеги: вы меня огорчаете.