Results 1 to 2 of 2
BACKGROUND Some years ago my elder son and I developed a programming language in the interest of answering the following questions: 1. Can low-level programs (like compilers) be conveniently and ...
Enjoy an ad free experience by logging in. Not a member yet? Register.
- 02-11-2013 #1
- Join Date
- Feb 2013
Linux Programmer Wanted
Some years ago my elder son and I developed a programming language in the interest of answering the following questions:
1. Can low-level programs (like compilers) be conveniently and efficiently written in high level languages (like English)?
2. Can natural languages be parsed in a relatively "sloppy" manner and still provide a stable enough environment for productive programming?
3. Is it easier to program when you don't have to translate your natural-language thoughts into an alternate syntax?
We can now answer each of these three questions, from direct experience, with a resounding "Yes".
PRINCIPLES OF OPERATION
Our parser operates, we think, something like the human brain. Consider. A father says to his baby son:
"Want to suck on this bottle, little guy?"
And the kid hears,
"blah, blah, SUCK, blah, blah, BOTTLE, blah, blah."
But he properly responds because he's got a "picture" of a bottle in the right side of his head connected to the word bottle on the left side, and a "skill" near the back of his neck connected to the term suck. In other words, the kid matches what he can with the pictures (types) and skills (routines) he's accumulated, and simply disregards the rest. Our compiler does very much the same thing, with new pictures (types) and skills (routines) being defined -- not by us, but -- by the programmer, as he writes new application code.
A typical Plain English type definition looks like this:
A polygon is a thing with some vertices.
Internally, the name "polygon" is now associated with a type of dynamically-allocated structure that contains a doubly-linked list of vertices. "Vertex" is defined elsewhere (before or after this definition) in a similar fashion; the plural is automatically understood.
A typical routine looks like this:
To append an x coord and a y coord to a polygon:
Create a vertex given the x and the y.
Append the vertex to the polygon's vertices.
Note that formal names (proper nouns) are not required for parameters and variables. This, we believe, is a major insight. My real-world chair and table are never (in normal conversation) called "c" or "myTable" -- I refer to them simply as "the chair" and "the table". Likewise here: "the vertex" and "the polygon" are the natural names for such things.
Note also that spaces are allowed in routine and variable "names" (like "x coord"). This is the 21st century, yes? And that "nicknames" are also allowed (such as "x" for "x coord"). And that possessives ("polygon's vertices") are used in a very natural way to reference "fields" within "records".
Note, as well, that the word "given" could have been "using" or "with" or any other equivalent since our sloppy parsing focuses on the pictures (types) and skills (routines) needed for understanding, and ignores, as much as possible, the rest.
At the lowest level, things look like this:
To add a number to another number:
Note that in this case we have both the highest and lowest of languages -- English and machine code (albeit in hexadecimal) -- in a single routine. The insight here is that (like a typical math book) a program should be written primarily in a natural language, with appropriate snippets in more convenient syntaxes as (and only as) required.
THE TASK AT HAND
I'm looking for an (open minded) Linux programmer to convert this program to run on Linux.
The program consists of about 20,000 lines of Plain English source code and includes a unique interface (that will look exactly the same on Linux as it does on Windows), a simplified file system viewer, an elegant text editor, a hexadecimal dumper, a native-code-generating compiler/linker, and the wysiwyg page layout facility that was used to produce the documentation. Most of the code (for example, the wysiwyg page layout facility) will not have to change; the system-specific portions of the program are isolated.
You can get the whole shebang, including the source code, here: (Sorry, it won't let me put in a link until I've posted 15 times). Start with the PDF in the "documentation" directory and before you go ten pages you'll be recompiling it in itself (in less than 3 seconds on a bottom-of-the-line Windows machine from Walmart).
Interested parties please respond directly to (Sorry again, it won't let me include my email address). Answer here and we'll work something out.
- 02-11-2013 #2
Since you're looking for a collaborator on this, just hang tight and someone with the right experience may come along to help you out.