分享
 
 
 

RFC569 - NETED: A Common Editor for the ARPA Network

王朝other·作者佚名  2008-05-31
窄屏简体版  字體: |||超大  

Network Working Group Mike Padlipsky

RFC569/ NET-USING Memo 1 NET-USING

NIC # 18972 October 15, 1973

NETED: A Common Editor for the ARPA Network

BACKGROUND

At the recent Resource Sharing Workshop, there was a somewhat

surprising degree of consensus on what I had anticipated would the

least popular ASPect of the my "Unified User-Level Protocol" proposal:

A number of the attendees agreed without argument that it would be

a good thing to have "the same" context editor available on all

Servers -- where "the same" refers, of course, to the user interface.

We even agreed that "NETED" seemed to be a plausible common name. In

view of the fact that the rest of the proposal didn't seem to capture

anybody's imagination, though, it seemed to be a useful notion to

separate out the common editor and make it the subject of a

stand-alone proposal.

My resolve to come up with the following was further strengthened at

the the organizing meeting of the Network User Interest Group, which

followed the Workshop. Being primarily concerned with user issues,

this group was downright enthusiastic about the prospect of a common

editor. Indeed, this proposal has been reviewed by the group and is

endorsed by it.

REASONS

The need for a common editor might well be obvious to many readers.

They are encouraged to skip this section, which is for the benefit of

those who don't already see the light.

In the first place, it's almost axiomatic that to use a time-sharing

system, you have to be able to create files (/"datasets"/"segments").

Even if you're only using the Network to send "mail", you'd still like

to be able to create a file separately, so as to be able to edit it

before sending. And if you want to write a program -- or even make a

"runoff" source file -- you simply must be able to use some editor

command on the system at hand.

Unfortunately, there are even more editors than there are systems;

and each one has it own conventions and peculiarities. So "Network

users" (who use several Servers, as opposed to those who use the

Network only to Access a particular system all the time) are faced

with the unpleasant chore of developing several sets of incompatible

reflexes if they want to get along. This can certainly be done. It

has been by a number of members of the Network Working Group.

NETED SPEC p.2

The real kicker, however, comes when we consider the needs of those

users -- who are coming into the Network community in ever-increasing

numbers -- who are not professional programmers. They just want to

get some work done, "on the Net" (that is, irrespective of which

operating system they might be talking to). They are likely to be

appalled rather than amused by having to learn a dozen ways of getting

to first base. Therefore, it seems clear than not only do we need a

common editor, but we also need a simple common editor.

CHOICES

Simplicity is not the only criterion for rejecting the apparently

"obvious" choice of either TECO or QED. (That it is a strong factor

is indicated by the old test of "Consider eXPlaining it to a naive

secretary -- now consider explaining it to a corporation president.")

Perhaps even worse is the problem of "dialects". That is, features

vary across implementations, and settling on a common set of features

(or dialect) is likely to be a very hard task, for programmers tend to

get very fond of their familiar goodies. Besides, both TECO and QED

have their own strong (/fanatic) advocates, who's probably never be

willing to settle for the other one. Further, not every system has

both, and implementing the other is a fairly large job even if the NWG

could agree on which (and how mUCh).

At any rate, the difficulties seem overwhelming when it comes to

choosing a high-powered editor as the common editor. Therefore, I

tried to think of a nice low-powered editor, and it suddenly occurred

to me that I not only knew of one, but it was even fairly well

documented (!). The editor in question is known on Multics as "eds"

(the same member of the "ed" family of editors which started on

CTSS), a line-oriented context editor (no "regular expressions", but

also no line numbers). It is used as an extended example of

programming in the Multics environment in Chapter 4 of the Multics

Programmers' Manual, which gives an annotated PL/I listing of the

actual working program. It is simple to learn and should be quite

easy to implement, PL/I version serves as a detailed model with only

equivalent system calls and choice of language to worry about. I urge

its adoption as the common Network editor, to be known on all

participating Servers as "NETED" and/or "neted".

DOCUMENTATION

In view of the fact that if "eds"/NETED is adopted only perhaps a

dozen members of the NWG will actually have to implement one, it seems

wasteful to distributed some 30 pages of the MPM to everyone --

especially since most of the parties concerned have access to an MPM

already. (Another problem solved by not including it here is that of

whether I'd be violating copyright by doing so.) The exact reference

is pp. 24-54 of Chapter 4 of Part I of the Multics Programmer's

Manual.

NETED SPEC p. 3

Anybody who needs a copy can let me know. Although the emphasis in

the document is, naturally enough, on the Multics-specific aspects, I

believe that the listing is clear enough to serve as a model to

implementors without any great difficulty. If we do get to the

implementation stage, I'll be glad to try to explain any non-obvious

system calls, either individually or in a follow-up memo. But even

though we "initiate" where you "open", or we " call los_$read_ptr"

where you "IOT TTY" (or something), it shouldn't cause much trouble.

For that matter, some implementers might prefer to ignore the existing

program and simply work from the function specifications (below).

LIMITATIONS

It became abundantly clear during the course of the review of this

document by the User Interest Group that the limitations of NETED must

be acknowledged (even insisted upon) and explained here. In the first

place, it must be emphasized that it is not being proposed as "THE"

Network editor. Rather, it is an insistently simple-minded editor for

two major reasons: 1) it is meant for use mainly by non-professional

programmers, and 2) more important still, it is meant to be extremely

easy to implement. Therefore, it seems far more important to go with

the published program, with all its warts, than to specify the

addition of new, undebugged features. The idea is to make it

implementable in man-days by an average to average-plus programmer

instead of in man-weeks by a superstar programmer.

In the second place, the very act of adding new features is fraught

with peril. To take some examples from the comments I received during

the review phase: In the first draft, I inadvertently failed to

document the mechanism by which the ability to "go backwards" (i.e.,

to reverse the direction of the current-line pointer described below)

is actuated. Several reviewers argued strongly for the inclusion of

such a mechanism; but, not knowing it was already "in" the code I

argued -- successfully -- for leaving it out, on the grounds that we

should stick to what's in the existing code, which is known to work as

published. Even what to call such a new request would have been

debatable -- should it be "-" and become the only non-alphabetic name?

should it be "b" for "bottom"? should "n" (for "next") become "+"?

And so on. Although this particular issue turned out be a false

alarm, I've left it in to emphasize the sort of pitfalls we can get

into by haggling over particular "features". Another familiar feature

is some sort of "read" request so that the file name need not be

specified as an argument to the command. Then, of course, one would

also want a "create" or "make" request. And perhaps a file delete

request? It keeps going on and on. The point, I think, is that if we

allow ourselves to go into "tinker mode" we could spend as many years

striving to achieve consensus on what features to add as we've spent

on Telnet or FTP ... and still not please everyone. Therefore, I urge

the NWG to accept the contention that having a working model to use as

NETED SPEC p. 4

a pattern is more important than any particular additional features

(even though I myself find "=" for "what's the current line's

number?" annoying to live without).

RESPONSES

For the benefit of those who don't want to plow through the functional

spec, this seems to be a good spot to indicate what appropriate

responses to this proposal would be. Ideally, I'd like to hear from a

responsible system programmer at, say, TENEX, CCN, UCSD, UCSB,

AMES-67, one of the DEC 10/50 Hosts, and from any of the experimental

Servers who happen to be interested, that they think it's a fine idea

and why don't I log in next week to try their NETEDs. Next most

desirable would be agreement in principle followed by specific

inquiries about "eds". I would hope that haggling over specific

features wouldn't occur (as we're not trying to do a definitive

editor, just an easy, commonly implemented one based on an existing

implementation), but unfortunately I can't legislate such haggles out

of existence. At the very least, I'd hope to either hear or see

reasoned arguments why it's not worth doing. As usual, phone, mail

"mail" ("map.cn" in sndmsg, or "map cn" in "mail" on Multics) or RFC's

are the assumed media for responding.

USAGE

(The following is intended to serve double-duty, as both a functional

spec now and -- with the addition of some examples -- a "users'

manual" later. So if it seems to "tutorial", I'm sorry. And if it

doesn't seem tutorial enough -- assuming the addition of examples --

please let me know.)

As is typical of "context editors," the NETED command is used both for

creating new files and for altering already existing files -- where

"files" are named collections of character encoded data in the storage

hierarchy of a time-sharing system. Consequently, NETED operates in

two distinct "modes" -- called "input mode" and "edit mode".

When NETED is used to create a file (that is, when it is invoked from

command level with an argument which specifies the name of a file

which does not already exist in the user's "working Directory"), it is

automatically in input mode. It will announce this fact by outputting

a message along the lines of "File soandso not found. Input." Until

you take explicit action to leave input mode, everything you type will

go into the specified file. (Actually, it goes into a "working copy"

of the file, and into the real file only when you indicate a desire to

have that happen.) To leave input mode, type a line consisting of only

a period and the appropriate new-line character: ".<NL>", where <NL>

is whatever it takes to cause a Telnet New-Line to be generated from

your terminal

NETED SPEC p. 5

After leaving input mode, you are in edit mode. Here, you may issue

various "requests" which will allow you to alter the contents of the

(working) file, re-enter input mode if you wish, and eventually cause

the file to be stored. Note that edit mode is entered automatically

if the argument you supplied to NETED specified an existing file.

Regardless of how it was entered, being in edit mode is confirmed by

NETED's outputting a message of the form "Edit". Editing is performed

relative to (conceptual) pointer which specifies the current line, and

many requests pertain to either moving the pointer or changing the

contents of the current line. (When edit mode is entered from input

mode, the pointer is at the last line input; when entered from command

level, the pointer is at the "top" of the file.)

NETED's edit mode requests follow, in order intended to be helpful.

Two important reminders: the requests may only be issued from edit

mode, and each one "is a line" (i.e., terminates in a new line /

carriage return / linefeed is appropriate to the User Telnet being

employed). SYNTAX NOTE: If the request takes an argument, there must

be at least one space (blank) between request's name and the argument.

1. n m

For unsigned m, the n(ext) request causes the pointer to be moved

"down" m lines. If m is negative, the pointer is moved "up" m lines.

If m is not specified, the pointer is moved one line. If the end of

the file is reached, an "End of file reached by n m" message is output

by NETED; the pointer is left "after" the last line.

2. l string

The l(ocate) request causes the pointer to be moved to the net line

containing the character string "string" (which may contain blanks);

the line is output. If no match is found, a message of the form "End

of file reached by l string" will be output (and the pointer will

have returned to the top of the file). The search will not wrap

around the end of the file; however, if the string was above the

starting position of the pointer, a repetition of the locate request

will find it, in view of the fact that the pointer would have been

moved to the top of the file. To find any occurrence of the string --

rather than the next occurrence -- it is necessary to move the pointer

to the top of the file before doing the locate (see following

request).

3. t

Move the pointer to the top of the file.

NETED SPEC p. 6

4. b

Move the pointer to the bottom of the file and enter input mode.

5. "."

Leave the pointer where it is and enter input mode. (First new line

goes after current old line.)

6. i string

The i(nsert) request cause a line consisting of string (which will

probably contain blanks) to be inserted after the current line. The

pointer is moved to the new line. Edit mode is not left.

7. r string

The r(eplace) request causes a line consisting of string (probably

containing blanks) to replace the current line.

8. p m

The p(rint) request causes the current line and the succeeding m - i

lines to be output. If m is not specified, only the current line will

be output. End of file considerations are the same as with "n".

9. c /s1/s2/ m g

The c(hange) request is quite powerful, although perhaps a bit complex

to new users. In the line being pointed at, the string of characters

s1 is replaced by the string of characters s2. If s1 is void, s2 will

be inserted at the beginning of the line; if s2 is void, s1 will be

deleted from the line. Any character not appearing within either

character string may be used in place of the slash (/) as a delimiter.

If a number, m, is present, the request will affect m lines, starting

with the one being pointed at. All lines in which a change was made

are printed. The pointer is left at the last line scanned. If the

letter "g" is absent (after the final delimiter) only the first

occurrence of s1 within a line will be changed. If "g" (for "global")

is present, all occurrences of s1 within a line will be changed. (If

s1 is void, "g" has no effect.) NOTE WELL: blanks in both strings

are significant and must be counted exactly. End of file

considerations are the same as with "n".

10. d m

The d(elete) request causes m lines, including the current one, to be

deleted from the working copy of the file. If m is not specified, only

the current line is deleted. The pointer is left at a null line above

the first undeleted line. End of file considerations are the same as

with "n".

NETED p. 7

11. w

Write out the working copy into the storage hierarchy but remain in

NETED. (Useful for those who fear crashes and don't want to lose all

the work performed.)

12. save

Write out the working copy into the storage hierarchy and exit from

NETED.

Additional specs:

a. On Multics, type-ahead is permitted. This approach is recommended

for all versions of NETED, but is of course not required as various

Servers' NCP Implementations may prohibit it; however:

b. If an error is detected, the offending line is output, and pending

typeahead (if any) must be discarded (to guard against the possibility

of the pending request's being predicated on the success of erroneous

request).

c. The command is not reinvokable, in the sense that work is lost if

you "quit" out of it via the Telnet Interrupt Process command or its

equivalent; indeed, quitting out is the general method of negating

large amounts of incorrect work and retaining the original file

intact.

(When the time comes, I'll be glad to furnish examples for the users'

manual version; but for now, that's all there is.)

NOTE

It really does work, unsophisticated though it may be. I think that

it's sufficient to get new users going, and necessary to give them a

fighting chance. It would even be of utility within the NWG, for

those of us who don't like having to learn new editors all the time.

If anybody wants to try it, I'll make a version available to

"anonymous users" (see the Multics section in the Resource Notebook if

you don't already know how to get in our sampling account), under the

name "neted". (*) (If you do try it, please delete files when done

with them.)

______________

(*) Knowledgeable Multics users with their own accounts can instead

link to >udd>cn>map>neted. It is also there under the names "eds" if

you want to save typing a couple of characters.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有