Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

starting programming

Name: Anonymous 2007-11-20 19:14

i've taken a passionate interest in programming and yet i'm having trouble getting started. i've learned quite a bit of basic C# (written a half-done Notepad clone, an email spammer, and an IRC bot) but now i'm stuck. i'm also taking a java class in which i learn noting because of the slow pace and outrageous similarity to C#.

1. what kind of programs should a beginner try making to further his/her skills without overwhelming him/her self?
2. should i continue to program C# and java until i've mastered them, or should i take the time for c/c++ right away.
3. what sort of goals should a programmer keep in mind from the start?

Name: Anonymous 2007-11-21 1:26

>>1
Okay, serious answer time.

1. what kind of programs should a beginner try making to further his/her skills without overwhelming him/her self?

Do something that you'd actually use and preferably already  need.  Toy Projects never get done.  If you can't think of anything, replace some small utility program that you already use with something you write yourself.  Think file converters, upload/download utilities, etc.  Shit that actually does something you'd use.  It sounds like you're on this path already.


2. should i continue to program C# and java until i've mastered them, or should i take the time for c/c++ right away.

ABSOLUTELY LEARN NEW LANGUAGES CONSTANTLY!!!!  The earlier the better!  If you stick with one, you'll lock your thinking into an incorrect "one true way".  Definitely learn Lisp, the whole model with macros, first-class functions, and intro to functional style WILL give you a new perspective on programming.  Definitely learn C and enough ASM to read disassemblies in a debug session; this will teach you what's going on behind the scenes.  Definitely learn Erlang for how to do threaded/distributed properly and the joys of matching syntax; multi-core and distributed is the Next Big Thing.  Look at emerging languages, and try to see what the benefits, drawbacks, and rationales are of the decisions they made.  If you don't understand those, you can't properly decide what language to use for any given project.


3. what sort of goals should a programmer keep in mind from the start?

Your goal should be to finish the damn project before jumping to something else (keeping text files with notes around helps tremendously), and to make it do something useful.  Those tie for top priority.  Beyond that:

- Get used to writing comments and full documentation, you'll need it in a year (or a month) when you look back on things.  Spaghetti code is bad, make it clear.  Seriously, it won't run any slower 99% of the time.

- DON'T TRY TO OPTIMIZE until it's already running and only if it's too slow.  Guessing on optimization strategies too early, especially if you're a newbie, will kill you.

- Know what you're going to write before you sit down to code.  IE, DESIGN!  It makes coding a shit-ton easier than having to hack in changes later that you would have seen before.  Don't get caught up in super-detailed design, though, just enough to tell you what goes where and who calls what in your code.

- Get your code _executing_ as soon as possible.  When you write your core library/utility functions, make a main() that will run through them.  You'll catch a ton of stuff very early on, as well as get a feel for what's too cumbersome to use and needs to be redesigned.

- READ READ READ READ READ (also SICP).  Try to find algorithms or libraries that you can use.  Read wikipedia algorithm descriptions until you can understand them.  Don't be afraid of reading PhD theses; they're not that hard.  Buy books that are highly recommended; a ton more work and validation goes into quality books than any website.


Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List