Learning how to program (23, permasaged)

1 Name: #!/usr/bin/anonymous : 2007-08-13 23:11 ID:hcyAPtyk

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.

2 Name: #!/usr/bin/anonymous : 2007-08-14 00:20 ID:mFfNQo+K

That might take a bit longer than 6 months.

Also, jack of all trades, master of none.

3 Name: #!/usr/bin/anonymous : 2007-08-14 00:39 ID:hcyAPtyk

>>2
all of the above fall under [Fundamentals]

But exactly what should one specialize in nowadays?
What should one master (to make money)?

4 Name: dmpk2k!hinhT6kz2E : 2007-08-14 04:22 ID:Heaven

>>1
You will never ever be able to cover all that in a year, at least not to any appreciable depth. However, all of it is good to know.

I strongly suggest avoiding C as a first language. I'd recommend Python, Ruby or (tentatively) Perl.

>>3
Do you want to go into IT or software development?

5 Name: #!/usr/bin/anonymous : 2007-08-14 16:54 ID:lEaEoDze

>>4
I agree. I have heard that nowadays C will not really pay off. For beginners I recommend Python and Perl.

6 Name: #!/usr/bin/anonymous : 2007-08-14 17:04 ID:lEaEoDze

>>4
I agree. It seems C will not really pay off. For beginners I recommend Python and Perl.

7 Name: #!/usr/bin/anonymous : 2007-08-14 21:53 ID:hcyAPtyk

OP here.
>>4
>>5
>>6
stfu fags.

Either this board is dead, or no professional programmers frequent here.

8 Name: #!/usr/bin/anonymous : 2007-08-15 00:32 ID:lc/DD70j

Agreeing with >>4 >>5 >>6 on Python and/or Perl. Both are nice, easy and potentially clean languages to play with and learn from. There's just too much going on in C that a beginner shouldn't bother to mess with.

9 Name: OP : 2007-08-15 03:18 ID:Heaven

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...

10 Name: dmpk2k!hinhT6kz2E : 2007-08-15 05:50 ID:Heaven

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.

11 Name: #!/usr/bin/anonymous : 2007-08-18 01:51 ID:O+w2W8ei

>>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...

12 Name: #!/usr/bin/anonymous : 2007-08-18 14:33 ID:Xgv2d7ml

13 Name: #!/usr/bin/anonymous : 2007-08-21 04:09 ID:OvZh1M8r

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.

This thread has been closed. You cannot post in this thread any longer.