A Literal Programming Language
by Will Harrison · in General Discussion · 03/28/2005 (11:09 am) · 146 replies
I just had this random thought. I'm not much of a programmer, but wouldnt it be easier if there was a programming language that was basically readable English?
For example, instead of this:
if (John.apples = 5 && Sally.oranges < 3) {
Jason.pears == 7;
}
You would write:
If John has 5 apples and Sally has less than 3 oranges then give Jason 7 pears.
Or in this case:
for (count=1; count<11; count++)
{
steeringWheel.rotate();
}
You could write:
Rotate the steering wheel 10 times.
Object names (steeringWheel) would be case-insensitive and could contain spaces (so you could say "Steering wheel" or "steering Wheel" and they would mean the same thing).... and the definite article "the" (e.g. rotate "the" steering wheel) could be be ignored by compiler.
For example, instead of this:
if (John.apples = 5 && Sally.oranges < 3) {
Jason.pears == 7;
}
You would write:
If John has 5 apples and Sally has less than 3 oranges then give Jason 7 pears.
Or in this case:
for (count=1; count<11; count++)
{
steeringWheel.rotate();
}
You could write:
Rotate the steering wheel 10 times.
Object names (steeringWheel) would be case-insensitive and could contain spaces (so you could say "Steering wheel" or "steering Wheel" and they would mean the same thing).... and the definite article "the" (e.g. rotate "the" steering wheel) could be be ignored by compiler.
About the author
#22
I've no interest in changing your mind, I just gave some examples of why the "english" language has not been implemented into software development.
As for a code snippet.... I will have to agree with you, it is easier to describe code in english vs C++. Here goes:
//My game
//Startup
while (I have yet to create all the gory details of my game engine)
simply create all the gory details.
if (I have not clearly described the details)
fill in the details.
//Game loop
while (the game is being played)
get Player input.
update all game routines.
Check for errors, and then repair.
//exit code
Exit game gracefully.
Your right!! I love this new "English" programming language! Go ahead and sign me up for the beta test. :)
B--
03/29/2005 (1:39 am)
@Will: The ((10*5)+(6/2))*3 example was an obvious failed attempt at explaining how the english language has some draw backs in being able to efficiently convey a sequence of events in a clear and concise manner.I've no interest in changing your mind, I just gave some examples of why the "english" language has not been implemented into software development.
As for a code snippet.... I will have to agree with you, it is easier to describe code in english vs C++. Here goes:
//My game
//Startup
while (I have yet to create all the gory details of my game engine)
simply create all the gory details.
if (I have not clearly described the details)
fill in the details.
//Game loop
while (the game is being played)
get Player input.
update all game routines.
Check for errors, and then repair.
//exit code
Exit game gracefully.
Your right!! I love this new "English" programming language! Go ahead and sign me up for the beta test. :)
B--
#23
03/29/2005 (8:22 am)
It's not that it's difficult to describe, but that there's so many ways to describe it. And once you begin limiting your context and syntax within set boundaries to describe such things, you're doing the exact same thing that programming languages are currently doing, except less consicely.
#24
why would you add this extra step in compiling...?
an expensive step at that
03/29/2005 (8:40 am)
Just one question...why would you add this extra step in compiling...?
an expensive step at that
#25
I think that serious AI in the compiler is needed to make a real literal programming language.
Here's a discussion on a similar topic:
03/29/2005 (9:22 am)
I don't think that replacing programming constructs with English words addresses the problem that Will introduced, because using words doesn't change the rules of the language. If you replace C++'s brackets with BEGIN/END statements, you still have to learn C++ to program in it.I think that serious AI in the compiler is needed to make a real literal programming language.
Here's a discussion on a similar topic:
#26
You asked for it so here it is, just a SINGLE instruction to the computer --
SCASB
-- now to describe it accurately in C-like terms --
IF AddressSize = 16
THEN use DI for dest-index;
ELSE (*addressSize = 32*) use EDI for dest-index;
AL - [dest-index]; (compare byte in AL and dest*)
IF DF = 0 then IndDec <- 1 ELSE IndDec <- -1
dest-index = dest-index + IncDec
Of course to accurately describe it in plain english took a page, so I dont think a plain english programming language would be useful at all. Now if I add just another single instruction like so:
SCASB
LOOP -1
I can describe it semi accurately in english terms - "Scan memory for a byte matching what is in register AL." Again, not competely accurate but I dont want to take up space on the forums with an explanation. I'll just stick with programming languages to save space and for their accuracy.
In fact I think the further you get from a given human language, i.e. the lower the level of a language you use, the more literal that particular language becomes. For example:
psubw mm0, mm2 ; subtract word mm2 from mm0
add eax, [esi+4] ; add value in memory location pointed to by esi+4 to eax
xor ebx, ebx ; clear ebx to 0
mov bl, [eax] ; load bl with value in memory location pointed to by eax
shl ebx, 7 ; shift ebx left 7 bits
mov eax, edx ; copy edx to eax
movd mm4, ebx ; copy doubleword ebx to mm4
Look at line 5, the one that shifts ebx left 7 bits. This is literally what the computer is doing, shifting some value left 7 bits, but when it gets translated into plain english in the context its used it is "multiplying ebx by 128 for precision". Anyway, you can see the hassle a plain english programming language would be by comparing the asm code with the comments for each line.
03/29/2005 (10:24 am)
Quote:Show me a code snippet that looks hard to acurately describe in English
You asked for it so here it is, just a SINGLE instruction to the computer --
SCASB
-- now to describe it accurately in C-like terms --
IF AddressSize = 16
THEN use DI for dest-index;
ELSE (*addressSize = 32*) use EDI for dest-index;
AL - [dest-index]; (compare byte in AL and dest*)
IF DF = 0 then IndDec <- 1 ELSE IndDec <- -1
dest-index = dest-index + IncDec
Of course to accurately describe it in plain english took a page, so I dont think a plain english programming language would be useful at all. Now if I add just another single instruction like so:
SCASB
LOOP -1
I can describe it semi accurately in english terms - "Scan memory for a byte matching what is in register AL." Again, not competely accurate but I dont want to take up space on the forums with an explanation. I'll just stick with programming languages to save space and for their accuracy.
In fact I think the further you get from a given human language, i.e. the lower the level of a language you use, the more literal that particular language becomes. For example:
psubw mm0, mm2 ; subtract word mm2 from mm0
add eax, [esi+4] ; add value in memory location pointed to by esi+4 to eax
xor ebx, ebx ; clear ebx to 0
mov bl, [eax] ; load bl with value in memory location pointed to by eax
shl ebx, 7 ; shift ebx left 7 bits
mov eax, edx ; copy edx to eax
movd mm4, ebx ; copy doubleword ebx to mm4
Look at line 5, the one that shifts ebx left 7 bits. This is literally what the computer is doing, shifting some value left 7 bits, but when it gets translated into plain english in the context its used it is "multiplying ebx by 128 for precision". Anyway, you can see the hassle a plain english programming language would be by comparing the asm code with the comments for each line.
#27
I don't think anyone's proposing replacing assembly with english.
Languages which more resemble natural language
would naturally be designed for higher-level programming,
where the tasks involved are much more abstract than bit shifting.
For example
"Let A be a green apple that weighs half a pound and is falling from five feet."
Obviously there's a lot of imprecision and missing information in that statement,
but i don't think it's impossible or a mistake to work towards a computer capable of doing what you expect with it.
03/29/2005 (10:48 am)
@nate -I don't think anyone's proposing replacing assembly with english.
Languages which more resemble natural language
would naturally be designed for higher-level programming,
where the tasks involved are much more abstract than bit shifting.
For example
"Let A be a green apple that weighs half a pound and is falling from five feet."
Obviously there's a lot of imprecision and missing information in that statement,
but i don't think it's impossible or a mistake to work towards a computer capable of doing what you expect with it.
#28
03/29/2005 (11:31 am)
I understand that a replacement isnt what is wanted, but the point Im trying to make is that any natural language is neither efficient or specific enough for programming.
#29
03/29/2005 (11:33 am)
There's actually a language out there that does that already ... however once you know how to code ... you realize how much more elegant and efficient it is not to use English.
#30
it would be useful for beginners to have a language
which reduced the stumbling block of syntax.
Other'n that, you're right,
it'll probably always be more efficient to have some limited vocabulary,
even for high-level applications.
@ nate
well there's programming and there's programming.
for low-level stuff like bit-shifting, a natural language is definitely absurd.
but compare:
.. i've exaggerated the awkwardness of the C-like code a bit,
but i don't think that's so unreasonable. C-like interfaces tend to be awkward.
I agree, as an experienced programmer i'll probably always want the accuracy of a well-defined syntax, but i think for quick programming sketches or for teaching programming or for teaching things besides programming which nonetheless use programming (say in a simulated physics lab) .. a natural language computer would be useful.
@ jeremy
what is this language ?
03/29/2005 (11:59 am)
I think for teaching how to Think like a programmerit would be useful for beginners to have a language
which reduced the stumbling block of syntax.
Other'n that, you're right,
it'll probably always be more efficient to have some limited vocabulary,
even for high-level applications.
@ nate
well there's programming and there's programming.
for low-level stuff like bit-shifting, a natural language is definitely absurd.
but compare:
Let A be a green apple that weighs half a pound and is falling from five feet.
A = new Apple; A.setColor (Colors.Green); A.setWeight (0.5 * Constants.PoundsToKilograms); A.setPosition(0.0, 0.0, 5.0 * Constants.FeetToMeters); A.setAttribute(Constants.ObeysPhysics, true);
.. i've exaggerated the awkwardness of the C-like code a bit,
but i don't think that's so unreasonable. C-like interfaces tend to be awkward.
I agree, as an experienced programmer i'll probably always want the accuracy of a well-defined syntax, but i think for quick programming sketches or for teaching programming or for teaching things besides programming which nonetheless use programming (say in a simulated physics lab) .. a natural language computer would be useful.
@ jeremy
what is this language ?
#31
This literal language would accept the above format, but you could also write:
("Green" is already defined as a color and is automatically set to the "color" attribute. "Weighs" is a verb that you tie to the "setWeight" method. The preposition "at" is tied to the "setPosition" method. "Is falling" basically says the boolean "falling" = true.)
Or you could write it this way:
That's is the highest level of abstraction I can imagine for coding the declaration of a new object. The next level up would be to have a GUI where you could simply select and customise the new apple with a few clicks of the mouse. :)
03/29/2005 (1:32 pm)
Let A be a green apple that weighs half a pound and is falling from five feet.
A = new Apple; A.setColor (Colors.Green); A.setWeight (0.5 * Constants.PoundsToKilograms); A.setPosition(0.0, 0.0, 5.0 * Constants.FeetToMeters); A.setAttribute(Constants.ObeysPhysics, true);
This literal language would accept the above format, but you could also write:
A is a new apple. A is green. A weighs 0.5 pounds. A is at 0, 0, 5 feet. A is falling.
("Green" is already defined as a color and is automatically set to the "color" attribute. "Weighs" is a verb that you tie to the "setWeight" method. The preposition "at" is tied to the "setPosition" method. "Is falling" basically says the boolean "falling" = true.)
Or you could write it this way:
A is a new apple, is green, weighs 0.5 pounds, is at 0, 0, 5 feet, and is falling.
That's is the highest level of abstraction I can imagine for coding the declaration of a new object. The next level up would be to have a GUI where you could simply select and customise the new apple with a few clicks of the mouse. :)
#32
03/29/2005 (2:12 pm)
As potentially as it may work in theory, I highly doubt it would ever be useful in practice.
#33
Furthermore, what happens if you want to say that A is tasty. How does the compiler know that you want to use the SetTastiness method with your is command, and not try and set the colour to be tasty instead. Or what if you want to make A a granny smith. How does the compiler know you want to use the SetBrand method, not the constructor. And if you introduce more rules to get around this like saying, The brand of A is granny smith, you just return to the same level of formal declaration as C++ etc, but without the elegance and compactness possible with the current structure.
A final point is that most programs don't need to have an apple class that responds to all these methods, so for your individual program you would have to define all the code behind this very basic snippet. Thus you have to include things like explaining to the compiler what is falling means, and doing this for every possible way to say the same thing. Thus A obeys phyics, A is falling, A obeys gravity, A experiences gravity, A falls, A will fall, A experiences physics etc will all do the same thing, but most programmers only need to create one method, and remember what it is called. Not too difficult, IMHO.
03/30/2005 (6:46 am)
Will, everything you have said in your last post just sticks to the concepts of C++, or similar programming languages, but just defines new commands. If you just replace the SetWeight method with a weighs command, or the SetPosition method with an is at command, what is the difference. Furthermore, what happens if you want to say that A is tasty. How does the compiler know that you want to use the SetTastiness method with your is command, and not try and set the colour to be tasty instead. Or what if you want to make A a granny smith. How does the compiler know you want to use the SetBrand method, not the constructor. And if you introduce more rules to get around this like saying, The brand of A is granny smith, you just return to the same level of formal declaration as C++ etc, but without the elegance and compactness possible with the current structure.
A final point is that most programs don't need to have an apple class that responds to all these methods, so for your individual program you would have to define all the code behind this very basic snippet. Thus you have to include things like explaining to the compiler what is falling means, and doing this for every possible way to say the same thing. Thus A obeys phyics, A is falling, A obeys gravity, A experiences gravity, A falls, A will fall, A experiences physics etc will all do the same thing, but most programmers only need to create one method, and remember what it is called. Not too difficult, IMHO.
#34
You could, for instance, replace the + symbols with "plus", scopes and pointers with "has", "more than" or "less than" and/or "equals"... etc, So that instead of saying
if (x > 5 && user.name == "sally")
you could say
if x is greater than 5 and the user name is sally
A parser could concievably be contrived to understand that the word "the" implies a structure or class, which is immediately followed by a member of that structure or class... But what if you want to write it differently
If x is larger than 5 and sally is the name of the user
or
if x is larger than 5 and sally is using the program
The point is that a syntax that "looks" like spoken or written language is still a syntax, just like a programming language. It will still have rules and constraints that will confuse the interpreter or compiler if the rules are broken, so in order to use the natural language programming system, the programmer will still have to learn the syntax, which could be just as confusing, if not more so, than a standard symbolic language...
As a challenge, how would the following simple program be implimented in natural english code?
class Car
{
public:
Car(string Model, string Color)
{
carmodel = Model.copy(); //Copy the strings
carcolor = Color.copy();
}
string getmodel()
{
return carmodel;
}
string getcolor()
{
return carcolor;
}
protected
string carmodel;
int carcolor;
}
void main
{
Car *newcar = new Car ("Ford", "Blue");
printf("I got a new %s %s today!\n", newcar->getcolor(), newcar->getmodel())
}
I can't even begin to imagine using classes in natural language... Actually on second thoughts, it would be an equally tedious process of describing in lengthy sentences every single piece of the puzzle...
A Car is a blueprint of an object that has unique properties called carmodel (a string) and carcolor (a string). When a Car is created it is necessary to specify carmodel and carcolor upfront. A Car has the following methods: getcolor and getmodel. The getcolor method asks for no upfront information, and its process is to return the value of carcolor.
I can't be bothered typing anymore, it sounds too much like a software engineering thesis, only less so.
03/30/2005 (7:08 am)
The trouble with making an english (or indeed any language) representation of computer programming would be that you are replacing one set of syntax rules with another. When a person first learns a programming language, the first barrier is usually one of syntax, like how to construct for loops, if statements, etc. If you make a "natural language" version of a programming language, it is still a syntax that needs to be learned before programming can begin.You could, for instance, replace the + symbols with "plus", scopes and pointers with "has", "more than" or "less than" and/or "equals"... etc, So that instead of saying
if (x > 5 && user.name == "sally")
you could say
if x is greater than 5 and the user name is sally
A parser could concievably be contrived to understand that the word "the" implies a structure or class, which is immediately followed by a member of that structure or class... But what if you want to write it differently
If x is larger than 5 and sally is the name of the user
or
if x is larger than 5 and sally is using the program
The point is that a syntax that "looks" like spoken or written language is still a syntax, just like a programming language. It will still have rules and constraints that will confuse the interpreter or compiler if the rules are broken, so in order to use the natural language programming system, the programmer will still have to learn the syntax, which could be just as confusing, if not more so, than a standard symbolic language...
As a challenge, how would the following simple program be implimented in natural english code?
class Car
{
public:
Car(string Model, string Color)
{
carmodel = Model.copy(); //Copy the strings
carcolor = Color.copy();
}
string getmodel()
{
return carmodel;
}
string getcolor()
{
return carcolor;
}
protected
string carmodel;
int carcolor;
}
void main
{
Car *newcar = new Car ("Ford", "Blue");
printf("I got a new %s %s today!\n", newcar->getcolor(), newcar->getmodel())
}
I can't even begin to imagine using classes in natural language... Actually on second thoughts, it would be an equally tedious process of describing in lengthy sentences every single piece of the puzzle...
A Car is a blueprint of an object that has unique properties called carmodel (a string) and carcolor (a string). When a Car is created it is necessary to specify carmodel and carcolor upfront. A Car has the following methods: getcolor and getmodel. The getcolor method asks for no upfront information, and its process is to return the value of carcolor.
I can't be bothered typing anymore, it sounds too much like a software engineering thesis, only less so.
#35
...it could be written as:
Again, "color" is a predefined class here, and "white" (defined as a possible color) is implicitly assigned to the car's color. I.e. You can say "It is white" and the compiler automatically associates this with color.
In the case of "was made in the year 1985".... the only words the compiler keys on is "year" and "1985".
Notice the declaration of myCar and the definition of its attributes are on the same line (i.e. no carriage return). This means that "It's" is automatically referring to "myCar", just as you might say "this" as in this.model... and again, case is insensitive, so "myCar" or "MyCar" mean the same thing, except that one is used mid-sentence and the other is the start of the sentence.
..."Talking" to a computer would be like talking to an ESL student.
If you said this to an ESL student:
"A Car is a blueprint of an object that has unique properties called carmodel (a string) and carcolor (a string). When a Car is created it is necessary to specify carmodel and carcolor upfront. A Car has the following methods: getcolor and getmodel. The getcolor method asks for no upfront information, and its process is to return the value of carcolor."
...they may not understand half of what you're trying to explain.
@ Ben,
The difference is that one can be more readable and intuitively obvious than the other.
...the compiler knows "green" is a color as it has been predefined as a color possibility. "A is tasty" means tasty is a boolean and set it to "true"... just as you could say "A is not tasty" thus making it "false." To avoid possibly confusing the compiler, you could just say "A's color is green."
As for Granny Smith... you would write:
03/30/2005 (2:04 pm)
class Car
{
public:
Car(string Model, string Color)
{
carmodel = Model.copy(); //Copy the strings
carcolor = Color.copy();
}
string getmodel()
{
return carmodel;
}
string getcolor()
{
return carcolor;
}
protected
string carmodel;
int carcolor;
}
void main
{
Car *newcar = new Car ("Ford", "Blue");
printf("I got a new %s %s today!\n", newcar->getcolor(), newcar->getmodel())
}...it could be written as:
A car has color, model, and year.
MyCar is a new car. It is white, a Ford model, and was made in the year 1985.
Write, "I bought a new car. It's a (myCar's color) (myCar's year) (myCar's model)."Again, "color" is a predefined class here, and "white" (defined as a possible color) is implicitly assigned to the car's color. I.e. You can say "It is white" and the compiler automatically associates this with color.
In the case of "was made in the year 1985".... the only words the compiler keys on is "year" and "1985".
Notice the declaration of myCar and the definition of its attributes are on the same line (i.e. no carriage return). This means that "It's" is automatically referring to "myCar", just as you might say "this" as in this.model... and again, case is insensitive, so "myCar" or "MyCar" mean the same thing, except that one is used mid-sentence and the other is the start of the sentence.
..."Talking" to a computer would be like talking to an ESL student.
If you said this to an ESL student:
"A Car is a blueprint of an object that has unique properties called carmodel (a string) and carcolor (a string). When a Car is created it is necessary to specify carmodel and carcolor upfront. A Car has the following methods: getcolor and getmodel. The getcolor method asks for no upfront information, and its process is to return the value of carcolor."
...they may not understand half of what you're trying to explain.
@ Ben,
Quote: If you just replace the SetWeight method with a weighs command, or the SetPosition method with an is at command, what is the difference.
The difference is that one can be more readable and intuitively obvious than the other.
Quote:Furthermore, what happens if you want to say that A is tasty. How does the compiler know that you want to use the SetTastiness method with your is command, and not try and set the colour to be tasty instead.
An apple has color and can be tasty.
A is a new apple.
A is green.
A is tasty....the compiler knows "green" is a color as it has been predefined as a color possibility. "A is tasty" means tasty is a boolean and set it to "true"... just as you could say "A is not tasty" thus making it "false." To avoid possibly confusing the compiler, you could just say "A's color is green."
As for Granny Smith... you would write:
An apple has color, brand, and can be tasty.
A is a new apple.
A is green.
A's brand is Granny Smith.
A is tasty.
#36
This is only true if you are a native speaker of a language. Once you start having grammar and stuff like that, people who do not know the language will have a lot more trouble learning to program with it, whereas something like C++ is much more accessible because it has only a few english language keywords, and everything is highly structured. You will undoubtedly argue that it is possible to produce compilers for every language for people to program, but that would be prohibitively expensive in resources and time for any country producing compilers for english or some other common language to bother with. It would also reduce the support base and code snippits etc. that are available, especially for unusual native languages.
Also, you have only offered a solution to the most trivial of my other objections. I will need more convincing than that. Good work replying to posts though. You are still prepared to stand up for your theory.
03/31/2005 (5:12 am)
WillQuote:one can be more readable and intuitively obvious than the other.
This is only true if you are a native speaker of a language. Once you start having grammar and stuff like that, people who do not know the language will have a lot more trouble learning to program with it, whereas something like C++ is much more accessible because it has only a few english language keywords, and everything is highly structured. You will undoubtedly argue that it is possible to produce compilers for every language for people to program, but that would be prohibitively expensive in resources and time for any country producing compilers for english or some other common language to bother with. It would also reduce the support base and code snippits etc. that are available, especially for unusual native languages.
Also, you have only offered a solution to the most trivial of my other objections. I will need more convincing than that. Good work replying to posts though. You are still prepared to stand up for your theory.
#37
The thing is I'm more of an artist than a programmer so whenever I do actually code something I usually copy a snippet from somewhere else and work it into my code... I can't remember all those keywords and special function names... That's why I like to see things simplified as much as possible.
It's like John Carmack said about games, something like, there won't be the same need for programming in the future as everything will be focused more on content production etc. ....or something like that, I can't remember exactly what he said. My point being that everything is already being simplified with the artist in mind.... so it's only natural that at some point there will be a system where you dont even have to look at a line of code.
Of course this doesnt exclude programmers from the process of game-development... it just changes their focus and perhaps will force them to specialise in certain areas.
Sorry if I only answered the most trivial objections, I thought I covered them all... lol. I know what I'm suggesting is not entirely possibly, but to a large extent things are headed in this direction.
03/31/2005 (12:46 pm)
To be honest, I believe that in the very near future... there will be a better solution... a complete IDE that allows you to point-and-click/drag-and-drop to create all code, all you have to do is enter labels, names, numbers, etc. into text fields. Actually, this has already been done to a large extent, for example Macromedia Flash's Actionscript IDE, but you still have to remember function names and syntax so it's not all the way there.The thing is I'm more of an artist than a programmer so whenever I do actually code something I usually copy a snippet from somewhere else and work it into my code... I can't remember all those keywords and special function names... That's why I like to see things simplified as much as possible.
It's like John Carmack said about games, something like, there won't be the same need for programming in the future as everything will be focused more on content production etc. ....or something like that, I can't remember exactly what he said. My point being that everything is already being simplified with the artist in mind.... so it's only natural that at some point there will be a system where you dont even have to look at a line of code.
Of course this doesnt exclude programmers from the process of game-development... it just changes their focus and perhaps will force them to specialise in certain areas.
Sorry if I only answered the most trivial objections, I thought I covered them all... lol. I know what I'm suggesting is not entirely possibly, but to a large extent things are headed in this direction.
#38
And also, in my earlier post I didn't make myself clear, no matter how you write the description of a car, the computer will most likely have a preferred syntax so that it can parse the information. This would be just the same as any other languages ideosyncracies, in that the syntax must be mastered before you can be effective with the language. Basically, how is saying :
An apple has color, brand, and can be tasty.
A is a new apple.
A is green.
A's brand is Granny Smith.
A is tasty.
easier than saying
typedef struct apple
{
string color;
string brand;
bool tasty;
}
apple A;
A.color = "green";
A.brand = "granny smith";
A.tasty = true;
Its all syntax, and the great thing about many programming languages is that their syntax is rigid and very precise in meaning, ensuring a competent programmer can make the computer do exactly what they want, rather than hope that such is the case.
04/07/2005 (3:47 am)
Ever hear of Klik-N-Play? Thats drag n drop, zero coding required. How hard would it be to have the same sort of thing in 3D? Of course you lose some flexibility in that without being able to code, you are limited to what you have been allowed to do.And also, in my earlier post I didn't make myself clear, no matter how you write the description of a car, the computer will most likely have a preferred syntax so that it can parse the information. This would be just the same as any other languages ideosyncracies, in that the syntax must be mastered before you can be effective with the language. Basically, how is saying :
An apple has color, brand, and can be tasty.
A is a new apple.
A is green.
A's brand is Granny Smith.
A is tasty.
easier than saying
typedef struct apple
{
string color;
string brand;
bool tasty;
}
apple A;
A.color = "green";
A.brand = "granny smith";
A.tasty = true;
Its all syntax, and the great thing about many programming languages is that their syntax is rigid and very precise in meaning, ensuring a competent programmer can make the computer do exactly what they want, rather than hope that such is the case.
#39
it's also faster than things like VB for game making and has a pretty good 3D engine built in.
There's also darkbasic of course, but thats over simple and loses a lot of the power/flexibility and elegance that blitz3d has. Also blitz is more of a C# hybrid than oldschool basic.
04/16/2005 (5:34 pm)
In my experience blitz3D works in the way Will is talking about, and has proven to be pretty powerful thanks to its excellent entity system and pretty extensive DX7 support. It's a pretty popular langauage even amongst experienced coders. Because it allows you to work quickly with fewer lined of code, and the commands are more game specific than a general purpose language like C#, C++it's also faster than things like VB for game making and has a pretty good 3D engine built in.
There's also darkbasic of course, but thats over simple and loses a lot of the power/flexibility and elegance that blitz3d has. Also blitz is more of a C# hybrid than oldschool basic.
#40
I'd be first in line to buy a program like that... as long as the quality of what you can make is up to par with Torque's capabilities. And you're right, I don't think it would be hard to make, it's just that no one has done it yet.
The only barrier with Torque (for me) is the scripting. Making artwork in Milkshape and Photoshop is easy and so is importing it into the engine... making interiors is also easy now thanks to the Cartography Shop exporter. I just have to wrap my head around all this coding stuff. :P
04/16/2005 (8:19 pm)
Quote:Ever hear of Klik-N-Play? Thats drag n drop, zero coding required. How hard would it be to have the same sort of thing in 3D?
I'd be first in line to buy a program like that... as long as the quality of what you can make is up to par with Torque's capabilities. And you're right, I don't think it would be hard to make, it's just that no one has done it yet.
The only barrier with Torque (for me) is the scripting. Making artwork in Milkshape and Photoshop is easy and so is importing it into the engine... making interiors is also easy now thanks to the Cartography Shop exporter. I just have to wrap my head around all this coding stuff. :P
Torque Owner Will Harrison
I often have these iconoclast notions. I like to question why things are the way they are and why they aren't another way, because, for one reason, I like to see people's responses and opinions.
I think "((10*5) + (6/2)) * 3" is already simplified to a universal level of understanding. This would not benefit in changing to English form.
Re Mind Maps.... I remember using a program written in Java where you could creat these kind of flow charts with boxes and arrows and it would create all the code for the shell for your program automatically. Can't remember what it was called though. That's great for making the shell, but at some point you have to write some lines of code.
@Nick -- If someone said to you, "Dude, liek WTF! John's gots 5 aplz n Sallys git 2 or so 0rngz (i dun no but no more then 3...i thnk) so i givez jas liek 7 peerz. lol! ;-)" even you, a human being, would have a hard time understanding what they wanted, let alone a computer.... :D
So talking to a computer is more like talking to an ESL student, you have to be "specific and structured" or they wont understand right away.
The best way to convey this instruction to a person:
if (John.apples = 5 && Sally.oranges < 3) {
Jason.pears == 7;
}
...is just as how you would read it: "If John has 5 apples and Sally has less than 3 oranges then give Jason 7 pears."
I mean it should at least follow the basic "if...then...else" basic structure, right?
....
Show me a code snippet that looks hard to acurately describe in English... >:D