What are the Inform7 programmers' statements about the approaches of natural language programming?

Hi!

EDIT:

The approaches about natural language programming are describe here…

**Approach #1: Brute Force Crowd Source. This is the method used in Amazon’s ALEXA, Apple’s SIRI, Wolfram’s ALPHA, Microsoft’s CORTANA, Google’s HOME, etc. In all these cases, a programmer imagines a question or command that a user will give the machine, and then he writes specific code to answer that specific question (“Alexa, what is the temperature outside?”) or carry out that particular command (“Alexa, turn on the living room lights”). Get enough imaginative programmers to write enough routines, et voila! Apparently Intelligent machines that actually exist and work and learn and grow, today. **

Approach #2: Dynamically-Generated-User-Tweaked code. This is essentially describe here…

**If the programmer is happy with the generated code, (s)he can approve of it and it needn’t be saved because it will generate correctly each time before compiling - a label would be attached to the high-level NLP program to tell the compiler that it compiles correctly. If the generated code isn’t right though (or isn’t complete), that label will not be attached to the NLP code and the support code will need to be saved as part of the program instead. Some of that support code could still be auto-generated initially, creating the loop and setting up the count, for example, while leaving the programmer to fill in the content of the loop manually. **

Approach #3 is the one where you build AGI first so that it can solve all the programming problems itself.

Maybe I will find other people who is trying to create the natural language programming or human-language-level programming.

David Cooper is interested in natural-language programming. The Graham Nelson, the creator of the Inform system (http://inform7.com/) is interested in natural-language programming. Pablo, who developed the SAL (the Spanish/English version of the Plain English Programming (https://forums.anandtech.com/threads/natural-language-programming-english-and-or-español.2559516/) is interested in natural-language programming. Generally speaking, maybe you’ll find that people “brought up” in the C-language tradition are less amenable to the idea of natural language programming than people “brought up” in the BASIC/COBOL/Pascal tradition.

Brute-force natural language “understanding” is simple and yet has given us interesting and useful Apparent Intelligences like Amazon’s ALEXA, Apple’s SIRI, Wolfram’s ALPHA, Microsoft’s CORTANA and Google’s HOME. And Plain English programming.

Plain English Programming is a very good starting point.

Maybe the Plain English Programming is a better route to follow than the neural network approach, and anyone who follows it will likely get to AGI sooner (https://forum.osdev.org/viewtopic.php?p=282479#p282479). The neural net approach will create imperfect AGI which may be highly irrational. We’ll never be able to trust it. We need to design AGI where we understand every little bit of functionality contained in it, and that’s what my approach will provide. A development of Plain English Programming would do the same because it programs everything directly without training any imperfect nets.

Plain English Programming may be able to become full NLP if enough people interact with it and extend the range of phrases it can handle, so while it may only handle a subset of English today, that is not an inherent restriction on it. It can keep improving as people write code to support more words. For that reason, it is arguably not a step towards NLP because it arguably already is NLP. We will only find out when enough code is written to handle all words an all possible uses of them. Maybe it will run into difficulties with ambiguities, but little additions to the program could fix that. AGI will study Plain English Programming in the future to see what it could have done if the world had got behind it in 2006.

What are the Inform7 programmers’ statements about the approaches I quoted above?

It’s difficult to tell what you’re quoting and what you’re asking about.

For what it’s worth, here are some general thoughts that you might apply to just about anything:

  • Embrace the good stuff.

  • Get rid of the stuff that’s too much trouble.

  • Make sure whatever you’re left with is still useful.

Regarding NLP, the good stuff (vs. “normal” languages) seems to be readability and ease of adoption. That is, the code makes sense at a glance after you write it, and people can pick the language up easily.

The stuff that’s too much trouble, in my opinion, is trying to allow phrasing things in any possible way, or attempting to disambiguate unclear instructions.

It can keep improving as people write code to support more words. For that reason, it is arguably not a step towards NLP because it arguably already is NLP. We will only find out when enough code is written to handle all words an all possible uses of them.

To be honest, this sounds like a pipe dream.

“Grab your umbrella if it’s raining” – what’s raining, the umbrella? What about “take,” “get,” “hold,” etc.? What about “If it’s raining, grab your umbrella,” or “when it’s raining,” or “in case of precipitation,” or “during a monsoon?”

Hand-coding every possible configuration of words that could convey a single idea seems impossible at worst, and way too much trouble at best.

So what you’re left with is a natural-language representation of a program, mostly. Is that still useful? Sure, as long as the readability and approach-ability make up for the more verbose program. But there are probably other syntactic rules that are not part of the normal natural language rules, for example:

do this 10 times:
say "hello"
say "world"

Does that print “hello” once and then “world” 10 times, or “hello world” 10 times? Surely we’ll end up with braces around the part to do 10 times, or tabbed over like in python, or whatever.

Personally, I feel like NLP is probably better suited to declarative languages because of that sort of issue. Looking at Inform7, for the most part the rule-based stuff feels more natural than the imperative parts. A language like that can work without a lot of the nesting and grouping that’s needed in imperative languages. That’s just my opinion, though. Maybe you can find clean a way to do it.

What exactly are you working on anyway?

1 Like

Hi!

The approaches about natural language programming are describe here…

**Approach #1: Brute Force Crowd Source. This is the method used in Amazon’s ALEXA, Apple’s SIRI, Wolfram’s ALPHA, Microsoft’s CORTANA, Google’s HOME, etc. In all these cases, a programmer imagines a question or command that a user will give the machine, and then he writes specific code to answer that specific question (“Alexa, what is the temperature outside?”) or carry out that particular command (“Alexa, turn on the living room lights”). Get enough imaginative programmers to write enough routines, et voila! Apparently Intelligent machines that actually exist and work and learn and grow, today. **

Approach #2: Dynamically-Generated-User-Tweaked code. This is essentially describe here…

**If the programmer is happy with the generated code, (s)he can approve of it and it needn’t be saved because it will generate correctly each time before compiling - a label would be attached to the high-level NLP program to tell the compiler that it compiles correctly. If the generated code isn’t right though (or isn’t complete), that label will not be attached to the NLP code and the support code will need to be saved as part of the program instead. Some of that support code could still be auto-generated initially, creating the loop and setting up the count, for example, while leaving the programmer to fill in the content of the loop manually. **

Approach #3 is the one where you build AGI first so that it can solve all the programming problems itself.

Maybe I will find other people who is trying to create the natural language programming or human-language-level programming.

David Cooper (https://forum.osdev.org/memberlist.php?mode=viewprofile&u=11159) is interested in natural-language programming. The Graham Nelson, the creator of the Inform system (http://inform7.com/) is interested in natural-language programming. Pablo, who developed the SAL (the Spanish/English version of the Plain English Programming (https://forums.anandtech.com/threads/natural-language-programming-english-and-or-español.2559516/ ) is interested in natural-language programming. Generally speaking, maybe you’ll find that people “brought up” in the C-language tradition are less amenable to the idea of natural language programming than people “brought up” in the BASIC/COBOL/Pascal tradition.

Brute-force natural language “understanding” is simple and yet has given us interesting and useful Apparent Intelligences like Amazon’s ALEXA, Apple’s SIRI, Wolfram’s ALPHA, Microsoft’s CORTANA and Google’s HOME. And Plain English programming.

Plain English Programming is a very good starting point.

Maybe the Plain English Programming is a better route to follow than the neural network approach, and anyone who follows it will likely get to AGI sooner (https://forum.osdev.org/viewtopic.php?p=282479#p282479 ). The neural net approach will create imperfect AGI which may be highly irrational. We’ll never be able to trust it. We need to design AGI where we understand every little bit of functionality contained in it, and that’s what my approach will provide. A development of Plain English Programming would do the same because it programs everything directly without training any imperfect nets.

Plain English Programming may be able to become full NLP if enough people interact with it and extend the range of phrases it can handle, so while it may only handle a subset of English today, that is not an inherent restriction on it. It can keep improving as people write code to support more words. For that reason, it is arguably not a step towards NLP because it arguably already is NLP. We will only find out when enough code is written to handle all words an all possible uses of them. Maybe it will run into difficulties with ambiguities, but little additions to the program could fix that. AGI will study Plain English Programming in the future to see what it could have done if the world had got behind it in 2006.

What are the Inform7 programmers’s statements about the approach#1, approach#2 and approach #3 I quoted above?

Please don’t post duplicate topics. I’ve merged this back together. You can edit the original post and then delete the subsequent one.

1 Like

@cpb and all,

I edited my first post on this topic: What are the Inform7 programmers' statements about the approaches of natural language programming?

What are you trying to do, exactly?

I’d still suggest you don’t need any of those approaches for a programming language, because the main benefits of natural language programming seem to be ease of adoption and readability, and trying to interpret arbitrary text as something meaningful doesn’t change either of those, and doesn’t seem to give enough of a benefit on its own to be worth the trouble of setting up, training, and trusting a neural network in #1 and #2, or of hard-coding zillions of possible phrasings in #3. And it may even be a drawback, since some ambiguous instruction could be silently interpreted differently than the programmer expects.

If you can represent the program in natural language, isn’t that good enough? Why is it important to try to interpret ambiguous or arbitrary language?

2 Likes

@cpb,

I tried to get your answer because I edited this topic by writing about Approach #1,
Approach #2 and Approach #3 of natural language programming.

@cpb,

Thanks for your responses!