И.А. Волкова, И.Г. Головин, Л.Е. Карпов - Системы программирования (1114897), страница 26
Текст из файла (страница 26)
Система .NETFramework основана именно на ней. Отметим, что внутреннее представление выбранотаким, чтобы низкоуровневый промежуточный язык (CIL) охватывал все возможностиисполняющей среды CLR. Любому элементарному типу данных во всех языках в средеCLR и в языке промежуточного представления соответствует некоторый базовый тип.Применение во всех языках общей системы типов, которые можно преобразовыватьдруг в друга, позволяет компонентам обмениваться данными, избегая потери временина преобразование типов. Эффективность решений, заложенных в языкпромежуточного представления, доказывается тем, что трансляцию в этот язык, азначит и включение в общую исполняющую среду CLR, выполнили еще некоторыекомпании, создавшие трансляторы с языков Фортран, Кобол и др.
Технологию .NET сязыкомпромежуточногопредставленияCILподдерживаетисистемапрограммирования Delphi, начиная с версии 8.Реализации CLI включают в себя также .Net Compact Framework (компанияMicrosoft – для мобильных устройств и игровых приставок XBox), Mono (проект соткрытым кодом для ОС Linux), Portable .NET (часть более общего проекта с открытымкодом dotGNU) и ряд других.Кроме общей системы типов CTS и общего языка внутреннего представленияпрограмм, в общеязыковую инфраструктуру входят следующие спецификации:••••Extensible Metadata - расширяемые метаданные.
Команды CIL помещаются вединицу распространения – сборку (assembly) – и сопровождаютсяметаданными, которые делают сборку полностью самодостаточнымобъектом. В метаданные помещаются имя и версия сборки, сведения олокализации, данные о типах, включенных в сборку, список внешних файлов(сборок), от которых зависит данная сборка и т. п.Framework Class Library – библиотека классов, которую должнаиспользовать любая программа в рамках технологии.
Библиотека VCL Delphiи C++ Builder в чем-то подобна .NET Framework. Разница между ними,прежде всего, состоит в том, что библиотеку .NET Framework можноиспользовать при создании программ на любом языке программирования,поддерживающем технологию .NET. Более того, эту библиотеку можнорасширять новыми классами, которые затем могут использоваться впрограммах на других языках программирования.Platform Invocation Service (P/Invoke) – служба согласования платформ.Программы, исполняемые в .NET, предельно изолированы друг от друга и отсредств операционной системы.
Однако вне этих средств .NET Framework неможет реально работать. P/Invoke реализует взаимодействие .NET Frameworkи операционной системы.Extended Portable Executable (PE) File Format – стандартный форматисполняемых файлов, используемый для хранения объектов технологии. Онзагружается обычным загрузчиком точно так же, как и любой другойисполняемый файл. Однако в его заголовке имеется бит, указывающий на то,что файл относится к технологии .NET. Обнаружив бит, загрузчик92обращается к исполняющей среде CLR, которая и производит обработкуфайла.Включение в технологию .NET именно исполняющей среды CLR, а невиртуальной машины, работу которой надо интерпретировать специальнымипрограммами (аналогично JVM), существенным образом отличает технологию .NET оттехнологии Java.
В отличие от технологии, применяемой при работе с языком Java,основная работа идет не с интерпретатором промежуточного языка, а с транслятором,преобразующим программу на промежуточном языке в машинные команды перед еевыполнением. Эта трансляция выполняется с помощью JIT-компилятора, вызываемогоавтоматически в тот момент, когда управление передается в ту часть программы,которая представлена на промежуточном языке. Компилятор преобразует CIL по меренадобности и вставляет заглушки на место вызова методов объектов.
При первомобращении к заглушке, управление передается JIT-компилятору, который заменяет еереальной программой. Такого рода обращения к компилятору производятсянепосредственно из фрагментов программы, состоящих из обычных машинных команд,ранее сгенерированных компилятором, что повышает скорость исполнения программ.Таким же образом производится обработка программ, написанных на любых другихязыках программирования, входящих в состав системы программирования.В ходе компиляции программы CIL она дополнительно подвергаетсяверификации. Верификация проверяет саму программу и метаданные в поискахвыходов из надежного окружения.
Надежность типов объектов есть надежность ихизоляции от других объектов и надежность их защиты от ошибочного илизлонамеренного разрушения. Во время верификации программа проверяется на доступк разрешенной памяти и вызов только правильно определенных методов. Например, недопускается обращение к полям, которые выходят за отведенные им границы.Дополнительно верификация проверяет правильность генерации машинных команд.4.4.
Системы программирования ОС UNIX и LinuxС самого начала разработки системы UNIX она рассматривалась в качествепереносимой (мобильной) операционной системы. Высокая мобильность частоограничивала использование наиболее современных периферийных устройств. Всложившихся условиях система программирования ОС UNIX (по крайней мере, напервом этапе своего развития) стала ориентироваться на работу с командной строкой.До сих пор этот режим работы в системе UNIX (и в системах, основанных на нейили функционально и организационно близких) остается актуальным.
Он доказал своюэффективность, хотя в настоящее время для систем типа UNIX разработанысовременные графические пользовательские интерфейсы.Работа в режиме командной строки, в том числе для выполнения обычныхдействий, с которых начинается непосредственная подготовка программ в системахпрограммирования – начального заведения и редактирования текстов, выполняется всистемах UNIX с помощью специальных средств – интерпретаторов языка управлениязаданиями, которые в UNIX называются командными интерпретаторами. Командныеинтерпретаторы являются посредниками между пользователями и системнымипрограммами. Для систем UNIX были разработаны многие варианты командныхинтерпретаторов, среди которых наибольшее распространение получили 4 варианта: Cshell (csh), Bourne shell (sh), Korn shell (ksh) и Bourne again shell (bash).
Командныеоболочки, за которыми работают командные интерпретаторы, позволяют не только93выполнять отдельные команды операционной системы, но и формировать командныефайлы, содержащие заранее сформированные последовательности команд.Кроме командных интерпретаторов, система UNIX содержит весь комплекспрограмм, обеспечивающих жизненный цикл программ: редактор, компиляторы сбиблиотеками классов, процедур и функций, необходимых для компоновки программ,подготовленных системой программирования, стандартный ассемблер и компоновщик.В составе системы UNUX также имеются:•••••••••Редактор текстов vi (visual editor – визуальный редактор), представляющийсобой диалоговый редактор, позволяющий в интерактивном режиме вводитьтексты или приказы на редактирование. Редактор vi позволяет такжеосуществлять поиск по тексту и контекстную замену.Компиляторы с различных языков программирования, от языка ассемблерадо объектно-ориентированных языков Си++ и Java.Разделяемые (динамические) библиотеки.Компоновщик ld, представляющий собой классический редактор связей,позволяющий объединять оттранслированные модули и компонентыбиблиотек в единую программу, готовую к исполнению.
Обычнокомпоновщик в системе программирования ОС UNIX вызываетсяавтоматически, заданием нужных параметров при обращении к компилятору,но может вызываться и явными командами операционной системы.Система управления сборкой и компиляцией программ (Make), позволяющаяотслеживать изменения файлов, составляющих программный комплекс,задавать взаимозависимости файлов, оптимизировать процесс подготовкипрограммных комплексов на основе взаимозависимостей и правилкомпиляции и компоновки.Система управления версиями исходных текстов (Source Code ControlSystem, SCCS), позволяющая отслеживать изменения, осуществляемые втекстах программ, работать с последними и более ранними версиямипрограмм, восстанавливать предыдущие версии файлов и блокироватьодновременное внесение исправлений в тексты со стороны несколькихпользователей. Система SCCS поставляется почти со всеми версиями UNIX иэтим имеет преимущество перед другими системами управления версиями.Профилировщик prof, позволяющий определять, как программараспределяет время при исполнении, например, определять, на вызов какихфункций затрачивается особенно много времени.
Результатом работыпрофилировщика является упорядоченная таблица, в которой собранаинформация о совокупном времени работы каждой процедуры, числевызовов этой процедуры и среднем времени работы процедуры в расчете на1 вызов.Программа lint синтаксического контроля программ, написанных на языкепрограммирования Си.Символический отладчик dbx, позволяющий выполнять и отлаживатьпрограммы в пошаговом режиме, выполнять редактирование текстовпрограмм непосредственно во время их отладки, получать доступ кзначениям переменных и выполнять трассировку программ. Информация оходе выполнения программы и состоянии переменных выдается в терминахисходного языка программирования, что значительно упрощает процесс94••отладки программ. Отладчик dbx – это стандартный отладчик ОС UNIX.