Recommendations for learning general programming concepts

Have a programming question regarding your component, plug-in, extension or core hacks? Have an interesting tidbit, FAQ or programming tip you’d like to share? This is the place for you.

Moderators: tjay, seadap, Rogue4ngel, matthewhayashida

Post Reply
User avatar
Pomond
Joomla! Apprentice
Joomla! Apprentice
Posts: 11
Joined: Thu Jun 22, 2006 3:01 pm
Location: Chicago
Contact:

Recommendations for learning general programming concepts

Post by Pomond » Fri Aug 10, 2007 4:12 pm

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!
"Be seeing you"

igeoffi
Joomla! Enthusiast
Joomla! Enthusiast
Posts: 148
Joined: Sun Apr 16, 2006 12:20 am
Location: SoCal

Re: Recommendations for learning general programming concepts

Post by igeoffi » Fri Aug 10, 2007 5:49 pm

Recommendation: Don't get the "________ for Dummies book"
Doesn't help you learn much.
Have a question? Visit the Joomla! FAQ first to see if has been answered already.
http://docs.joomla.org/FAQs
JoomlaPack - an Open Source Backup Component for Joomla!- http://www.joomlapack.net

User avatar
jalil
Joomla! Enthusiast
Joomla! Enthusiast
Posts: 128
Joined: Wed Jul 04, 2007 4:54 am
Location: Kuala Lumpur, Malaysia
Contact:

Re: Recommendations for learning general programming concepts

Post by jalil » Fri Aug 10, 2007 9:36 pm

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.

User avatar
Rogue4ngel
Joomla! Enthusiast
Joomla! Enthusiast
Posts: 199
Joined: Sun Nov 26, 2006 10:46 pm
Location: New York

Re: Recommendations for learning general programming concepts

Post by Rogue4ngel » Fri Aug 10, 2007 10:30 pm

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 ;)
If you're not a part of the solution, you're a part of the problem.

mudoch
Joomla! Apprentice
Joomla! Apprentice
Posts: 21
Joined: Sat Jun 02, 2007 8:34 pm

Re: Recommendations for learning general programming concepts

Post by mudoch » Thu Aug 16, 2007 1:23 pm

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.

User avatar
Stinkbug
Joomla! Fledgling
Joomla! Fledgling
Posts: 2
Joined: Wed Jun 20, 2007 8:29 pm
Contact:

Re: Recommendations for learning general programming concepts

Post by Stinkbug » Fri Aug 17, 2007 6:58 pm

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).

User avatar
Pomond
Joomla! Apprentice
Joomla! Apprentice
Posts: 11
Joined: Thu Jun 22, 2006 3:01 pm
Location: Chicago
Contact:

Re: Recommendations for learning general programming concepts

Post by Pomond » Fri Aug 17, 2007 7:06 pm

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.
"Be seeing you"

User avatar
AmyStephen
Joomla! Guru
Joomla! Guru
Posts: 579
Joined: Wed Nov 22, 2006 3:35 pm
Location: Nebraska
Contact:

Re: Recommendations for learning general programming concepts

Post by AmyStephen » Sat Aug 18, 2007 2:29 pm

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 :)
~*~ Joomla!'s Queen of the Blues - Jennifer Marriott ~*~
http://OpenSourceCommunity.org/node/1719/

soup a loignon y crouton
Joomla! Apprentice
Joomla! Apprentice
Posts: 7
Joined: Tue Aug 21, 2007 12:38 am

Re: Recommendations for learning general programming concepts

Post by soup a loignon y crouton » Wed Aug 22, 2007 12:32 am

@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.
Last edited by soup a loignon y crouton on Wed Aug 22, 2007 2:10 am, edited 1 time in total.
Joomla : so easy , a CEO can do it.


Post Reply