Информационные и операционные системы
Понятие информации ее виды и свойства, общая характеристика информационных процессов. Информационная деятельность человека. Системы счисления, кодирование. Разновидности программ для компьютеров. Операционные системы: их развитие и основные функции.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | учебное пособие |
Язык | русский |
Дата добавления | 14.09.2017 |
Размер файла | 89,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
3.4 Назначение трансляторов, компиляторов и интерпретаторов
Первыми компиляторами были компиляторы с языков ассемблера или, как они назывались, мнемокодов. Мнемокоды превратили текст программы, написанный на языке машинных команд в более-менее доступный пониманию специалиста язык. Создавать программы стало значительно проще, но исполнять сам мнемокод ни один компьютер неспособен, соответственно, возникла необходимость в создании компиляторов. Следующим этапом стало создание языков высокого уровня. Они представляют собой промежуточное звено между чисто формальными языками и языками естественного общения людей. От первых им досталась строгая формализация синтаксических структуру предложений языка, от вторых -- значительная часть словарного запаса, семантика основных конструкций и выражений. Появление языков высокого уровня существенно упростило процесс программирования. Однако преобладают компьютеры традиционной, архитектуры, которые умеют понимать только машинные команды, поэтому вопрос о создании компиляторов продолжает быть актуальным. Компиляторы создавались и продолжают создаваться не только для новых, но и для давно известных языков. С тех пор как большинство теоретических аспектов в области компиляторов получили свою практическую реализацию (это произошло в конце 60-х годов), развитие компиляторов пошло по пути их дружественности пользователю, разработчику программ на языках высокого уровня. Логичным завершением этого процесса стало создание систем программирования -- программных комплексов, объединяющих в себе кроме непосредственно компиляторов множество связанных с ними компонентов по.на сегодняшний день компиляторы являются неотъемлемой частью любой вычислительной системы. Без их существования программирование любой прикладной задачи было бы затруднено, а то и просто невозможно. Да и программирование специализированных системных задач, как правило, ведется если не на языке высокого уровня, то на ассемблере, следовательно, применяется соответствующий компилятор. Компиляторы обычно несколько проще в реализации, чем интерпретаторы. По эффективности они также превосходят их -- очевидно, что откомпилированный код будет исполняться всегда быстрее, чем происходит интерпретация аналогичной исходной программы. Кроме того, не каждый язык программирования допускает построение простого интерпретатора. Однако, интерпретаторы имеют одно существенное преимущество -- откомпилированный код всегда привязан к архитектуре вычислительной системы, на которую он ориентирован, а исходная программа -- только к семантике языка программирования, которая гораздо легче поддается стандартизации. Первыми компиляторами были компиляторы с мнемокодов. Их потомки -- современные компиляторы с языков ассемблера -- существую практически для всех известных вычислительных систем. Они предельно жестко ориентированы на архитектуру. Затем появились компиляторы с таких языков, как fortran, algol-68,. Они были ориентированы на большие эвм с пакетной обработкой задач. Из вышеперечисленных языков, только fortran продолжает использоваться по сей день, поскольку имеет огромное количество библиотек различного назначения. На рынке программных систем доминируют компиляторы языков с и c++. Первый из них родился вместе с операционными системами типа unix, а затем перешел под ос других типов. Второй удачно воплотил в себе пример реализации идей объектно-ориентированного программирования на хорошо зарекомендовавшей себя практической базе. Изначально интерпретаторам не предавали существенного значения, поскольку почти по всем параметрам они уступают компиляторам. Тем не менее сейчас ситуация несколько изменилась, поскольку вопрос о переносимости программ и их аппаратно-платформенной независимости приобретает все большую актуальность с развитием сети интернет. Самый известный сейчас пример -- это язык java (сам по себе он сочетает компиляцию и интерпретацию), а также связанный с ним javascript. Кроме того, язык html, на котором зиждется протокол http -- это тоже интерпретируемый язык.
3.5 Этапы трансляции. Общая схема работы транслятора
Процесс компиляции состоит из двух основных этапов -- синтеза и анализа. На этапе анализа выполняется распознавание текста исходной программы, создание и заполнение таблиц идентификаторов. Результатом его работы служит внутреннее представление программы, понятное компилятору. На этапе синтеза на основании внутреннего представления программы и информации, содержащейся в таблице идентификаторов, порождается текст результирующей программы. Результатом этого этапа является объектный код. Кроме того, в составе компилятора присутствует часть, ответственная за анализ и исправление ошибок, которая при наличии ошибки в тексте исходной программы должна максимально полно информировать пользователя о типе ошибки и месте ее возникновения. В лучшем случае компилятор может предложить пользователю вариант исправления ошибки. Эти этапы, в свою очередь, состоят из более мелких этапов, называемых фазами компиляции. Компилятор в целом с точки зрения теории формальных языков выполняет две основные функции. Во-первых, он является распознавателем для языка исходной программы. Т.е он должен получить на вход цепочку символов входного языка, проверить ее принадлежность языку и, более того, выявить правила, по которым эта цепочка была построена. Генератором цепочек входного языка выступает пользователь -- автор входной программы. Во-вторых, компилятор является генератором для языка результирующей программы. Он должен построить на выходе цепочку выходного языка по определенным правилам, предполагаемым языком машинных команд или языком ассемблера. Лексический анализ (сканер) -- это часть компилятора, которая читает литеры программы на исходном языке и строит из них слова (лексемы) исходного языка. На вход лексического анализатора поступает текст исходной программы, а выходная информация передается для дальнейшей обработки компилятором на этапе синтаксического разбора. Синтаксический разбор -- это основная часть компилятора на этапе анализа. Она выполняет выделение синтаксических конструкций в тексте исходной программы, обработанном лексическим анализатором. На этой же фазе компиляции проверяется синтаксическая правильность программы. Синтаксический разбор играет главную роль -- роль распознавателя текста входного языка программирования. Семантический анализ -- это часть компилятора, проверяющая правильность текста исходной программы с точки зрения семантики входного языка. Кроме непосредственно проверки, семантический анализ должен выполнять преобразования текста, требуемые семантикой входного языка. Подготовка к генерации кода -- это фаза, на которой компилятором выполняются предварительные действия, непосредственно связанные с синтезом текста результирующей программы, но еще не ведущие к порождению текста на выходном языке. Генерация кода -- это фаза, непосредственно связанная с порождением команд, составляющих предложения выходного языка и в целом текст результирующей программы. Это основная фаза на этапе синтеза результирующей программы. Кроме непосредственного порождения текста результирующей программы, генерация обычно включает в себя также оптимизацию -- процесс, связанный с обработкой уже порожденного текста. Таблицы идентификаторов (иногда - «таблицы символов») -- это специальным образом организованные наборы данных, служащие для хранения информации об элементах исходной программы, которые затем используются для порождения текста результирующей программы. Таблица идентификаторов в конкретной реализации компилятора может быть одна, а несколько. Элементами исходной программы, информацию о которых нужно хранить в процессе компиляции, являются переменные, константы, функции и т. П. -- конкретный состав набора элементов зависит от используемого входного языка программирования. В более общем виде: на фазе лексического анализа лексемы выделяются из текста входной программы постольку, поскольку они необходимы для следующей фазы синтаксического разбора. Синтаксический разбор и генерация кода могут выполняться одновременно. Таким т.о, эти три фазы компиляции могут работать комбинированно, а вместе с ними может выполняться и подготовка к генерации кода.
3.6 Понятие прохода. Многопроходные и однопроходные компиляторы
Процесс компиляции программ состоит из нескольких фаз. В реальных компиляторах состав этих фаз может несколько отличаться-- некоторые из них могут быть разбиты на составляющие, другие, напротив, объединены в одну фазу. Реальные компиляторы, как правило, выполняют трансляцию текста исходной программы за несколько проходов.
Проход -- это процесс последовательного чтения компилятором данных из внешней памяти, их обработки и помещения результата работы во внешнюю память. Чаще всего один проход включает в себя выполнение одной или нескольких фаз компиляции. Результатом промежуточных проходов является внутреннее представление исходной программы, результатом последнего прохода -- результирующая объектная программа.
В качестве внешней памяти могут выступать любые носители информации -- оперативная память компьютера, накопители на магнитных дисках, магнитных лентах и т. П. Современные компиляторы, как правило, стремятся максимально использовать для хранения данных оперативную память компьютера, и только при недостатке объема доступной памяти используются накопители на жестких магнитных дисках.
При выполнении каждого прохода компилятору доступна информация, полученная в результате всех предыдущих проходов. Он стремится использовать в первую очередь только информацию, полученную на проходе, непосредственно предшествовавшем текущему, но в принципе может обращаться и к данным от более ранних проходов вплоть до исходного текста программы. Информация, получаемая компилятором при выполнении проходов, недоступна пользователю. Она либо хранится в оп, которая освобождается компилятором после завершения процесса трансляции, либо оформляется в виде временных файлов на диске, которые также уничтожаются после завершения работы компилятора. Поэтому человек, работающий с компилятором, может даже не знать, сколько проходов выполняет компилятор -- он всегда видит только текст исходной программы и результирующую объектную программу. Но количество выполняемых проходов -- это важная техническая характеристика компилятора, солидные фирмы -- разработчики компиляторов обычно указывают ее в описании своего продукта.
При сокращении количества проходов, выполняемых компиляторами, скорость его работы увеличивается, при сокращении необходимой ему памяти. Однопроходный компилятор, получающий на вход исходную программу и сразу же порождающий результирующую объектную программу, -- это идеальный вариант.
Однако сократить число проходов не всегда удается. Количество необходимых проходов определяется, прежде всего, грамматикой и семантическими правилами исходного языка. Чем сложнее грамматика языка и чем больше вариантов предполагают семантические правила -- тем больше проходов будет выполнять компилятор
Однопроходные компиляторы -- редкость, они возможны только для очень простых языков. Реальные компиляторы выполняют, как правило, от двух до пяти проходов. Т,о, реальные компиляторы являются многопроходными. Наиболее распространены двух- и трехпроходные компиляторы, например: первый проход -- лексический анализ, второй -- синтаксический разбор и семантический анализ, третий -- генерация и оптимизация кода (варианты исполнения, конечно, зависят от разработчика). В современных системах программирования нередко первый проход компилятора (лексический анализ кода) выполняется параллельно с редактированием кода исходной программы.
3.7 Интерпретаторы. Особенности построения интерпретаторов
Интерпретатор -- это программа, которая воспринимает входную программу на исходном языке и выполняет ее. Основное отличие интерпретаторов от трансляторов и компиляторов заключается в том, что интерпретатор не порождает результирующую программу, а просто выполняет исходную программу. Термин «интерпретатор» (interpreter) означает «переводчик». Простейшим способом реализации интерпретатора можно было бы считать вариант, когда исходная программа сначала полностью транслируется в машинные команды, а затем сразу же выполняется. В такой реализации интерпретатор, мало бы, чем отличался от компилятора с той лишь разницей, что результирующая программа в нем была бы недоступна пользователю. Недостатком такого интерпретатора было бы то, что пользователь должен был бы ждать компиляции всей исходной программы прежде, чем начнется ее выполнение. По сути, в таком интерпретаторе не было бы никакого особого смысла -- он не давал бы никаких преимуществ по сравнению с аналогичным компилятором. Поэтому подавляющее большинство интерпретаторов действует так, что исполняет исходную программу последовательно, по мере ее поступления на вход интерпретатора. Тогда пользователю не надо ждать завершения компиляции всей исходной программы. Более того, он может последовательно вводить исходную программу и тут же наблюдать результат ее выполнения по мере ввода команд. При таком порядке работы интерпретатора проявляется существенная особенность, которая отличает его от компилятора, -- если интерпретатор исполняет команды по мере их поступления, то он не может выполнять оптимизацию исходной программы. Следовательно, фаза оптимизации в общей структуре интерпретатора будет отсутствовать. В остальном же она будет мало отличаться от структуры аналогичного компилятора. Далеко не все языки программирования допускают построение интерпретаторов, которые могли бы выполнять исходную программу по мере поступления команд. Для этого язык должен допускать возможность существования компилятора, выполняющего разбор исходной программы за один проход. Кроме того, язык не может интерпретироваться по мере поступления команд, если он допускает появление обращений к функциям и структурам данных раньше их непосредственного описания. Отсутствие шага оптимизации ведет к тому, что выполнение программы с помощью интерпретатора является менее эффективным, чем с помощью аналогичного компилятора. Т.о, интерпретаторы всегда проигрывают компиляторам в производительности. Преимуществом интерпретатора является независимость выполнения программы от архитектуры целевой вычислительной системы. В результате компиляции получается объектный код, который всегда ориентирован на определенную архитектуру. Для перехода на другую архитектуру целевой вычислительной системы программу требуется откомпилировать заново. А для интерпретации программы необходимо иметь только ее исходный текст и интерпретатор с соответствующего языка. Интерпретаторы существовали для ограниченного круга относительно простых языков программирования (basic). Высокопроизводительные профессиональные средства разработки программного обеспечения строились на основе компиляторов. Новый импульс развитию интерпретаторов придало распространение глобальных вычислительных сетей. Такие сети могут включать в свой состав эвм различной архитектуры, и тогда требование единообразного выполнения на каждой из них текста исходной программы становится определяющим. Поэтому с развитием глобальных сетей и распространением всемирной сети интернет появилось много новых систем, интерпретирующих текст исходной программы. В современных системах программирования существуют реализации по, сочетающие в себе и функции компилятора, и функции интерпретатора -- в зависимости от требований пользователя исходная программа либо компилируется, либо исполняется (интерпретируется). Некоторые современные языки программирования предполагают две стадии разработки: сначала исходная программа компилируется в промежуточный код, а затем этот результат компиляции выполняется с помощью интерпретатора данного промежуточного языка. Примером интерпретируемого языка может служить html (hypertext markup language) -- язык описания гипертекста или языки java и javascript -- сочетают в себе функции компиляции и интерпретации.
Размещено на Allbest.ru
...Подобные документы
Понятие операционной системы. История ее создания и развития. Разновидности современных операционных систем. Основные функции ОС общего и специального назначения. Вычислительные и операционные системы, их функции. Генерация операционной системы.
курсовая работа [46,8 K], добавлен 18.06.2009Виды и свойства информации. Основные понятия систем счисления. Форматы данных. Принципы построения компьютеров. Аппаратные средства мультимедиа. Базовые алгоритмические структуры. Языки программирования низкого уровня. Операционные системы Windows.
шпаргалка [2,2 M], добавлен 19.06.2010Назначение компьютерной сети - объединение нескольких ЭВМ для общего решения информационных, вычислительных, учебных и других задач. Операционные системы - машиннозависимый вид программного обеспечения, ориентированный на конкретные модели компьютеров.
контрольная работа [37,5 K], добавлен 17.12.2009Понятие и виды систем счисления, принципы двоичной системы. Формы представления чисел в ЭВМ, виды кодирования информации. Оценка и выбор пакетов прикладных программ: преимущества операционной системы Windows, справочной системы "КонсультантПлюс".
реферат [22,4 K], добавлен 21.06.2010Понятие операционной системы (ОС) как базового комплекса компьютерных программ для управления аппаратными средствами компьютера и работы с файлами. Файловые системы и их основные функции. Способы именования файлов при создании диска, совместимость с ОС.
контрольная работа [36,8 K], добавлен 20.11.2009Информация и информационные процессы в природе, обществе, технике. Информационная деятельность человека. Кодирование информации. Способы кодирования. Кодирование изображений. Информация в кибернетике. Свойства информации. Измерение количества информации.
реферат [21,4 K], добавлен 18.11.2008Характеристика, функции, типы, виды и состав операционных систем. Первая коммерческая система unix system. Операционные системы, основанные на графическом интерфейсе, пи–система, семейство unix. История и основные предпосылки появления ОС Windows.
курсовая работа [66,9 K], добавлен 18.01.2011История систем счисления, позиционные и непозиционные системы счисления. Двоичное кодирование в компьютере. Перевод чисел из одной системы счисления в другую. Запись цифр в римской нумерации. Славянская нумерация, сохранившаяся в богослужебных книгах.
презентация [516,8 K], добавлен 23.10.2015Современные пакеты прикладных программ для автоматизации библиотек. Операционные системы и компьютерная техника. Дополнительные средства обработки, отображения, хранение библиотечной и фактографической информации. Технические характеристики оборудования.
реферат [22,9 K], добавлен 09.05.2018Информатика как наука, ее функции. Виды, свойства и кодирование информации. Системы счисления. Высказывания и предикаты. Алгоритмы и их исполнители. Программное обеспечение. Языки и грамматики. Моделирование систем. Новые информационные технологии.
тест [89,0 K], добавлен 10.12.2011Серверные операционные системы, их особенности и сферы применения. Функции и ресурсы операционной системы Windows Server 2003. Сервер как программный компонент вычислительной системы. Аппаратные и серверные решения. Минимальные системные требования.
презентация [1005,9 K], добавлен 05.12.2013Вычислительные системы и программное обеспечение как важнейшие разделы информатики, условия перехода общества в информационную стадию развития. Развитие вычислительных систем и персональных компьютеров. Операционные системы и системы программирования.
реферат [906,9 K], добавлен 18.01.2011Персональные компьютеры, ноутбуки и серверы, международные экологические стандарты для мониторов. Операционные системы, их назначение, принцип работы, функции, составные части, функции и классификация. Характеристика различных типов файловых систем.
контрольная работа [59,4 K], добавлен 09.10.2010Сетевые операционные системы. Классификация ОС. Особенности алгоритмов управления ресурсами. Поддержка многозадачности. Процессы и нити в распределенных системах. Современные концепции и технологии проектирования ОС.
реферат [233,9 K], добавлен 12.06.2007Понятие экономической информации, ее классификаторы. Системы классификации и кодирования информации. Документация и технологии её формирования. Применение технологий Workflow, их функции. Виды носителей информации, современные технологии ее хранения.
курсовая работа [2,0 M], добавлен 27.09.2013Основные факторы, влияющие на историю развития корпоративных автоматизированных информационных систем. Их общая характеристика и классификация. Состав и структура интегрированных АИС. ERP-системы как современный вид корпоративной информационной системы.
презентация [194,0 K], добавлен 14.10.2013Понятие информации и ее свойства. Классификация экономической информации, ключевые понятия, определяющие ее структуру. Примеры использования информационных технологий в бизнесе. Экономические информационные системы, их классификация и структура.
шпаргалка [26,5 K], добавлен 22.08.2009Понятие и основные свойства алгоритма. Линейный, ветвящийся и циклический виды вычислительных процессов. Перевод числа из десятичной системы счисления в двоичную, восьмеричную, шестнадцатеричную системы, сложение чисел, выполнение вычитания и умножения.
контрольная работа [125,7 K], добавлен 15.09.2013Применение персональных компьютеров различных классов. Работа со встроенными программами Windows. Характеристика распространенных операционных систем (Windows 3.Х, 9Х, NT, 2000, XP, Windows7, Vista). Виды антивирусных программ и защита данных от вирусов.
контрольная работа [32,3 K], добавлен 23.01.2011Компьютеры – универсальные устройства для обработки информации; активное и пассивное сетевое и телекоммуникационное оборудование, его функции, классификация. Операционные системы и прикладное программное обеспечение: назначение, виды и свойства.
реферат [19,0 K], добавлен 06.01.2011