
Возможно, читатели помнят мою статью под названием «Эффект последней строки». В ней идёт речь о замеченной мной закономерности: ошибка, чаще всего, допускается в последней строке однотипных блоков текста. Теперь я хочу рассказать о новом интересном наблюдении. Оказывается, программисты тяготеют к тому, чтобы допустить ошибку в функциях сравнения двух объектов. Такое утверждение выглядит неправдоподобным, однако, я покажу огромное количество примеров ошибок, которые шокируют читателя. Читайте новое исследование, будет интересно и страшно.
Читать полностью »
Рубрика «код» - 10
Зло живёт в функциях сравнения
2017-05-19 в 13:44, admin, рубрики: bugs, C, C#, c++, pvs-studio, Блог компании PVS-Studio, зло, код, ошибки в коде, ошибки в программе, Программирование, психология программирования, Си, юнит-тестыКак я пишу код
2017-04-27 в 9:46, admin, рубрики: Анализ и проектирование систем, Блог компании Инфопульс Украина, код, Программирование, Проектирование и рефакторинг, Совершенный кодМне нравится думать, что я пишу хороший код. Ну или, что я хотя бы пишу больше хорошего кода, чем плохого.
Моя любимая особенность хорошего кода — это его скука. Предсказуемые выражения, одно за другим. Никаких сюрпризов, никаких трюков, никаких уникальных случаев. Никакого мета-программирования, конечно! Скучный код очень легко отлаживать, читать, объяснять.
Скучный код не использует глобальных состояний, не порождает побочных эффектов и старается уменьшить свою связанность с проектом, в котором он живёт. Скучнейшим образом происходят присвоения значений, которые для каждой переменной случаются лишь раз и избавляют нас от возможности увлекательного расследования кто же и когда изменил вот это состояние. Скучный код делает лишь то, что должен и не полагается на какие-то неявно высказанные предположения.
Код, использующий неявное поведение, может быть основан на каком-нибудь недокументированном, но уже реализованном функционале. Например, в мире написана целая куча НЕВЕРНОГО кода, который полагается на то, что функция файловой системы, возвращающая список директорий, вернёт их в отсортированном по алфавиту порядке. Это и вправду часто работает именно так, но ровно до того момента, пока не ломается по «непонятным» причинам. А на самом деле просто никто никогда этой сортировки не гарантировал.
Читать полностью »
Простая ошибка при кодировании — не значит нестрашная ошибка
2017-04-19 в 8:30, admin, рубрики: c++, devops, pvs-studio, Блог компании PVS-Studio, заблуждения, качество кода, код, менеджмент проектов, статический анализ кода, Управление продуктом, управление проектами, управление разработкой
Популяризируя статический анализатор кода PVS-Studio, мы обычно пишем статьи для программистов. Однако, на некоторые вещи программисты смотрят одностороннее. Именно поэтому и существуют менеджеры программных проектов, которые могут управлять процессом развития проекта направлять его в нужное русло. Я решил написать несколько статей, целевой аудиторией которых являются менеджеры программных проектов. Эти статьи помогут им лучше ориентироваться в вопросах использования методологии статического анализа кода. Сейчас мы рассмотрим ложный постулат: «ошибки кодирования несущественны».
Читать полностью »
Блокчейн на 200 строках кода
2017-03-21 в 15:27, admin, рубрики: Wirex, Блог компании Wirex, блок, блокчейн, децентрализованные системы, код, криптовалюта, Криптовалюты, майнинг, нода, структура, хэшированиеБазовая концепция блокчейна довольно проста: речь идет о распределенной базе данных, поддерживающей постоянно растущий список упорядоченных записей. Запутаться, однако, легко, поскольку всякий раз, когда мы говорим о блокчейнах, мы рассматриваем их с позиции задач, которые пытаемся решить и потому нередко начинаем подмешивать в это определение другие, очень близкие ему понятия. Это справедливо и в случае с популярными блокчейн проектами, такими, как Биткойн и Эфириум. Термин «блокчейн» обычно тесно связан с такими концепциями, как транзакции, умные контракты или криптовалюты.
Все это оправданно, но все же существенно усложняет процесс понимания принципа работы блокчейнов, особенно с точки зрения программного обеспечения с открытым исходным кодом. В этом материале я покажу вам крайне простой блокчейн, написание которого потребовало всего 200 строк Javascript-кода. Я назвал его NaiveChain.
Структура блока
Первым и логичным шагом было бы определиться со структурой блока. Чтобы сохранить максимальную простоту, мы включим в него лишь самое необходимое: индекс, метку времени, данные и хэши текущего и предыдущего блоков.
Читать полностью »
Glitch — новый подход к разработке приложений
2017-03-17 в 11:05, admin, рубрики: collaboration, github, glitch, Блог компании Everyday Tools, код, Программирование, проекты, разработка, разработка игр, разработка мобильных приложений, разработка приложенийНа днях мы наткнулись на интересную статью на блог-платформе Medium, речь в которой идет о свежем проекте компании Fog Creek — Glitch (с английского «глюк», «сбой программы»). Бета-версия проекта стартовала в декабре 2016 года, правда, под другим названием, но об этом позже.
Glitch – это, как заявляют создатели, «дружелюбное сообщество, где вы можете создать приложение своей мечты».

Проект призван сделать процесс создания ботов и веб-разработку быстрее и проще. Сервис предлагает бесплатно ознакомиться с примерами работающих приложений, куски кода которых можно использовать для создания собственных продуктов, и дает возможность воспользоваться редактором кода для их модификации. Glitch поддерживает импорт и экспорт проектов из GitHub, в частности вы можете поместить прямо на страницу проекта GitHub особую кнопку, которая позволит новым пользователям запускать его на Glitch одним щелчком мыши.
Читать полностью »
Я — самозванец
2017-03-16 в 7:06, admin, рубрики: Alconost, javascript, mozilla, Блог компании Alconost, веб-разработчик, карьера, карьера программиста, код, ошибки, Программирование, профессиональный рост, Разработка веб-сайтов, синдром самозванца, метки: синдром самозванца
Писать об этом очень тяжело, даже тяжелее, чем признаться себе в этом. Я писал заявления об увольнении с любимых мест работы, заканчивал отношения, много в чем не преуспел и портил свою репутацию. Но чувства, которые я из-за этого испытывал, были временными: поначалу бывало очень плохо, но через пару месяцев я оставлял это позади и жил дальше. И все же есть одно чувство, от которого мне так и не удалось избавиться за всю свою карьеру: синдром самозванца.
Переведено в Alconost
«Самозванец» — сильное слово, но именно так я чувствую себя на протяжении всей своей карьеры профессионального веб-разработчика. Мне кажется, что я, хоть и не прекращаю учиться каждый день, все равно отстаю. Мне кажется, что меня воспринимают как эксперта там, где я считаю себя затаившейся катастрофой. Я полный самозванец. Мошенник.
Читать полностью »
Все программисты попадают в #ТАЙ
2017-03-14 в 14:46, admin, рубрики: framework, IT-стандарты, jquery, json, Блог компании Нетология: университет интернет-профессий, Занимательные задачки, код, ненормальное программирование, ооп, Программирование, разработка, Совершенный код, советы и рекомендации, советы начинающимАнонимный разработчик написал статью для «Нетологии» о том, кто такие программисты, как ими становятся, и почему все программисты попадают в свой собственный Таиланд. При условии, если они пишут читабельный код, конечно же.

Если вы думаете, что быть программистом просто, то вы ошибаетесь. Если думаете, что трудно, то тоже ошибаетесь. Так кто такой программист, как писать крутой код и что отличает хороший тон от плохого в Таиланде или без него разбираемся с анонимусом.
Читать полностью »
Работа с устройствами печати в C# на примере реализации виртуального принтера
2017-02-23 в 0:08, admin, рубрики: .net, alloc, allocate, allocation, api, C#, code, develop, developing, driver, error, escorp, exomode, extern, intptr, invoke, malloc, marshal, marshalling, memory, native, PInvoke, pointer, port, print, printing, programming, technologies, technology, virtual, WinAPI, больше, виртуальный, выделение, Драйвер, код, маршалинг, маршалирование, монитор, натив, нужно, ооп, ошибка, память, печать, принтер, Программирование, разработка под windows, тегов., указательПриветствую всех. В сегодняшней статье речь пойдёт о том, как можно реализовать собственный высокоуровневый API в управляемом коде для работы с устройствами печати, от установки нового монитора печати в системе и до получения обработанного драйвером устройства печати документа с порта принтера.
Как и в прошлый раз, статья будет полезна для ознакомления разработчикам младшего и среднего звена. В процессе изучения материала, Вы узнаете как можно обращаться к низкоуровневым DLL WinAPI в C# с помощью P/Invoke, как установить, настроить и удалить из системы мониторы печати, драйвера принтера, само устройство печати, открыть и связать порт для перенаправления входных данных с устройства печати на монитор, познакомитесь с ключевыми моментами применения маршалирования. Так же мы на практическом примере разберёмся, как с помощью нашего API можно удобно манипулировать устройствами печати в системе, узнаем как можно перехватить обработанные данные после печати с принтера и, например, отправить их на сервер.
Читать полностью »
Снесите это немедленно
2017-02-21 в 10:48, admin, рубрики: Анализ и проектирование систем, высокая производительность, код, ошибки, плохая архитектура, Программирование, советы
Андрей Аксенов делится трудностями в подготовке слайдов для доклада. Это — расшифровка выступления Highload++.

Если видите этот слайд – я не очень успел картинки. Пришел Бунин, убедился, что у него докладчик не пропал и задал подлый вопрос. Мы заранее готовим конференцию, 1 сентября приём докладов. Я тоже хотел заранее подготовиться. Вчера в 6 вечера начал рисовать слайды для другого доклада, а для этого в 11, поэтому вот так.
Придется делать чистый стендап – а слушать ухом, но это, наверное, к лучшему, потому что можно спокойно тупить в телефон.
Что значит чистый стендап? Никакого кода совершенно, я специально постарался минимизировать количество строчек кода в презентации, правда пара всё равно протекла. Никаких революционных соображений ни на каких темы. Ну и чистый быдлятский юмор.
Возможно это федеральное преступление и меня ФСБ заметёт сразу после того как я со сцены выйду. Рискнем, заодно познакомлюсь, поехали.
Про что доклад?
Секрет быстрого программирования: не задумывайтесь
2017-02-16 в 7:26, admin, рубрики: Alconost, Блог компании Alconost, быстрое программирование, Занимательные задачки, качество кода, код, мысли, ненормальное программирование, проблемы разработки по, Программирование, программист, продуктивность, простой код, разработка, разработчик, сложный код, Совершенный код, советы
Программировать быстро — это легко! Так считает инженер-программист компании Google, который все публикации в своем блоге подписывает лаконичным «Макс». Макс также работает главным архитектором, комьюнити-менеджером и релиз-менеджером в Bugzilla Project. Мы в Alconost впечатлились и перевели его советы о том, можно ли как научиться программировать с космической скоростью.
Если обсуждать с разработчиками сложность кода, они часто говорят, что хотят писать простой код, но из-за давления дедлайнов и более глубинных причин у них не хватает времени или знаний для того, чтобы выполнить задачу и оптимизировать решение до максимальной простоты.
Они, конечно, правы в том, что в условиях сжатых сроков разработчики, как правило, будут писать сложный код. Впрочем, дедлайны не должны приводить к сложности. Вместо фразы «Этот дедлайн помешал мне написать простой код» можно произнести равноценную: «Я недостаточно быстро программирую, чтобы писать просто». То есть чем быстрее вы как программист — тем меньше влияния на качество вашего кода имеют дедлайны.
Теперь давайте разберемся, как, собственно, стать быстрее? Может, это врожденное магическое умение? Надо ли быть «умнее» других, чтобы быть быстрым?
Нет, это вообще не магия и не врожденный дар. На самом деле существует всего одно простое правило, считаясь с которым, со временем вы полностью решите проблему:
Читать полностью »
