Advice for novice programmers thread

Programming, for all ages and all languages.
dh

Re:Advice for novice programmers thread

Post by dh »

Don't be afraid to take on something that seems fairly "large", do your research and ask questions and the ordeal won't be very big.

(Just an opinion) I don't think "RAD" (rapid applacation development) is all that good. Make something, test it, debug it, and then add more. I would say that many bugs come from piling too much on at once.
User avatar
Solar
Member
Member
Posts: 7615
Joined: Thu Nov 16, 2006 12:01 pm
Location: Germany
Contact:

Re:Advice for novice programmers thread

Post by Solar »

abless wrote: Furthermore, be a good mathematician.
Not necessarily. Maths is a requirement for Computer Science, and certain fields of software development. But I work for a major bank, in a department where we juggle loads of critical financial data every day. And while I'm just competent enough in maths to correctly implement a formula (including computer's limited precision issues that many mathematicans tend to ignore), I leave specification of said formula to the experts - the business department.

So my advice is: If you're a good mathematician, good for you, it will certainly help you in the business. If you're not, you've got to be that bit better in other areas, but you can still make it if you're sharp.
Every good solution is obvious once you've found it.
creichen

Re:Advice for novice programmers thread

Post by creichen »

Hi,

one point about mathematics wrt Computer Science: Unfortunately, most US schools seem to teach calculus as the only kind of mathematics CS people need to know. That's neat if you build flight simulators or something like that, but mathematical logic and algebra would (in my opinion) be far more useful for grasping programming.

Given the choice, learn logic and universal algebra; the only useful thing I got out of my calculus classes was induction (which, however, was covered again later in algebra/logic classes).

Why are these two things good for you?

(1) They teach you to reason about your program's inherent logic.
(2) They teach you to abstract from thinking about the lines of code in your favourite language to thinking about the mathematical transformations you perform (note that you'll often have to "bridge the gap" yourself here, as many mathematics teachers are not hardcore coders).
(3) Thus, they teach you to understand code-- and slices of code-- in more abstract, more manageable terms.
(4) They teach you to denote interesting properties of critical pieces of code, and how to reason about them.
(5) Altogether, they teach you to deal with "nontrivial" aspects of program development, such as how modules fit together or how to separate between the /meaning/ of your code and the /operations/ it performs (which helps a lot when pondering optimisations or refactorings).

Now, unless you're very lucky, you won't learn any of those things directly. However, you'll learn views on "abstract things" in general that are fully applicable to programming and quite different from what you may be used to, and those views will make it much easier to develop those points (1)-(5).
(That's my belief anyway; there is also at least one publication out there-- in ICFP'04, I believe, though I'd have to check-- which supports this point).

(Disclaimer: You can develop (1)-(5) without logic and algebra, just as you can develop the foundations of Category Theory without having any knowledge about current mathematics-- it just seems easier to develop them with those tools).

-- Christoph
distantvoices
Member
Member
Posts: 1600
Joined: Wed Oct 18, 2006 11:59 am
Location: Vienna/Austria
Contact:

Re:Advice for novice programmers thread

Post by distantvoices »

I daresay some decent knowledge about Logics (the famous truth tables) and about how to transform formulas into code and vice versa is always nifty.

this Induction stuff, what's this about? I've never got my brain wrapped around it. Maybe it's been explained too complicated to me.

calculus (shifting stones, that is) is a neat art. You go shopping and know you canna be tricked because your brain has already calculated what is due to pay. *gg* Hm. I have yet to see, where Integrals and Possibility calculation fit in.
... the osdever formerly known as beyond infinity ...
BlueillusionOS iso image
srg

Re:Advice for novice programmers thread

Post by srg »

Solar wrote:
abless wrote: Furthermore, be a good mathematician.
Not necessarily. Maths is a requirement for Computer Science, and certain fields of software development. But I work for a major bank, in a department where we juggle loads of critical financial data every day. And while I'm just competent enough in maths to correctly implement a formula (including computer's limited precision issues that many mathematicans tend to ignore), I leave specification of said formula to the experts - the business department.

So my advice is: If you're a good mathematician, good for you, it will certainly help you in the business. If you're not, you've got to be that bit better in other areas, but you can still make it if you're sharp.
If you'd have to be a good mathematician do be a good programmer than I'd be sunk :-[

srg
Austin2359

Re:Advice for novice programmers thread

Post by Austin2359 »

First of all thank you all for the wonderful advice, the best I've seen on the net thus far.

My advice is this. There are some things that you can just study in relaxation, make a few breakthroughs of thought, and then you've got it. Math is an example. However, programming is not one of these things. It is going to take lifestyle changes to be a good programmer, it must be a labor of love, and like someone we all know says about a certain war, you can't set a timelimit and just work for that long to learn it. If you keep telling yourself that it will be over soon, you are probably kidding yourself. It is a long fight and unless you learn to love it, it is going to be a hellish struggle.
NotTheCHEAT

Re:Advice for novice programmers thread

Post by NotTheCHEAT »

Math is very important for programmers. I'm only 14, yet I've sat through some of my dad's Algebra II classes (my dad is a high school teacher) and picked up enough trig to make some primitive graphics demos (trust me, nothing worth seeing :-D) You do have to know basic Arithmetic and Algebra at least.

On the subject of "Non-programming things you should be good at", I seriously recommend learning English well. There are many multi-lingual programmers, but I would say that the vast majority of programmers speak English, and knowing English is helpful. First of all, because most programming languages are English. No, really, they are! Does "printf" sound like Spanish or Russian? And, many technical terms do not exist in other languages. The words "bit", "byte", and "dword", for example, will make very little sense in Portugeuse. Also, since most programmers speak English, you can get more help by asking questions (in English) in forums like this one. And English speakers prefer you to use good grammar and spelling, if possible, though if you make mistakes we try to be understanding ;-)

Other than math and English, it doesn't matter what your background is so long as you study hard and try to be a good learner ;-)
User avatar
df
Member
Member
Posts: 1076
Joined: Fri Oct 22, 2004 11:00 pm
Contact:

Re:Advice for novice programmers thread

Post by df »

i noticed the pragmatic programmers have a new book coming out soon

Learn To Program
http://www.pragmaticprogrammer.com/titl ... index.html

might be good for novice programmers... I like their books. good stuff.
-- Stu --
Freanan

Re:Advice for novice programmers thread

Post by Freanan »

I think "standard math" is overrated.
Analysis and vector algebra are only needed if you want to do some physics simulation or a game (or if you want to study ;) ).
Probability calculation sucks, but maybe the combinatorics part of it is usefull in calculating the complexity of an algorithm (Nice for professional computer science, but not really needed for coding in general).
Graph theory might come in usefull when doing data structures like trees or linked list or something like that or for solving problems that are connected to graph theory ;) .
Number theory is needed for crypto, but where else?
So the only use that those things bring the general newbie (apart from help with specific problem sets) programmer might be some exercise in logical/mathematical reasoning.

But i think the only kind of math that will really be helpfull (but not reqired) in all cases is what we call literally translated "theoretical computer science" in german and what actually is math too: Formal logics/ boolean algebra, the lambda calculus,...

Just my opinion ;)
Of course math is cool and should be in every scientific curriculum.
Crazed123

Re:Advice for novice programmers thread

Post by Crazed123 »

My advice to novice programmers is to learn on your own. Seriously, I'm looking into taking the Computer Science AP exam this year, and it's a bunch of Object Oriented Paradigmatic Java Crap. In other words, it'll only teach you How to Think Like an Enthusiastic Microserf.

To learn on your own, I recommend starting out with either BASIC or Perl (something interpreted). Learn Pascal from there to teach you compiled, imperative and most importantly STRUCTURED programming before moving on to C or C++ as you please. From there, you should have a good enough grounding to learn any higher-level language you want (such as Eiffel or Scheme) and understand at least two or three different ways of programming.

If you REALLY want to have fun, learn LISP!

Learn English, too.
Schol-R-LEA

Re:Advice for novice programmers thread

Post by Schol-R-LEA »

I don't believe I've posted this link before, but some months after I posted the OP for this thread, I wrote a longer essay on this subject, based on a posting at the Dev Shed Beginner's forum. The current version of "A Highly Opinionated Review of Programming Languages for the Novice" is up on my Freeservers site. I'm aware that it still could be expanded and refined further; any contructive criticism would be appreciated. On the same host are the current versions of my "Scheme in Short" and "Understanding the C/C++ preprocessor" essays as well, which could also use some concrit (especially the latter; there are several parts that are incomplete or even incorrect, which I need to fix Real Soon Now when I have the chance).
Crazed123

Re:Advice for novice programmers thread

Post by Crazed123 »

Seems pretty good.

Recently I've installed gcl and have been reading an old LISP book in order to learn how to use it, and I have to say it's a damn powerful language. Though does anyone know of a good tutorial for modern Common Lisp?
User avatar
kataklinger
Member
Member
Posts: 381
Joined: Fri Nov 04, 2005 12:00 am
Location: Serbia

Re:Advice for novice programmers thread

Post by kataklinger »

Kemp

Re:Advice for novice programmers thread

Post by Kemp »

To learn on your own, I recommend starting out with either BASIC or Perl (something interpreted). Learn Pascal from there to teach you compiled, imperative and most importantly STRUCTURED programming before moving on to C or C++ as you please.
You pretty much nailed my path there, lol.

BASIC -> Pascal -> Delphi -> C -> C++

Assembly and Python mixed in there as well. Python is a great language I have to say.
earlz

Re:Advice for novice programmers thread

Post by earlz »

1:An OS shouldn't be your first project
2:knowing the basics of advanced math(algebra) are always useful
3:knowing what hex is is also a nice pleasure
4:as mentioned html is very useful and a good first programming experience
5:C is not exactly the ideal first language or second language
In my own personal experience i started with html(about 2 years ago), tried a lot of basics,used euphoria(i think thats the name) for a few weeks,started using darkbasic pro. and stuck with it until well now(still using it for some things), about 6 months after starting darkbasic pro i tried C got as far as printf and ifs(not even loops) and quit then about 1 year ago started using bcx(basic to C translator) to create some dlls, then started really learning C about 1 month later and well then about 6 months ago started learning asm "on-demand"(learned what i needed when i needed it) only because i wanted to make an OS

now back on topic
6:when/if you start using C check this list for common mistakes http://www.andromeda.com/people/ddyer/topten.html
7:I reccommend when starting compiled languages to use a basic of some sort(preferably not qbasic)
Post Reply