Fred Stluka on 26 Mar 2007 20:48:37 -0000


[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

Re: [PLUG] Educational Languages


Matthew,

I'd be interested to hear more about how Java requires "quite a lot of
boilerplate and setup to do a simple app, which would be the majority of
work in an intro class".  Are you referring to the class declaration and
method declaration:

    class App1 {
        public static void main(String[] args) {
            System.out.println("Hello World!");
        }
    }

When I took my first programming class in Pascal 28 years ago, I was
shown a sample in a book, and told to duplicate the boilerplate stuff
that had to surround the main subroutine and not worry about what it
meant.  Just replace the body of it with my own if statements, while
loops, etc.  It wasn't very difficult.  Much later in the course, we
went back and discussed the concept of command line parameters that
could have been passed in, return values that could have been returned
to the command line processor, etc.

I can't imagine the simple Java syntax shown above being a serious
hurdle to any introductory student or teacher.  It certainly wouldn't
be "the majority of work" in any class.

Is there some other boilerplate or setup that I'm missing?
--Fred
--------------------------------------------------------------------------
 Fred Stluka -- mailto:fred@bristle.com -- http://bristle.com/~fred/
 Bristle Software, Inc -- http://bristle.com -- "Glad to be of service!"
--------------------------------------------------------------------------


Matthew Rosewarne wrote:
On Tuesday 20 March 2007 19:35, Carl Gustafson wrote:
  
Well, I'll agree with you on Java. My take on Java is that it was designed
to keep novice programmers from chopping their fingers off, unlike C or
C++, which are more like power saws without bladeguards.
    

I'd say you'd have to be crazy to teach C++ to beginners, it's such a kludgey 
language it's even frustrating for those who already know what they're doing.  
C is less so, but doesn't do OOP and seems like a great way to teach novices 
some very bad habits.

  
There are a number of things I don't like about Java, and some things Java
does that I think an experienced developer can do better in other
languages, but for beginning programmers, especially in high school or
middle school, the automatic memory handling (garbage collection, etc.),
strong typing, and a development environment that handles a fair amount of
the nit-picking makes a good starting point.
    

The problem I have with Java is it's awkwardness, it takes quite a lot of 
boilerplate and setup to do a simple app, which would be the majority of work 
in an intro class.  The teacher I'm helping with this did try to teach the 
class with Java, but found it such a pain that he switched it back to Pascal 
the following year.  That said, the AP argument is quite a good point and 
definitely worth consideration.

What I see as being a good approach would be to use the "How to Think Like a 
Computer Scientist" book in _several_ languages _simultaneously_, Python & 
Logo being my picks.  For example, the teacher could explain the concept and 
demonstrate it using Logo and the assignment for the student would be to use 
that concept in Python.  This approach prevents the students from becoming 
too language-focused, a problem I've noticed in many of the classes I've 
taken myself, so the concepts stay in the forefront and the implementation 
becomes secondary.  Additionally, a sort of special session could be taught 
to those wanting to take the AP, where the lessons would also be explained 
and exercised in Java.

Now if only we could shoehorn Eiffel in there somewhere...
  

___________________________________________________________________________ Philadelphia Linux Users Group -- http://www.phillylinux.org Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce General Discussion -- http://lists.phillylinux.org/mailman/listinfo/plug
___________________________________________________________________________
Philadelphia Linux Users Group         --        http://www.phillylinux.org
Announcements - http://lists.phillylinux.org/mailman/listinfo/plug-announce
General Discussion  --   http://lists.phillylinux.org/mailman/listinfo/plug