Page 3 of 13

Re:Advice for novice programmers thread

Posted: Fri Jan 28, 2005 11:22 am
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.

Re:Advice for novice programmers thread

Posted: Fri Jan 28, 2005 11:39 am
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.

Re:Advice for novice programmers thread

Posted: Wed Feb 23, 2005 4:14 pm
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

Re:Advice for novice programmers thread

Posted: Thu Feb 24, 2005 12:28 am
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.

Re:Advice for novice programmers thread

Posted: Mon Apr 18, 2005 11:02 am
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

Re:Advice for novice programmers thread

Posted: Tue Jul 05, 2005 11:04 am
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.

Re:Advice for novice programmers thread

Posted: Sun Aug 21, 2005 2:13 pm
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 ;-)

Re:Advice for novice programmers thread

Posted: Tue Aug 23, 2005 9:11 am
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.

Re:Advice for novice programmers thread

Posted: Wed Aug 31, 2005 3:56 am
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.

Re:Advice for novice programmers thread

Posted: Wed Sep 07, 2005 7:27 pm
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.

Re:Advice for novice programmers thread

Posted: Sun Oct 23, 2005 12:26 pm
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).

Re:Advice for novice programmers thread

Posted: Tue Nov 01, 2005 9:57 pm
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?

Re:Advice for novice programmers thread

Posted: Sat Jan 07, 2006 12:44 pm
by kataklinger

Re:Advice for novice programmers thread

Posted: Sat Jan 07, 2006 1:16 pm
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.

Re:Advice for novice programmers thread

Posted: Sat Jan 21, 2006 4:19 pm
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)