Раздельная трансляция - Большая Энциклопедия Нефти и Газа, статья, страница 1
Лучше уж экстрадиция, чем эксгумация. Павел Бородин. Законы Мерфи (еще...)

Раздельная трансляция

Cтраница 1


Раздельная трансляция допускает включение в исходные тексты программ одних и тех же идентификаторов.  [1]

Использование раздельной трансляции и других вспомогательных инструментов не должно приводить к невозможности использования других средств, предоставляемых реализацией используемого языка программирования, таких, например, как средства динамической отладки.  [2]

При раздельной трансляции не производится контроля соответствия типов параметров раздельно транслируемых компонентов. При осторожном использовании раздельная трансляция может применяться при создании больших программных комплексов. Однако раздельная трансляция оказывается практически бесполезной для создания библиотек подпрограмм вследствие ограничений, связанных с размерами массивов, которые должны быть известны на этапе трансляции.  [3]

При раздельной трансляции программных единиц, написанных на языке Паскаль, используется опция Е В результате каждая процедура будет иметь точку входа, имя которой будет состоять из первых семи символов-имени этой процедуры. При компоновке осуществляется поиск соответствующих друг другу имен входных точек и процедур в их фиктивных описаниях.  [4]

Отсутствие механизма раздельной трансляции существенно затрудняет разработку больших программ и делает практически невозможным использование библиотек.  [5]

Теоретически необходимость проведения раздельной трансляции отсутствует: при наличии очень быстро работающего транслятора с. На практике же, конечно, ни один транслятор с любого языка программирования не достигает требуемого для этого быстродействия, исходный текст различных компонентов программы часто оказывается недоступным, а возможность включения файлов обычно не обеспечивается средствами используемого языка. Все это делает внесение изменений в достаточно большую программу весьма трудоемкой задачей.  [6]

В языке Си единицей для раздельной трансляции является файл, содержащий исходный текст программы, написанной на языке Си, и некоторые данные. Файл при этом является на самом деле не понятием языка Си, а понятием файловой системы. Имя некоторого статического объекта, описанного в файле вне всех функций ( содержащихся в этом файле), может быть сделано доступным из других файлов путем объявления его внешним с помощью служебного слова external. Разрешение внешних ссылок осуществляется на этапе компоновки. Подход, используемый в языке Си, хорошо подходит для решения больших задач, но может оказаться неподходящим в случае очень больших задач. Проблема, по мнению автора, заключается в том, что компоновщик имеет дело с разделяемыми именами подпрограмм и статическими данными и образует единое пространство имен для всей задачи, что может привести к конфликту имен в не связанных друг с другом частях программы.  [7]

Во-вторых, имеется возможность осуществления раздельной трансляции групп процедур.  [8]

Язык Паскаль не обеспечивает возможности проведения раздельной трансляции. Поэтому авторы каждой реализации транслятора с языка Паскаль принимают на свой страх и риск решение о включении ( или не включении) в осуществляемую ими реализацию возможности проведения раздельной трансляции. Например, многие трансляторы с языка Паскаль не допускают возможности проведения раздельной трансляции ( как, например, интерпретатор языка Паскаль для мини - ЭВМ семейства VAX-11, разработанный в Калифорнийском университете ( г. Беркли), упоминавшийся в разд. ЮЛ), что соответствует и духу и букве языка Паскаль. Ряд трансляторов с языка Паскаль обеспечивает возможность описания того, что тело некоторой подпрограммы описано где-то в другом месте. Однако, как бы то ни было, все механизмы такого рода являются нестандартными и отличаются от реализации к реализации.  [9]

Допускает ли этот язык программирования возможность раздельной трансляции.  [10]

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

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

В языке Паскаль отсутствует возможность проведения раздельной трансляции, и по этой причине язык Паскаль очень плохо приспособлен для решения больших и очень больших задач, о которых шла речь выше. Поэтому и было предложено ввести в язык Паскаль возможность проведения раздельной трансляции, что и было сделано в ряде реализаций транслятора с языка Паскаль.  [13]

Ниже описан один из возможных вариантов раздельной трансляции описаний и операторов процедур. Сущность этого способа, который является наиболее общим способом раздельной трансляции операторов и описаний процедур, состоит в следующем. Тело процедуры программируется как подпрограмма и обычно оформляется в виде модуля загрузки, подобно стандартной библиотечной подпрограмме. В ходе трансляции оператор процедуры заменяется обращением к телу процедуры, а каждый фактический параметр в операторе процедуры заменяется подпрограммой, которая либо вычисляет значение этого параметра, либо фиксирует его имя ( адрес), либо, наконец, делает то и другое. Во всех случаях подпрограмма фактического параметра фиксирует также его класс и тип.  [14]

Ряд трансляторов с языка Паскаль допускает возможность проведения раздельной трансляции, не обеспечивая1 проведение полного контроля соответствия типов в раздельно транслируемых компонентах программы. Как курьез, связанный с этой темой, автору вспомнилась одна статья ( к счастью, ненапечатанная), в которой на странице п язык Си критиковался за отсутствие контроля соответствия типов в раздельно транслируемых компонентах программы, а на странице п 1 предлагался способ нарушения механизма сильной типизации в языке Паскаль путем введения возможности проведения раздельной трансляции без проведения полного контроля соответствия типов в раздельно транслируемых компонентах программы.  [15]



Страницы:      1    2    3    4