Л.Е. Карпов - Системы программирования (1114903), страница 26
Текст из файла (страница 26)
Распространение технологии .NETна другие платформы несколько затруднено из-за проблем, связанных своспроизведением пользовательского интерфейса: экраны настольного компьютера,карманного компьютера и мобильного телефона сильно различаются.Кроме общей системы типов CTS и общего языка внутреннего представленияпрограмм, технология .NET характеризуется следующими спецификациями,составляющими общеязыковую инфраструктуру (Common Language Infrastructure CLI):••••Extensible Metadata - расширяемые метаданные. В технологии .NETподразумевается, что команды 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. Обнаружив бит, загрузчикобращается к исполняющей среде CLR, которая и производит обработкуфайла.Включение в технологию .NET именно исполняющей среды CLR, а невиртуальной машины, работу которой надо интерпретировать специальнымипрограммами (аналогично JVM), существенным образом отличает эту технологию.NET от технологии Java. В отличие от технологии, применяемой при работе с языкомJava, основная работа идет не с интерпретатором промежуточного языка, а странслятором, преобразующим программу на промежуточном языке в машинныекоманды перед ее выполнением.
Эта трансляция выполняется с помощью JITкомпилятора (Just-in-time), вызываемого автоматически в тот момент, когда управлениепередается в ту часть программы, которая представлена на промежуточном языке.Компилятор преобразует CIL по мере надобности и вставляет заглушки на место92вызова методов объектов. При первом обращении к заглушке, управление передается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).
Командныеоболочки, за которыми работают командные интерпретаторы, позволяют не тольковыполнять отдельные команды операционной системы, но и формировать командныефайлы, содержащие заранее сформированные последовательности команд.Кроме командных интерпретаторов, система UNIX содержит весь комплекспрограмм, обеспечивающих жизненный цикл программ: редактор, компиляторы сбиблиотеками классов, процедур и функций, необходимых для компоновки программ,подготовленных системой программирования, стандартный ассемблер и компоновщик.В составе системы UNUX также имеются•Редактор текстов vi (visual editor – визуальный редактор), представляющийсобой диалоговый редактор, позволяющий в интерактивном режиме вводитьтексты или приказы на редактирование.
Редактор vi позволяет такжеосуществлять поиск по тексту и контекстную замену.93••••••Развитый, самодокументированный, расширяемый экранный редакторреального времени EMACS (Editor MACroS), настраиваемый на разные типытерминалов и потребности пользователей редактор. Расширяемостьредактора основана на использовании встроенного в редакторинтерпретатора языка Лисп (диалекта Common Lisp). Как и все редакторы,редактор EMACS позволяет проводить удаление и вставку текста, а такжеосуществлять контекстный поиск и контекстную замену в текстах.Существенное отличие редактора EMACS от других редакторов – в егомобильности.
Этот редактор работает не только в UNIX-системах, но также всистемах VMS, MS-DOS, системах семейства Microsoft Windows. РедакторEMACS может запускаться не только из командной строки. Он работает вмногооконном режиме с интерфейсом X Window. Редактор EMACS имеетосновные режимы ввода и редактирования текстов для языковпрограммирования Лисп, Scheme (вариант Лиспа), Awk, Си, Си++, Фортран,Icon, Java, Objective-C, Паскаль, Perl (Practical Extraction Report Language),Pik e, CORBA IDL, и Tcl. Есть также основной режим для Make-файлов.Наличие этих режимов позволяет не только осуществлять форматный вводтекстов программ, наиболее удобный для конкретного языкапрограммирования, но и запускать сами компиляторы.Пользовательский интерфейс X Window System, разработанный вМассачусетском технологическом институте в 1984 году, который облегчаетработу в любой оконной системе UNIX.
В основу этого интерфейсаположены различия между функциями клиента и сервера в процессерисования изображения на экране компьютера. Рисование на экраневыполняет только сервер, а клиентская часть программы передает сервернойчасти все необходимые для рисования данные. Такой подход позволяет нетолько решать проблемы безопасности, но и позволяет легко создаватьприложения, работающие с несколькими экранами сразу. С точки зрениясистемы программирования интерфейс X Window System важен том, что наего основе созданы многочисленные системы рабочих столов (desktop),являющиеся основами интерактивных систем программирования.
Срединаиболее распространенных рабочих столов – системы CDE (CommonDesktop Environment) и KDE (K Desktop Environment).Компиляторы с различных языков программирования, от языка ассемблерадо объектно-ориентированных языков Си++ и Java.Разделяемые (динамические) библиотеки.Компоновщик ld, представляющий собой классический редактор связей,позволяющий объединять оттранслированные модули и компонентыбиблиотек в единую программу, готовую к исполнению.
Обычнокомпоновщик в системе программирования ОС UNIX вызываетсяавтоматически, заданием нужных параметров при обращении к компилятору,но может вызываться и явными командами операционной системы.Система управления сборкой и компиляцией программ (Make), позволяющаяотслеживать изменения файлов, составляющих программный комплекс,задавать взаимозависимости файлов, оптимизировать процесс подготовкипрограммных комплексов на основе взаимозависимостей и правилкомпиляции и компоновки.94••••••Система управления версиями исходных текстов (Source Code ControlSystem, SCCS), позволяющая отслеживать изменения, осуществляемые втекстах программ, работать с последними и более ранними версиямипрограмм, восстанавливать предыдущие версии файлов и блокироватьодновременное внесение исправлений в тексты со стороны несколькихпользователей.
Система SCCS поставляется почти со всеми версиями UNIX иэтим имеет преимущество перед другими системами управления версиями.Профилировщик prof, позволяющий определять, как программараспределяет время при исполнении, например, определять, на вызов какихфункций затрачивается особенно много времени. Результатом работыпрофилировщика является упорядоченная таблица, в которой собранаинформация о совокупном времени работы каждой процедуры, числевызовов этой процедуры и среднем времени работы процедуры в расчете на1 вызов.Программа lint синтаксического контроля программ, написанных на языкепрограммирования Си.Символический отладчик dbx, позволяющий выполнять и отлаживатьпрограммы в пошаговом режиме, выполнять редактирование текстовпрограмм непосредственно во время их отладки, получать доступ кзначениям переменных и выполнять трассировку программ.
Информация оходе выполнения программы и состоянии переменных выдается в терминахисходного языка программирования, что значительно упрощает процессотладки программ. Отладчик dbx – это стандартный отладчик ОС UNIX. Онпоставляется с большинством версий этой операционной системы, но внастоящее время он уступает по своим качествам отладчикам другихраспространенных систем программирования (например, отладчикамкомпаний Borland и Microsoft), а также другим отладчикам системы UNIX(например, ObjectWorks\C++), поставляемым на коммерческой основе.Программа Lex – генератор лексических анализаторов.Программа построения синтаксических анализаторов Yacc.В системе UNIX имеется огромное количество полезных системных программ, амногочисленные версии этой системы могут содержать свои собственные вариантыпрограмм и дополнительные программы, прямо связанные с особенностямиконкретных реализаций.