Cтраница 3
В параграфе SOURCE-COMPUTER ( исходная машина) указывается вычислительная машина, на которой должна произойти компиляция, в параграфе OBJECT-COMPUTER ( рабочая машина) - вычислительная машина, на которой должна выпол-няться скомпилированная программа. [31]
Многие проблемы, касающиеся реализаций языков программирования, Возникают из-за того, что некоторые семантические особенности не являются полностью специфицированными в определениях языков Одним простым примером, типичным для императивных языков, является то, что переменные могут иметь или не иметь предварительно присвоенные значения при своем первом использовании. Вторым примером является то, что доступ к массиву со значением индекса, лежащим вне допустимых пределов, может не быть обнаружен во время выполнения, что дает непредсказуемые результаты, возможно включающие разрушение самой скомпилированной программы. Подобным образом мы были не в состоянии достичь строгого вычисления, используя интерпретатор, написанный на ленивом функциональном языке, поскольку мы определяли семантику нашего исходного языка в терминах другого функционального языка Хотя интерпретатор, очевидно, дает точное определение семантики языка, это определение зависит также от семантики второго языка, используемого для реализации. [32]
Структура типичного задания FMS. [33] |
Фортран с системной магнитной ленты. Эта карта следовала за программой, которую нужно было компилировать, а после нее шла карта SLOAD, указывающая операционной системе загрузить только что скомпилированную объектную программу. Скомпилированные программы часто записывались на временных лентах, данные с которых могли стираться сразу после использования, и их загрузка должна была выполняться явно. Следом шла карта RUN с данными, дающая операционной системе команду выполнять программу. [34]
Схему защиты с помощью пароля, обеспечиваемую опцией Lock Project for Viewing ( Блокировать просмотр проекга), сравнительно легко взломать. Если действительно требуется уберечь исходный тексг ог постороннего вмешательства, подумайте о написании чувствительных программ ( или часгей программ) на Visual Basic. Скомпилированная программа VB не содержит ни малейших следов исходного текста, и только наиболее решительный и технически опытный хакер может ее восстановить. [35]
Процесс компиляции программы с языка высокого уровня в машинный язык может занимать значительное время. Для непосредственного выполнения программ на языке высокого уровня без необходимости их компиляции в машинный язык были разработаны программы интерпретаторы. Хотя скомпилированные программы выполняются быстрее чем интерпретируемые, интерпретаторы популярны в таких условиях, когда программы часто перекомпилируются для добавления в них новых возможностей и исправления ошибок. Но когда программа разработана, ее скомпилированная версия будет выполняться более эффективно. [36]
С интерпретатором работать проще, так как команды программы выполняются в той последовательности, в которой они записаны, что облегчает контроль за выполнением программы. Компилятор же вносит дополнительные этапы компиляции и компоновки программы, в результате чего получается исполняемый файл, недоступный для анализа и редактирования. Однако скомпилированные программы выполняются быстрее, так как перевод команд программы на машинный язык уже произошел на этапе компиляции. [37]
Для сохранения программы на диске нужно нажать клавишу Y. Если в памяти хранились коды скомпилированной программы, то они будут утеряны. Для того чтобы скомпилированная программа записывалась на диск, необходимо изменить опцию Destination в пункте Compile основного меню. [38]
Временем компиляции называется время, в течение которого исходная программа, выступающая как входные данные, переводится ( транслируется) посредством специального механизма в форму, близкую к необходимой для выполнения. После обработки компилятором программа поступает на вход компонента, осуществляющего компоновку. Сюда же поступают и другие, уже скомпилированные программы из библиотек, а также предложения языка управления компоновкой. С помощью этих предложений можно определить, какие программы следует присоединить к только что скомпонованной и где эти программы находятся. Модули, получающиеся в результате компоновки, полностью подготовлены к запуску. [39]
Данная часть программы, подобно многим другим, уделяет особое внимание надежности и безошибочности интерфейса пользователя и файловым операциям. Вот почему модули CRT и FileStuff так важны. Это демонстрирует вновь значение языка, поддерживающего библиотеку раздельно скомпилированных программ. Полная распечатка процедуры Startup показана на распечатке 12.5. Мы проанализируем процедуру, чтобы увидеть, что же она все-таки делает ( и не делает), а также то, как Модула-2 усиливает наши способности для осуществления этих функций. [40]
Компиляторы ( для языков Ассемблер, ФОРТРАН, ПАСКАЛЬ, СИ) просматривают и транслируют всю программу, после чего в ее непосредственном исполнении на ЭВМ не участвуют. Интерпретаторы ( например, большинство версий БЕЙСИКа) разбирают и пытаются немедленно исполнить на ЭВМ каждую строку исходной программы; при этом в ОЗУ одновременно присутствуют и транслятор, и исходный текст программы, да и большая часть времени работы процессора тратится на разбор и трансляцию каждой строки программы при каждом ее повторном исполнении. Поэтому программы с трансляторами - интерпретаторами работают в 10 - 100 раз медленнее, чем скомпилированные программы. [41]
В операционных системах используются биты-индикаторы для многих целей. Допустим, что код защиты 64 ( 10) указывает на то, что в файле содержится скомпилированная программа. [42]
Результатом начального прохода процесса компиляции, когда выполняются инструкции времени компиляции, является просто другая программа на ПЛ / I, в которой отсутствуют исходные инструкции времени компиляции и выполнены указанные подстановки в других частях программы. Эти средства помогают программисту сократить объем утомительного кодирования, не увеличивая при этом время выполнения программы. Однако, как показывает приведенный выше пример, использовать средства времени компиляции нужно осторожно: они могут привести к значительному увеличению размеров скомпилированной программы, лишь ненамного уменьшив время ее выполнения. [43]
Поскольку это стандартный файл ввода, задана только обязательная фраза LABEL RECORD IS, указывающая, что файл не содержит в своем начале метки. Информация, содержащаяся здесь, вместе с информацией, полученной из параграфа FILE-CONTROL ( строка 10), позволяет компилятору запрограммировать правильный доступ к файлу в скомпилированной программе. [44]
Различные программы зачастую обращаются к одним и тем же функциям. Решение о том, какие функции следует помещать непосредственно в скомпилированную программу, а какие реализовывать в виде части расширенной машины, принимается на этапе проектирования и отражает представление разработчиков об операциях, наиболее часто встречающихся в программах. Этот вопрос часто служит предметом дискуссии между разработчиками компиляторов и разработчиками операционных систем. [45]