I remember when Prolog was going to replace all other programming languages.There was an endeavor in the 70s and later to develop so-called 4th and later 5th generation languages, this was a bit of a fad with lots of hype, but anyone older than 50 might well recall this.
There are a few people that still use the language mainly in spaced based systems. Stack based, RPN styled, reentrant logic is not the easiest thing to GROK in programming even if the key words are english.I tried using 4th. in the early 80s. It was clumsy and not very intuitive.
The answer to that question was demonstrated to me years ago during a short course on communication:#1 Would the lines written in plain English amount to source code and that is adequate? Why not?
I used to conduct a similar exercise with my Civil Air Patrol cadets. I bought several small Lego kits -- two each. I would then have two people sit back to back. The first person got the full kit, including directions. The other person just got a bag with the parts in it. The first person had to tell the second person how to assemble the kit. The second person got to ask questions. Everyone else got to to stand around and observe what both of them were doing.The answer to that question was demonstrated to me years ago during a short course on communication:
I was given a sheet of paper with a very simple diagram drawn on it. I was asked to explain it in detail so the rest of the class could draw it, without seeing the original. They were not allowed to ask questions. Part of my job at the time was to write specifications for complex systems, so I can be very precise when explaining things. I described the position, size, shape and orientation of each component in the diagram. The result was not what I expected. Several people drew the diagram fairly accurately. Not one was perfect and some of the results were very far from perfect.
From that, I learned that even the most precise descriptions made in English contain ambiguities and are open to misinterpretation.
While what you suggest with the use of AI is certainly possible, I think you are missing the point.Hi. What are my thoughts. A thread like this could go on and on, because there is potentially so much to enquire about. But, let me just say this as a near total newbie to PC's: It seems a matter of logic that if you attempted to use natural, conversational English to create an executable program, apparantly there would need to be a significant embedded artificial intelligence in the machine to allow the machine (machine that executes instructions) to act with precision and accuracy, indeed without failing because of ambiguity.
But, in any event, my understanding is, if you did write for a machine that could handle natural conversational English, (something that you would probably never do?) it would be called the Source Code. I think I'm right in that understanding.
Also, I'm thinking that what the compiler does with the source code that you write (such as C) manipules this source code such that it becomes "compatible" with a machine built for executing instructions. I have to read up on what that "compatible" is. Any possible hints on what would amount to being compatible? Obviously, it would be based on the workings of a machine built for executing instructions. (Somewhat going off topic of the title thread now - oops. Maybe I need a new thread)

Very debatable. While it would mitigate one particular type of vulnerability, would it really actually result in better security? Look at the whole sea of vulnerabilities that have nothing to do with downloading executable binaries, including plenty that run just fine as some type of p-code on some virtual machine interpreter.If remote downloading of executable binaries were prohibited, we would be able to build better secure computer systems.
In my ignorance, not having formal education on this subject, I always believed that the base is always the above. Like bank notes or the colors of traffic lights should be strictly the same for everyone using them. After all, not all the words in English (or any other language for the case) mean the same to all.One goal of any programming language is to be able to write code that is absolutely unambiguous. This is why programming language syntax is rigidly defined.
Security is like secrets. It's possible to have it with three people, if two of them are dead.There is one way to eliminate one source of cyber threats - disconnect your computers and networks from the internet. Of course, one would still have to vet every data media being inserted into the system.
The next step would be to vet every code that is downloaded or has access to the system. Having all remotes access in a readable script allows for better scrutiny of potentially malicious code.
The trick is to write code that fails predictably and gracefully. Once the code interfaces with the real world, absolutely unambiguous is a pipedream because we leave the world of mathematical determinism and enter the natural world of physics rules set by natural chaos and uncertainty that can't (by physics or expenses) be totally computed in any language.In my ignorance, not having formal education on this subject, I always believed that the base is always the above. Like bank notes or the colors of traffic lights should be strictly the same for everyone using them. After all, not all the words in English (or any other language for the case) mean the same to all.
You raise some interesting points. But I must take issue with "Once the code interfaces with the real world" because software never interfaces with the real world. In an MCU surely the software interfaces with very formally defined peripheral registers, no ambiguity there as I'm sure you'll agree.The trick is to write code that fails predictably and gracefully. Once the code interfaces with the real world, absolutely unambiguous is a pipedream because we leave the world of mathematical determinism and enter the natural world of physics rules set by natural chaos and uncertainty that can't (by physics or expenses) be totally computed in any language.
No, I don't agree. As usual, it has some very loose and shallow assumptions about embedded systems and hardware and what it takes to make robust systems instead of just correct systems.You raise some interesting points. But I must take issue with "Once the code interfaces with the real world" because software never interfaces with the real world. In an MCU surely the software interfaces with very formally defined peripheral registers, no ambiguity there as I'm sure you'll agree.
Many times the source code guy writes (there are compiler design languages Yacc) the first compiler for his new language and works to make it usable to at least one other person.OK, I thought I'd better read up a bit. From Wikipedia on compiling: " In computing, a compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language). The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a low-level programming language (e.g. assembly language, object code, or machine code) to create an executable program. " OK, so, I never realised that a compiler was a "computer program,". Don't know why. So, it's LILO (Language In Language Out". He he. So, have we a situation whereby the writer of the compiler code says to the source code guy, without me your going no-where with your source code? Or does the source code guy say to the compiler guy that it's the other way around? Not sure if my question is valid.
It's a truly fascinating problem space for sure. There are no hard and fast rules, personally I think we should think about a new language in a holistic way, how do we want to express various ideas, how might we extend the language in the future, what kinds of abstractions are the most important, are there alternative way to express things? which ways are better and why.OK, I thought I'd better read up a bit. From Wikipedia on compiling: " In computing, a compiler is a computer program that translates computer code written in one programming language (the source language) into another language (the target language). The name "compiler" is primarily used for programs that translate source code from a high-level programming language to a low-level programming language (e.g. assembly language, object code, or machine code) to create an executable program. " OK, so, I never realised that a compiler was a "computer program,". Don't know why. So, it's LILO (Language In Language Out". He he. So, have we a situation whereby the writer of the compiler code says to the source code guy, without me your going no-where with your source code? Or does the source code guy say to the compiler guy that it's the other way around? Not sure if my question is valid. Probably not.