Discussion on whether Rule Machine and WebCoRE are computer languages

Bruce hints at the answer in the second post I linked above:

I interpret this very roughly as: the database part contains parameters that determine which Groovy method within RM is executed and the data/devices it executes on.

It is still not clear when and how these snippets are generated and what exactly is stored and where. Do snippents prebuild (i.e. some sort of pre-compiled subroutines) and stored for every Groovy methods as a templates or they are generated from a template on a fly when rule is triggered? Etc, etc, ... etc. Anyway, it looks like there are too many layers of different software between the RM Instruction and actual executable Machine Code.

We had a run that used 20 boxes of cards that had to be sorted in alpha order. Because of limited disk space, all 20 boxes had to be loaded 20 times. We never made it through a 20 box run without a few getting crumpled in the card reader and having to be recreated on the key punch machine,

They only let us run this starting at Midnight on a Saturday night. It took about 8 hours to sort and print.

1 Like

Can all human languages now be considered β€œcomputer languages?” At least while interacting with a generative AI program?

4 Likes

It's just an intermediate format and/or storage mechanism between the human-generated instructions (the "language") and native machine code.

.net lanuages like C# get compiled into IL code, which is basically high level processor agnostic assembler instructions. That's stored in a file in the computer's file system. Those files eventually get compiled into machine code by the JIT compiler.

Old dBase languages also stored code in an intermediate format, also stored in flat files on the computer's file system. Those flat files were read by an interpreter at runtime which generated executable code.

There was a language called Visual Objects (which was an offshoot of dBase) which stored intermediate code in a repository (basically a custom database), rather than in flat files. Similar to RM.

The point really is that there may be one or more storage mechanisms and one or more intermediate formats between what you enter in a text editor (or select from a UI in the case of things like RM) and the resulting machine code that actually executes. RM is apparently storing what you enter in a database of some sort when you click "Done". When you export a rule to a file, that's probably the same as (or close to) what's stored in the database.

When a rule is "ran", the appropriate database records are retrieved and fed into an interpreter or a compiler or some program that directly or indirectly generates and runs machine code. It may generate groovy or java as an intermediate step and hand it off to that language's app for execution. There's many ways to skin the cat; only the HE guys know the exact mechanism.

1 Like

That is correct.
Thank you very much for your explanations even they maynot be 100% correct (and you clearly named a reason). My SW skils are very limited. Plus my EE brain looks very differently on how things are working. Long time ago I started programming with Assembler Instructions. It was very clear to understand what CPU is doing. These days there are well too many layers of SW before actual Machne Code is created and runs. The result is - my EE brain lost a track but still tryng hard to understand waht is going on.

I think calling RM a "programming language" is a stretch.

I don't know the inner workings of RM, but my guess is that it's creating and storing input data for an application program(s) running in the HE environment (which is also an application program).

Assume I have a background application program running in a native Linux environment that will send a user-specified SMS message to a user-specified phone number at a user-specified time each day. Input to the program is a string containing the phone number, time of day to send the message, and the message text. Is the input string/format a programming language? If I write a simple application program that provides a screen to enter the user data in a more "human understandable" form, (e.g., data entry fields with headings, labels, help, etc.), create the string, and put it somewhere for the background application program to consume, is the simple application program a "programming language"?

As good as RM is, isn't it just an application program that makes it much easier to create input data for HE? Isn't it really an application (HE) user interface?

2 Likes

With features like device turns on and stays on for x and built in delays turn off device delay x time, there is much more going on than a programming language would bother with because that is the programmers job. To me it is an application you configure guided by the application with expressions which appear like coding. Sort of. Open a user driver or app (groovy) and compare the syntax.

So, if I say that I wrote a webcore piston, does that mean that I wrote a program? Wrote an app? Built a user interface? In a very simplistic sense, it feels the same as when I wrote programs back in the Basic, Fortran, Pascal and C days.

But isn't a text editor just an application program that makes it much easier to create input data for ...?

Of course, there are additional steps taken after the data is entered into a text editor for it to become something executable, but that's also true with RM.

Strictly speaking, I think RM qualifies as a programming language, even though it was not created as such. RM has a defined set of commands and expressions you can choose from, even if they are not formally defined as would be in a "normal" programming language. Nevertheless, you could develop a formal language spec from RM if you were sufficiently bored and had nothing else to do.

I think I'm a programming language as well.
Whatever my wife tells me to do, I do it!!!!!!!!!!!!!

2 Likes

A program is a sequence of instructions that is executed by a CPU chip.

An "app" generally means a program that has a specific purpose, like a word processor or spreadsheet, etc., but the term has devolved to mean pretty much anything nowadays, at least when it comes to cell phones.

Used to be, people talked about applications vs utilities or other broad classifications. They're all programs; apps, utilities, drivers, services, etc. etc.

No, You are a CPU executing commands from your wife.

1 Like

That's commonly called an interrupt handler.

1 Like

No, this is a SW which executes by CPU but immedietly on a request.

So I write programs AND execute programs when called upon...

1 Like

Yes, and generally it's an interruption of whatever the husband was doing at the time. If it's not handled immediately (and correctly), a fatal exception usually is the result.

2 Likes

I'm not sure what you are suggesting.

A text editor is an application program that can be used to write programs in a programming language, although I assume most programmers use an IDE that is tailored to the programming language being used. I used Eclipse (with the appropriate plug-ins) to write programs in C. That doesn't make Eclipse a programming language.

Every program I've written (I was a software developer for over 40 years) had a defined formal set of inputs (commands/data) and outputs. I never considered any of it a programming language.

But, you aren't calling the text editor the programming language. Notepad isn't C++, Java, Groovy, Basic, or any of those.

Also, programming languages are usually (somewhat) platform agnostic. You could copy paste text from pretty much any document editor (or in some cases, just change the file extension from .txt to an executable) and have it compiled and run. Write a webcore piston or RM rule in a text editor and try to compile it anywhere.

RM and Webcore are more like those old Madlibs where programming lanuages are more like free form essays. The structure is set already. You are just adding the variable portions as opposed to actually creating programs.

Edited to add: English, French, and Spanish are languages. If you have an app that allows you to plug and play phrases to put them together into a coherent paragraph suitable for publishing, those apps would not themselves be languages. They would be helper apps that follow the rules of an actual language.

RM, Webcore, and some of the fancier block program helpers with visual GUI are just that. They are not languages in and of themselves because they are constrained by the actual language they are working with. They have plug and play phrases (more or less) that you fill in the blanks of the variables (like the former analagy to MadLibs). Granted, some of those inputs are somewhat complicated. But, they are not an actual language.... Just my humble opinion.

1 Like