Сравнивайте с английским: нажмите на абзац — оригинал откроется в окне. Кнопка EN под абзацем показывает его прямо в тексте.
Введение
Компьютерная система Flex была разработана Майклом Фостером и Ианом Карри из Royal Signals and Radar Establishment (RSRE) в Малверне, Англия, в конце 1970-х и 1980-х годов. Она использовала схему хранения с тегами для реализации архитектуры возможностей и была спроектирована для безопасного и эффективного внедрения строго типизированных процедур. Аппаратное обеспечение было специализированным и микропрограммируемым, с операционной системой, (модульным) компилятором, редактором, сборщиком мусора и файловой системой, все написанные на ALGOL 68RS. Существовало (по крайней мере) два воплощения Flex, реализованных на аппаратном обеспечении с перезаписываемым микрокодом. Первый был поставлен компанией Logica по проекту RSRE, а второй использовал ICL PERQ. Микрокод отвечал за выделение, освобождение памяти и сбор мусора. Это сразу же исключало целый класс ошибок, возникающих из-за неправильного использования (преднамеренного или случайного) указателей. Примечательной особенностью Flex было файловое хранилище с тегами и возможностью однократной записи. Это позволяло прозрачно записывать и извлекать произвольный код и структуры данных, без использования внешних кодировок. Таким образом, данные можно было безопасно передавать от программы к программе. Аналогичным образом, удаленные возможности позволяли получать доступ к данным и процедурам на других машинах через сетевое соединение, опять же без участия прикладной программы во внешних кодировках данных, параметров или возвращаемых значений. Вся схема позволяла безопасно реализовывать абстрактные типы данных, поскольку элементы данных и процедуры, которым разрешен доступ к ним, могли быть связаны вместе, а полученные возможности свободно передаваться. Возможность предоставляла доступ к процедурам, но не могла быть использована для получения доступа к данным. Еще одной примечательной особенностью Flex было понятие «шатких указателей», которые в последнее время часто называют «слабыми ссылками», указывающими на блоки памяти, которые могут быть освобождены при следующем сборе мусора. Это используется, например, для кэшированных блоков диска или списка свободных рабочих пространств процедур. COMFLEX, сеть коммутации пакетов, способная передавать данные со скоростью магнитного диска, разрабатывалась параллельно с Flex. Это сделало возможным использование удаленных файловых хранилищ, удаленных возможностей и удаленных вызовов процедур.
The Flex Computer System was developed by Michael Foster and Ian Currie of Royal Signals and Radar Establishment (RSRE) in Malvern, England, during the late 1970s and 1980s. It used a tagged storage scheme to implement a capability architecture, and was designed for the safe and efficient implementation of strongly typed procedures. The hardware was custom and microprogrammable, with an operating system, (modular) compiler, editor, garbage collector and filing system all written in ALGOL 68RS. There were (at least) two incarnations of Flex, implemented using hardware with writable microcode. The first was supplied by Logica to an RSRE design, and the second used an ICL PERQ. The microcode alone was responsible for storage allocation, deallocation and garbage collection. This immediately precluded a whole class of errors arising from the misuse (deliberate or accidental) of pointers. A notable feature of Flex was the tagged, write once filestore. This allowed arbitrary code and data structures to be written and retrieved transparently, without recourse to external encodings. Data could thus be passed safely from program to program. In a similar way, remote capabilities allowed data and procedures on other machines to be accessed over a network connection, again without the application program being involved in external encodings of data, parameters or result values. The whole scheme allowed abstract data types to be safely implemented, as data items and the procedures permitted to access them could be bound together, and the resulting capability passed freely around. The capability would grant access to the procedures, but could not be used in any way to obtain access to the data. Another notable feature of Flex was the notion of shaky pointers, more recently often called weak references, which points to blocks of memory that could be freed at the next garbage collection. This is used for example for cached disc blocks or a list of spare procedure work spaces. COMFLEX, a packet switching network capable of transmitting data at magnetic disc speed, was developed alongside Flex. It made feasible the use of remote file stores, remote capabilities, and remote procedure calls.