Natural Language Programming

Page 4 - Seeking answers? Join the AnandTech community: where nearly half-a-million members share solutions and discuss the latest tech.

Natural Language Programming: Good Idea?

  • Yes

  • Maybe

  • No


Results are only viewable after voting.
Status
Not open for further replies.

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
The source being available doesn't make it Free Software. I saw something in a PDF about "reasonable licensing terms". License it with the GPL or BSD, and then I'll believe it's Free.
The "reasonable licensing terms" are for the protection of those who want to create non-English language versions of the product (Plain Spanish, Plain French, etc) for sale to those language communities. The English version is now free.

@Markbnj, the compiler's source is in the language it compiles. It compiles itself - which is not entirely remarkable. The remarkable thing is that it is the only compiler which compiles the language it's compiled in.
I know this remark was directed to Mark, but what do you mean by "the only compiler which compiles the language it's compiled in"?
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
How is that different than compiling GCC using GCC?
I don't understand that either. Seems the same to me.

This guy didn't just write a couple of text files, run them and then all of the sudden have a 'compiler'. He had to start somewhere, using someone else's tools to build the first version of his compiler.
Right. Many years ago we wrote a compiler for a Pascal-like language called AIQ in an early version of Delphi. Then we used AIQ to write a bare-bones version of Plain English (with just enough editor and compiler so we could stop working in AIQ and work exclusively in Plain English). Every version since then has been developed using only the previous version of Plain English.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
It's not remarkable that the compiler is bootstrapped. There have to be 25 or 30 languages, including all the major ones, for which the original compiler was bootstrapped.
But we think this is an important point. When someone says to me, "Language X is the best language ever -- but I wrote the compiler in Y", it makes me think that he really prefers language Y when he wants to get some work done. Which is why we thought it important to write Plain English in Plain English. And why we think a future HAL 9000, that communicates in English, should also be written in English -- the HAL shouldn't have to learn C++ to make little baby HALs; he should be able to do it in his native tongue.

Any language that can't recompile itself, in our way of thinking, isn't a real language. It's a mule; it's sterile.

And by the way, Mark, thanks for the (unintended) compliment. In at least one way, our language (out of hundreds) is right up there with the top 25 or 30 "major ones" that are able to pull themselves up by their own bootstraps! :)
 

MagnusTheBrewer

IN MEMORIAM
Jun 19, 2004
24,135
1,594
126
I finally remembered why this argument seemed so familiar. Back in 1967-68 I play tested a logic game with some students at the University of Michigan called WFF - N - Proof. It's based on "Well Formed Formulas " and each legitimate WFF can be constructed and deconstructed following specific rules and is an excellent tool for learning how computers process and compile code (notice I didn't use "learn "). Now, there are many ways to reach the same result but, each "Proof " is dependent on the logic of the particular formula. In other words, you can not use the same proof to show 2+2=4 and 2^2=4, they are separate Formulas eve though the result is the same.

This somewhat lengthy preamble brings me to a popular pastime then which was applying the game rules to political speeches, notably LBJ 's. They most often came up semantically null but, pointed out a huge Flaw in dealing with the English language using logical constructs. They do not handle quantifiers or logical connectors without being specifically defined. In other words, it's easy to say, I want to go to the store. However, it requires a specific definition to say, I want to go to the store but, my mother won't let me. Now take the short leap back to my number equation example and think of the number of English phrases resulting in me not going to the store.

I've changed my mind and recommend trying the OP 's software as a case study in why this approach will not work.

PS. I used "selling snake oil " as in trying to convince or promote his idea. I also recommend checking out WFF - n - Proof if you haven't heard of it before.
 

Squeetard

Senior member
Nov 13, 2004
815
7
76
I want to go to the store but, my mother won't let me.

"I want to go to the store but, I may go to the park instead. Weather notwithstanding."

There's the crux of it right there. I'd be curious how the compiler handles the word "but" or other conjunctions like "notwithstanding".

The OP is trying to build an AI with a not in time compiler, not a natural program language. There is no such thing as a natural programming language. Everything has to have an exact meaning in order to get the desired result. So now you are back to syntax and learning what the compiler needs to hear. And saying it in a specific way.

"I want to go to the store at 7350 Jones lane, the one that sells coffee at $3.79 a pound, but my mother won't let me, so I can't go to the store I just mentioned. I will go to the Park instead if the temperature at the park is more than 70 degrees farenheit".


You can build a Natural program language easily, but it will never do anything more than add some numbers or some of the most basic things we think of when we think of computing. And that is what the OP has.
 

Ken g6

Programming Moderator, Elite Member
Moderator
Dec 11, 1999
16,250
3,844
75
The "reasonable licensing terms" are for the protection of those who want to create non-English language versions of the product (Plain Spanish, Plain French, etc) for sale to those language communities. The English version is now free.
Free as in freeware, not Free as in speech, you mean. If the product were Free as in speech, although people could sell the product, it wouldn't be "protected" - other people could compile the software themselves too and distribute it freely and Freely.

I know this remark was directed to Mark, but what do you mean by "the only compiler which compiles the language it's compiled in"?
Take GCC - please! (It's Free.) GCC can compile itself. But GCC can also be compiled by the Intel C++ compiler, the Microsoft C++ compiler, and others. There is no other compiler which compiles your compiler - and evidently no Free one at all - because your compiler is written in the language it compiles, and only your compiler compiles that language.

I thought about fixing that, but it's also an example of the ambiguity of the English language.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
I finally remembered why this argument seemed so familiar. Back in 1967-68 I play tested a logic game with some students at the University of Michigan called WFF - N - Proof.... It's easy to say, I want to go to the store. However, it requires a specific definition to say, I want to go to the store but, my mother won't let me. Now take the short leap back to my number equation example and think of the number of English phrases resulting in me not going to the store.
If I'm not mistaken, you're harking back to my challenge to come up with more than ten (reasonable) ways to say "I'm going to the store". And it appears your argument here is that there are an infinite number of ways to say such a thing, once you're allowed to tack a conditional onto the statement. And that our compiler would thus need an infinite number of routines to be able to handle all those sentences.

If what you say is true, we should also need separate routines to handle, for example, each of following sentences:

If the mouse's left button is down, beep.
If the escape key is up, beep.


Yet we don't. Both statements are reduced to the form:

IF decider-call , routine-call .

and the "decider-call" in both cases, after analysis, turns out to be the same. In other words, the compiler recognizes that the two very different natural language expressions -- "If the mouse's left button is down" and "If the escape key is up" -- can be handled by one and the same routine.

I've changed my mind and recommend trying the OP 's software as a case study in why this approach will not work.
Or why it just might! Either way, they'll definitely see how our approach works well enough for the coding of a complete and functional development system including a unique desktop, a simplified file manager, an elegant text editor, a handy hexadecimal dumper, a native-code-generating compiler, and a wysiwyg page layout facility, that fits in less than a megabyte and can recompile itself in less than 3 seconds on a puny machine. One wouldn't think all that possible if the theory was that far into crazy land.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
"I want to go to the store but, I may go to the park instead. Weather notwithstanding." There's the crux of it right there.
It seems you guys have lost sight of what we were, and are, trying to accomplish with our system. The original goals are at the top of the thread; specifically, we wanted to know:

1. If it's easier (at least for us) to program in English;
2. If we could parse English "sloppily" and still get precise and reliable results; and
3. If we could write a non-trivial compiler/development system in English.

Those questions have been answered in the affirmative, to our satisfaction, in the working prototype (which is readily available to all interested parties; just write me for the link: gerry.rzeppa@pobox.com).

Our current goal, as stated later in this thread, is the development of an apparently intelligent machine, using the following tangible and measurable definitions:

1. If it does what we tell it to do, it understands;
2. If it can be taught new things, by whatever means, it learns; and
3. If it can tell us what it has done, it remembers.

Like our compiler and development system, it's a purely practical project.

The OP is trying to build an AI with a not in time compiler, not a natural program language. There is no such thing as a natural programming language. Everything has to have an exact meaning in order to get the desired result. So now you are back to syntax and learning what the compiler needs to hear. And saying it in a specific way.
Actually, the idea is to teach the computer enough about what people typically say so that it will appear to understand them when they express themselves as they naturally do. That's why we use the terms apparent intelligence and natural language: it's a convincing simulation of intelligence that, under the covers, is nothing of the sort -- but that, on the surface, responds as might be expected to millions of very natural language requests that actual people might actually put to it. (Apple's SIRI is a similar project, with the disadvantage of not being English through and through!)

Keep in mind that the set of all sentences that someone might actually say is exponentially smaller than the set of all sentences that someone could (but in all probability won't) say. And that a programmer working in a particular application area will have even fewer things to say (and fewer things to say them about). We don't need to handle the general case to build an "apparently intelligent" machine; only the (significantly smaller) actual case.

You can build a Natural program language easily, but it will never do anything more than add some numbers or some of the most basic things we think of when we think of computing. And that is what the OP has.
So when I say to my apparently intelligent PAL, "Hey Pal, open the garage door and turn on the light in the back yard," and it does, what is that? Or when I say, "Hey Pal, remind me next Tuesday at breakfast that I have a dentist appointment at two," and he does, what is that? I say that's the same kind of thing I'd say to my wife or my kid, and in the very same words I'd use with them. With the same effective results. Apparent intelligence.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
Free as in freeware, not Free as in speech, you mean.
Okay, free as in freeware.

Take GCC - please! (It's Free.) GCC can compile itself. But GCC can also be compiled by the Intel C++ compiler, the Microsoft C++ compiler, and others. There is no other compiler which compiles your compiler - and evidently no Free one at all - because your compiler is written in the language it compiles, and only your compiler compiles that language.
Got it. Thanks. I think there's a difference here, however. Artificial programming languages begin with a precise definition of the language's syntax and semantics, and compilers are written to conform to that definition. Our compiler compiles a (useful) subset of a language that defies precise definition, in both syntax and semantics. Ask Noam Chomsky. And if someone else were to develop a similar compiler using different techniques, I suspect that it would succeed in understanding a somewhat different subset of the language. So I'm not sure there will ever be the analogous case with "natural language compilers" as there is with, say, "C" compilers.

I thought about fixing that, but it's also an example of the ambiguity of the English language.
I think it's more precise to say that a person can speak (or write) English ambiguously, or he can speak (or write) English precisely. It is the speaker (or writer) who is ambigous; the language itself, at most, allows ambiguity; it is not, in itself, ambiguous. The 25,000 lines of Plain English code in our development system are obviously not ambiguous (or are at least un-ambiguous enough) since the thing actually works.

English isn't as bad a tool as some of you guys seem to think it is. I've written a compiler in English, and I've written responses to you guys in English. Can anyone here say the same about their favorite programming language?
 

douglasb

Diamond Member
Apr 11, 2005
3,163
0
76
You keep repeating the same statements ad nauseum. "Our compiler compiles itself in 3 seconds...blah blah blah....desktop, a simplified file manager...blah blah...wysiwyg page layout..."

What you've written is essentially an expanded version of BASIC - an extremely verbose, procedural language that no real programmer would ever want to use. Sure, it's an interesting proof of concept, but that's as far as it goes. Perhaps you should stop pushing it so hard and reflect on why you've had this for 7 years, yet it has gone nowhere. Have you entertained the thought that this simply isn't a good idea?
 

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
Or why it just might! Either way, they'll definitely see how our approach works well enough for the coding of a complete and functional development system including a unique desktop, a simplified file manager, an elegant text editor, a handy hexadecimal dumper, a native-code-generating compiler, and a wysiwyg page layout facility, that fits in less than a megabyte and can recompile itself in less than 3 seconds on a puny machine. One wouldn't think all that possible if the theory was that far into crazy land.

Of course it's possible. I could invent a new syntax based entirely on the wingdings font, and express those same ideas and achieve those same goals. You've claimed to achieve the breakthrough of "natural language" programming, however there is nothing "natural" about parameterized expressions and callable routines. People do not naturally speak or think in those terms. Programmers and mathematicians do. So once again, you've simply invented a new, more verbose, more ambiguous syntax.

Edit: I shouldn't really say "simply" because inventing a programming language is not something everyone can do. It's something of an achievement in its own right, so grats. But you have not fundamentally changed the way we instruct the computer to do things.
 
Last edited:

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
You keep repeating the same statements ad nauseum. "Our compiler compiles itself in 3 seconds...blah blah blah....desktop, a simplified file manager...blah blah...wysiwyg page layout..."
Yes, because it seems you need to be reminded about the claims we are actually making.

What you've written is essentially an expanded version of BASIC - an extremely verbose, procedural language that no real programmer would ever want to use.
But we're "real" programmers. Both my son and I have made our livings, for years, in the computer industry. And we want to (and do) use Plain English to write programs. Lots of 'em. When, for example, I needed to generate a list of all the syllables actually used in the English language for our "teach your kid to read in 20 minutes a day" course (www.rhymingreader.com), I used Plain English to do it. In fact, the entire course was written (and drawn!) using our wysiwyg page layout facility. And the published PDFs were generated by the same. The various statistics comparing our course with competing approaches (who covers which words, etc) were also tabulated using Plain English programs. If that's not a real-world application of the thing, I don't know what is.

Sure, it's an interesting proof of concept, but that's as far as it goes.
But that's pretty far, don't you think? We don't have the resources of NASA, you know; we're more like the Wright Brothers.

Perhaps you should stop pushing it so hard and reflect on why you've had this for 7 years, yet it has gone nowhere.
I figure it's timing. Really. I wrote a relational database design course back in the 1980's (www.era-sql.com) and made millions licensing it to Oracle, Microsoft, etc -- a very popular product. I have since written several demonstrably better courses and haven't been able to sell more than a handful. What the difference? Timing. You can only sell mousetraps to people who are having mouse problems -- or who think they are!

Have you entertained the thought that this simply isn't a good idea?
No, because I know from direct experience that isn't so. When, for example, I wanted to write a program to teach my youngest to type, I immediately chose Plain English as the language to write it in; it was (by far) the fastest, simplest, easiest way to get exactly what I wanted on the screen. I suspect if you had a similar need -- and were as experienced in Plain English programming as I am -- you just might make the same choice. See? Timing. You can't see the benefits from where you're standing because you don't have the experience I've had with the the thing, and you don't have an immediate need for it.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
Of course it's possible. I could invent a new syntax based entirely on the wingdings font, and express those same ideas and achieve those same goals.
But you don't, because you don't think a project like that would be worth the effort. We thought Plain English was -- and still do. I use it every time I write a new program.

You've claimed to achieve the breakthrough of "natural language" programming, however there is nothing "natural" about parameterized expressions and callable routines.
What we've discovered -- and demonstrated with a working prototype -- is that it is easier (at least for us) to program in Englsih-language sentences, and that a relatively "sloppy" parsing algorithm can yield predictable and reliable results, and that a non-trivial integrated development system can indeed be conveniently and efficiently written in such a high level language. I call those three things "breakthroughs" only in the sense of "breaking through" people's preconceived notions that those statements are categorically false.

People do not naturally speak or think in those terms. Programmers and mathematicians do.
On the contrary. Here's a thought: "I want to add a big number to a smaller number." Here are some ways you could say that in Plain English:

Add the big number to the other number.
Add the big number to the small number.
Add the big to the small.


A typical programmer or mathematician, on the other hand, would first assign artificial names to the numbers (say, x and y) and would then express the thought in in a specialized syntax (like "y:=x+y" or "y+=x").

Which versions look more like the original thought? more natural for a non-programmer or mathematician?

So once again, you've simply invented a new, more verbose, more ambiguous syntax. Edit: I shouldn't really say "simply" because inventing a programming language is not something everyone can do. It's something of an achievement in its own right, so grats. But you have not fundamentally changed the way we instruct the computer to do things.
We never claimed to have "fundamentally changed the way we instruct the computer to do things." We just made it possible to command the computer in sentences that are written and punctuated and read like other English-language sentences.
 

DaveSimmons

Elite Member
Aug 12, 2001
40,730
670
126
Add the big number to the other number.
Add the big number to the small number.
Add the big to the small.


A typical programmer or mathematician, on the other hand, would first assign artificial names to the numbers (say, x and y) and would then express the thought in in a specialized syntax (like "y:=x+y" or "y+=x").

Which versions look more like the original thought? more natural for a non-programmer or mathematician?

To me that's a bad example, where the "big" number and "small" number is much less clear than x and y. What if you don't know which number is embiggened ahead of time? What if they are roughly the same size?

If you teach someone to write code that depends on a number being "bigger" or "smaller" than another number, I suspect we can come up with cases where later uses of the numbers or addition result produces later results other than what's intended. I'm too lazy to prove that :)
 

smackababy

Lifer
Oct 30, 2008
27,024
79
86
To me that's a bad example, where the "big" number and "small" number is much less clear than x and y. What if you don't know which number is embiggened ahead of time? What if they are roughly the same size?

If you teach someone to write code that depends on a number being "bigger" or "smaller" than another number, I suspect we can come up with cases where later uses of the numbers or addition result produces later results other than what's intended. I'm too lazy to prove that :)

Even more so that his example relied on the problem of identifying which number was x and y, when in real world problems you have to identify which number is what and compute accordingly.

OP, please show me how natural language is easier using a complex problem. Show me how it is easier than say finding initial velocity. Vi = Vf - (a x t) is pretty simply. You will have to identify, regardless of language uses, which numbers are final velocity, acceleration, and time.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
To me that's a bad example... "big" number and "small" number...
Fair enough. Try this. I want to find the width of a box on the screen:

Put the box's right minus the box's left into the width.

Versus something like: "width:=box.right-box.left;".

Keep in mind that I'm not arguing that the former is more concise than the latter, or even more appropriate in all instances (our plan allows for the support both, like a math book: a natural language framework with snippets of specialized syntax where convenient). I'm simply positing that the former is a more "natural" way of expressing the thought; something that might be said -- and that would certainly be more readily understood -- by the average person on the street.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
OP, please show me how natural language is easier using a complex problem. Show me how it is easier than say finding initial velocity. Vi = Vf - (a x t) is pretty simply. You will have to identify, regardless of language uses, which numbers are final velocity, acceleration, and time.
English is not the most effective way of expressing complex mathematical formulas; that's why mathematical notation was invented in the first place. But conversely, there are a lot of things that are not as conveniently or as clearly expressed in mathematical notation: "Clear the screen," for example, is hard to improve upon. And there's a lot of this latter kind of stuff in a typical program. In our development system, for instance, less than 15% of the 25,000 lines are mathematical in nature; the rest do things like "move this over there" or "sort that" or "send a page to the printer".


That's why our plan promotes, as the "ultimate" or "last" programming language, a natural language framework with snippets of specialized syntaxes (and even graphical representations) where appropriate. In other words, we picture the programs of the future looking a lot like math books look now. And we argue that it will be easier to add the necessary "sub-compilers" to support those specialized snippets to a system like ours, than it would be to add natural language support to, say, GCC.
 
Last edited:

Markbnj

Elite Member <br>Moderator Emeritus
Moderator
Sep 16, 2005
15,682
13
81
www.markbetz.net
Fair enough. Try this. I want to find the width of a box on the screen:

Put the box's right minus the box's left into the width.

Versus something like: "width:=box.right-box.left;".

Keep in mind that I'm not arguing that the former is more concise than the latter, or even more appropriate in all instances (our plan allows for the support both, like a math book: a natural language framework with snippets of specialized syntax where convenient). I'm simply positing that the former is a more "natural" way of expressing the thought; something that might be said -- and that would certainly be more readily understood -- by the average person on the street.

You know, essentially what you are saying is that humans don't need symbolic languages to bridge between the fluid and abstract domain of human thoughts and the rigid domains of formal systems. If that is true, and it really is better to use "natural language" to decompose complex problems, why have we not done so previously in algebra, trigonometry, geometry, calculus, gene factoring, electronic circuit design, mechanical engineering, or a host of other disciplines?
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
You know, essentially what you are saying is that humans don't need symbolic languages to bridge between the fluid and abstract domain of human thoughts and the rigid domains of formal systems.
I don't think I said that. English itself is a symbolic language ("cat" in no way resembles either the thought or the reality). I'm saying that English is one of the bridges of which you speak, and one which in many cases can be mechanically reduced to the more formal, saving us the trouble.

If that is true, and it really is better to use "natural language" to decompose complex problems, why have we not done so previously in algebra, trigonometry, geometry, calculus, gene factoring, electronic circuit design, mechanical engineering, or a host of other disciplines?
People use natural language to decompose complex problems all the time, in all of the fields you mention, and then some. Every time a programmer, for example, uses pseudo-code to outline the solution to a problem. Or as Einstein did when he was developing his theory of relativity, talking about it with himself and others -- the precise formulas came much later in the process. Here, for example, is the first page of his description of the problem and solution in his own hand -- with nary a formula in sight:

http://en.wikipedia.org/wiki/File:GeneralRelativityTheoryManuscript.jpg

Why all that "Plain German" if mathematical syntax was so much better suited to the task?
 

Cerb

Elite Member
Aug 26, 2000
17,484
33
86
People use natural language to decompose complex problems all the time, in all of the fields you mention, and then some. Every time a programmer, for example, uses pseudo-code to outline the solution to a problem.
You've used this example multiple times. Yet, I've never done it myself, nor have I ever seen any other programmers' pseudocode look like anything but an abstract symbolic programming language, including balding bearded folk, that have been doing it longer than I've been here. Maybe you do, but it's far, far, from, "every time a programmer uses pseudo-code to outline the solution to a problem."

Pseudo-code generally looks like code, just terse, lacking verbose names, type declarations, and other details that are unimportant at that stage. It may be your way. Of course, with the product you have, you will attract some others for whom it is their way, as well, but it is not a universal way, by a long shot.
 
Last edited:

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
Pseudo-code generally looks like code, just terse, lacking verbose names, type declarations, and other details that are unimportant at that stage.
Wikipedia's article on the subject defines pseudocode as "an informal high-level description of the operating principle of a computer program or other algorithm," which sounds reasonable to me (and, I imagine, to you as well). But then they almost immediately give examples of pseudocode under the headings "Fortran Style Pseudocode" and "Pascal Style Pseudocode" and "C Style Pseudocode" which are probably closer to what the term brings to your mind. What I think of when I hear the term appears under a related Wikipedia article entitled "Structured English". Here's the example given in that article:

Code:
IF customer has a Bank Account THEN
     IF Customer has no dues from previous account THEN
         Allow loan facility
     ELSE
       IF Management Approval is obtained THEN
         Allow loan facility
       ELSE
         Reject
       ENDIF
     ENDIF
   ELSE
     Reject
   ENDIF

Which is closer to the pseudocode I was taught to write, back in the day. And is pretty much what I had in mind when I made those other posts. Of course, believing that nested IFs and ELSEs are a bane to clear thinking, I would have written something more like this:

Code:
If the customer doesn't have a bank account, reject the loan; exit.
If the customer has dues from a previous account, reject the loan; exit.
If management approval is not obtained, reject the loan; exit.
Allow the loan.

Which, incidentally, happens to be code that our Plain English system is able to compile and run. But I hope you can see why it was "natural" for me to use the term as I did.

In any case, I apologize for the misnomer.
 

smackababy

Lifer
Oct 30, 2008
27,024
79
86
Your basic logic steps seem like they are easy, except you still have to use "natural language" to code how to check if the customer has a bank account, how to handle the logic allowed in the loan. Simply checking a database is cumbersome enough with "unnatural" languages.

For the most basic of logic, plain English is just fine, but for the real nitty gritty, it will take paragraphs to describe what can be coded.
 

Gerry Rzeppa

Member
Dec 13, 2013
195
1
76
www.osmosian.com
Your basic logic steps seem like they are easy, except you still have to use "natural language" to code how to check if the customer has a bank account, how to handle the logic allowed in the loan.
Yes.

Simply checking a database is cumbersome enough with "unnatural" languages.
Ideally, the programming language and the database language should be one and the same. The best implementation I've ever seen of such a thing is a language called Starset developed by Mikhail M. Gilula; his book on the subject is here (but hard to find, since it's currently out of print):

http://www.amazon.com/dp/0201593793/

The good news is that some relatively minor extensions to Plain English will accomplish much the same thing.

For the most basic of logic, plain English is just fine, but for the real nitty gritty, it will take paragraphs to describe what can be coded.
Most people, at first blush, seem to think that's the case; we wanted to know if that was really true; that's why we decided to test our theory by writing a complete development system, including a compiler and a wysiwyg page editor, rather than something small and easy. It turns out that the "most basic of the logic" and the "real nitty gritty" can both be expressed, conveniently and efficiently, in Plain English.
 

Sheep221

Golden Member
Oct 28, 2012
1,843
27
81
People use natural language to decompose complex problems all the time, in all of the fields you mention, and then some. Every time a programmer, for example, uses pseudo-code to outline the solution to a problem. Or as Einstein did when he was developing his theory of relativity, talking about it with himself and others -- the precise formulas came much later in the process. Here, for example, is the first page of his description of the problem and solution in his own hand -- with nary a formula in sight:

http://en.wikipedia.org/wiki/File:GeneralRelativityTheoryManuscript.jpg

Why all that "Plain German" if mathematical syntax was so much better suited to the task?
Formulas when being explained to someone ofc are translated to normal language in order to explain relations between parameters used, what they mean and so on. But when you use the formula in equation you no longer use natural language but rather symbolic/numeric format.
 
Status
Not open for further replies.