Меню
Разработки
Разработки  /  Информатика  /  Презентации  /  Прочее  /  Формальные языки и компиляция программ

Формальные языки и компиляция программ

Презентация использовалась на занятиях профессионального модуля в ОПК СТИ НИТУ МИСиС

21.12.2017

Содержимое разработки

Формальные языки и компиляция программ Формальный язык Компиляция программ

Формальные языки и компиляция программ

  • Формальный язык
  • Компиляция программ
1. Формальный язык

1. Формальный язык

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

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

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

Синтаксис языка затрагивает только форму элементов языка. Если предложение удовлетворяет формальным правилам, оно независимо от его значения рассматривается как синтаксически правильное.   Семантика языка задает логическое соответствие между различными элементами и значением синтаксически корректных предложений. Предложение « Санкт-Петербург является столицей России » синтаксически правильно, но семантически некорректно. Предложение « Москва является сталица России », будучи семантически корректным и даже понятным, не может считаться правильным из-за синтаксической ошибки.

Синтаксис языка затрагивает только форму элементов языка. Если предложение удовлетворяет формальным правилам, оно независимо от его значения рассматривается как синтаксически правильное. Семантика языка задает логическое соответствие между различными элементами и значением синтаксически корректных предложений. Предложение « Санкт-Петербург является столицей России » синтаксически правильно, но семантически некорректно. Предложение « Москва является сталица России », будучи семантически корректным и даже понятным, не может считаться правильным из-за синтаксической ошибки.

Для описания грамматики необходимо разработать подходящий формализм, с помощью которого формулируются определения языка. Этот определяющий язык называется метаязыком , а язык, определяемый им, – объектным языком , или просто языком. Формальное определение метаязыка не будет приведено, поскольку для него понадобился бы свой метаязык, однако примеры пояснят некоторые понятие метаязыка.

Для описания грамматики необходимо разработать подходящий формализм, с помощью которого формулируются определения языка. Этот определяющий язык называется метаязыком , а язык, определяемый им, – объектным языком , или просто языком. Формальное определение метаязыка не будет приведено, поскольку для него понадобился бы свой метаязык, однако примеры пояснят некоторые понятие метаязыка.

Форма Бэкуса — Наура  Для того чтобы описать правила, с помощью которых можно порождать допустимые предложения, предложение разбивается на более мелкие части.  Правила подстановки можно выразить в форме (или нотации ) Бэкуса — Наура (БНФ). Эта форма обычно используется для описания синтаксиса языков программирования. При использовании данного формализма символ, расположенный слева от знака ::= , заменяется выражением, стоящим справа от этого знака, причем альтернативные способы замены символов разделяются вертикальной чертой | , имеющей значение « или ».

Форма Бэкуса — Наура Для того чтобы описать правила, с помощью которых можно порождать допустимые предложения, предложение разбивается на более мелкие части. Правила подстановки можно выразить в форме (или нотации ) Бэкуса — Наура (БНФ). Эта форма обычно используется для описания синтаксиса языков программирования. При использовании данного формализма символ, расположенный слева от знака ::= , заменяется выражением, стоящим справа от этого знака, причем альтернативные способы замены символов разделяются вертикальной чертой | , имеющей значение « или ».

Символы подразделяются на два множества:  - терминальные символы , или терминалы. Эти символы нельзя разделить на более мелкие единицы;  - нетерминальные символы , ила нетерминалы. Представляют промежуточные состояния процесса генерации и определяются посредством других символов.  Записанные последовательно символы интерпретируются как следующие друг за другом. Для того чтобы отличать терминальные символы от нетерминальных, последние заключаются в угловые скобки  .  Терминалы являются символами объектного языка, нетерминалы – символами метаязыка. Каждый нетерминал должен появиться хотя бы в одном правиле подстановки слева от символа ::= , однако ни один терминал не может быть расположен в левой части какого-либо правила подстановки.

Символы подразделяются на два множества: - терминальные символы , или терминалы. Эти символы нельзя разделить на более мелкие единицы; - нетерминальные символы , ила нетерминалы. Представляют промежуточные состояния процесса генерации и определяются посредством других символов. Записанные последовательно символы интерпретируются как следующие друг за другом. Для того чтобы отличать терминальные символы от нетерминальных, последние заключаются в угловые скобки . Терминалы являются символами объектного языка, нетерминалы – символами метаязыка. Каждый нетерминал должен появиться хотя бы в одном правиле подстановки слева от символа ::= , однако ни один терминал не может быть расположен в левой части какого-либо правила подстановки.

Простейшие примеры записи нотации Бэкуса — Наура:  ::=0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9  :: = + | -   ::=   |    ::=   |

Простейшие примеры записи нотации Бэкуса — Наура: ::=0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 :: = + | - ::= | ::= |

::= нт-А В праворекурсивной, если содержит правила вида нт-А ::= В нт-А и грамматикой с непосредственным самовставлением, если содержит правила вида нт-А ::= В нт-А С где нт-А — нетерминальный символ языка, а В и С – символы или комбинации символов языка (терминальных или нетерминальных). Грамматика, определяющая порождение всех целых чисел со знаком и без знака, должна быть рекурсивной и может принадлежать любому из трех типов, перечисленных выше. " width="640"

Рекурсия В приведенном выше примере грамматики достаточно для определения всех целых чисел. Для расширения возможностей языка, допускаются рекурсивные определения. Грамматика языка называется леворекурсивной, если она содержит правила вида нт-А ::= нт-А В праворекурсивной, если содержит правила вида нт-А ::= В нт-А и грамматикой с непосредственным самовставлением, если содержит правила вида нт-А ::= В нт-А С где нт-А — нетерминальный символ языка, а В и С – символы или комбинации символов языка (терминальных или нетерминальных). Грамматика, определяющая порождение всех целых чисел со знаком и без знака, должна быть рекурсивной и может принадлежать любому из трех типов, перечисленных выше.

2. Компиляция программ

2. Компиляция программ

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

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

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

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

 Исходная программа на языке программирования Лексический анализ Стандартизованная форма Анализ исходной программы Синтаксический и семантический анализ Внутренняя форма Оптимизация Синтез объектной программы Распределение памяти и генерации кода  Объектная программа Компиляция программы

Исходная программа на языке программирования

Лексический анализ

Стандартизованная форма

Анализ

исходной

программы

Синтаксический и семантический анализ

Внутренняя форма

Оптимизация

Синтез

объектной

программы

Распределение памяти и генерации кода

Объектная программа

Компиляция программы

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

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

На втором проходе выполняются синтаксический анализ и интерпретация. Отдельные предложения программы разбиваются на более простые части. Синтаксический анализатор проверяет, является ли программа грамматически правильной, иначе говоря, удовлетворяет ли она законам языка программирования, на котором написана. Первоначальная структура исходной программы преобразуется шаг за шагом во внутреннее представление (дерево, матрица, список или польская запись), с которым смогут впоследствии работать оптимизирующая и вырабатывающая объектный код части компилятора.

На втором проходе выполняются синтаксический анализ и интерпретация. Отдельные предложения программы разбиваются на более простые части. Синтаксический анализатор проверяет, является ли программа грамматически правильной, иначе говоря, удовлетворяет ли она законам языка программирования, на котором написана. Первоначальная структура исходной программы преобразуется шаг за шагом во внутреннее представление (дерево, матрица, список или польская запись), с которым смогут впоследствии работать оптимизирующая и вырабатывающая объектный код части компилятора.

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

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

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

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

Характеристика платформы .NET Framework     Назначение и состав платформы .NET.  2. Подготовка программ для платформы .NET. 3. Структура программы для платформы .NET.

Характеристика платформы .NET Framework

  • Назначение и состав платформы .NET. 2. Подготовка программ для платформы .NET.

3. Структура программы для платформы .NET.

1. Назначение и состав платформы .NET.

1. Назначение и состав платформы .NET.

Важными свойствами создаваемых приложений являются:  - безопасность – запрет выполнения несанкционированных действий;  - надежность – способность выполнять заданные функции в конкретных условиях;  - переносимость – возможность выполнения приложения на различных платформах;  - межъязыковое взаимодействие – возможность использования в приложении готового кода, созданного на разных языках программирования.  Первая попытка решения первых трех проблем была предпринята корпорацией Sun Microsystems , которая предложила «универсальную» среду и технологию программирования Java . Однако последняя проблем в предложенном подходе была проигнорирована – все программы должны создаваться только на этом языке, а наработанные средства оставались не востребованы.

Важными свойствами создаваемых приложений являются: - безопасность – запрет выполнения несанкционированных действий; - надежность – способность выполнять заданные функции в конкретных условиях; - переносимость – возможность выполнения приложения на различных платформах; - межъязыковое взаимодействие – возможность использования в приложении готового кода, созданного на разных языках программирования. Первая попытка решения первых трех проблем была предпринята корпорацией Sun Microsystems , которая предложила «универсальную» среду и технологию программирования Java . Однако последняя проблем в предложенном подходе была проигнорирована – все программы должны создаваться только на этом языке, а наработанные средства оставались не востребованы.

Корпорация Microsoft подхватила идею и предложила свой подход к решению указанных проблем. Этот подход нашел воплощение в платформе   . NET Framework ,  которая предлагает пути решения всех указанных проблем.  Платформа . NET Framework предлагает технологию, предназначенную для разработки и выполнения приложений как в среде Windows , так и в других операционных средах ( Linux , Mac ) и на любых аппаратных средствах, например, PDA . Приложения можно создавать применительно к выполнению на рабочей станции и в различного рода сетях. Платформа спроектирована так, что ее можно использовать из любого языка: C #, C ++, Delphi , Visual Basic и др. Для этих языков выпущены специальные версии. Все они имеют доступ к . NET Framework и могут взаимодействовать друг с другом.

Корпорация Microsoft подхватила идею и предложила свой подход к решению указанных проблем. Этот подход нашел воплощение в платформе . NET Framework , которая предлагает пути решения всех указанных проблем. Платформа . NET Framework предлагает технологию, предназначенную для разработки и выполнения приложений как в среде Windows , так и в других операционных средах ( Linux , Mac ) и на любых аппаратных средствах, например, PDA . Приложения можно создавать применительно к выполнению на рабочей станции и в различного рода сетях. Платформа спроектирована так, что ее можно использовать из любого языка: C #, C ++, Delphi , Visual Basic и др. Для этих языков выпущены специальные версии. Все они имеют доступ к . NET Framework и могут взаимодействовать друг с другом.

Платформа . NET Framework содержит библиотеку классов, которую можно использовать в разрабатываемых приложениях на основе ООП. Библиотека классов разделена на модули, например, в одном модуле содержаться компоновочные блоки для приложений Windows , в другом – для программирования сетевого обмена, в третьем – для создания Web -приложений. Разные ОС должны поддерживать все или некоторые модули в зависимости от их характеристик.  Библиотека имеет несколько уровней:  - на нижнем уровне находятся базовые классы, которые используются практически при создании любой программы. Это классы графического интерфейса, обмена данными с ВнУ, преобразования данных, обработки строк и др.;  - на втором уровне находятся классы, обеспечивающие работу с базами данных, языком разметки текста.  - классы верхнего уровня поддерживают разработку распределенных и Web приложений.

Платформа . NET Framework содержит библиотеку классов, которую можно использовать в разрабатываемых приложениях на основе ООП. Библиотека классов разделена на модули, например, в одном модуле содержаться компоновочные блоки для приложений Windows , в другом – для программирования сетевого обмена, в третьем – для создания Web -приложений. Разные ОС должны поддерживать все или некоторые модули в зависимости от их характеристик. Библиотека имеет несколько уровней: - на нижнем уровне находятся базовые классы, которые используются практически при создании любой программы. Это классы графического интерфейса, обмена данными с ВнУ, преобразования данных, обработки строк и др.; - на втором уровне находятся классы, обеспечивающие работу с базами данных, языком разметки текста. - классы верхнего уровня поддерживают разработку распределенных и Web приложений.

Один из модулей библиотеки содержит определения общих типов данных ( Common Type System - CTS ). Наименования типов не всегда совпадают с их наименованием в конкретных языках программирования, поэтому при описании типа в конкретном языке используется «свое» обозначение, а при обращении к методам платформы указывается общее наименование. Общие типы характеризуют единый способ представления данных, что способствует функциональной совместимости языков, использующими платформу . NET Framework .  Кроме библиотеки классов в состав платформы . NET Framework входит общеязыковая исполняющая среда ( Common Language Runtime - CLR ), которая отвечает за обслуживание процессов выполнения всех приложений, созданных для платформы.  Библиотека классов  и  CLR  образуют  каркас  ( framework ) или основу платформы.

Один из модулей библиотеки содержит определения общих типов данных ( Common Type System - CTS ). Наименования типов не всегда совпадают с их наименованием в конкретных языках программирования, поэтому при описании типа в конкретном языке используется «свое» обозначение, а при обращении к методам платформы указывается общее наименование. Общие типы характеризуют единый способ представления данных, что способствует функциональной совместимости языков, использующими платформу . NET Framework . Кроме библиотеки классов в состав платформы . NET Framework входит общеязыковая исполняющая среда ( Common Language Runtime - CLR ), которая отвечает за обслуживание процессов выполнения всех приложений, созданных для платформы. Библиотека классов и CLR образуют каркас ( framework ) или основу платформы.

2. Подготовка программ для платформы .NET.

2. Подготовка программ для платформы .NET.

Написание приложения для платформы . NET Framework практически ничем не отличается от написания обычной программы.  Для выполнения программы ее код необходимо преобразовать в код, который понимает операционная система ( родной код – Native code ). Этот процесс преобразования выполняется в два этапа.  1. На первом этапе программа преобразуется в код на промежуточном языке ( Microsoft Intermediate Language - MSIL ). Этот код является универсальным, т.е. не зависит ни от ОС, ни от языка программирования. Но этот код и не « понимает » никакая ОС. Поэтому необходим еще один этап преобразования.  2. На втором этапе промежуточный код преобразуется в родной код конкретной ОС конкретного типа машины. За этот этап отвечает другой компилятор Just  in  Time compiler -  JIT . Это по сути интерпретатор программ.

Написание приложения для платформы . NET Framework практически ничем не отличается от написания обычной программы. Для выполнения программы ее код необходимо преобразовать в код, который понимает операционная система ( родной код Native code ). Этот процесс преобразования выполняется в два этапа. 1. На первом этапе программа преобразуется в код на промежуточном языке ( Microsoft Intermediate Language - MSIL ). Этот код является универсальным, т.е. не зависит ни от ОС, ни от языка программирования. Но этот код и не « понимает » никакая ОС. Поэтому необходим еще один этап преобразования. 2. На втором этапе промежуточный код преобразуется в родной код конкретной ОС конкретного типа машины. За этот этап отвечает другой компилятор Just in Time compiler - JIT . Это по сути интерпретатор программ.

Раньше исходный код программы надо было создавать (компилировать) отдельно для конкретной аппаратно-программной архитектуры. Для платформы . NET Framework MSIL - код не зависит от среды выполнения, но для каждой среды требуется свой JIT - компилятор. Этот подход освобождает разработчика от необходимости учитывать специфику платформы и позволяет сосредоточиться на функциональных возможностях программы.  Исходный код приложения можно разбивать на несколько файлов, которые компилируются в одну сборку ( assembly ). Этот процесс объединения называется связыванием ( linking ). С несколькими небольшими файлами легче работать, особенно если они разрабатываются различными программистами. Такой прием соответствует понятию модульного программирования, он способствует четкой структуризации программы, упрощению внесения изменений в сложные программы.

Раньше исходный код программы надо было создавать (компилировать) отдельно для конкретной аппаратно-программной архитектуры. Для платформы . NET Framework MSIL - код не зависит от среды выполнения, но для каждой среды требуется свой JIT - компилятор. Этот подход освобождает разработчика от необходимости учитывать специфику платформы и позволяет сосредоточиться на функциональных возможностях программы. Исходный код приложения можно разбивать на несколько файлов, которые компилируются в одну сборку ( assembly ). Этот процесс объединения называется связыванием ( linking ). С несколькими небольшими файлами легче работать, особенно если они разрабатываются различными программистами. Такой прием соответствует понятию модульного программирования, он способствует четкой структуризации программы, упрощению внесения изменений в сложные программы.

 Исходный текст  программы Исполняемый файл - сборка (ехе, dll) Компилятор Базовые классы среды CLR Загрузчик классов JIT - компилятор Вызовы некомпилирован-ных методов Исполняемый код Выполнение программы CLR Выполнение программы в среде . NET

Исходный текст программы

Исполняемый файл - сборка (ехе, dll)

Компилятор

Базовые классы среды CLR

Загрузчик классов

JIT - компилятор

Вызовы

некомпилирован-ных методов

Исполняемый код

Выполнение программы

CLR

Выполнение программы в среде . NET

Роль CLR – среды не заканчивается компиляцией промежуточного кода в родной код ОС. Среда следит за приложениями, осуществляет управление памятью, обеспечивает безопасность, многоязыковую поддержку и т.д. Одной из важных функций среды выполнения является сборка мусора ( garbage collection ). Эта функция гарантирует полное очищение использованной приложением памяти после завершения работы. При аварийном или неграмотном завершении приложения некоторые ресурсы могут оставаться блокированными, возникает утечка ресурсов, которая постепенно приводит к невозможности продолжения работы без перезагрузки системы. Механизм сборки мусора время от времени инспектирует память и удаляет из нее все ненужное. Временных параметров, четко устанавливающих период просмотра памяти, нет.

Роль CLR – среды не заканчивается компиляцией промежуточного кода в родной код ОС. Среда следит за приложениями, осуществляет управление памятью, обеспечивает безопасность, многоязыковую поддержку и т.д. Одной из важных функций среды выполнения является сборка мусора ( garbage collection ). Эта функция гарантирует полное очищение использованной приложением памяти после завершения работы. При аварийном или неграмотном завершении приложения некоторые ресурсы могут оставаться блокированными, возникает утечка ресурсов, которая постепенно приводит к невозможности продолжения работы без перезагрузки системы. Механизм сборки мусора время от времени инспектирует память и удаляет из нее все ненужное. Временных параметров, четко устанавливающих период просмотра памяти, нет.

3. Структура программы для платформы .NET.

3. Структура программы для платформы .NET.

Результатом работы компилятора является сборка ( assembly ). Сборка формируется или в отладочной или в рабочей версии. Сборка представляет собой исполняемый код приложения (расширение ехе ) или файл библиотеки (расширение dll ). В сборку компилятор включает метаинформацию (информацию о содержащихся в сборке данных), а при необходимости файлы ресурсов (файлы изображений, звуковые файлы). Метаинформация делает сборки независимыми от платформы.  Развертывание приложений сводится к копированию файлов в заданный каталог, нет необходимости заносить какую-либо информацию в системный реестр ОС. Запуск приложения осуществляется запуском соответствующего файла, но при условии, что в системе установлена CLR - среда платформы . NET Framework .  При программировании для этой платформы настоятельно рекомендуется писать код, который выполняется в этой среде и который взаимодействует с ОС только через эту среду.

Результатом работы компилятора является сборка ( assembly ). Сборка формируется или в отладочной или в рабочей версии. Сборка представляет собой исполняемый код приложения (расширение ехе ) или файл библиотеки (расширение dll ). В сборку компилятор включает метаинформацию (информацию о содержащихся в сборке данных), а при необходимости файлы ресурсов (файлы изображений, звуковые файлы). Метаинформация делает сборки независимыми от платформы. Развертывание приложений сводится к копированию файлов в заданный каталог, нет необходимости заносить какую-либо информацию в системный реестр ОС. Запуск приложения осуществляется запуском соответствующего файла, но при условии, что в системе установлена CLR - среда платформы . NET Framework . При программировании для этой платформы настоятельно рекомендуется писать код, который выполняется в этой среде и который взаимодействует с ОС только через эту среду.

Сохранять для запуска приложения весь необходимый код программы в одном месте не обязательно. Можно создавать код, решающий частные задачи в интересах многих приложений. Такой код, допускающий многократное применение, помещают в специальное место, а именно, в глобальный кэш сборок ( Global Assembly Cache ).   Компания Microsoft выпускает несколько инструментальных средств разработки программ для платформы . NET . К инструментам разработки (интегрированным средам разработки Integrated Development Environment - IDE ) относят Visual Studio  и Visual Studio C # Express Edition . Первый продукт является наиболее мощным, но и наиболее дорогим средством профессиональной разработки. Совокупность средств, имеющая общее наименование Visual Studio C # Express Edition представляет собой более простую среду разработки, доступную бесплатно.

Сохранять для запуска приложения весь необходимый код программы в одном месте не обязательно. Можно создавать код, решающий частные задачи в интересах многих приложений. Такой код, допускающий многократное применение, помещают в специальное место, а именно, в глобальный кэш сборок ( Global Assembly Cache ). Компания Microsoft выпускает несколько инструментальных средств разработки программ для платформы . NET . К инструментам разработки (интегрированным средам разработки Integrated Development Environment - IDE ) относят Visual Studio и Visual Studio C # Express Edition . Первый продукт является наиболее мощным, но и наиболее дорогим средством профессиональной разработки. Совокупность средств, имеющая общее наименование Visual Studio C # Express Edition представляет собой более простую среду разработки, доступную бесплатно.

-80%
Курсы дополнительного образования

Основы HTML

Продолжительность 72 часа
Документ: Cвидетельство о прохождении курса
4000 руб.
800 руб.
Подробнее
Скачать разработку
Сохранить у себя:
Формальные языки и компиляция программ (273 KB)

Комментарии 0

Чтобы добавить комментарий зарегистрируйтесь или на сайт

Пользовательское соглашение Политика обработки персональных данных Политика использования файлов cookie
Учителю!
Огромная база учебных материалов на каждый урок с возможностью удаленного управления
Тесты, видеоуроки, электронные тетради