In pico, echo and some older versions of borg every name which
was found in the program text would result in an identifier (with
the _REF_TAG_). This identifier would point to a string. If two
identifiers had the same text, they would point to the same
string. In this way it was easy to find out if two identifiers
were the same or not.
However this is no longer possible in distirbuted systems where programs (and their text) migrate between agent systems. Whenever a program arrives at a new place, the deserialisator will allocate for every string which occurs in the program a new entry in de NAM table. If we have enough agents running arround, this will result in filling up the complete namespace.
As such, we introduced a REF_TAG hich contains a unique string and a TXT_TAG which can contain an already existing string. This way we don't fill up the NAM_table, we have fast identifier comparison and we can distinguish between 'references' and 'strings' when deserializing.