archives

Looking for a language like...

Prior art:

A few years ago I programmed on an HP Non-Stop that had a script metalanguage named TACL. It was interesting because its ROUTINES can get arguments, rather than the routine being passed arguments. Using #ARGUMENT it could get character-by-character all the characters following the called until end of the ROUTINE call scope, i.e.:

    [<RoutineName> <argument characters>]

For example:

    [MyPseudoCommentRoutine takes a comment as argument characters, counts consonants and vowels, but returns nothing.]

Getting arguments is an unusual feature of languages in my experience. A ROUTINE can parse its character string argument any way the programmer wants. Technically that string is passed as an argument, and the TACL interpreter probably does exactly that. I am not privy to TACL source code. This idea sparked my imagination. I thought about how TACL ROUTINES actually work, and I thought of an alternative that seems more extensible.

*Hope I can explain this well enough. I'm not good with words, and I'm dyslexic. I wouldn't last a nanosecond as a proofreader.*

My idea:

*Like most bright ideas, 99.999% of the time it has been documented.*

Another language may implement a similar Routine but not require brackets that surround the call and its arguments. This Routine is passed a return address argument from caller to Routine--nothing else. Using the return address this Routine can scan through a buffer full of source program to finds its arguments. Of course, arguments are typically near the location of a Routine call.

The reason for eliminating syntax that brackets a Routine call is to allow Routine definitions to be the universal method of defining operators, methods, functions, etc.

Moreover, since defining a Routine does not need a prototype to describe its argument list, only one define syntax is required, such as the following:

Define "symbol-name" = "symbol-definition".

The reason this language interests me is that its parser is distributed among all its Routines. Once a Routine is called, it can parse arguments however the programmer desires. Of course, a parsing free-for-all is probably a bad idea, and I'd expect a library parser that most people use. The library could provide call prototypes. Except, a Routine with an argument syntax that is not context free may be too complicated to make a call prototype, for example if keystrokes affect argument syntax.

Conclusion:

I've thought a lot about the features of a language based on this kind of Routine, and could write more. But, I'm not a good writer, and I think "My idea" is the kernel from which many other features of the language flow logically.

Of course, my logic is not infallible. However, I have spent years doing mind experiments about this language. I am convinced this language can exist, and that it will have features other languages I have used do not have. On the other hand, I am not a language pro, and haven't designed a complete language in my head, maybe half.

I have searched the Internet for a language as described, read a lot of reference manuals, but cannot find one example of it. I'd like to download it and try it out. If such a language does not exist, then why?

I am not an expert, and fear that I am doing a very poor job presenting my idea. Thus, I fear no one understands what I am trying to say. Especially if I, an average joe, has hit the 0.001% probability jackpot and had a novel idea. Sooner or later some joe will do it.

My Bio:

I am not a good communicator. Mom said I didn't learn to talk until I was 3. Learning to speak late in childhood is characteristic of autistics. I've not been diagnosed autistic, but in 1947, I don't know if medicine knew about autism.

My thought processes are clear. I've made a living for 35+ years and retired. I am happily married. I don't owe anything to anybody, and have not been in jail. I graduated from the University of Texas at Austin, Texas with a Bachelors in Electrical Engineering specializing in computer engineering. There was no computer science undergraduate program at the school at that time.

I worked as a programmer using almost two dozen languages at the University and professionally, about half of them assembler. I worked on mainframes, a supercomputer, minis, and micros. I think Linux, Lisp and Emacs are awesome.

Please ask questions if my writing is unclear.