Процесс поиска и устранения ошибок, допущенных программистом при написании программы, называется
Обновлено: 20.11.2024
Уникальная среда интерпретатора, позволяющая запускать Python из веб-браузера.
Общий пошаговый процесс решения проблемы.
Ошибка в программе.
Промежуточный язык между исходным кодом и объектным кодом. Многие современные языки сначала компилируют исходный код в байтовый код, а затем интерпретируют байтовый код с помощью программы, называемой виртуальной машиной.
Интерактивная среда, которая позволяет пользователю контролировать пошаговое выполнение программы Python
Информация в программе, предназначенная для других программистов (или тех, кто читает исходный код) и не влияющая на выполнение программы.
Для одновременного перевода программы, написанной на языке высокого уровня, на язык низкого уровня для подготовки к последующему выполнению.
Процесс поиска и устранения любого из трех типов ошибок программирования.
Другое название ошибки выполнения.
Другое имя объектного кода, готового к выполнению.
Любой из языков, созданных людьми для определенных целей, например для представления математических идей или компьютерных программ; все языки программирования являются формальными языками.
Язык программирования, такой как Python, созданный таким образом, чтобы людям было легко читать и писать.
Чтобы выполнить программу на языке высокого уровня, переводя ее построчно.
Язык программирования, разработанный таким образом, чтобы его было легко выполнять на компьютере; также называется машинным языком или языком ассемблера.
Любой язык, на котором говорят люди, возникший естественным путем.
Вывод компилятора после перевода программы.
Для изучения программы и анализа синтаксической структуры.
Свойство программы, которая может работать на нескольких типах компьютеров.
Функция, используемая в программе или сценарии, которая заставляет интерпретатор Python отображать значение на своем устройстве вывода.
Процесс формулирования проблемы, поиска решения и выражения решения.
Последовательность инструкций, указывающая компьютеру действия и вычисления, которые необходимо выполнить.
Формальное обозначение для представления решений.
Интерактивный пользовательский интерфейс интерпретатора Python. Пользователь оболочки Python вводит команды в приглашении (>>>) и нажимает клавишу возврата, чтобы немедленно отправить эти команды интерпретатору для обработки.
Ошибка, которая не возникает до тех пор, пока программа не начнет выполняться, но не позволяет продолжить выполнение программы.
Ошибка в программе, из-за которой она делает не то, что задумал программист.
Смысл программы.
Стиль использования Python, при котором мы вводим выражения в командной строке, а результаты отображаются немедленно. Сравните с исходным кодом и см. запись в оболочке Python.
Программа, хранящаяся в файле на языке высокого уровня перед компиляцией или интерпретацией.
Структура программы.
Ошибка в программе, из-за которой невозможно выполнить синтаксический анализ и, следовательно, интерпретацию.
Один из основных элементов синтаксической структуры программы, аналог слова в естественном языке.
© Авторские права Брэд Миллер, Дэвид Ранум, 2014. Создано с помощью Runestone Interactive. Последнее обновление: 19 марта 2022 г.
Создано с использованием Runestone 6.0.11.
Обнаружение различных типов ошибок в программировании – важная часть процесса разработки. Лучшие разработчики легко ориентируются в ошибках, которые они создают, и быстро их исправляют.
Сегодня мы поговорим о семи наиболее распространенных типах ошибок программирования и о том, как их избежать.
1. Синтаксические ошибки
Как и человеческие языки, компьютерные языки имеют правила грамматики. Но в то время как люди могут общаться с далеко не совершенной грамматикой, компьютеры не могут игнорировать ошибки, т. е. синтаксические ошибки.
Например, предположим, что правильный синтаксис для вывода чего-либо — print('hello') , и мы случайно забыли одну из скобок при написании кода. Произойдет синтаксическая ошибка, и это остановит запуск программы.
По мере того, как ваш уровень владения языком программирования повышается, вы будете реже делать синтаксические ошибки. Самый простой способ не допустить, чтобы они вызывали у вас проблемы, — узнать о них заранее. Многие текстовые редакторы или IDE имеют возможность предупреждать вас о синтаксических ошибках во время написания.
Совет: пишите быстрее с TextExpander
TextExpander позволяет легко сохранять часто используемые фрагменты кода, комментарии к документации и многое другое, а затем вставлять их в любое место с помощью простого сочетания клавиш или встроенного поиска.
2. Логические ошибки
Логические ошибки сложнее всего отследить. Все выглядит так, как будто это работает; вы только что запрограммировали компьютер на неправильные действия.Технически программа правильная, но результаты будут не такими, как вы ожидали.
Если вы не проверили требования заранее и не написали код для возврата самого старого пользователя в вашей системе, когда вам нужен самый новый, у вас возникла бы логическая ошибка.
Известный случай произошел в 1999 году, когда НАСА потеряло космический корабль из-за просчетов между английскими и американскими подразделениями. Программное обеспечение было закодировано одним способом, но должно было работать по-другому.
При написании тестов покажите их менеджеру продукта или владельцу продукта, чтобы убедиться, что логика, которую вы собираетесь написать, верна. В приведенном выше примере кто-то, кто ближе к бизнесу, заметил бы, что вы не упомянули тот факт, что требуется самый новый пользователь.
3. Ошибки компиляции
Для некоторых языков программирования требуется этап компиляции. При компиляции ваш язык высокого уровня преобразуется в язык более низкого уровня, который компьютер может лучше понять. Ошибка компиляции или времени компиляции возникает, когда компилятор не знает, как превратить ваш код в код более низкого уровня.
В нашем примере синтаксической ошибки, если бы мы компилировали print('hello' , компилятор остановился бы и сообщил нам, что не знает, как преобразовать это в язык более низкого уровня, потому что он ожидал a ) после ' .
Если в вашем программном обеспечении возникнет ошибка во время компиляции, вы не сможете его протестировать или запустить.
Так же, как и синтаксические ошибки, со временем вы научитесь их избегать, но в целом лучшее, что вы можете сделать, – это своевременно получать обратную связь, когда это происходит.
Компиляция происходит одновременно для всех файлов вашего проекта. Если вы внесли много изменений и видите много предупреждений или ошибок компилятора, это может быть очень сложно. Часто запуская компилятор, вы быстрее получите необходимую обратную связь, и вам будет легче понять, где решать проблемы.
4. Ошибки выполнения
Ошибки выполнения возникают, когда пользователь выполняет вашу программу. Код может работать правильно на вашем компьютере, но на веб-сервере может быть другая конфигурация, или с ним могут взаимодействовать таким образом, что это может вызвать ошибку во время выполнения.
Если ваша система взяла ввод из формы и попыталась сделать первую букву имени заглавной, выполнив что-то вроде params[:first_name].capitalize , это сломается, если форма будет отправлена без имени.
Ошибки во время выполнения особенно раздражают, поскольку они напрямую влияют на конечного пользователя. Многие из этих других ошибок случаются, когда вы работаете за компьютером над кодом. Эти ошибки возникают во время работы системы и могут помешать кому-либо выполнить то, что ему нужно.
Убедитесь, что у вас есть хорошие отчеты об ошибках, чтобы фиксировать любые ошибки во время выполнения и автоматически открывать новые ошибки в вашей системе тикетов. Старайтесь учиться на каждом отчете об ошибке, чтобы в будущем вы могли защититься от этого типа ошибок.
Использование фреймворков и кода, поддерживаемого сообществом, — отличный способ свести к минимуму эти типы ошибок, потому что код находится во многих разных проектах, поэтому он уже обнаружил и исправил множество проблем.
5. Арифметические ошибки
Арифметическая ошибка – это разновидность логической ошибки, но она связана с математикой. Типичным примером при выполнении уравнения деления является то, что вы не можете делить на ноль, не вызывая проблем. Очень немногие люди напишут 5 / 0, но вы можете не подумать, что размер чего-то в вашей системе иногда может быть нулевым, что может привести к ошибке такого типа.
ages.max / ages.min могли возвращать ошибку, если ages.max или ages.min были равны нулю.
Арифметические ошибки могут вызывать логические ошибки, как мы обсуждали, или даже ошибки времени выполнения в случае деления на ноль.
Наличие функциональных тестов, которые всегда включают крайние случаи, такие как ноль или отрицательные числа, — отличный способ остановить эти арифметические ошибки на своем пути.
6. Ошибки ресурсов
Компьютер, на котором установлена ваша программа, будет выделять фиксированное количество ресурсов для ее работы. Если что-то в вашем коде заставляет компьютер пытаться выделить больше ресурсов, чем у него есть, это может привести к ошибке ресурсов.
Если вы случайно написали цикл, из которого ваш код никогда не сможет выйти, у вас рано или поздно закончатся ресурсы. В этом примере цикл while будет продолжать добавлять новые элементы в массив. В конце концов у вас закончится память.
Ошибки, связанные с ресурсами, может быть трудно отследить, потому что машина, на которой вы разрабатываете, часто может быть более качественной, чем серверы, на которых выполняется ваш код. Также трудно имитировать реальное использование с вашего локального компьютера.
Хорошие отчеты об использовании ресурсов на ваших веб-серверах будут помечать код, который со временем потребляет слишком много ресурсов любого типа.
Ошибки ресурсов — это пример ошибки в программировании, которую может исправить операционная группа, а не разработчики.
Существует множество приложений и служб для нагрузочного тестирования, которые можно использовать для проверки того, что произойдет, когда несколько человек попытаются запустить ваш код одновременно. Затем вы можете настроить тестирование в соответствии с реалистичностью вашего приложения.
7. Ошибки интерфейса
Ошибки интерфейса возникают, когда существует несоответствие между тем, как вы хотели использовать свою программу, и тем, как она используется на самом деле. Большинство вещей в программном обеспечении соответствуют стандартам. Если входные данные, которые получает ваша программа, не соответствуют стандартам, вы можете получить ошибку интерфейса.
Например, ошибка интерфейса может произойти, если у вас есть API, требующий установки определенных параметров, а эти параметры не заданы.
Если ошибки интерфейса не обрабатываются должным образом, они будут выглядеть как ошибка на вашей стороне, когда это ошибка на стороне вызывающего абонента. Это может вызвать разочарование с обеих сторон.
Имея четкую документацию и отлавливая эти ошибки, чтобы передать их вызывающей стороне удобным способом, вы лучше всего скажете: "Эй, вы не предоставили нам то, что нам нужно для обработки этого запроса". Это поможет сократить расходы на поддержку и порадует ваших клиентов, потому что они знают, что им нужно исправить.
Если вы не отловите эти ошибки и не передадите их обратно вызывающей стороне, они в конечном итоге будут отображаться в отчетах как ошибки времени выполнения, и вы в конечном итоге будете чрезмерно защищаться от них.
Ошибки неизбежны
К счастью, мы уже давно не нуждаемся в правильном размещении перфокарт с первого раза. Разработка программного обеспечения сложна, требования часто размыты, а код часто меняется. Старайтесь не корить себя и знайте, что все мы совершаем ошибки.
Ошибки программирования неизбежны. Научитесь лучше замечать их на ранней стадии, но знайте, что вы никогда не будете идеальными.
Надеюсь, это руководство подготовило вас к различным типам ошибок в программировании и разъяснило некоторые наиболее распространенные сообщения об ошибках.
Если вы писали код в течение длительного времени, пожалуйста, прокомментируйте ниже некоторые ошибки, которые вы недавно допустили, чтобы успокоить людей, которые не писали код так долго!
В обязательном порядке код, который мы пишем как разработчики программного обеспечения, не всегда работает так, как мы от него ожидали. Иногда он делает что-то совершенно другое! Когда это происходит, следующей задачей является выяснить, почему, и хотя у нас может возникнуть соблазн просто смотреть на наш код часами, гораздо проще и эффективнее использовать инструмент отладки или отладчик.
К сожалению, отладчик не может волшебным образом выявить все проблемы или «ошибки» в нашем коде. Отладка означает пошаговое выполнение кода в средстве отладки, таком как Visual Studio, чтобы найти точную точку, в которой вы допустили ошибку программирования. Затем вы понимаете, какие исправления вам нужно внести в свой код, а инструменты отладки часто позволяют вам вносить временные изменения, чтобы вы могли продолжить работу с программой.
Эффективное использование отладчика также требует времени и практики для изучения, но в конечном счете является фундаментальной задачей для каждого разработчика программного обеспечения. В этой статье мы познакомим вас с основными принципами отладки и дадим советы, которые помогут вам начать работу.
Проясните проблему, задав себе правильные вопросы
Это помогает прояснить проблему, с которой вы столкнулись, прежде чем пытаться ее исправить. Мы ожидаем, что вы уже столкнулись с проблемой в своем коде, иначе вы бы не пытались выяснить, как ее отладить! Итак, прежде чем приступать к отладке, убедитесь, что вы определили проблему, которую пытаетесь решить:
Что вы ожидали от своего кода?
Что произошло вместо этого?
Если вы столкнулись с ошибкой (исключением) при запуске приложения, это может быть хорошо! Исключение — это неожиданное событие, возникающее при выполнении кода, обычно это какая-то ошибка. Инструмент отладки поможет найти точное место в коде, где возникло исключение, и найти возможные способы исправления.
Если произошло что-то другое, каковы симптомы проблемы? Вы уже подозреваете, где эта проблема возникла в вашем коде? Например, если ваш код отображает некоторый текст, но этот текст неверен, вы знаете, что либо ваши данные неверны, либо код, задающий отображаемый текст, имеет какую-то ошибку. Просматривая код в отладчике, вы можете проверить каждое изменение ваших переменных, чтобы точно определить, когда и как присваиваются неправильные значения.
Проверьте свои предположения
Прежде чем исследовать ошибку или ошибку, подумайте о предположениях, которые заставили вас ожидать определенного результата. Скрытые или неизвестные предположения могут помешать выявлению проблемы, даже если вы смотрите прямо на причину проблемы в отладчике. У вас может быть длинный список возможных предположений! Вот несколько вопросов, которые можно задать себе, чтобы проверить свои предположения.
Используете ли вы правильный API (то есть правильный объект, функцию, метод или свойство)?Используемый вами API может работать не так, как вы думаете. (После того как вы изучите вызов API в отладчике, для его исправления может потребоваться обращение к документации, чтобы определить правильный API.)
Правильно ли вы используете API? Возможно, вы использовали правильный API, но использовали его неправильно.
Есть ли в вашем коде опечатки? Некоторые опечатки, такие как простое неправильное написание имени переменной, трудно заметить, особенно при работе с языками, не требующими объявления переменных перед их использованием.
Внесли ли вы изменения в свой код и предположили, что это не связано с проблемой, с которой вы столкнулись?
Вы ожидали, что объект или переменная будет содержать определенное значение (или определенный тип значения), которое отличается от того, что произошло на самом деле?
Знаете ли вы назначение кода? Часто сложнее отлаживать чужой код. Если это не ваш код, возможно, вам придется потратить время на изучение того, что именно делает код, прежде чем вы сможете эффективно его отлаживать.
При написании кода начинайте с малого и начинайте с работающего кода! (Здесь полезен хороший пример кода.) Иногда легче исправить большой или сложный набор кода, начав с небольшого фрагмента кода, демонстрирующего основную задачу, которую вы пытаетесь решить. Затем вы можете постепенно изменять или добавлять код, проверяя каждую точку на наличие ошибок.
Подвергая сомнению свои предположения, вы можете сократить время, необходимое для поиска проблемы в вашем коде. Вы также можете сократить время, необходимое для решения проблемы.
Пройдитесь по коду в режиме отладки, чтобы найти источник проблемы
При обычном запуске приложения вы видите ошибки и неправильные результаты только после выполнения кода. Программа также может неожиданно завершиться без объяснения причин.
Запуск приложения в отладчике, также называемый режимом отладки, означает, что отладчик активно отслеживает все, что происходит во время работы программы. Кроме того, вы можете приостановить работу приложения в любой момент, чтобы проверить его состояние, а затем пошагово выполнить код, чтобы просмотреть все детали по мере их возникновения.
В Visual Studio вы входите в режим отладки, нажимая клавишу F5 (или команду меню "Отладка" > "Начать отладку" или кнопку "Начать отладку" на панели инструментов "Отладка"). Если возникают какие-либо исключения, помощник по исключениям Visual Studio перенесет вас точно в точку, где произошло исключение, и предоставит другую полезную информацию. Дополнительные сведения о том, как обрабатывать исключения в коде, см. в разделе Методы и инструменты отладки.
Если вы не получили исключение, возможно, вы знаете, где искать проблему в коде. Здесь вы используете точки останова с отладчиком, чтобы дать себе возможность более тщательно изучить свой код. Точки останова — это самая основная и важная функция надежной отладки. Точка останова указывает, где Visual Studio должна приостановить выполнение кода, чтобы вы могли просмотреть значения переменных, поведение памяти или последовательность выполнения кода.
В Visual Studio можно быстро установить точку останова, щелкнув в левом поле рядом со строкой кода. Или поместите курсор на строку и нажмите F9.
Создать образец приложения (с некоторыми ошибками)
Далее мы создадим приложение, в котором есть несколько ошибок.
Если вы еще не установили Visual Studio, перейдите на страницу загрузок Visual Studio, чтобы установить ее бесплатно.
Откройте Visual Studio.
Visual Studio создает консольный проект, который отображается в обозревателе решений на правой панели.
Нашей целью в этом коде является отображение названия галактики, расстояния до галактики и типа галактики в виде списка. Для отладки важно понимать назначение кода. Вот формат одной строки из списка, которую мы хотим отобразить в выводе:
Запустите приложение
Нажмите F5 или кнопку "Начать отладку" на панели инструментов отладки, расположенной над редактором кода.
Приложение запускается, и отладчик не показывает никаких исключений. Однако вывод, который вы видите в окне консоли, не соответствует вашим ожиданиям. Вот ожидаемый результат:
Но вместо этого мы видим следующее:
Глядя на вывод и на наш код, мы знаем, что GType — это имя класса, в котором хранится тип галактики. Мы пытаемся показать фактический тип галактики (например, "Спираль"), а не название класса!
Отладка приложения
При запущенном приложении установите точку останова, щелкнув в левом поле рядом с вызовом метода Console.WriteLine в этой строке кода.
Когда вы устанавливаете точку останова, на левом поле появляется красная точка.
Поскольку мы видим проблему в выводе, мы начнем отладку, просмотрев предыдущий код, который задает вывод в отладчике.
Нажмите кнопку «Перезагрузить» на панели инструментов отладки (Ctrl + Shift + F5).
Приложение приостанавливается в установленной вами точке останова. Желтое выделение указывает, где отладчик приостановлен (желтая строка кода еще не выполнена).
Наведите указатель мыши на переменную GalaxyType справа, а затем слева от значка гаечного ключа разверните Galaxy.GalaxyType . Вы видите, что GalaxyType содержит свойство MyGType , а значение свойства равно Spiral .
"Спираль" на самом деле правильное значение, которое вы ожидали вывести на консоль! Так что это хорошее начало, когда вы можете получить доступ к этому значению в этом коде во время работы приложения. В этом случае мы используем неверный API. Посмотрим, сможем ли мы исправить это во время выполнения кода в отладчике.
В том же коде во время отладки поместите курсор в конец Galaxy.GalaxyType и измените его на Galaxy.GalaxyType.MyGType . Хотя вы можете внести это изменение, редактор кода показывает ошибку, указывающую на то, что он не может скомпилировать этот код. (В Visual Basic вы не увидите ошибку, и этот участок кода работает)
Для отладки примера кода Visual Basic пропустите следующие несколько шагов, пока не появится указание нажать кнопку "Перезапустить".
Нажмите «Изменить» в окне сообщения «Изменить и продолжить». Теперь вы видите сообщение об ошибке в окне списка ошибок. Ошибка указывает на то, что «объект» не содержит определения для MyGType .
Несмотря на то, что мы установили для каждой галактики объект типа GType (который имеет свойство MyGType), отладчик не распознает объект theGalaxy как объект типа GType . В чем дело? Вы хотите просмотреть любой код, который устанавливает тип галактики. Когда вы это сделаете, вы увидите, что класс GType определенно имеет свойство MyGType, но что-то не так. Подсказкой оказывается сообщение об ошибке об объекте; интерпретатору языка тип кажется объектом типа object вместо объекта типа GType .
Просматривая свой код, связанный с установкой типа галактики, вы обнаруживаете, что свойство GalaxyType класса Galaxy указано как object вместо GType .
Замените предыдущий код на этот:
Нажмите кнопку "Перезапустить" на панели инструментов отладки (Ctrl + Shift + F5), чтобы перекомпилировать код и перезапустить его.
Теперь, когда отладчик останавливается на Console.WriteLine , вы можете навести указатель мыши на Galaxy.GalaxyType.MyGType и убедиться, что значение задано правильно.
Удалите точку останова, щелкнув кружок точки останова на левом поле (или щелкните правой кнопкой мыши и выберите "Точка останова" > "Удалить точку останова"), а затем нажмите F5, чтобы продолжить.
Приложение запускается и отображает выходные данные. Сейчас это выглядит довольно хорошо, но вы замечаете одну вещь; вы ожидали, что галактика Малое Магелланово Облако будет отображаться как неправильная галактика в выводе консоли, но она вообще не показывает тип галактики.
Установите точку останова в этой строке кода перед оператором switch (перед оператором Select в Visual Basic).
В этом коде задается тип галактики, поэтому мы хотим рассмотреть его поближе.
Нажмите кнопку "Перезапустить" на панели инструментов отладки (Ctrl + Shift + F5), чтобы перезапустить программу.
Отладчик останавливается на строке кода, где вы установили точку останова.
Наведите указатель мыши на переменную типа. Вы видите значение S (после кода символа). Вас интересует значение I , так как вы знаете, что это неправильный тип галактики.
Нажмите F5 и снова наведите указатель мыши на переменную типа. Повторяйте этот шаг, пока не увидите значение I в переменной типа.
Теперь нажмите F11 ("Отладка" > "Пошаговый переход" или кнопка "Пошаговый переход" на панели инструментов отладки).
F11 запускает отладчик (и выполняет код) по одному оператору за раз. F10 (Шаг с обходом) — похожая команда, и обе они чрезвычайно полезны при обучении работе с отладчиком.
Нажимайте клавишу F11, пока не остановитесь на строке кода в операторе switch для значения "I" (оператор Select для Visual Basic). Здесь вы видите явную проблему, возникшую из-за опечатки. Вы ожидали, что код переместится туда, где он устанавливает MyGType как неправильный тип галактики, но вместо этого отладчик полностью пропускает этот код и делает паузу в разделе по умолчанию оператора switch (оператор Else в Visual Basic).
Глядя на код, вы видите опечатку в операторе case 'l'. Это должен быть регистр 'I' .
Нажмите на код случая "l" и замените его на случай "I".
Удалите точку останова, а затем нажмите кнопку "Перезапустить", чтобы перезапустить приложение.
Ошибки исправлены, и вы видите ожидаемый результат!
Нажмите любую клавишу, чтобы закрыть приложение.
Обзор
При обнаружении проблемы используйте команды отладчика и пошаговые команды, такие как F10 и F11, чтобы найти проблемную область кода.
Если трудно определить область кода, в которой возникает проблема, установите точку останова в коде, который выполняется до возникновения проблемы, а затем используйте пошаговые команды, пока не увидите манифест проблемы. Вы также можете использовать точки трассировки для записи сообщений в окно вывода. Просматривая зарегистрированные сообщения (и замечая, какие сообщения еще не были зарегистрированы!), вы часто можете изолировать область кода с проблемой. Возможно, вам придется повторить этот процесс несколько раз, чтобы сузить его.
Когда вы найдете область кода с проблемой, используйте отладчик для исследования. Чтобы найти причину проблемы, проверьте код проблемы во время запуска приложения в отладчике:
Проверить переменные и проверить, содержат ли они тип значений, которые они должны содержать. Если вы обнаружите неверное значение, узнайте, где оно было установлено (чтобы найти место, где было установлено значение, вам может потребоваться либо перезапустить отладчик, либо просмотреть стек вызовов, либо и то, и другое).
Проверьте, выполняет ли ваше приложение ожидаемый код. (Например, в примере приложения мы ожидали, что код оператора switch задаст для типа галактики значение Irregular, но приложение пропустило этот код из-за опечатки.)
Вы используете отладчик, чтобы помочь вам найти ошибки. Инструмент отладки может найти ошибки за вас, только если ему известно назначение вашего кода. Инструмент может знать назначение вашего кода только в том случае, если вы, разработчик, выражаете это намерение. Написание модульных тестов — это то, как вы это делаете.
Дальнейшие шаги
Из этой статьи вы узнали несколько общих концепций отладки. Далее вы можете начать узнавать больше об отладчике.
Интегрированная среда разработки (IDE) – это программное приложение, предоставляющее программистам комплексные средства для разработки программного обеспечения. IDE обычно состоит из редактора исходного кода, средств автоматизации сборки и отладчика. Большинство современных IDE имеют интеллектуальное завершение кода. Некоторые IDE содержат компилятор, интерпретатор или и то, и другое. Граница между интегрированной средой разработки и другими частями более широкой среды разработки программного обеспечения четко не определена. Иногда интегрируются система контроля версий или различные инструменты для упрощения построения графического пользовательского интерфейса (GUI). Многие современные IDE также имеют обозреватель классов, обозреватель объектов и диаграмму иерархии классов для использования при разработке объектно-ориентированного программного обеспечения. [1]
Обсуждение
Программы на языке высокого уровня обычно записываются (кодируются) в виде текста ASCII в файл исходного кода. Уникальное расширение файла (примеры: .asm .c .cpp .java .js .py) используется для идентификации его как файла исходного кода. Однако, как вы можете догадаться по нашим примерам — Assembly, «C», «C++», Java, JavaScript и Python, это просто текстовые файлы ASCII (другие текстовые файлы обычно используют расширение .txt). Исходный код, созданный программистом, должен быть преобразован в исполняемый файл машинного кода специально для ЦП компьютера (обычно Intel или Intel-совместимый ЦП в современном мире компьютеров). Есть несколько шагов, чтобы получить программу от стадии исходного кода до запуска программы на вашем компьютере.Исторически нам приходилось использовать несколько программ (текстовый редактор, компилятор, компоновщик и команды операционной системы), чтобы выполнить преобразование и запустить нашу программу. Однако сегодня все эти программы со связанными с ними задачами объединены в одну программу. Однако эта одна программа на самом деле представляет собой множество программных элементов, которые создают среду, используемую программистами для разработки программного обеспечения. Отсюда и название: интегрированная среда разработки или IDE.
Интегрированная среда разработки или IDE
При запуске программного обеспечения IDE программист обычно указывает файл, который он хочет открыть для редактирования, как исходный код. Когда они вносят изменения, они могут либо «сохранить как», либо «сохранить». Когда они закончили вводить исходный код, они обычно дают указание IDE «скомпилировать и запустить» программу. Среда IDE выполняет следующие действия:
Устранение ошибок
Есть два типа ошибок компилятора; препроцессор (1-й шаг) и преобразование (2-й шаг). На рисунке 1 выше показаны четыре стрелки, возвращающие к исходному коду, чтобы программист мог исправить ошибку.
Во время преобразования (2-й шаг) компилятор может выдать предупреждающее сообщение, о котором в некоторых случаях можно не беспокоиться. Например: понижение типа данных может быть именно тем, что вы хотите, чтобы ваша программа делала, но большинство компиляторов выдают предупреждающее сообщение. Предупреждения не останавливают процесс компиляции, но, как следует из их названия, их следует проверять.
На следующих трех рисунках показано взаимодействие монитора IDE для компилятора/IDE Bloodshed Dev-C++ 5.
Ошибка компилятора (красная линия указывает место остановки компилятора) Ошибка компоновщика (красная линия с сообщением об ошибке, описывающим проблему компоновки, отсутствует) Логическая ошибка (из вывода в области «черного ящика»)
Ключевые термины
компилятор Преобразует исходный код в объектный код. отладка Процесс удаления ошибок из программы. 1) компилятор 2) компоновщик 3) логический компоновщик Соединяет или связывает объектные файлы в исполняемый файл. загрузчик Часть операционной системы, загружающая исполняемые файлы в память и предписывающая процессору запустить программу. препроцессор Первый шаг, который делает компилятор при преобразовании исходного кода в объектный код. текстовый редактор Программа для создания и редактирования текстовых файлов ASCII. предупреждение Предупреждение компилятора о возможной проблеме.
Читайте также: