Advice for novice programmers thread

Programming, for all ages and all languages.
User avatar
Pype.Clicker
Member
Member
Posts: 5964
Joined: Wed Oct 18, 2006 2:31 am
Location: In a galaxy, far, far away
Contact:

Re:Advice for novice programmers thread

Post by Pype.Clicker »

Be curious. Of every new language that you hear of, of every new technique, programming design ...

If you can grab a book talking about early computer designs, addressing modes, opcodes to manipulate the stack, or how a garbage collector works, bless the day ;)

There's no such thing like a "best language" ... there are only unpractical use of a given language.
Crazed123

Re:Advice for novice programmers thread

Post by Crazed123 »

@Jordan3: Algebra is advanced now?
Kemp

Re:Advice for novice programmers thread

Post by Kemp »

Advanced algebra is ;D
Ryu

Re:Advice for novice programmers thread

Post by Ryu »

Some of the key points I'd advise:

1. Don't waste your time on useless code, or something that will not benefit you in the future. (Unless ofcourse its work)

2. Patients is the virtue. Without patients is a programmer who has stop advancing.

3. Abstract thinking is important. Almost every experience in life can be applied to another, this applies to reusable code or one that can be modified very easily for a specific case.

I'd agree that English is a must, IMO mathematics may be not nessessary however it just as important to me as being able to read assembly code. With it you'll have less weight on your shoulders. If you dig down far enough you'll eventually cross paths with math and or assembly. Just my two cents :)
User avatar
Candy
Member
Member
Posts: 3882
Joined: Tue Oct 17, 2006 11:33 pm
Location: Eindhoven

Re:Advice for novice programmers thread

Post by Candy »

Ryu wrote: 2. Patients is the virtue. Without patients is a programmer who has stop advancing.
You mean patience. Patients are the people that are in a hospital that don't work there.
3. Abstract thinking is important. Almost every experience in life can be applied to another, this applies to reusable code or one that can be modified very easily for a specific case.

I'd agree that English is a must, IMO mathematics may be not nessessary however it just as important to me as being able to read assembly code. With it you'll have less weight on your shoulders. If you dig down far enough you'll eventually cross paths with math and or assembly. Just my two cents :)
I very much agree on the last paragraph. If you can do the stuff around programming, you'll find programming (and designing) a lot easier.
Eero Ränik

Re:Advice for novice programmers thread

Post by Eero Ränik »

Candy wrote: Patients are the people that are in a hospital that don't work there.
Yeah, your definition would explain why I'm forced in a hospital bed and given medications each time I visit a friend or a relative there. I don't, indeed, work in a hospital.
Kon-Tiki

Re:Advice for novice programmers thread

Post by Kon-Tiki »

Kemp wrote:
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.
I can recommend AGI -> PHP/SQL -> C++
AGI teaches basic concepts (variables, syntax, basic logical thinking)
PHP/SQL teaches to work with databases, create functions, loops, etc.
C++ teaches the rest of OO and completes the teachings.
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 »

Guys?

Blame it on me being slightly intoxicated here at Breakpoint '06 if I'm being blunt, but I think that recommending a learning path across three or four languages is pretty stupid.

Find out what you really want to do, ask people who're doing right that which language they're using for it, and learn that language. No detour.

Learning a handful of language can round off your skills, but it can not set a foundation where there is none.

Oh, and SQL ain't no programming language...
Every good solution is obvious once you've found it.
Kon-Tiki

Re:Advice for novice programmers thread

Post by Kon-Tiki »

SQL isn't programming, indeed, but I know that, at least for me, it's given a far clearer understanding of how to create classes, especially data classes, in C++.
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 »

Aha...?!?

Well, if it worked for you... ;)
Every good solution is obvious once you've found it.
Kon-Tiki

Re:Advice for novice programmers thread

Post by Kon-Tiki »

Exactly ;)

(Btw, the data classes's cause of what to store in the class and what not, and what should be accessed in which way. SQL's far simpler for it, but if used correctly, it'll teach how to think out how to make the most usable classes while keeping them to a minimum and not making your code less complicated. It's an extra step, but can be a useful one when thinking in a certain way)
gawbul

Re:Advice for novice programmers thread

Post by gawbul »

Schol-R-LEA wrote:
Chris Cromer wrote: I would recommend learning PHP more than I would perl. ;)
I have to disagree, not because Perl is the better language, but because it is the more universal language. Whether PHP is a better language for Web scripting or not is irrelevant, since web scripting is only one part of what Perl is used for; its role in automating system administration and operation, while less visible, is far more important. Perl has long since supplanted C-Shell as the preeminent scripting language under Unix, while under Windows, it far outstrips the use of VB for Scripting (which is not to be mistaken for VBScript, which is M$ half-assed answer to Java Script). I have heard it estimated that amount of Perl code written daily exceeds that of all other programming languages combined, and it seems plausible. Given it ubiquity, if you don't know at least a little Perl, you're going to have serious problems.

In short, I included Perl for the same reason I included HTML and C: because in the programming field today, you don't really have a choice about it.
I agree! Perl is widely used for systems programming, shell programming/scripting etc. on top of its web applications. Especially in the latter versions which encapsulate OOP it is an all round language that everyone should know and people should understand how much it has evolved since its early scripting days.

My own personal ports of call for learning development have been:
  • be good at maths and physics (will help with advanced algorithms and coding at later stages). also being good at foreign languages can also help as your mind is already acustomed to learning different languages.
  • (X)HTML - for basic "programming" technique, syntax and to facilitate "the learning mindset".
  • Perl && mod_perl - to move on to learning correct programming syntax and structure. start developing OOP concepts as well as (the added extra of) expanding your knowledge of Internet protocols i.e. HTTP. teaches you about interpreted language development.
  • C - to start developing in more detail the understanding of high level languages and structured programming methodology as well as expanding on the previous topics learned. with C being very similar to Perl in syntax the transition should be far easier but as C is compiled it will also introduce you to compiling, linking and debugging.
  • C++ && || Java - expands even further on your existing knowledge but further increases understanding of OOP, compiling and interpreting.
  • asm and system architecture (x86) - this is the ultimate and lowest level (or pretty much) of development you can experience and teaches you how the system works at the basement level, lol. this helps you learn pretty much everything about how the computer works and will help you with more advanced programming.
the.future.zone

Re:Advice for novice programmers thread

Post by the.future.zone »

First and foremost, thank you all for all the advice. I'm a novice programmer, and I certainly got some insights from what y'all have written(though a little confused about where to actually start, due to too many discrepancies in the explanations, but no biggie).
I got a question though: It seems a programmer's life is a nerdy life, if one's supposed to know all much about all those stuff, so are you all nerds?
For a programmer who's moving towards the robotics engineering side, which languages would be bes for them tl learn? I heard the C family is the best cuz it's multi-platformed. Any insights, tips ,and contributions would be so appreciated.
Kemp

Re:Advice for novice programmers thread

Post by Kemp »

I prefer to call myself a geek. Nerd has negative connotations whereas geek just means you know a lot about something (not necessarily computer related even) *shrugs* Whatever gets you through the day.

For embedded systems C tends to be the most supported language that you can get the most help for, but you should check out specifics for your particular area. Some of our embedded systems needed NesC, which can only be called C if you ignore most of it :P
Cheery

Re:Advice for novice programmers thread

Post by Cheery »

Hmm. Advice for novice programmers... ;) You are not novice. There are no 'levels' in real world; beginner, novice, master, doesn't map well with the reality. You just understand some programming stuff, that's all.

There is no language you should learn, neither mathematics. The most important thing you should learn is to program. This doesn't mean mathematics or C. Instead it means you should understand what a computer really is and what can you do with it; Increase the pattern size of mental term 'computer'.

I'd say programming is about giving commands; manipulating systems to do what you want. What I've noticed to gain with my hobby and feel important are:
- Capability to gain understanding at an amazing speed, this is required to understand the really much changing output you get.
- Capability to understand patterns amongst complex context. You need to specify what you want, if what you want can be said simpler without destroying information content, then you can also write the program to be simpler.

Everything else, languages you use, processor architecture you program to (biological cell is a processor!), mathematical notations&logic you use(mathematics==language), is secondary to take a benefit from programming.
Post Reply