Hard Light Productions Forums

Off-Topic Discussion => General Discussion => Topic started by: diceman111 on September 27, 2007, 05:20:19 pm

Title: Learning to program ???
Post by: diceman111 on September 27, 2007, 05:20:19 pm
Ok I have got it into my head that I want to learn computer programming, I have done some cources in High School so i know the basics of C++ and Delphi but I want to know if anybody have recomendations for either books or websites with good tutorials.

Any help would be welcome and with any hope maybe I can help with the bug hunting drive in Mantis ina few months


/Dice
Title: Re: Learning to program ???
Post by: Mika on September 27, 2007, 05:30:45 pm
Depending on your mathematical background, I would recommend taking a look at common optimization routines and in general a numerical programming book as Numerical Recipes (available online if memory serves) at least. Then if I wanted to become better programmer, I would take a book about 3D graphics and rendering, also how to make it quick. After that some real application (must be small applications) development to understand the communication between various system layers. After that you'd have quite good general view of programming and set to do pretty much anything. Programming Operating Systems is then a chapter of its own, but I supposed you were not that interested about them.

Mika
Title: Re: Learning to program ???
Post by: diceman111 on September 27, 2007, 05:36:57 pm
Ok well I am pretty good with math (have studied at the university)
Title: Re: Learning to program ???
Post by: Mika on September 27, 2007, 05:53:37 pm
Then I would say about optimization:

[Local algorithms]

- Brent's method (secant and parabolical fitting with some really involved mathematical tricks) since you don't always have gradient information and this involves both secant and parabolical fitting methods, both of them are recommendable.

- Newton's method for multivariate problems (important)

- Conjugate Gradients method

- Levenberg-Marquardt damped least squares optimization (important)


[Global Algorithms]

- Spall's SPSA (this is interesting from mathematical point of view because common sense would tell this doesn't work. I suspect it was discovered by an accident.)

- Simulated Annealing (modelling of the natural cooling processes)

- Differential Evolution algorithm (evolution is always interesting)

- And the newest, anthill / bee colony optimization strategies

It will take a long time to go through each of these and understand why them work as they do. But remember that quadratic convergence rocks.

Neural networks I would also say could be beneficial to understand, especially if you can combine neural network with a optimizer.

Sorting routines are also important. Matrix routines and image filtering functions are also important. Basically, the Numerical Recipes will give you a brief introduction into the calculation algorithms. But I'm only a semi-professional, and would not like to know how the professional programmers calculate stuff in C++. Might be radically different and use bitwise operations.

Mika
Title: Re: Learning to program ???
Post by: CP5670 on September 27, 2007, 06:26:40 pm
Although that stuff is very interesting, it's highly specialized and would be of no use for a general purpose programmer to read up on. You aren't exactly going to be using conjugate gradients and finite element methods to fix FS2 bugs on Mantis. :p
Title: Re: Learning to program ???
Post by: Turey on September 27, 2007, 06:48:58 pm
If you know C++, start looking into the FSO code. Once you've understood enough of it, it's trivial to fix things.
Title: Re: Learning to program ???
Post by: Nuke on September 28, 2007, 08:51:23 am
its also trivial to break things worse :D