Mergi la conținut

Traduko de scienca artikolo

de edu500ac, 24 februarie 2013

Contribuții/Mesaje: 2

Limbă: Esperanto

edu500ac (Arată profil) 24 februarie 2013, 22:59:21

Multaj homoj kredas ke sciencistoj scipovas la anglan lingvon, kaj skribas precipe angle. Malfeliĉe tio ne estas vera. Mi pensis pri la afero kiam mi revenis hejmen, kaj klopodis mense malkovri kiel legi rusajn tekstojn. Do mi memoris pri Esperanto kaj Lernu. Ĉu iu en tiu forumo povas traduki la jenan tekston de Peter Sovietov por mi?

S-выражения и сборка мусора

Элемент S-выражения представляется в виде четвёрки:

: .s-mark ;
: .s-tag [ 1 CELLS ] LITERAL + ;
: .s-car [ 2 CELLS ] LITERAL + ;
: .s-cdr [ 3 CELLS ] LITERAL + ;
: /s-obj [ 4 CELLS ] LITERAL ;

Содержимое полей .s-car и .s-cdr зависит от поля .s-tag, которое хранит адрес определяющей процедуры. В текущей реализации атомами могут быть число или адрес слова Форта. Можно легко добавить в систему и атомы иных типов, изменив соответствующие поля.

Сборка мусора организована на основе классического алгоритма пометить и собрать(mark&sweep) [Field]. Имеется три источника ячеек, за которыми необходимо проследить на стадии пометки:

1. стек локальных S-выражений s-locals, соответствующий стеку параметров Форта,
2. стек s-calls, аналогичный стеку возвратов,
3. список s-globals, связывающий текущие глобальные переменные, в которых хранятся S-выражения

Служебное слово s-reserve подготавливает сборщик мусора к работе, устанавливая соответствующие служебные переменные и составляя список свободных ячеек. Для вызова ему требуется указать адрес новой кучи и количество содержащихся в ней ячеек.

Для работы с s-locals имеются служебные слова p->s и s->p, отвечающие за перенос значения со стека параметров Форта на данный стек и обратно, а также вполне очевидные s-dup, s-drop, s-swap и s-over. Для работы с s-calls имеются слова s->c, c->s и c-pick, которое копирует элемент из s-calls на вершину s-locals. Наконец, для работы с глобальными S-переменными предназначено определяющее слово s-variable. Доступ к определяемым переменным осуществляется с помощью get и set.

С помощью ->s в куче размещается число, указанное в качестве аргумента, а соответствующий указатель помещается на s-locals. Слово xt->s работает аналогичным образом для адресов слов Форта. Слово s-> снимает элемент-указатель со стека s-locals и выполняет связанную с этим элементом определяющую процедуру. Если элемент является парой, указатель на неё возвращается на s-locals, если это число, оно помещается на стек параметров Форта, и если, наконец, элемент оказывается адресом слова Форта, это слово выполняется. Данная схема позволяет единообразно работать с атомами различных типов. Слово s-execute выполняет полученное в качестве аргумента S-выражение, как программу, последовательно вызывая для каждого её элемента слово s->. Программой может быть список, точечная пара или атом. Для поддержки вложенного исполнения S-выражений используется стек s-calls.

antoniomoya (Arată profil) 24 februarie 2013, 23:07:20

Dum vi atendas pli bonan tradukon, vi povus uzi la tradukilon de Google.

Amike.

Înapoi mai sus