Меню

Ошибка программиста на жаргоне

Начинающие разработчики не сразу понимают старших товарищей. Фразы вроде «я апишку свитчнул» или «заимпорти другую либу» звучат для новичков как лекция по математическому анализу для первобытного человека. Поэтому мы решили сделать небольшой словарь профессионального сленга программистов.

  • А
  • Б
  • В
  • Г
  • Д
  • Ж
  • З
  • И
  • К
  • Л
  • М
  • Н
  • О
  • П
  • Р
  • С
  • Т
  • У
  • Ф
  • Х
  • Ц
  • Ч
    • Ю
    • Я

Слова и фразы в словаре отсортированы по алфавиту. Кстати, словарь можно дополнять. Пиши в комментариях термины, с которыми вы сталкивались на работе.

Вы читаете обновленную и улучшенную версию нашей старой статьи

А

Адаптив — адаптивный дизайн, адаптация интерфейса к использованию на разных экранах.

Аджайл — от англ. Agile. Общий термин, который описывает ценности и принципы гибкой разработки программного обеспечения, а также практические подходы к разработке. Понятие Agile стало популярным после публикации Манифеста гибкой разработки программного обеспечения в 2001 году.

Айдишник — id, идентификатор.

Альфа — этап разработки программного обеспечения, на котором разработчики добавляют в программу новые функции, а тестировщики испытывают программу. Это внутренний или непубличный этап.

Апишка — API, программный интерфейс приложения или интерфейс прикладного программирования.

Апрув, апрувнуть — от англ. Approve. Одобрение, одобрить, утвердить.

Аутсорс — аутсорсинг, передача компанией части операционной деятельности другой компании.

Б

Баг — от англ. Bug — жучок, клоп. Ошибка в программе.

Бахнуть — что-то быстро сделать, изменить или дополнить функциональность приложения.

Бета — бета-версия, приложение на стадии публичного тестирования.

Бот — сокращение от «робот». Ботом называют программу, которая автоматизирует интерфейс. Пример — автоответчик в чате.

Бэкап, бэкапить — резервная копия или процесс создания резервной копии приложения.

Бэкенд — от англ. Back-end. Программно-аппаратная или серверная часть приложения.

Бэклог — от англ. Backlog. Перечень рабочих задач команды разработчиков, упорядоченный по приотритету.

В

Ворнинг — от англ. Warning — предупреждение. Предупреждающее сообщение в интерфейсе.

Войтивайти — шуточное выражение, обозначает процесс переквалификации далекого от IT-сферы специалиста в разработчика.

Выкатить — сделать доступным для пользователей. Например, «выкатили новую версию сайта» значит сделали новую версию сайта доступной для пользователей.

Выпадашка — выпадающее меню, то же, что и «дропдаун».

Г

Галера — компания, в которой платят низкие зарплаты и не ценят разработчиков.

Гит — система контроля версий Git или сервис GitHub.

Г****окод — плохой, некачественный код. Объяснение термина есть в статье нашего студента.

Градиент — плавный переход из одного цвета в другой.

Грумить — от англ. Grooming. Приводить в порядок, «причесывать».

Д

Движок — в веб-разработке так называют системы управления контентом.

Дебажить — устранять ошибки, баги.

Деплой, деплоить — развёртывание, публикация рабочей версии приложения. Пример: задеплоить сайт — перенести сайт с тестового на рабочий сервер, сделать его доступным для пользователей.

Джун, джуниор — от англ. Junior. Младший разработчик. Специалист без опыта или с минимальным опытом работы.

Дезигнер — презрительно-снисходительное название дизайнера.

Докеризировать — завернуть приложение в докер (платформу для разработки, доставки и запуска контейнерных приложений).

Драй — от англ. DRY, don’t repeat yourself. Принцип программирования, предлагающий избегать повторений кода.

Дропдаун — выпадающее меню, то же, что и «выпадашка».

Дропнуть — от англ. Drop. Удалить, отключить, сбросить или обнулить что-либо.

Ж

Жаба — язык программирования Java.

Жабаскрипт — язык программирования JavaScript.

З

Залить — загрузить. Например, «залить файлы на сервер».

Запилить — сделать что-то, добавить какую-то функциональность.

Змея — язык программирования Python.

И

Исходник — файлы, в которых находится исходный код приложения, или сам исходный код.

Итерация — повторение. «Мы сделали несколько итераций» — мы повторили шаг несколько раз.

К

Колл — от англ. Call. Созвон, онлайн-конференция, онлайн-совещание.

Коммит, коммитить — от англ. To commit — совершать. В контексте работы над приложением — сохранять код в репозитории.

Конфа — конференция.

Копипаста — от англ. Copy-Paste. Скопированный откуда-то код.

Костыль — код, который нужен, чтобы исправить несовершенство ранее написанного кода.

Это интересно
На Хекслете есть раздел с бесплатными курсами. Здесь есть курсы по логике, английскому языку, операционным системам, по языкам и инструментам программирования. Регистрируйтесь и учитесь бесплатно!

Л

Легаси — от англ. Legacy. Морально устаревший код, который не обновляется, но используется. Или код, который разработчик получил по наследству от предыдущих разработчиков.

Либа — от англ. Library — библиотека. Речь идет о библиотеках кода, например, React.

Линтер — общее нарицательное название программ, которые анализируют код и предупреждают разработчика об ошибках.

Лист — от англ. List — список.

Локалка — локальный. Например, локальный сервер или сеть.

М

Мидл — от англ. Middle — средний. Уровень разработчика, следующий за джуниором. Опыт и уровень знаний миддла позволяет ему самостоятельно решать серьезные задачи.

Мёржить — от англ. Merge, сливать. Речь идет об объединении или слиянии веток кода.

Меншить — от англ. Mention — упоминание. Упоминанать в чатах или соцсетях. «Менши меня, когда будет готово» значит «упомяни меня, когда будет готово».

Н

Навбар — навигационный блок на сайте или в интерфейсе программы.

Накатить — внести изменения, задеплоить новую версию приложения. Противоположное термину «откатить».

О

Опенсорс, опен-сорс — от англ. Open Source. Программное обеспечение с открытым исходным кодом.

Откатить — удалить изменения, вернуть предыдущую версию приложения. Противоположное термину «накатить».

Ось — операционная система.

П

Падаван — ироничное название стажера или джуниора.

Пилот — пробная (пилотная) версия продукта.

Питон — язык программирования Python.

Подвал — то же, что и «футер». Элемент структуры страницы, который находится в нижней части и содержит служебную информацию — контакты, ссылки на соцсети, публичная оферта и т. д.

Поплыла вёрстка — некорректное отображение страницы в браузере.

Продакшн или продакшен (продакшн-код) — обозначение кода для рабочей версии приложения.

Пушить — использовать команду push, публиковать что-то.

Пэхапэ — язык программирования PHP, то же, что и «пыха».

Пыха — язык программирования PHP, то же, что и «пэхапэ».

Р

Рекурсия — описание процесса с помощью самого процесса. Например, выражение «рекурсивный вызов функции» описывает ситуацию, в которой функция вызывает сама себя.

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

Релокация — перевод сотрудника или бизнеса в другое место внутри страны или за границу.

Репа — репозиторий, хранилище данных. Например, код программы можно хранить в репозитории на GitHub.

Ридми — файл Readme, в котором содержится информация о программе.

Ругаться, например, линтер ругается — сообщения об ошибках в коде, работе сервиса и так далее.

С

Сабж — от английского Subject — тема, предмет. «По сабжу» — по теме обсуждения.

Свитчнуть, свичнуть — переключить. От английского switch.

Сетка — модульная сетка, используется для дизайна и верстки страниц.

Сеньор, синьор — от англ. Senior — старший разработчик.

Слетело — сломалось.

Снести — удалить.

Сорец (Сорцы) — от англ. Source. Исходный код.

Стек — изначально абстрактный тип данных. В разговорной речи используется для обозначения списка технологий, которые использует разработчик или компания. Пример: «Наш стек — HTML/CSS, JavaScript, React».

Собес — собеседование.

Софт — от англ. Software — программное обеспечение.

Софт-скиллы — от англ. Soft skills — знания и качества специалиста, прямо не связанные с профессиональной деятельностью. Примеры: коммуникабельность, проактивность.

Спринт — короткий промежуток времени (до 4 недель), в течение которого scrum-команда выполняет определенный объем работы.

Т

Таска — от англ. Task. Задание, задача.

Тачка — компьютер.

Темплейт — от английского Template — шаблон.

Тестировщик — специалист по тестированию программного обеспечения.

Тимлид — от английского Team Lead — руководитель команды. Координатор группы программистов.

У

Убить — удалить что-то. Например, «убить профиль» означает удалить профиль.

Ф

Фидбек — от англ. Feedback — обратная связь.

Фиксить, пофиксить — от англ. Fix. Чинить, починить, исправить.

Фича — функция, возможность. От англ. Feature.

Фреймворк — от англ. Framework — каркас. Инструмент разработки, набор типовых шаблонных решений, упрощающих работу программиста. Примеры: Laravel, Bootstrap.

Фронтенд — от англ. Front-end — клиентская часть приложения.

Х

Хатэмээль, хатээмэль — HTML, язык гипертекстовой разметки.

Хардкодить — статически прописывать в коде данные, которые должны вычисляться динамически. Плохая практика, антипаттерн в программировании.

Хацкер, кулхацкер — ироничное название начинающего специалиста, который считает себя опытным программистом. От английского Hacker и Cool Hacker.

Хедер, хэдер — элемент структуры веб-страницы, находится в верхней части и содержит логотип, меню, служебную информацию.

Хотфикс — от англ. Hotfix. Срочное исправление критических ошибок, уязвимостей или недоработок в программе.

Ц

Цэмээс, цээмэс — от англ. CMS — Content Management System, система управления контентом.

Цээсэс — от англ. CSS — Cascading Style Sheets, каскадные таблицы стилей.

Ч

Чекать, чекнуть, прочекать — от англ. Check. Проверять, проверить.

Ю

Юзать — от английского To use — использовать.

Я

Ява — язык программирования Java.

Яваскрипт — язык программирования JavaScript.

ЯП — язык программирования.

Читайте также:
Как джуну найти работу и где лучше начинать карьеру в IT: советы от Хекслета

bugs Программные ошибки, или, говоря по-программистки, баги – это самая злободневная тема для любого программиста, занятого повседневной коммерческой разработкой софта. Неважно, пишите ли вы на PHP, Java/C# или, может даже, на новомодном Haskell… Баги – это то общее, что объединяет абсолютно всех: начинающих и профессионалов, сторонников-бессребреников OpenSource и работяг, делающих на программировании большие деньги. Это порой неподвластная уму и отладчику стихия, которая, безусловно, подлежит укрощению и, как любое другое явление природы, требует для этого соответствующей научной базы. Стройная и непротиворечивая классификация – краеугольный камень любой теории, начальный шаг к обузданию грозной стихии незнания.

И, хотя в интернете есть много самых разных списков, пытающихся как-то по-своему классифицировать программные ошибки по их типам, – я попытался сегодня собрать всё их дивное разнообразие воедино в одном месте. Сразу предупреждаю: под катом вы не найдёте серьёзную систему классификации ошибок, подобную той, что многие изучали в университетах: мы сосредоточимся на живом фольклоре – тех определениях и явлениях (преимущественно англоязычных), с которыми повседневно встречаются обычные программисты, – даже если нам при этом и приходиться невольно улыбаться.

Разновидности ошибок

Гейзенбаг (Heisenbug) – сложно детектируемый тип ошибки, периодически исчезающий и меняющий свои свойства при каждой попытке обнаружения или отладки. Достаточно близок по своему значению к отечественному термину «плавающая ошибка». Название взято из квантовой механики и является игрой слов от известного и основополагающего в соответствующем разделе физики «принципа неопределённости Гейзенберга», который на бытовом уровне понимается как изменение наблюдаемого объекта в результате самого факта наблюдения. В силу своей изначальной природы «гейзенбаги» очень сложно поддаются локализации и осмыслению, поскольку они проявляются в зависимости от случайных флюктуаций и воспроизводятся крайне нестабильно.

Борбаг (Bohrbug) – самый распространенный тип программной ошибки, которая, в противоположность Гейзенбагу, не исчезает и не меняет своих свойств. Иначе говоря, это «ошибка обыкновенная», которая воспроизводится стабильно и регулярно и существование которой абсолютно очевидно для всех участников процесса создания и эксплуатации программы, что в свою очередь, делает её исправление чаще всего тривиальным.
bugsМандельбаг (Mandelbug) – редкая программная ошибка, чьё поведение кажется полностью хаотичным (в силу чрезвычайной сложности). Природа этой ошибки, как правило, настолько сложна, что в этом случае часто применяют устойчивую программистскую идиому: «проще переписать всё заново и с нуля, чем пытаться разобраться, как оно работает». Некоторые программы представляют из себя один сплошной мандельбаг, при этом чисто эмпирически установлено, что создатели подобных программ имеют смуглый цвет лица и радикально черные волосы.

Название происходит от имени Бенуа Мандельброта, основоположника фрактальной геометрии, который обладал необычным математическим даром, в результате которого имел обыкновение писать свои научные сочинения столь сложным языком (пропуская все промежуточные выводы, для него слишком очевидные), что для осмысления его рекурсивного (фрактального) метода понадобились совокупные усилия всего научного сообщества.
bugsШрёдинбаг (Schroedinbug) – критическая ошибка с налётом мистичности, которая может долго никак не проявлять себя, однако внезапно возникает, если кто-то наткнётся на неё в исходном коде этой программы и осознает, что система вообще не могла работать при наличии настолько серьёзной ошибки. После этого программа внезапно перестаёт работать вообще, до тех пор пока обнаруженная ошибка не будет исправлена. Несмотря на кажущуюся потусторонность этой ошибки, она ещё как встречается в реальной жизни, например, вот её практический пример.

Как правило, Шрёдинбаг – это результат code review самого опытного программиста на фирме в конце длинной трудовой недели, который в пятницу вечером, хорошо подумав над программой своего младшего коллеги, приходит к однозначному мнению, что «этого не может быть просто потому, что этого не может быть». Слово «Шрёдинбаг» происходит от мысленного эксперимента с котом Шрёдингера.

Бозебаг – чрезвычайно большое скопление ошибок в определенном участке кода, так называемый «блошиный остров». В силу концентрации всего деструктивного, что только есть, на этом сравнительно маленьком, как правило, критичном для всей программы участке, часто напоминает «ковровую бомбардировку» по своим последствиям при её ликвидации. Хороший бозебаг всегда написан таким образом, что должен изначально ставить в тупик программиста при попытке понять правильный порядок его исправления.
bugsДзенбаг – абсолютно не влияющая ни на что, но реально существующая ошибка, по своей идее созвучна известной фразе: «Видишь суслика? – Нет. – А он есть!».

Метабаг – грамматическая или орфографическая ошибка (или просто неудачная формулировка) в комментарии к сложной части кода, как-то искажающая саму логику описываемого кода, уводящая своей ложной трактовкой в сторону от того, что делает программа на самом деле, создавая этим ненужный драматизм в понимании этого кода буквально на пустом месте.

Фомбаг (Phase of the Moon bug) строго периодический баг, имеющий четкую корреляцию по времени своего проявления и активизирующийся при исполнении программы только в это время (например: только по утрам, только 13-го числа, и так далее).
bugsАльфабаг (particle bug) – баг, который произошел лишь единожды, а разбор ситуации утверждает, что это следствие отказа или глюка аппаратных средств (здесь чаще всего в силу мистичности часто сваливают всё на влияние потока альфа-частиц или повышенное электромагнитное/солнечное излучение в этот день).

Фермабаг – часто встречаемый тип ошибки, сложно доказуемый или нереальный с точки зрения автора программы, проявляющийся, как правило, исключительно на машинах заказчика. Чем дальше территориально находится заказчик от создателя программы и чем более сложные условия для удалённой отладки и диагностики такого случая – тем больше вероятность его проявления.

Уфобаг (UFO bug) – это тип популярной псевдоошибки, относительно которой – даже если ранее было установлено, что она не существует и является следствием непонимания покупателем заложенной функциональности (это не баг, это фича!) – покупатели дружно продолжают настойчиво сообщать, несмотря на все ваши старания победить возникшую эпидемию непонимания. Как правило, причины такого поведения лежат уже в области UI или провала в предсказании психологии поведения типичного пользователя программы.
bugsЦепочная ошибка (Counterbug) – как правило, очень неочевидная ошибка, которая может наблюдаться исключительно при помощи уже «посвященного в ошибку» человека. И только после личного лицезрения ошибки во время его демонстрации вы обретаете способность сами «её видеть» и указать на неё следующему очевидцу (counter++). Ключевое свойство ошибки: её описание не поддаётся сообщению ни в виде письменного баг-репорта, ни после подробного изложения по телефону – только личная демонстрация позволяет «увидеть и прикоснуться к сему таинству».

Лох-нессовский баг, или Bigfoot-баг, – это просто невероятная ошибка, которую видел только один человек, доверять которому, как правило, можно (нужно) безоговорочно (например, твой босс или топ-менеджер крупного клиента). Возможно, кто-то из них даже выложил скриншот, доказывающий её существование. Эта ошибка больше никогда никем не воспроизводилась и никак не проявлялась, само её описание кажется фантастическим даже для вас, автора программы, но с тех самых пор вы постоянно размышляете, что же это могло такое быть?

bugs

Другие распространенные термины

Условия Йоды (Yoda Conditions)
Одна из самых обсуждаемых и распространенных ошибок, название которой пародирует известного киношного персонажа Йоду (который, говоря, постоянно переставляет слова местами). Итак, в нашем случае запись if(constant == variable) вместо if(variable == constant) равноценна тому, как если сказать: «Если голубое – это небо».
bugsRefucktoring
Некоторые пишут это как Refuctoring, но я отношусь к тем, кто предпочитает именовать этот бесполезный навык именно Refucktoring.

Итак, это всем хорошо знакомый рефакторинг ¬– но наоборот, когда, исходя из самых лучших побуждений, некто берёт изначально хороший код, и после внесения в него «улучшающих» этот код исправлений впредь работа с ним делается невозможной ни для кого, кроме автора данных улучшений. В связи с этим на Руси говорят: «заставь дурака богу молиться, он и лоб себе расшибёт». Как правило, refucktoring является результатом чтения большого количества умных книг, смысл которых не был понят до конца, то есть следствием так называемого «Cargo cult programming.

Unicorny
Прилагательное для описания некоей киллер-фичи, которой уделяется очень много внимания и надежд, несмотря на то, что она находится пока в стадии планирования и её возможность реализации ещё недостаточно изучена в контексте всей программы. Как правило, наличие Unicorny-фич потенциально приводит к возникновению Vaporware-продукта.

Fear Driven Development
Разработка, инициированная и простимулированная животным страхом. Как пример, это когда руководство в отместку увольняет кого-то, урезает ресурсы и зарплаты, постоянно орёт «пшёл вон отсюда!», при этом искренне надеясь, что люди после этого сразу начнут работать лучше. Применяется не только на уровне программирования, но и на уровне построения общественно-социальных систем, особенное широкое применение этот подход нашёл в военной сфере.
bugsHope Driven Development
Разработка, полностью движимая и управляемая призрачной надеждой на чудо. Иначе говоря, это разработка в длительном (иногда – бесконечном) неспланированном цикле с надеждой, что в заключении всё как-то само образуется и наконец-то заработает в релизе.

Debt-Driven Development
Разработка, в которой в силу некоторых причин (лень, наивность, нехватка времени и так далее) исправление всех выявляемых ошибок и сложностей постоянно откладывается «на потом». DDD – это методология, на основе которой создаётся конечный продукт с максимально смещённой к дедлайну фазой фиксинга ошибок в надежде прибить их потом и сразу всех одним махом (не отвлекаясь на такую ерунду в процессе основной фазы разработки).

Ping Pong Development
Методология, которая позволяет здорово сэкономить на тестировщиках. Все продукты тестируются непосредственно в рабочей среде и на конечных заказчиках, здесь программа поставляется максимально оперативно в стандартном виде «как есть». Заодно это позволяет сделать разработчиков ближе непосредственно к людям, работающим на их программе, что часто бывает очень даже полезным для первых.

Гидра-код, гидробаг (Hydra Code/Bug)
Это витиеватый код, который никак не удается исправить. Как и у мифической Гидры, каждый фикс такого бага порождает два новых бага ещё страшнее предыдущих. По всем приметам, Гидра традиционно возникает, как правило, на пороге окончания самого главного и ответственного дедлайна. Любой ответственный человек, который всерьёз берётся за исправление гидробага и готов биться с ним до конца, как правило, попадает в жернова race condition, откуда коллеги если и вытаскивают его живым, то отправляют сразу прямиком на оплачиваемый больничный.
bugsBicrement
Все знакомы с инкрементом? Добавить 2 к переменной за один шаг – это и есть «двойной» (би-) инкремент.

Босс-билд
Создание специальных кастомных сборок для больших боссов – людей, мнение которых, с одной стороны, просто невозможно игнорировать, но с другой – очевидно, что такие программы невозможно использовать большинству простых смертных. Это попытка применения стратегии win-win, которая приводит к появлению дополнительной ветви разработки и цели компиляции.
bugsHooker Code
Это проблемный код, который напрямую ответственен за зависания вашего приложения намертво. Здесь удачная игра слов, так как “a hooker” также может значить «проститутка». Ввиду этого к подобному коду особенно нетолерантно относится старшее, в большинстве своем до ужаса пуританское поколение разработчиков.

bugs

Вот типичная иллюстрация того, как звучит применение этого выражения в подходящей ситуации:

– Почему у нас лежит сайт?
– Вероятно, там еще остался этот проститутский код.

Дженга-код
Это такой дизайн кода, когда при его малейшем изменении всё приложение рушится, а его логика работы становится бессмысленной. Как правило, это изначально неудачное жесткое завязывание логики приложения на какую-то отдельную его часть на этапе проектирования, что делает общую ситуацию похожей на популярную игру «дженга». Такая система может сохранять равновесие и даже работать, но малейшее неудачное движение (правка) и… море раздражения и разочарования.

bugsФальстарт (False Start)
Это когда с пылу-жару, на пике энтузиазма кидаешься в работу, и, уже накодивши большой кусок программы, вдруг осознаешь, что это не будет работать в контексте данной конкретной системы (или есть гораздо более эффективный способ реализации этой идеи). Мораль здесь такова: всегда сначала лучше как следует подумать, перед тем как закатывать рукава и приступать непосредственно к работе. Фальстарт особенно плачевен, когда это касается создания дизайна (каркаса) системы, так как при обнаружении системных противоречий уже на поздней фазе проектирования системы такое приложение неизбежно подлежит полному переписыванию.

Египетские скобки
Это распространенный стиль расстановки фигурных скобок, как показано на кусочке кода внизу:
if (a == b) {
   print(«hello»);
}

Если посмотреть на рисунок ниже и на эти скобки, то становится очевидным данное им название. Вообще, такой стиль описания был описан ещё в знаменитой книге Кернигана и Ричи «Язык программирования С», поэтому египетский стиль также известен для многих как K&R. Также, насколько я понимаю, «египетские скобки» являются стандартом для Java.

bugsСиндром красивых бантиков
Маньячное и неудержимое желание разработчика вычистить свой код до блеска, когда он раз за разом рефакторит его, не в силах остановиться. И даже тогда, когда уже кажется, что этот идеал найден, такой разработчик всё равно увидит в нём место, где можно добавить хотя бы один лишний пробел, чтобы всё казалось ровнее и красивее. Как правило, это носитель идей перфекционизма и нарциссизма, который активно ищет, как обрести вечное совершенство через программирование. Как минимум, он страдает низкой эффективностью своей работы, как максимум – в своём бесконечном поиске идеала склонен создавать проблемы себе и другим на абсолютно пустом месте.

Common Law Feature
Это ошибка в системе, которая существует уже настолько давно, что все давно приспособились к ней. Теперь невозможно исправить её, чтобы не сломать весь функционал других систем, намертво завязанных на неё. Это тот самый случай, когда почтенный возраст и известность бага приводят к тому, что он заслуженно и неизбежно получает титул «фичи».
bugsОшибка 101: реализация, несовместимая с реальностью (Reality 101 Failure)
Это точная реализация функциональности программы, заданной в спецификации, которая сразу после её внедрения, в силу каких-то причин, становится абсурдной или невостребованной. Как правило, это следствие недостаточного понимания условий постановщиком задачи либо следствие неких форс-мажорных обстоятельств, произошедших уже после релиза программы. Соответственно, подверженная ошибке 101, подобная фича (или вся программа) остаётся навсегда бессмысленной и неиспользуемой.
bugsShotgun debugging
Стратегия отладки или поиска ошибки в программе, когда исправления вносятся наугад (исходя из самых смутных догадок или подчас иррациональных гипотез), в надежде, что это будет тот самый «случайный, но меткий выстрел». Данный вид пассивной отладки часто применяется сильно уставшим программистом в конце рабочего дня, и эта стратегия является полным аналогом кнопки «Мне повезет» в поиске Google. Впрочем, чаще всего подобные подсознательные индукционные правки программы приводят к ещё более плачевным последствиям, и прекрасно зная это, программист чаще всего уповает на магическую кнопку Undo.

Smug Report
Это баг-репорт, предоставляемый разработчику «продвинутым» пользователем, который считает, что он сам понимает суть проблемы или устройства системы (как правило, содержащий уже готовые решения и поучения, как не следует делать впредь). Как правило, степень самоуверенности обратно пропорциональна корректности описываемых причин проблемы.

Swiss Army Code, SAC
Тип кода (стиль кодирования), который содержит такое количество функциональности на все мыслимые или даже немыслимые случаи жизни, что при желании достичь абсолютной универсальности этот код становится тяжелым, неповоротливым, а его многочисленные частные решения перестают решать свою проблему достаточно качественно. Кодирование в стиле швейцарского ножа – это проблема нарушения гармоничного баланса между количественными показателями фич и их качественными характеристиками, что в итоге приводит к появлению просто монстроидальных классов или библиотек.
bugs

Заключение

Конечно, огромное количество ходовых выражений осталось за бортом этого короткого словарика. Всем желающим продолжить погружение в неформальный жаргон программистов предлагаю самостоятельно потоптать приведенный забор ссылок (1, 2, 3, 4, 5, 6), из которых было отобрано и прокомментировано самое интересное (на мой субъективный взгляд), но при этом далеко не все поместилось в формат одной небольшой статьи.

Если у кого-то есть свои, не упомянутые здесь, устойчивые и удачные профессионально-жаргонные выражения, – просьба приводить их со своим описанием в комментариях.

«Страшно, и поэтому интересно».

Подробности
июля 04, 2014
Просмотров: 133141

Виды ошибок в программировании

Существуют различные типы программных ошибок, которые могут возникать на этапе разработки программы программного обеспечения и каждый программист должен знать о них.

В этой статье вы найдете описание самых распространенных ошибок программирования, cкоторыми может столкнуться каждый разработчик.

Если вы абсолютный новичок в области программирования то эта статья непременно будет вам интересна: Основы программирования для начинающих.

Ошибки программирования, более известные как «Баги» на жаргоне, бич любого разработчика программного обеспечения. Поскольку машины все чаще используются в автоматическом режиме, с бортовыми встраиваемыми системами или компьютерами, контролирующими их функционирование, программная ошибка может иметь серьезные последствия. Были случаи, когда космические челноки и самолеты, разбивались из-за ошибки в программном обеспечении во встраиваемом компьютерном оборудовании. Одна лазейка, оставленная в коде операционной системы, может обеспечить точку входа для хакеров, которые могут использовать эту уязвимость. К этим, ошибкам нужно относиться очень серьезно, так как мы все больше и больше полагаемся на компьютеры.

Основные виды ошибок в программировании

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

 

Тип ошибок программирования

                              Описание

Логическая ошибка

Это, пожалуй, наиболее серьезная из всех ошибок. Когда написанная программа на любом языке компилирует и работает правильно, но выдает неправильный вывод, недостаток заключается в логике основного программирования. Это ошибка, которая была унаследована от недостатка в базовом алгоритме. Сама логика, на которой базируется вся программа, является ущербной. Чтобы найти решение такой ошибки нужно фундаментальное изменение алгоритма. Вам нужно начать копать в алгоритмическом уровне, чтобы сузить область поиска такой ошибки.

Синтаксическая ошибка

Каждый компьютерный язык, такой как C, Java, Perl и Python имеет специфический синтаксис, в котором будет написан код. Когда программист не придерживаться «грамматики» спецификациями компьютерного языка, возникнет ошибка синтаксиса. Такого рода ошибки легко устраняются на этапе компиляции.

Ошибка компиляции

Компиляция это процесс, в котором программа, написанная на языке высокого уровня, преобразуется в машиночитаемую форму. Многие виды ошибок могут происходить на этом этапе, в том числе и синтаксические ошибки. Иногда, синтаксис исходного кода может быть безупречным, но ошибка компиляции все же может произойти. Это может быть связано с проблемами в самом компиляторе. Эти ошибки исправляются на стадии разработки.

Ошибки среды выполнения (RunTime)

Программный код успешно скомпилирован, и исполняемый файл был создан. Вы можете вздохнуть с облегчением и запустить программу, чтобы проверить ее работу. Ошибки при выполнении программы могут возникнуть в результате аварии или нехватки ресурсов носителя. Разработчик должен был предвидеть реальные условия развертывания программы. Это можно исправить, вернувшись к стадии кодирования.

Арифметическая ошибка

Многие программы используют числовые переменные, и алгоритм может включать несколько математических вычислений. Арифметические ошибки возникают, когда компьютер не может справиться с проблемами, такими как «Деление на ноль», или ведущие к бесконечному результату. Это снова логическая ошибка, которая может быть исправлена  только путем изменения алгоритма.

Ошибки ресурса

Ошибка ресурса возникает, когда значение переменной переполняет максимально допустимое значение. Переполнение буфера, использование неинициализированной переменной, нарушение прав доступа и переполнение стека — примеры некоторых распространенных ошибок.

Ошибка взаимодействия

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

Интенсивное тестирование и фаза отладки неотъемлемая часть цикла разработки программного обеспечения, которое может помочь пресечь эти ошибки в зародыше, прежде чем произойдет полномасштабное развертывание программного обеспечения. Много ошибок можно избежать с помощью предварительного планирования во время стадии кодирования. Большинство ошибок можно исправить в процессе разработки программного обеспечения через практику и строгие процедуры отладки. Ошибки являются частью обучения, и их никогда нельзя полностью избежать, Тем не менее, у вас могут появляться новые ошибки, но повторять старые вы не должны!

Читайте также

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Ошибка программирования реквизита 1060 атол 22ф
  • Ошибка программирования реквизитов 1162