Инструментальные средства
третьего поколения и переносимость приложений
В течение многих лет переносимость приложений была одной из причин, по которой разработчики стремились избегать использования инструментальных средств третьего поколения (3GL). Сегодня можно добиться переносимости на техническом уровне, но во многих организациях эта проблема остается политическим или административным препятствием. Там, где у менеджеров еще свежи воспоминания о многолетних и бесплодных попытках перенести приложение на Коболе с одного мэйнфрейма на другой, проблему переносимости 3GL можно считать непреодолимой.
Что же касается С и C++, то ситуация может быть иной. Если вы придерживаетесь стандартов POSIX, осторожно обращаетесь с объявлениями типов и скрываете зависимость от операционной системы в функциях или с помощью средств препроцессора, то решение вопросов переносимости существенно облегчается. Это требует дисциплины, но осуществимо, что доказала корпорация Oracle своей переносимой ОРСУБД, в которой для множества платформ поддерживается единый исходный код.
Переносимость как таковая не являлась бы проблемой, если бы все клиенты и все серверы на нашей планете использовали микропроцессоры с одним набором команд, операционные системы с совершенно одинаковыми системными вызовами и серверы баз данных с одним и тем же интерфейсом. На наш взгляд, это невозможно. Может быть, мы не правы?
Ссылочные указатели
OracleS поддерживает ссылочные указатели (REF), которые позволяют ссылаться из одного объекта на другой. Субъектом ссылки должна быть объектная таблица, т.е. таблица, которая определена как имеющая конкретный объектный тип. Например, традиционные таблицы emp и dept можно описать следующим образом:
CREATE TYPE dept_type AS OBJECT ( depno    NUMBER(2) , dname    VARCHAR(14) , loc     VARCHAR(13)
CREATE TABLE dept_t OF dept_type;
CREATE TABLE emp
( empno    NUMBER(4)
98	OraclcS