Непейвода Н.Н. Программирование. Раздел 3

Непейвода Н.Н. Программирование. Страница 386

Так сделано, к примеру, в РаэсаГе. Распространение присваивания здесь означает, что с каждым конструктором типа связана подпрограмма присваи­вания с двумя параметрами, указывающими на источник и получатель значе­ния новых типов данных. В С/С++ с новым типом ассоциируется указатель­ный тип и все оперирование с конструируемыми значениями осуществляется посредством доступа к ним через указатели. Присваивание указателей при­водит лишь к получению нескольких ссылок на общую память (см. рис. 7.6; если необходимо копирование, то об этом следует особо позаботиться, на­пример, разработать специальную процедуру).

Что касается других операций, то чаще всего они не распространяются на конструируемые структуры данных. Упомянем несколько исключений. Известны попытки распространять арифметические операции на массивы, что демонстрирует, например, язык Альфа, разработанный в Новосибирске. В неоднократно упомянутом языке АР1_ определяется механизм, который позволяет единообразно распространять существующие операции на значе­ния и переменные новых типов.

В современных языках новые операции обычно определяются с помо­щью процедур. Возможно синтаксическое оформление вызовов этих проце­дур как операций (С/С++, Алгол 68).

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

Новости

  • 1
  • 2
Prev Next

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

24.01.2016

Ракета "Ангара-А5В" в ближайшее десятилетие не полетит

Роскосмос не планирует в течение ближайшего десятилетия осуществлять пуск тяжёлой ракеты-носителя А...

Ученые РФ опровергли выводы исследований о вреде ГМО

24.01.2016

Ученые РФ опровергли выводы исследований о вреде ГМО

Исследователи из Института проблем передачи информации (ИППИ РАН) проанализировали несколько самых п...

Летающие "Крокодилы"

24.01.2016

Летающие "Крокодилы"

20 удивительных фактов о боевом вертолете Ми-24.Этот вертолет стал таким же узнаваемым символом сове...

В Аргентине описали новый вид динозавра-гиганта

24.01.2016

О ранее неизвестном виде динозавра, относящемуся к инфраотряду зауроподов, рассказали аргентинские п...

Реклама