How can I learn programming?
gamefreak
Veteran

Joined: 30 Dec 2006
Age: 35
Gender: Male
Posts: 1,119
Location: Citrus County, Florida
Clickteam seem very coy about it - what is the price of Multimedia Fusion?
Borland will let you have ancient versions of Turbo Pascal for free, but why would you want antiquated, unsupported software? Maybe for historical interest, I guess. Delphi I liked (and bought), but far better now would be C#/mono, for free.
_________________
"Striking up conversations with strangers is an autistic person's version of extreme sports." Kamran Nazeer
My suggestion: take a course. Check out a local community college and try to find an "Intro. to Programming" course. I found this very helpful when I first started because you have it presented to you in a structured way. Also, you will be given programming assignments that you have to complete, with instructions on what you are trying to accomplish with your program. I found this helpful as it's hard for me to just "think up" a program to write. Do this first course, then go from there. I ended up taking many more programming courses and am now in a "Data Structures and Algorithms" course. Data Structures/Algorithms is a very difficult subject and has caused me a ton of frustration, but I'm also a much better programmer because of it.
As for languages/environments, I would highly recommend starting in C# or VB.NET as they are in huge demand today. You can download the "express" versions for FREE off Microsoft's website and get started. The visual aspect of the development environment is very helpful as you an drag/drop controls onto your forms, then add code in the background. It's quite easy to start off with some simple programs and see instant results (which is motivating and pushes you to learn more).
cavac wrote
It is commonly recommended?(picture sheepish shrug)
Well, as there are so many different languages out there, many people (including me) will recommend the one they like best. But perl is quite easy to learn.
Well, you can learn (nearly) every programming language by installing a free tool and reading tutorials on the 'net. But, at least in for me, having some books around almost always makes it easier, 'cause you don't have to change between windows that much.
Anyway, define "a free way to learn". Even if you got all the tools and literature for free, you still have to invest a good chunk of your spare time.
Why not? No programming language is perfect for everything and everyone. Try out a few things, see if you like the syntax and the concepts behing the languages, see what you like best and then invest a few dollars into a one or two solid beginners books.
There's one thing i didn't mention before: Not to discourage you, but everyone has different talents. If you feel your programming skills just wont appear, maybe you don't have the talent (but *never* give up, if it means something to you, cause it still can be fun!). I seem to have that with music: For years, I've been trying to learn to play the guitar, although my musical talents appear to be just... absent. While i probably never get a single song sound good, it's still quite fun to fiddle around and make some noise

If you're based in europe, or want to work here, i do not recommend VB.NET. Most bigger companies see VB.NET as some kind of toy.
Also, if you're wanting a job as software developer or system administrator in a bigger company, i'd start with something that's not too Microsoft-centered, as most of these companies run at least part of their computers on non-Windows operating systems; so cross-plattform programming might be required (Well, there IS the "mono" project, but it's still years away from beeing fit for commercial usage).
So far as learning a language is concerned, the Mono project has been way ahead of Microsoft for years.
The stumbling block is the fact that the Microsoft compatibility bits are not ECMA/ISO standards (see Mono and Microsoft’s patents).
Microsoft will continue to lock people into using their proprietary (stolen) software with their bully-boy tactics for as long as people let them.
Microsoft do "give away" free software. It's only when you try to seriously use ANY of it that you discover that it is littered with licenses that stop you from doing so, unless you hand over your wallet, again, and again...
_________________
"Striking up conversations with strangers is an autistic person's version of extreme sports." Kamran Nazeer
If you like games, especially RPG's, you could buy Neverwinter Nights (it's getting old and thus cheap) and start building modules. This would include some scripting in a C like language and it might give you a goal, a project to work for.
Many common languages are soooo similar; Basic, Pascal, C, C++, Java ... they all follow the same 'approach'. Prolog is rather different, might be fun to try, as well as SQL, which could be incredibly useful in your job as well.
If you're based in europe, or want to work here, i do not recommend VB.NET. Most bigger companies see VB.NET as some kind of toy.
In the U.S. VB6 and lower were seen in this way, but not VB.NET. It is functionally the same as C#... just a different syntax. It is NOTHING like the old VB incarnations.... much more powerful.
PLT Scheme? Yes, I've used LISP. I'm not sure I'd recommend it as a starter language.
However, I just looked at TeachScheme!, which sounds like a commendable project.
One of my favourite languages was Snobol. I never quite got around to inplementing my own version of it.
_________________
"Striking up conversations with strangers is an autistic person's version of extreme sports." Kamran Nazeer

Every resource I have tried (I have only tried free ones as I haven't the budget to waste) has been useless. (Esp. Microsoft)
I see a lot of step by step walk-troughs (that usually fail) but nothing that actually goes into the theories behind it. So at the end of a successful one, I still know nothing! Is it hopeless?
The path i went was first learning some high-level programming languange like basic or pascal. Then I went into learning how the CPU and such worked (there are good books on that), and started with assembler (machine code), but got tired of it and went to C++/C with alot of inline assembler.
You're not hopeless I guess, using a computer is a good step towards programming it, but, it somehow requires that you get to know the computer

Being patient and stubborn also helps

lonelyLady
Snowy Owl

Joined: 19 Sep 2007
Age: 39
Gender: Female
Posts: 166
Location: behind a very old computer
can you recommend one (i.e. a good book)?
_________________
"To be stupid, selfish, and have a good health are the three requirements for happiness, though if stupidity is lacking, all is lost."
-Gustave Flaubert
I STRONGLY recommend starting with Java!! ! It's a very dumbed-down version of C++ so you won't have as many hastles trying to get things to work in the beginning. It's easy to learn and easy to use. It's much more relevant than things like Visual Basic. You can learn VB or anything else later on. Learn how to program BEFORE you start using graphics or GUI (Graphical User Interface). Once you learn how to code and then later learn what classes, objects, and pointers are, learning GUI is simple.
Book: "Big Java 6th edition" by Horstmann
Compiler: Eclipse - www.eclipse.org (it's free, awesome compiler, runs on Windows or linux)
After Java, step up to the big leagues ... C++. But first do Java, then some assembly language with a beginners book on computer architecture so you actually get some understanding of what you are telling the computer to do. Most people who program are in the dark (I once was too).
I don't consider things like perl to be programming languages. They are scripting languages with very little power. Their only advantage is to do very simple things very quickly. You don't want to have to write a C++ program just to parse a file and append a word in a few places, or to create a build script. That's what scripting languages are for.

Every resource I have tried (I have only tried free ones as I haven't the budget to waste) has been useless. (Esp. Microsoft)
I see a lot of step by step walk-troughs (that usually fail) but nothing that actually goes into the theories behind it. So at the end of a successful one, I still know nothing! Is it hopeless?
I was just skimming over the posts for the first time. I liked cavac's response -- I was sure cavac had actually read your point about wanting to know "Why" and not just "What." More, cavac offered to work with you. Can't beat that. A reply doesn't get much better than that. If you've the time to offer and don't mind being sent in directions not necessarily entirely to your liking, I'd consider seriously taking cavac up on it.
Cavac's point about having a practical end-point to drive your theoretical learning is a good one, too. What drove me to learn physics and mathematics was wanting to build (and eventually design) my own telescopes. I did eventually build three before I was 20, and designed two of them. But having that "need" in front of me was a big help in overcoming what seemed like a lot of math.
Your point about your current knowledge being far, far away from what you might like to acheive is also a good point to consider. When I was growing up, for example, no one made inexpensive telecopes and if you wanted one and weren't rich you pretty much had to "do it the hard way." Back in that day, there were some four or five regular periodicals dedicated soley to folks making telescopes and a variety of suppliers for glass and so on. Today, there are NO popular periodicals at all that have survived and pretty much ONE supplier of glass -- as long as you like it in just the one way they offer it -- Wilmann-Bell. In electronics design, too, there used to be so many different sources for interesting parts, etc. I built my own computer in the early 1970s from ICs and other passive parts. That took time and learning. But then, it had only 256 bytes of static ram until I added two 4k dynamic cards, that I also built by hand. Today, though, just thinking about the idea of building your own Nintendo DS Lite is dizzying. Yet you can buy fantastic pieces of hardware for almost nothing. So the interest in going through all the trouble it takes to actually build something like that disappears, when you can buy them right now and use a tested and working device for a lot less money and less time and a lot less learning, too. The motivation for climbing that barrier, one that has grown higher and higher with each passing year, is harder and harder to come by.
Programming is like that, too. Microsoft is "doing all the hard stuff" for you, putting out .NET and VB and others are making very easy to use, and practical, tools like PHP and so on. These tools place you well above the details going on inside, serialize access so you don't need to worry at all about parallel operations, and these will NOT do much to teach you how computers actually work inside (because they insulate you so much.) So if you learn to use a language like VB or PHP (or Perl, in my opinion), you will not really learn that much about how computers actually work inside. If that is your interest, you need to look elsewhere.
If you are really interested in the gritty details, I tend to recommend getting and learning to use an embedded controller. There are numerous kits available for as little as $10 or so, and provide you with a complete computer and memory and at least some LEDs you can use. Many of the boards include switches and lights. You don't need to know ANY electronics, either, to use these tools (though it never hurts to let them encourage you to learn more.) And there are a lot of lessons to be learned about computers, just programming them. There is one from Texas Instruments that I picked up for $9.99 each, snaps into a USB port, includes an assembler, C, and C++ compiler you can use (IDE, debugger, etc., included.) You can learn a lot about computers, this way.
The problem with any of these ideas, and others, is that you need access to someone to ask questions. It is very hard to learn internal details without someone who can share with you important ideas they've acquired -- ways to look at things. And I don't know of a really good resource on the web for doing this. Usually, by the way, computer achitecture is taught in the 2nd year of college (I've taught it.) Sadly, c++ is taught in the first year (that language is NOT the right, first language to learn.)
But, anyway, that is why I think cavac's offer is so sweet. Having a connection to someone is very helpful and cavac is offering you something really nice -- a connection. If you can manage the time, of course.
Jon (writing on Becky's account.)
_________________
Time flies like an arrow. Fruit flies like a banana.