Главная Случайная страница


Полезное:

Как сделать разговор полезным и приятным Как сделать объемную звезду своими руками Как сделать то, что делать не хочется? Как сделать погремушку Как сделать так чтобы женщины сами знакомились с вами Как сделать идею коммерческой Как сделать хорошую растяжку ног? Как сделать наш разум здоровым? Как сделать, чтобы люди обманывали меньше Вопрос 4. Как сделать так, чтобы вас уважали и ценили? Как сделать лучше себе и другим людям Как сделать свидание интересным?


Категории:

АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника






Увязка языков программирования. Декомпозиция программ на исполнимые модули





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

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

Одна из идей основана на том, что любой программный код, написанный на языке высокого уровня, в конечном итоге должен быть транслирован в машинные коды. После этого уже не важно, на каком из языков была изначально написана программа. Данное обстоятельство подсказывает очевидный способ увязки разных языков программирования на уровне машинного кода. Файлы с подпрограммами на разных языках высокого уровня компилируются соответствующими компиляторами в т. н. объектные модули, состоящие из машинных кодов и некоторой дополнительной информации для сборки будущей программы (имеются стандарты объектных модулей COFF, ELF, PE и др.). Далее программа-компоновщик компонует из объектных модулей исполняемую программу. Такой способ компоновки (до запуска программы) называют статическим связыванием.

Проблемным моментом технологии является несоответствие механизмов передачи аргументов при вызовах процедур, реализуемых разными компиляторами. Решается проблема с помощью специфических (часто нестандартных) приемов, но и это не гарантирует их полной совместимости. Чаще всего совместимыми оказываются компиляторы, разработанные одной фирмой (например, Microsoft: С/С++, Visual Basic, Fortran).

Со временем бо́льшую популярность завоевали динамически подгружаемые библиотеки (DLL – Dynamic Loaded Library). В отличие от статического, динамическое связывание производится во время выполнения программы (при ее запуске или по мере необходимости). Установление связей в данном случае производит не программа-компоновщик, а операционная система. Программа уже состоит не из единственного исполнимого файла, в котором содержаться все нужные подпрограммы, а из целого набора DLL-файлов, дополняющих вызывающую программу. Можно говорить о декомпозиции программы на уровне исполняемых модулей.

В данном случае передача аргументов процедурам стандартизируется требованиями ОС. Компиляторы должны подстраиваться под эти требования, например, вводя нестандартные для языка модификаторы процедур, что несколько затрудняет переносимость кода. Это затруднение покрывается дополнительными преимуществами динамического связывания.

Некоторые DLL являются сугубо специфическими для конкретной задачи, а некоторые могут использоваться и другими приложениями. В последнем случае можно предоставить соответствующие DLL в общее пользование, т.е. сделать их общим ресурсом компьютера (один и тот же код библиотеки, загруженный в ОЗУ, может одновременно использоваться несколькими программами). Удобным становится также и модификация установленных программ путем подмены старых DLL их новыми версиями без перекомпоновки. Подмена позволяет полностью изменить реализацию модуля, чего нельзя сказать о его спецификации – интерфейс поменять таким образом невозможно.

Немалое значение имеет то обстоятельство, что библиотеки могут поставляться на рынок в бинарном виде без открытия исходного кода на языке высокого уровня, чем нередко пользуются компании для защиты своих авторских прав и ноу-хау.

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

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

Date: 2015-09-24; view: 570; Нарушение авторских прав; Помощь в написании работы --> СЮДА...



mydocx.ru - 2015-2024 year. (0.006 sec.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав - Пожаловаться на публикацию