I know nothing of programming, but I would love to learn.
Here is what my naive approach would be, which I assume would take about 6-7 months of study.
I would first learn the fundamentals on a bare-bones *nix system like Debian or possibly FreeBSD, using an editor like Vim, and the GCC.
[Fundamentals]
Basic C programming
Basic C data structures
Advanced Unix Programming
Assembly
Computer Architecture and Design
DNS & BIND
TCP & IP
Unix Network Programming
HTML/XML
Apache
MySQL
1 scripting language: PHP, Perl, Ruby, Python, Lua, etc...
Visual Studio (C++)
ASP.net
Ajax
Along the way I would learn about GNU make, CVS, Digital Logic, the Windows Registry, and fully understand a text on Discrete Mathematics.
Some projects along the way might include:
an imageboard
an instant messenger / irc client
a game
a device driver
Professional programmers please feel free to laugh, yet modify and correct.
That might take a bit longer than 6 months.
Also, jack of all trades, master of none.
>>2
all of the above fall under [Fundamentals]
But exactly what should one specialize in nowadays?
What should one master (to make money)?
>>4
I agree. I have heard that nowadays C will not really pay off. For beginners I recommend Python and Perl.
>>4
I agree. It seems C will not really pay off. For beginners I recommend Python and Perl.
Why is everyone here such a fucking pussy?
such a motherfucking gay nigger faggot?
i seriously wish i could stab every posters neck in this thread except moi, with an icepick.
you do know the japanese might be watching us right?
jesus fuck...
Can we please not go the direction of 4chan?
The reason for learning something other than C for a first language is quite simple: novices like fast feedback, and they need to see that their effort is paying of. C provides neither of these. It doesn't have a REPL, it requires compilation, and a great deal of code is needed to do simple things.
Actually, veteran programmers also need fast feedback. The quicker you can make the edit-compile-test cycle, the sooner you get a working product. The customer is happier, and so is the developer.
Now, working at a low level can be fun too, but I don't think it'll do for a novice. I started with BASIC, which let me draw a line or circle on the screen with a program that consisted of two simple statements. Last I looked, base SDL doesn't even come with functions that draw geometric primitives.
Allegro does, but it gets little love from OSS world. I digress.
>>1
Ok, learning Python would be a good first start (like others said). All Python distributions come with a GUI kit now, so it's even better as a starter language. And install pygame for any sort of 2d graphics onto the screen. When you've decided you're good enough, learn C++ and SDL (not that hard really, but installing SDL for a compiler is a P.I.T.A.)
>>9
GTFO the internet. How old are you, 10? Asshat...
There's absolutely nothing wrong with learning C as the first language. As languages go, it's rather small; as in, very few commands and standard types and a standard library whose documentation condenses down to one tenth of C++'s (or Java's, or Perl's, or whatever) equivalent. Small things are easier to learn than large things, since after the basics one does not have to go to the manual fifteen times in as many minutes.
Learning C gets you rid of your fear of pointers. It also makes every grotty detail apart from the actual instructions presented to the processor explicit. It doesn't force its user into wearing thick gloves for fear of segmentation faults, and it doesn't enforce any particular level of abstraction. There's nothing you can't do with C, the preprocessor and a bit of elbow grease. For these reasons, I recommend C as the first programming language for everyone.
Once C has been learned, programmers can feel free to wrap themselves in the warm, fluffy blankets of abstraction and "you don't need to know that". Even better, such programmers will understand what the abstraction means, and will be able (perhaps with a bit of effort) to see through the abstraction and into the concrete where necessary.
Contrast this with the alternative -- pitiful people who've been taught to fear the real world, relying on "someone else" to cushion and separate them from the machine via frameworks and design pattern liturgy. Fretting over how pointers are difficult and scary like some modern-day Barbie.