Хороший компилятор - Большая Энциклопедия Нефти и Газа, статья, страница 1
Человек, признающий свою ошибку, когда он не прав, - мудрец. Человек, признающий свою ошибку, когда он прав, - женатый. Законы Мерфи (еще...)

Хороший компилятор

Cтраница 1


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

Хороший компилятор отреагирует на это предупреждением, но такое присвоение вполне законно. Отрицательное число будет представлено в беззнаковом побитовом виде. Если вам что-то непонятно, обратитесь к приложению В.  [2]

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

Хороший компилятор может также другими способами анализировать возможность ошибки в исходной программе.  [4]

Хорошие компиляторы выдают предупреждающие сообщения для синтаксически корректных, но, вероятно, логически ошибочных операторов. Типичными примерами являются случаи, когда ( в ПЛ / 1 или КОБОЛе) поле отправителя длиннее, чем поле получателя, или когда оператор, непосредственно следующий за командой типа GO TO, не помечен. Программист предупреждается, что соответственно некоторые литеры могут быть утеряны или что на оператор никогда не лопадет управление.  [5]

Хороший компилятор должен также проверять, что такая ссылка является однозначной.  [6]

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

Используя имеющееся в языке Ада указание ( pragma), говорящее о том, что задача является открьпий, ыь; можем создать хороший компилятор, позволяющий избегать компиляции этого промежуточного уровня. Если каждая процедура в пакете Member Ops объявлена открытой ( INLINE), то издержки, связанные с дополнительным вызовом процедуры, устраняются. В этом случае вместо вызова процедуры из Member Ops тело этой процедуры подставляется в точку вызова, напоминая этим процесс подстановки макрорасширений в некоторых ассемблерах. Таким образом, внешнее обращение к процедуре пропадает.  [8]

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

А составление хорошего компилятора для IA-64 - дело очень сложное. Кроме того, многочисленные исследования в параллельном программировании, проведенные за последние 30 лет, оказались не очень успешными. Если в программе есть какой-то параллелизм или если компилятор не может извлечь его, все пучки команд в архитектуре IA-64 будут короткими, а от этого большого увеличения производительности не произойдет.  [10]

Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого распространения. В 1968 году была создана версия Алгол 68, по своим возможностям и сегодня опережающая многие языки программирования, однако из-за отсутствия достаточно эффективных компьютеров для нее не удалось своевременно создать хорошие компиляторы.  [11]

Если мы всегда пишем правильные программы и имеем возможность работать с хорошим компилятором, то для практических целей можно условно считать компилятор и вычислительную машину единой машиной, которая может непосредственно выполнять программы. Комбинация компилятора и вычислительной машины иногда называется виртуальной машиной. Для языка Паскаль созданы хорошие компиляторы, и мы можем рассматривать комбинацию как Паскаль-машину.  [12]

Иногда трудно устоять против настойчивых требований пользователей включить все типы средств, которые хороша было бы иметь. Опасность состоит в том, что стремление угодить чьему-то жеШанию нарушит согласованность всего проекта. Например, размышляя, не включить ли некую языковую конструкцию или специальную обработку в компиляторе какой-то достаточно часто используемой конструкции, следует оценить выгоды и дополнительные расходы при реализации, поскольку одно только ее наличие сделает систему более громоздкой. Разработчики языка часто недооценивают этот момент. Я с готовностью допускаю, что временами было бы хорошо иметь некоторые возможности языка Ада, которые не имеют аналогов в Модуле-2, но в то же время я спрашиваю, стоят ли они таких затрат. Во-первых, хотя создание обоих языков началось в 1977 г., компиляторы языка Ада начали появляться только сейчас, в то время как Модулой мы уже пользуемся с 1979 г. Во-вторых, ходят слухи, что компиляторы Ады - это гигантские программы, состоящие из нескольких сотен тысяч строк команд, в то время как наш новейший компилятор Модулы измеряется лишь 5 тысячами строк. Признаюсь по секрету, что этот компилятор Модулы уже находится на пределе того уровня сложности, который еще можно понять, и я чувствую себя совершенно неспособным создать хороший компилятор для Ады.  [13]



Страницы:      1