И.А. Волкова, И.Г. Головин, Л.Е. Карпов - Системы программирования (1119414), страница 26
Текст из файла (страница 26)
В принципе можно было продолжить работунад совершенствованием технологии Java, но компания выбрала другой путь ипредложила новый язык программирования Си#. Оба языка используют синтаксис иосновные концепции языка Си++, хотя, конечно, отличаются от него.В последнее время компания Microsoft активно продвигает новое поколениесистем программирования, объединяемых общим наименованием .NET Framework(управляемая среда для разработки и исполнения приложений). Эта среда состоит изобщеязыковой исполняющей среды (Common Language Runtime – CLR) и библиотекиклассов. С самого начала она обеспечивала межъязыковую совместимость программ,написанных на трех языках программирования – Visual Basic .NET, Visual C# и VisualC++, а также сценариев, написанных на языках VBScript и JScript.
Технология .NETрешает задачу создания единой универсальной платформы (базы) программирования,равно годящейся для разработки любых программ – обычных приложений, приложенийдля работы с базами данных, сетевых служб, приложений для мобильных и переносныхустройств.Ядром системы .NET Framework является спецификация общеязыковойинфраструктуры (Common Language Infrastructure – CLI). Эта спецификацияопределяет, в частности, единый промежуточный язык (Common Intermediate Language– CIL), а также общую систему типов (Common Type System – CTS), обеспечивающуюсовместимость типов между всеми языковыми компонентами.Как и в технологии Java, трансляция с любого языка программирования сначалаосуществляется в единый промежуточный язык CIL.
Однако по спецификации CLIпрограммы на промежуточном языке не интерпретеруются виртуальной машиной, атранслируются непосредственно в процессе выполнения в машинный код (с помощьютак называемых JIT-компиляторов – just-in-time compilers). Система, обеспечивающаятрансляцию и выполнение CIL-программ, называется виртуальной исполняющейсистемой (Virtual Execution System – VES). Ни промежуточный язык, ни общая систематипов не зависят от конкретной платформы (т.
е. машинной архитектуры и91операционной системы), поэтому виртуальная исполняющая система, в принципе,может быть реализована на любой вычислительной системе.Реализация VES на платформе MS Windows (также выполненная компаниейMicrosoft) получила название общеязыковая исполняющая среда CLR. Система .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, позволяющий определять, как программараспределяет время при исполнении, например, определять, на вызов какихфункций затрачивается особенно много времени.