textfiles/groups/PPH/ultimate.tsg

70 lines
3.6 KiB
Plaintext

The Ultimate Computer Program
By the Silver Ghost
"Hello there...you wanted to see me, sir?"
"Yes. Have a seat."
"Thank you. Is this about some computer program you wanted?"
"Yes. As you know, I'm a programmer, like yourself. But I can't find
exactly what I want in a language. Do you understand?"
"I think so...you're looking for something powerful but easy to learn.
Wouldn't mind that myself."
"No, not just powerful and easy to learn. I want more than that."
"Mm-hm. What exactly did you have in mind, sir?"
"I was thinking of a kind of meta-language. Something like FORTH, only
better. Where you could actually design your own language."
"Isn't that a little redundant?"
"No. What I want is a program that--"
"--that writes programs. Those have been tried, but--"
"Don't interrupt me! Where was I...oh yes, not a program that writes other
programs. That's useless. You can't ever get what you want."
"If I may comment...the idea of such a program is to eliminate the menial
programming problems, the drudgery that isn't worth typing in."
"Exactly. But that drudgery is actually a by-product of the language, isn't
it?"
"I don't understand."
"Let's take BASIC as an example. You want to transcribe a string backwards.
Don't ask why. You just do. Anyway, you say Y$="":FOR X=LEN(X$) TO 1 STEP -1:
Y$=Y$+MID$(X$,X,1):NEXT. Right?
"Well, normally I like to have it written out, but--"
"Right. The point is, that is worthless typing that in. What I want is a
language that I can say 'BACKWARDS X$' and have it done."
"That's more than easy, in a lot of languages. FORTH, f'r instance."
"But you don't understand. This language that I will program in will be the
output of another, higher program. I want to be able to form-fit the language
to my needs."
"Don't tell me. You want me to write this program that will write this
language."
"Exactly."
"Why can't I just write the language?"
"Because I may want something different something else! I'll be doing
something totally different next year. I want a totally different language to
do it with."
"This program that I'll be writing...what questions should it ask?"
"Beg your pardon?"
"Well, you say it should allow you to get a different language each time
it's run. It has to get input from you. It has to ask you questions, sir.
What questions should it ask?"
"Good question. That's a problem, isn't it? Hm."
"May I suggest something? Another program, to write the first one. A
'language-writing program'-writing program, if you will. It takes inputs from
you, and from those inputs constructs a program whose only task is to ask you
the proper questions, and then write the language."
"Good idea! I guess the hard part is figuring out the proper questions,
isn't it?"
"Let me describe to you the sort of software you want, then. You want
something flexible--very flexible. It has to be able to create not just a
program, but a language in which a program is written. Not only that, but
it must exceed those boundaries--it must be able to write a program that will
do anything, including the task 'be able to write a program that will do
anything.' Correct?"
"Yes! That is EXACTLY what I had in mind!"
"I can do it."
"You can?"
"It's right in front of your nose. It's called a 'computer,' and the
program that you're looking for is called 'assembly language.' I think that
you'll find that you can write just about any program in assembly language...
even the meta-language you're looking for. And it isn't even that hard to
learn. Good day, sir."