Л.Е. Карпов - Системы программирования (1114903), страница 6
Текст из файла (страница 6)
Пользователю теперьпредоставляют набор как традиционных редакторских возможностей, основанных наредактировании строк по их номерам, которые обычно показываются среди другойслужебной информации, так и контекстное редактирование. К этому добавленывозможности работы с блоками информации, причем блоки обычно бываютгоризонтальными (построчными) или вертикальными, которые особенно удобны приредактировании форматированных текстов, например, таблиц. Среди экранныхредакторов выделяются текстовые процессоры, примером которых является текстовыйпроцессор Word, разработанный компанией Microsoft и входящий в состав системыофисной автоматизации Microsoft Office.Появление интегрированной среды разработки позволило интегрировать в них итекстовые редакторы, точнее диалоговые экранные редакторы текстов.
Редакторытестов стали теснее взаимодействовать с компиляторами, а затем и с отладчикамипрограмм. Теперь при вводе текстов программ с помощью редактора, эта программа,получив сведения о том, на каком языке программирования написан вводимый текст,осуществляет проверку правильности написания ключевых слов языка, выделяя их наэкране особым шрифтом и цветом. Тем самым, текстовым редакторам передаютсянекоторые функции лексических анализаторов.Некоторыесистемыпрограммированияимеютособуюструктуру,предполагающую ввод исходной информации в виде графических объектов с помощьюграфического пользовательского интерфейса.
К таким системам относятся,например, системы, работающие с языками UML, Visual Basic. Графические образы22могут впоследствиипрограммы.автоматическипреобразовыватьсявобычныетекстовые3.1.2. Лексический анализ “на лету”Суть лексического анализа “на лету” – в поиске и выделении лексем входногоязыка в тексте программы непосредственно в процессе ее создания разработчиком.Одновременно с вводом текста программы с помощью текстового редактора системапрограммирования отыскивает в этом тексте лексемы по правилам того языкапрограммирования, на работу с которым она в данный момент настроена.В самых простых системах проведенный анализ используется только длявыделения лексем в тексте с помощью графических средств дисплея.
Например,литеральные константы могут выделяться одним цветом, служебные слова могутподчеркиваться, простые идентификаторы показываться каким-либо другим шрифтоми т. д. Более развитые системы строят таблицы идентификаторов и констант, которыепередаются компилятору, входящему в систему программирования. Этим достигаетсяинтеграция текстового редактора с лексическим анализатором компилятора.Таблицы, создаваемые в процессе ввода текста, могут использоваться для поискасохраненных там лексем по типу или по некоторым информационным символам(например, по первым буквам). Такой поиск можно сделать контекстно-зависимым, тоесть можно искать лексему именно того типа, который допустим в данном конкретномместе текста программы.
Кроме самой лексемы, разработчику может бытьпредоставлена информация о ней, например, перечень доступных методов для типа илиэкземпляра класса, что избавляет от необходимости лишний раз заглядывать вдокументацию, и снижает вероятность ошибок при вводе текста. Помощь со сторонысистемы программирования, в которой текстовый редактор интегрирован не только слексическим, но и с синтаксическим анализатором компилятора, может бытьорганизована в виде подсказок и гиперссылок.Подсказка возникает на экране в том случае, когда разработчик ввел какую-точасть исходного текста, определенную лексическим анализатором как началонекоторого заслуживающего внимания фрагмента.
Подсказка может принимать формупояснения или варианта дальнейшего ввода текста.Пояснение дает разработчику представление о том, что может следовать дальше.Пользователь должен сам вводить этот текст, но при этом пояснение будет помогатьему. Например, при вводе имени функции может возникнуть подсказка с указаниемтипов ее параметров, тип текущего параметра может выделяться особым шрифтом.Вариант текста предлагает разработчику некоторый шаблон, который можновставить после уже введенного текста. В некоторых случаях указывается сразу наборшаблонов, из которого можно выбрать подходящий.
Например, после вводапеременной, соответствующей некоторому классу, подсказка может предложитьперечень методов и свойств этого класса, из которого можно выбрать нужный простымвыбором нужной строки в перечне. Некоторые часто встречающиеся вариантывводимых текстов в ряде систем разрешается связывать с функциональнымиклавишами, нажатие которых приводит к автоматическому добавлению связанноготекста к программе.Подсказки не заменяют разработчика, они лишь немного помогают провестинаиболее рутинную работу – ввод текста.
Подсказки делаются лишь на основаниилексического и синтаксического анализа, а этого не всегда достаточно для полногопонимания ситуации, поэтому подсказки не всегда оказываются правильными. Однако23разработчик не обязан следовать подсказкам, он всегда может вводить тот текст,который считает необходимым ввести.Гиперссылка позволяет переходить от одной части программы к другой.Например, по имени функции можно легко перейти в то место программы, где этафункция определяется, а по имени сложного типа данных перейти к его описанию.Текстовые редакторы интегрируются также с отладчиками, для которых онипозволяют расставлять в программе точки останова, показывать значения переменныхво время приостановки работы программы и выполнять другие полезные действия.3.2.
Трансляторы, компиляторы, интерпретаторыКонечной целью создания всякого программного продукта является достижениенекоторого результата, способ получения которого закодирован в этой программе. Самрезультат может быть получен только при работе аппаратуры вычислительнойсистемы, которой для работы должна быть передана программа в своем исходном илипереработанном виде, а также входные данные, требующиеся программе при ее работе.Существует несколько вариантов взаимодействия программ с аппаратурой.Первый из этих способов почти не требует системы программирования и связан скодированием программ непосредственно на машинном языке.
Такой подходстановится приемлемым только в тех случаях, когда над всеми другими соображениямипо поводу способов записи программ превалируют соображения эффективности. Внастоящее время можно считать, что ни одна вычислительная система не воспринимаетнапрямую программы, подготавливаемые к исполнению людьми: все программы дляполучения результата их работы должны пройти предварительную обработку.Второй вариант, в котором программирование ведется на языкепрограммирования, не совпадающем с машинным языком вычислительной системы,требует наличия системы программирования. В состав системы программированиявключаются несколько компонентов, важнейшим из которых является компонент,ответственный за преобразование исходной программы к виду, в котором она можетбыть понята вычислительной системой.
Эти компоненты называются трансляторами,то есть программами, которые переводят исходную программу, написанную нанекотором исходном (входном) языке, в другую программу, эквивалентную первой.Получающаяся при этом программа тоже формулируется на некотором языке,называемом объектным.Процесс перевода с исходного языка на объектный язык охватывает сразу трипрограммы и называется трансляцией:1. Во время трансляции вычислительная система выполняет программутранслятора (программа № 1, транслирующая).2. Транслятор обрабатывает конкретную последовательность предложенийвходного языка. Такая последовательность должна удовлетворять наборусинтаксических и семантических правил. В этом случае мы получаемправо называть ее программой (программа № 2, транслируемая).3.
Результатом работы транслятора также является программа, строится онапо синтаксическим правилам выходного языка, ее семантикаопределяется семантикой выходного языка (программа № 3,результирующая).24Исходная и результирующая программы являются эквивалентными.Эквивалентность программ означает совпадение их смысла с точки зрения (семантики)входного языка (для входной программы) и (семантики) выходного языка (дляобъектной программы).3.2.1. Схемы работы трансляторовСтепень преобразования программ трансляторами может быть различной.