training

Nathan England nathan at paysonlinux.org
Mon Dec 19 13:59:18 MST 2011


Michael,

When I got started in computers in the early nineties, the majority of 
documents I found about learning to program recommended C or Python. One of my 
particular problems is, I'm not really good at playing around with something 
unless I have a real idea what I want in the end. So all my attempts to learn 
C failed miserably as I really had no vision of what I was trying to 
accomplish. Because of this, I can code 'Hello World' in about 20 languages! 
But I am sadly master of none.

When I decided to start programming I started with HTML and bash. I realize 
HTML is not a programming language, but I really think HTML is a good starter 
for teaching people how to code in a "human readable" manner. I have seen HTML 
code that is so horrendous nobody will touch it. That may be true with any 
programming language, but HTML has generally NO learning curve as it is 
incredibly simple to learn and easy to understand, so good habits can be 
picked up quickly and learning to write code where the code flows and is lined 
up properly with matching blocks of code is easily done. 

The other I decided to learn was Bash. Having no vision of some great program 
I wanted to write, I did want to learn how to automatic some simple tasks on 
my pc, so bash seemed a reasonable starting place. There are many bash howto's 
out there and most are good enough.

One regret I have though is I never went back to Python. Today, a lot of KDE 
widgets and plasma apps are written entirely in Python. If you suffer from a 
lack of ideas what you really want to code once you learn, why not try to code 
a simple Python widget for Plasma or KDE's superkaramba? Go through a couple 
Python walk throughs then find a cool widget you like from www.kde-look.org or 
numerous other places and download the source for it and start playing with 
it. Weather apps abound in droves, but the reason is because Python is 
incredibly powerful and very easy to learn with a quick return on investment 
time as you'll be able to make usable things quickly.

Just my .02

Nathan

On Monday, December 19, 2011 01:38:52 PM Michael Havens wrote:
> I think I'll take Kevin's advice. After googling the differences between OO
> and procedural programming it looks to me as if the natural progression for
> a beginner would be to learn bash and then learn Ruby. Would trying to
> learn both at the same time be wise or not? You know, finding good teaching
> material can be so difficult; could someone recommend a good pdf or
> something that teaches Kevin's  recommendation?
> 
> The reason I'm taking this advice is after trying to compile the second
> program I kept getting errors and I had no idea what they were saying. (see
> below). I think what it is saying is that the error is in line 28 character
> 3. But it looks exactly like the instructions are telling me to make it! [
> 'exit(1);' ] (w/o the square brackets or apostrophes).
> 
> argexample2.c: In function ‘main’:
> argexample2.c:28:3: warning: incompatible implicit declaration of built-in
> function ‘exit’ [enabled by default]
> 
> On Mon, Dec 19, 2011 at 10:50 AM, Kevin Fries <kevin at fries-biro.com> wrote:
> > I respectfully disagree.
> > 
> > C is a GREAT language.  It is as powerful a modern language as you will
> > find.  But IMHO, learning to program in C, is like learning to hit a
> > fast ball from Randy Johnson.  Learn to crawl before you walk.
> > 
> > You have two different camps on the programming front: Procedural and
> > Object Oriented (OO).  And because black and white are just too
> > limiting, you have a billion shades of gray in between.  Languages that
> > incorporate pieces of both camps.
> > 
> > For pure OO programming, you really only have one choice in a modern
> > language, Ruby.  It takes OO to a purist stage, and therefore is my
> > choice in recommendation for learning this style of programming.  Once
> > you learn pure OO, you will be able to appreciate the non-pure elements
> > of languages like Python, Java, and C++.
> > 
> > For procedural programming, I generally suggest, Bash.  Yep, Bash.  It
> > has many of the features you need, without allowing you access to step
> > on other programs (bad pointer assignments, or even pointers at all).
> > From Bash, I like to look at (at least from a training standpoint) Perl
> > as a more complex version of bash.  It will fill in many of the missing
> > pieces.  As Keith said, if you then go on to C, C will make many of the
> > other languages far more clear.  C opens up all the keys to the kingdom.
> > But until you know enough to understand the questions, C can be
> > overwhelming.  I recommend learning C, but only once you understand
> > programming better.
> > 
> > Some people say, to learn a procedural language first, then learn object
> > orientation.  Others say learn OO, its more modern and then go on to
> > procedural languages like C only if you need to.  My opinion is that it
> > does not matter.  As a professional programmer, and Sys Admin (I work
> > both sides of this fence), I have different needs for different
> > situations.  As a professional I mix multiple languages together quite
> > often (right now I am working on a multi-platform [i.e. Linux, Mac, and
> > Windows] library, so I am using Ruby, then making it accessible to
> > automation on our Linux servers by writing a Bash access library on top
> > of that).  So, I say, just learn one, don't worry about it.
> > 
> > The difference between OO and procedural is organizational.  An integer
> > is an integer, a string is a string, but how you manipulate it may
> > differ.  Its more important that you get programming concepts down, than
> > it is to learn any one particular language.
> > 
> > My advice, and I have given this often... Learn Ruby.  IRB gives you an
> > excellent playground.  Its interpreted so you do not have to deal with
> > the compile/make cycle.  And you can build some useful, multi-platform
> > things with it.  You can extend it with a Web Application platform
> > (Rails), and run may of your programs on Windows and Macs, not just
> > Linux.  Show off your work, and get encouragement from others.  Once you
> > feel like you know what you are doing... Pick another language, like
> > Perl, or C.
> > 
> > The most important advice is, sorry Nike, Just Do It.
> > 
> > Kevin Fries
> > 
> > On Mon, 2011-12-19 at 09:23 -0800, keith smith wrote:
> > > I would second starting with C.  I learned and used several
> > > languages
> > > before taking a C class.  C helped me understand the others.
> > 
> > ---------------------------------------------------
> > PLUG-discuss mailing list - PLUG-discuss at lists.plug.phoenix.az.us
> > To subscribe, unsubscribe, or to change your mail settings:
> > http://lists.PLUG.phoenix.az.us/mailman/listinfo/plug-discuss


More information about the PLUG-discuss mailing list