Page 1 of 1

Recommendations for learning general programming concepts

Posted: Fri Aug 10, 2007 4:12 pm
by Pomond
Hi Everyone:

I think it's great that the Joomla team has created this forum to help people get into the coding/programming aspects of Joomla.  I look forward to exploring the resources here and expanding my knowledge.

However, one of the things I struggle with goes beyond just Joomla/PHP and relates to core programming concepts in general: things like scope, classes, functions, variables, operators, etc. etc. etc.  For example, I could look at a piece of code that comprises a "counter/counting" function (i = i+1 or somesuch) and pick apart what's basically going on, but I lack the conceptual underpinnings to understand how this would be most effectively placed in a function, or how to write such a function from scratch, or how a function can most effectively be positioned and accessed in a larger program.

In other words, I do have an idea of what the above elements (scope, classes, function, etc.) are, but I don't know how they all mesh together to result in a final, working piece of code.  I need some help with this conceptual next step, and I wanted to ask the community about what you'd recommend for resources and approaches to gaining this knowledge.

Are there any books that stand out in this regard that you can recommend?  Should I consider taking a class, and if I do, what should the class cover?  Or should I just start working through tutorials and try to absorb the concepts by osmosis?

I imagine that different learning techniques and/or a combination of the above works for different people, but I'd be interested in hearing some recommendations or examples of how you have learned to code.  (You may also want to note that I have a decent understanding of information technology in general and tons of experience working with HTML and CSS, however, I'm coming at this from a marketing/communications background.)

Thank you in advance for your feedback and insight!

Re: Recommendations for learning general programming concepts

Posted: Fri Aug 10, 2007 5:49 pm
by igeoffi
Recommendation: Don't get the "________ for Dummies book"
Doesn't help you learn much.

Re: Recommendations for learning general programming concepts

Posted: Fri Aug 10, 2007 9:36 pm
by jalil
Pomond wrote:However, one of the things I struggle with goes beyond just Joomla/PHP and relates to core programming concepts in general: things like scope, classes, functions, variables, operators, etc. etc. etc.  For example, I could look at a piece of code that comprises a "counter/counting" function (i = i+1 or somesuch) and pick apart what's basically going on, but I lack the conceptual underpinnings to understand how this would be most effectively placed in a function, or how to write such a function from scratch, or how a function can most effectively be positioned and accessed in a larger program.


interesting point. i think learning programming is something personal. i=i+1 can be mind bloggling or easy depending on your mental preference. it is preference, not ability.

Programming is about logic, and a 10 year old kid can beat a 60 year old doctor at Chess, meaning logic, as in Chess, has nothing to do with qualification or experience or age. Concepts are not something immediately digestible to some, though some grasp it within an instant.

Just play around with the ideas/concepts etc. It will just hit you one fine day, then you wont want to stop !. And make it easy, because it is actualy easy, just remove the terminologies and words and use your own mental description of them. These terms were invented merely for us to communicate with each other.

hope this helps.

Re: Recommendations for learning general programming concepts

Posted: Fri Aug 10, 2007 10:30 pm
by Rogue4ngel
One thing you have to keep in mind is that programming is a language.  It is a way we speak to a computer so it understands us and does what we'd like it to do.

Think of it like learning a foriegn language.  Like any language, you have basic semantics, structure, and a logical order of things.  And just like a language, there are exceptions to many rules.  And nuances in translation and function.  Even if you have a good handle on a language, there are things that are going to be beyond your scope of understanding, and only time and experience can change that.

So anyone who thinks they should grasp programming in a short period of time isn't really being fair to themselves: it is a process and will take a great deal of work, study and practice to even become mildly proficient.  Don't expect that you'll be a programmer in a few weeks of study. 

At the same time, don't let that discurage you.  Everything needs a beginning, and every has to start somewhere. 

And remember, when you're in Coding 101, there is no such thing as a stupid question ;)

Re: Recommendations for learning general programming concepts

Posted: Thu Aug 16, 2007 1:23 pm
by mudoch
I agree with our moderator, Programming is a language.  For me the most important lesson I learning about programming was not from a book but a college course I took called "Computers in Problem Solving"  The course took the approach of how do you teach a computer how to write your name.  Most people started out with "pick up your pen..." and the teacher replying with "do not understand instruction `Pick`" 

From that I realized programming is just a process of putting the correct syntax in the correct order to get the desired output. Ok it's not a book but perhaps a book on how to go about the Process of solving a problem is a good start as most applications are created to solve a problem.  Then as for syntax... just about any book that you can read and try out the provided examples is a good place to go next.

Re: Recommendations for learning general programming concepts

Posted: Fri Aug 17, 2007 6:58 pm
by Stinkbug
It might also be helpful to pick a language that you want to learn.  Syntax and built in functions can be different from language to language, so in order to not get them confused, pick one language and focus on it.  Once you learn it, you may find other languages won't be to hard to pick up after that.

Also, I would recommend getting a good book.  Online tutorials are hardly ever descriptive enough to learn the whole language that way.  One thing that really helped me getting started was having a mentor.  Someone that knew the language and someone that I could go to when I got stuck.

Then test and play...  it'll often be a matter of trial and error.

I wouldn't say classes are necessary, however if there is no other way for you to get a mentor I would say take a class (and hopefully the teacher will be good and helpful).

Re: Recommendations for learning general programming concepts

Posted: Fri Aug 17, 2007 7:06 pm
by Pomond
Thanks for the feedback and ideas, everyone.  I have started into some of the tutorials at http://devzone.zend.com/node/view/id/627, which seem to be pretty good thus far.  I'm also going to work with the materials available to the 1.5 newbie coder forum, a very helpful resource.

Re: Recommendations for learning general programming concepts

Posted: Sat Aug 18, 2007 2:29 pm
by AmyStephen
Pomond wrote:Thanks for the feedback and ideas, everyone.  I have started into some of the tutorials at http://devzone.zend.com/node/view/id/627, which seem to be pretty good thus far.  I'm also going to work with the materials available to the 1.5 newbie coder forum, a very helpful resource.


Nice find!  8)

Amy :)

Re: Recommendations for learning general programming concepts

Posted: Wed Aug 22, 2007 12:32 am
by soup a loignon y crouton
@pommond

a good way for me to learn a new computer language was to create small examples.

1. look at the joomla 1.5 code in components like content , weblinks... a tutorial on joomla site explains how it is done

2. look at what they do, then go to site like devzone to read some tutorials on a specific aspect.

3. finally start your OWN component hello world. nothing fancy. just add a difficulty at a time. the key is to really understand the main functions to manage a record: ie  CRUD (create/read/update/delete),

once you are able to create a small component allowing you to manage a record , you already learned a lot. 

finally noting prevents you in the GPL world to download components from the extensions area and look at the code.

you will be able to identify snipets of codes used to validate or do a specific task and understand more concepts.