Click here to Skip to main content
15,900,461 members
Please Sign up or sign in to vote.
3.25/5 (4 votes)
See more:
Ok, so I have this really big goal that I know I am not ready to tackle just yet. Everything that I know about computers and programming is self taught and I have always had a tendency to put the cart before the horse so to speak. My goal stems from my own frustrations in trying to grasp programming concepts and putting them into the proper code syntax for the language I was working with at the time. I am familiar with VB and am forcing my self to learn C++, I have had one class in Java programming while attending a community college.

The Goal: To create a programming language or a translator program that takes human readable language and compiles or processes the human language instructions into code then compiles it to a working application. In my search for such a language I have found few languages that make a half-hearted attempt at this. But they fall short of actually achieving a true human readable language that will compile into a useful program. They also seem to have more complexity than I would prefer since my goal also involves bringing the ability to program to those who otherwise would not beable to because they don't think that they have the smarts to do so.

The Basic Structure: Since the only human language I am fluent in the whole of the language will naturally be based on English. So your basic Hello World program would look something like this: Create a standard window. Name the window Hello World. In the center of Hello World print the words "Hello World!"

The same Hello World program in just a message box would be like this: Create a message box with an Ok button. In the message box print the words, "Hello World!" If Ok button is clicked then exit program.

So that is the basic idea behind the goal, I realize that this won't happen overnight and it will probably be years before I can even begin to tackle this goal. My problem is that I don't know where to start to learn what I need to learn to achieve the goal. I'm thing of C++ as the language to code the project but I am open to suggestions for other languages to use. The platform I am using is Windows, I have VC 2008 and MinGW for compilers. What sort of books, tutorials, etc do I need to get to my goal?
Posted
Comments
Albert Holguin 18-Apr-11 13:15pm    
i would argue that readability is not necessarily the best thing in a programming language, VB is proof of that. maybe you should learn to program in something that already exists instead of trying to reinvent the wheel.

besides, how are you going to invent a new programming language when you have no idea what the others have to offer (and positives/negatives of each)?
Ikeman from Moses Lake 18-Apr-11 14:47pm    
Well I am trying to learn how to program in a programming language that already exists. And in order for me to reinvent the wheel as you say, I first must learn how the wheel is built. Knowing that something is capable of doing X is not the same as knowing how that something does X.
I have chosen to "invent" a new programming language in my effort to learn that which I have always tried to learn but has always been out of reach. It is the motivation so to speak to finally break out of the never ending loop:
if (!working){ cout << "Try Again Y/N?; cin >> answer; goto Begining;
}
Even if my stated goal is impossible it is the journey to the destination which is important. If I fail at the quest, that's ok I still will have accomplished far more than if I had tried to do nothing and succeeded.
Albert Holguin 18-Apr-11 20:19pm    
you're proposing fixing "the problem" when you don't even have a clear understanding of what the problem is, or if there really is a problem at all. i would suggest learning to program in at least 5-7 different languages and see what you learn collectively (and learn them well).

I suspect the exact field you are looking for is natural language processing. It's a fairly complex area, and there's already been some extensive research and dev done on this. Microsoft Research has an NLP specific group here:

http://research.microsoft.com/en-us/groups/nlp/[^]

Their work may be a good starting point for you.
 
Share this answer
 
Comments
Sergey Alexandrovich Kryukov 8-Apr-11 19:02pm    
In a way, this is a good answer, my 5. Perhaps it may help OP to look at this problem more realistically.
Speaking of which -- please see my Answer.
--SA
mbue 8-Apr-11 22:20pm    
Beg your pardon, but the goal of the op seems to be impossible. A natural language is an interactive process, otherwise you can use an existing programming language. The speech recognition of microsoft is dead for a couple of years. The visual recognition (project natal) is unsatisfactory. It seems to me that IBM is a little step further (project watson and others).
Regards.
Ikeman from Moses Lake 9-Apr-11 1:56am    
It may very well be impossible now but who knows what the future will hold. The moon was at one time thought to be impossible to reach yet mankind managed to pull it off. But my thinking is that perhaps the use of keywords is what is needed to make this work. Consider for a moment the lines of code needed to instantiate a standard window using C++. Now imagine compressing all those lines of code into one line: Create a standard window. The trick of course is getting the compiler to translate that into something the machine understands.
Sergey Alexandrovich Kryukov 9-Apr-11 2:17am    
I like your optimism. It's impossible to predict future well.

As to the current level, it can be observed by the quality of machine translations: for some (a bit more complex) languages the quality of translation is a permanent source of jokes... :-)

Cheers!
--SA
Espen Harlinn 10-Apr-11 17:03pm    
Nice link, 5ed!
Try reading:
1. Compiler design in C[^]
2. The Dragon Book[^]
as this will help you understand the requirements for a regular programming language.

Read through The Art of Computer Programming[^] - it usually takes 4 to 5 readings.

You're now hopefully ready to have a go at Hidden Markov model[^] and related stuff like conditional probability distribution[^] and regular conditional probability[^].

You've certainly set yourself an ambitious project, and you may even succeed. In the end I think you will find that determination - as this is likely to take at least a few years - is the clincher. The stuff above can be learned through lots of work.

Good luck :)
Regards
Espen Harlinn
 
Share this answer
 
Comments
Ikeman from Moses Lake 11-Apr-11 2:34am    
Thanks for the advice, just ordered the first two books got to wait for The Art of Programming though. Between paydays, *sighs* but such is life.
The mere fact that you're addressing to CodeProject Quick Questions/Answers suggests that you, despite of the expressions like "really big goal", still gravely underestimate the scale of this problem. The best advice here: get real!

To be fair to you, I voted 5 for the Question. Not that it can help to get the Answer… :-)

(Well, there is another chance: perhaps I strongly underestimate your abilities, which must be extraordinary, but in this case — you would not need any advice from us.)

—SA
 
Share this answer
 
v2
Comments
Ikeman from Moses Lake 9-Apr-11 1:28am    
Why thank you Dr. Phil for that down to earth answer.
Sergey Alexandrovich Kryukov 9-Apr-11 2:10am    
You're very welcome.
And it's not "down to earth" as I admit there is a chance (however, look at what other say).
I will actually be very happy if you proof that you are that very extraordinary person.
I'm not that talented to help you here though, not even to try.
I'm just curious: it that your vote?
--SA
Ikeman from Moses Lake 9-Apr-11 2:49am    
Yeah that was my vote. A year ago I would have been POed by that answer but the wonders of prozac make it possible for me to not be bothered by such things. I'm not really that talented or extraordinary that's something that history will have to judge. I'm just an ordinary schmuck trying to teach my self to program.
Sergey Alexandrovich Kryukov 9-Apr-11 19:49pm    
OK, thank you for telling me that, some don't have bravery for that.
Well, you virtually expressed agreement with my answer; but with your vote you just tell everything who you are.
My advice remains the same...

Good luck.
--SA
Google is your playground. Use Visual Studio to write your code. Learn .Net.

I taught myself coding by finding an app and duplicating it's look/feel/functionality. A "hello world" app won't teach you *anything*.

If you don't want to duplicate an application, break things off in chunks and explore them. Collections, UI design, threading (very important), file IO, and stuff like that. Then, combine everything you've learned about those things.

I recommend that you actually take a couple of classes that teach the fundamentals.
 
Share this answer
 
v3
Comments
Niklas L 18-Apr-11 14:06pm    
Good advice. Compensating the down votes a tad.

This content, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)



CodeProject, 20 Bay Street, 11th Floor Toronto, Ontario, Canada M5J 2N8 +1 (416) 849-8900