My system is very important to me. It has private information on it, and I use it daily for work. There are three kinds of executable programs that get run on it: 1) those I create; 2) those created by large reputable companies; and 3) those that have been used and attested to by large numbers of people that I trust. Even a cursory analysis of the situation will demonstrate that yours falls into none of those categories. Therefore it is not getting executed on my system.
If everyone thought like you, how would a program developed by an individual or small group ever make it into your category (3)? And by those standards, it appears
you wouldn't run our program no matter how or where we posted it -- at least not until "large numbers of the people you trust" took the risk for you. Sounds to me like you need a junker laptop or something to try new stuff on. (Email me your address and I'll send you one with our compiler pre-loaded.)
Why didn't you just link to your page from the beginning? You have a page, and there's a link to the file on it.
Yes, there's a page, but there's no link to the system on it; you have to email us to get that. Why the extra step? To separate the wheat from the chaff; those who want to seriously further the investigation from the troublemakers and the merely curious. You've seen the kind of responses we get here from the world at large; you've also seen, in an earlier post of mine, the kind of responses we get from people who are forced to take that extra to get a copy of the thing. A world of difference, to be sure.
You can't be so new to the Internet as to not have suspected that a link to a .zip from a new poster would be viewed with suspicion, can you?
Again, it's a means of separating the wheat from the chaff. When someone is
really interested in something, they'll do what it takes to find out more about it.
If you're going to use up bits on our disk your post has to be worthy of it.
Perhaps I'm reading the stats wrong, but when I go to the list of threads in this forum (AnandTec Forums > Software > Programming) and sort by views, I see that this thread has had 1,148 view since I posted it less than a week ago. It's in the top 15 (not counting the stickies). And when I sort by number of replies, it's in the top 5. And even if you don't count my replies, it's still in the top 10. I think this is a subject that interests your members; we know it's a subject that at least some members feel very strongly about. Probably worth the disk.
I'm not what you would call a compiler enthusiast, so correct me if I'm wrong, but doesn't the fact that you can construct an EBNF grammar for your language undermine the claim that it is natural?
It's a shortcoming, yes. Like the fact that most airplane wings don't flap. But that doesn't mean most airplanes don't resemble (and fly) like birds. Besides, the recursive descent parsing that our compiler performs based on the EBNF is only the first (very rudimentary) pass at the code; the second and third passes are made in a more ad hoc fashion consistent with the principles I've described here. And it should be noted that the EBNF gets smaller, not larger with each version. The current EBNF is 108 lines; the original was over 300.
If it has to adhere to a strict grammar then is it not simply a more verbose syntax?
If that was all there was to it, yes. But see the response immediately above.
And does that grammar not have to expand infinitely to accommodate new nouns and verbs?
No. The "keywords" of the language are articles (the, a, an, some), conjunctions (and, or), prepositions (in, on, over, etc), and a small collection of general state-of-being verbs (is, has, does, etc); less than 150 in all. The nouns, verbs, and adjectives are defined by programmer.
If it does, please explain why that is better than a general purpose symbolic language that is complete and can express any concept?
Which general purpose symbolic language? Ah, there's the rub. Some people like this one, some that. And, objectively speaking, they're both right, some of the time: this language
is better for certain kinds of things, while that language
is better for other things. So we didn't want to simply enlarge that set. Instead, we wanted to see how people would program (ie, communicate with a computer) if they could do it in the way that came most naturally to them. And what we've concluded is what I said at the very top of this thread: We believe, if it were possible, people would communicate with their machines in "math book" style. Mostly natural language, with snippets of specialized syntax (and even graphics) when that proved to be a more convenient way of expressing themselves. And why do we think this is the case? Because that's how we all do it when we don't have any artificial restrictions placed on us. That's how Einstein did it when he was telling people about relativity; that's how the characters on Sesame Street do it when they're telling kids about phonics.
And so we designed and implemented a prototype of the neglected part -- the part that compiles and executes English. Extending our compiler to parse, for example, infix (or prefix or postfix) symbolic mathematical equations is a trivial thing -- but extending, say, C++ to handle what we can handle, is not. And we intend to make just such extensions, at least where the syntax is more-or-less common to people in general (infix math expressions, for example, are generally understood even by non-programmers; C-style loops are not). And for the rest, well, that we can "farm out" to others, like this:
To display a graph of a really complicated mathematical function:
Clear the screen.
Ask Mathematica to return the graph of the really complicated mathematical function.
Draw the graph in the center of the screen.
So the advantage is that Plain English, or something like it, turns out to be the last programming language; with all the others specialized subsets, inserted when and where they're needed.
You have some reason for not wanting to make the compiler source available, and I don't really care what that is.
But it is available. You have it. It's in the text file you downloaded called "the compiler".
Your compiled program is not getting run on my system. Maybe one of the other guys will fire it up in a vm. I haven't seen anything so far that would make me think it's worth the effort. You'll probably label that narrow-mindedness, or something, but I assure you I had to absorb four or five new ideas before lunch today. Yours just hasn't made the cut. If I weren't modding this forum I wouldn't have read past your first post.
But if you were
only modding this forum, you wouldn't be writing so much. Having deleted my link, your work as a moderator was more-or-less done.
Wow, you are a piece of work, I'll give you that. Actually, I'll give more: you've been taking the heat here with grace and polite erudition, and that's not the most common attribute on the Internet. You seem like a human and a nice person...
Thanks.
...so please don't take any of this personally, but I remain convinced that you're not to be taken seriously.
No offense taken.
File extensions, by the way, are not there to serve your compiler, or any application program. Applications can presumably tell whether a given file is of a type that they can consume or not. Extensions are there for operating systems and people.
Operating systems that were developed in the last century, perhaps, and people who have become accustomed to their archaic way of doing things. Out here in the real world we regular folks have other and more natural ways of categorizing and identifying things than extensions. And with today's computing power, there's no excuse (or need) for such primitive methods. Next you'll be telling me that this "edit here / preview there" approach to entering posts on this forum is a good thing, and that wysiwyg was a fad!
So now your fight against the status quo apparently extends to the violent elimination of all hierarchical naming systems? I thought you were making it easier for humans to program?
We're not against hierarchical naming systems when (a) they're warranted, and (b) they're implemented with some degree of elegance and finesse. Most are not.