My mother wants to code?

Robbie Carlton wrote:

I'm not sure that teaching someone both a procedural language and a
functional language is a good idea, it seems like they will just end up
confused.

-snip-

"At Oxford, we use Oberon as the second language we teach to our
undergraduate students (the first one is Haskell). We chose it because
of its cleanliness and simplicity, and because of the availability of
books that emphasize clear reasoning about programs."

http://spivey.oriel.ox.ac.uk/mike/obc/

# Sorry, a couple of typos... fixed:

francois = Ruby::Talker.find( :name => 'Francois Paul' )

francois.siblings.map do |sibling|
  java_classes = sibling.classrooms.select do |classroom|
    classroom.subject == :Java
  end
  java_classes.each { |classroom| classroom.delete( francois.mom ) }
end

ruby_class = Classroom.new(
  :subject => :Ruby,
  :instructor => francios
)

ruby_class.students << francois.mom
ruby_class.ring_bell!

···

--
Jacob Fugal

Selon Francois Paul <francois@bagasie.com>:

To update on the situation:

I had a chat with everyone involved weighing Ruby and Java against each
other and it was decided to go with Ruby.

That's really nice!

my mother and my dad are now going through Chris' tutorial.
They are both enjoying it very much - and my dad (coming from the VB for
applications world) is so impressed with how beautiful Ruby is.

They see learning ruby as something they can do together as a family
activity and everytime I pop around for a visit my mom first has to show
me her latest little program.

It seems to be one of the constants of Ruby: it gives you instant fun and
productivity.

so ... we are steadily becoming a family of rubyists. (if only my little
sister and my wife would take interest, but franky i think that would
become scary (besides hell would have to freeze over first))

hell.freeze if !hell.frozen?

OK, let's start now! :slight_smile:

I think my parents are happier people (or at least they have more fun)
today because of Ruby.
She'll probably join the list in a couple of months, when she gets a
solid internet connection at home, and i'll introduce her then.

I think this could be worth of an article, maybe about your family discussion
and with which arguments Ruby won over Java. Is your mother (or maybe your
father) keeping a diary of her progress? That could also eventually be an
interesting read.

Anyway, keep us posted about their progress!

···

--
Christophe Grandsire.

http://rainbow.conlang.free.fr

It takes a straight mind to create a twisted conlang.

Chris Pine wrote:

other language offering all that, and thus no other language better to
start with. (Though I am obviously totally biased, so take all of
this with a grain of salt!)

Grain of salt indeed.. How about BASIC and/or Pascal?

--Steve

In article
<3d980e1f0510120154v4c5da3f3x913e6d0bc0fb0ea5@mail.gmail.com>,

> I am not sure, if Ruby is the best language to
> learn programming, but I am quite sure, that Java isn't.

Absolutely! And great examples. I'm amazed that people would suggest
Java as a first language. How many people could write that Java
program without looking up a single thing? I certainly couldn't
(though I don't write much Java anymore, so maybe that's just me).

A learning IDE, like BlueJ, will insulate a student from most of the
Java cruft. IDEs like IDEA or Eclipse make generating the boiler plate
a single button press.

It really depends on what the student wants to do, and how they want to
get there. If you are going to teach someone, try to figure that out,
and try not to color it with your own preconceived notions. I am always
amazed at Linux folk who try to teach newbies how to program with
vi/emacs and make, not even considering that different people have
different learning styles and different needs.

(I have heard of the opposite too, where a make dude cannot stand IDEs,
and is forced into a big design tool like weblogic. That usually does
not last that long, because most make-comfy folk will quit a job like
that.)

Frankly, you could do worse that Java for a first language. It teaches
strong typing, packaging, OO, and a bunch of other concepts, and has
libraries to do darn near anything.

You could also do worse than Ruby. Again, it depends on what the person
learning eventually wants to do.

Scott

···

Chris Pine <chris@pine.fm> wrote:

--
Scott Ellsworth
scott@alodar.nospam.com
Java and database consulting for the life sciences

Check out Squeak Learn Programming with Robots
by Stephane Ducasse

The book was written for the author's wife, a high school teacher.
Using a working interactive environment, Squeak, the book teachs
smalltalk by controlling robots.


http://smallwiki.unibe.ch

Well, if you look at the sentence *before* the one you quoted, I think
you see better where I am coming from:

  It's easy to use, it's fun, and it's a language you could
  continue to use professionally (especially in web-dev
  stuff). I don't see any other language offering all that...

I don't see Pascal as "offering all that" (what percentage of
programmers use Pascal on the job?), nor BASIC. (Unless you meant
Visual Basic or VB.NET or something... but I thought those were fairly
different languages? Admittedly, I don't know much about the BASIC
world, but outside of Microsoft's versions, I didn't think too many
people were building professional products out of it.)

So I still stand by what I wrote (but I'm also still totally biased...)

Take it for what it's worth,

Chris

···

On 10/13/05, Stephen Waits <steve@waits.net> wrote:

Chris Pine wrote:
> other language offering all that, and thus no other language better to
> start with. (Though I am obviously totally biased, so take all of
> this with a grain of salt!)

Grain of salt indeed.. How about BASIC and/or Pascal?

I am always amazed at Linux folk who try to teach newbies
how to program with vi/emacs and make

IMHO this is by far the better way to teach a new language.

Taking the text editor/make file approach will result in a
much better programmer, because it forces the student to
learn the language and nothing but the language.

Using the IDE approach, too many details are hidden by the
IDE, so in essence all you are learning is the IDE.

Jussi Jumppanen
Author: Zeus for Windows IDE
http://www.zeusedit.com

Oh, of course.. neither language offers much of the way in modern features, though Object Pascal is quite good.

Neither are used "on the job".

But, both are fantastic for teaching programming. Once you understand the basic concepts, specifically with Pascal, swapping syntax (to something like C, or C++) is really easy.

--Steve

···

On Oct 13, 2005, at 2:18 AM, Chris Pine wrote:

I don't see Pascal as "offering all that" (what percentage of
programmers use Pascal on the job?), nor BASIC. (Unless you meant
Visual Basic or VB.NET or something... but I thought those were fairly
different languages? Admittedly, I don't know much about the BASIC
world, but outside of Microsoft's versions, I didn't think too many
people were building professional products out of it.)

I absolutely agree. Though I might choose notepad2 over vi/emacs for teaching).

--Steve

···

On Oct 13, 2005, at 6:36 PM, jussij@zeusedit.com wrote:

Using the IDE approach, too many details are hidden by the
IDE, so in essence all you are learning is the IDE.

While I agree that the IDE learning curve obscures the language learning I cannot think that using a language that requires make is a good idea for a newbie.

That is the beauty of starting with a scripting language, you just type in the code, save it and run it. It doesn't require any "build" concepts to be mastered before coding and there is less to go wrong.

"c" and "make" are a terrible choice to learn about programming (though often a great choice for actually doing things).

Tom

jussij@zeusedit.com wrote:

···

Taking the text editor/make file approach will result in a
much better programmer, because it forces the student to
learn the language and nothing but the language.

Using the IDE approach, too many details are hidden by the
IDE, so in essence all you are learning is the IDE.

In article <1129253659.784507.62530@z14g2000cwz.googlegroups.com>,

> I am always amazed at Linux folk who try to teach newbies
> how to program with vi/emacs and make

IMHO this is by far the better way to teach a new language.

Taking the text editor/make file approach will result in a
much better programmer, because it forces the student to
learn the language and nothing but the language.

Not really - it forces them to learn the language, the command line, and
the make/text editor functionality, instead of the language and the IDE.
With a teaching IDE like BlueJ, the IDE has relatively few strange
behaviors, and limited functionality, so they are most likely to be
learning the language.

Don't get me wrong - that command line information can be really
important. Just ask anyone who has deployed a webapp - you live and die
by knowing exactly how your system is configured. That said, it is a
set of skills, and it has to be weighed in relation to other skills they
might learn instead.

With something like IDEA, I can ask for all of the usages of a method.
Doing that in vi requires learning vi's search capabilities, and for
anything complicated, that means regexes. I would not want to teach a
newbie programmer regexes, unless they were learning Perl or Ruby where
they are a core language skill.

Using the IDE approach, too many details are hidden by the
IDE, so in essence all you are learning is the IDE.

Some details are worth hiding until the student is ready to learn them.
Eventually, those details matter, but not, IMO, until the student has
climbed the learning curve.

With a new language, you have a lot to learn. I want that learning
focussed on the language.

As an example, I would rather that a student who has made a syntax error
be shown the file and line they screwed up, than be given a line number
and file name. With the wrong code right in front of them, they can fix
it quickly, and move on.

Eventually, I would rather they not make such mistakes, but until the
syntax is familiar, showing mistakes right away helps.

Scott

···

jussij@zeusedit.com wrote:

--
Scott Ellsworth
scott@alodar.nospam.com
Java and database consulting for the life sciences

Use something with syntax highlighting and autoindent at least - afaics
notepad2 doesn't do the latter.

martin

···

Stephen Waits <steve@waits.net> wrote:

On Oct 13, 2005, at 6:36 PM, jussij@zeusedit.com wrote:

> Using the IDE approach, too many details are hidden by the
> IDE, so in essence all you are learning is the IDE.

I absolutely agree. Though I might choose notepad2 over vi/emacs for
teaching).

While I agree that the IDE learning curve obscures the language learning
I cannot think that using a language that requires make is a good idea
for a newbie.

That is the beauty of starting with a scripting language, you just type
in the code, save it and run it. It doesn't require any "build"
concepts to be mastered before coding and there is less to go wrong.

"c" and "make" are a terrible choice to learn about programming (though
often a great choice for actually doing things).

I think this depends on what aspects of programming you want to learn.
If you want to learn a bit about how your computer does things, C is an
excellent language (a glorified assembly language, if you will). If all
you want to do is make an AJAXy website, you might wanna steer clear of
C.

As for learning C and learning about programming, I personally think
that Kernighan and Ritchie's "The C Programming Language" is one of the
best books I have ever read about a programming langauge. In my mind,
it ranks right up there with the Pickaxe :wink:

Jeff

···

On Fri, Oct 14, 2005 at 11:16:55PM +0900, Tom Ayerst wrote:

Tom

jussij@zeusedit.com wrote:
>
>Taking the text editor/make file approach will result in a
>much better programmer, because it forces the student to
>learn the language and nothing but the language.
>
>Using the IDE approach, too many details are hidden by the
>IDE, so in essence all you are learning is the IDE.

Not really - it forces them to learn the language, the command line, and
the make/text editor functionality, instead of the language and the IDE.

...

With something like IDEA, I can ask for all of the usages of a method.

...

As an example, I would rather that a student who has made a syntax error
be shown the file and line they screwed up, than be given a line number
and file name. With the wrong code right in front of them, they can fix
it quickly, and move on.

irb seems a promising option here. Feedback is instantaneous in a, "What if I say this?," style. irb can respond with, "Then I would say this," or, "Error."

You don't need to learn external utilities here, though I realize you lose out on some text editor/IDE niceties. Still, irb can support tab completion, which may be enough at this stage.

Want to examine methods or a class hierarchy? Use Ruby's reflection. That means you're learning even more Ruby, to help yourself. The Pickaxe2 also gives an ri() method you can define in your .irbrc.

I'm just thinking out loud here, but this seems to address most of your concerns.

I would not want to teach a newbie programmer regexes, unless they were learning Perl or Ruby where they are a core language skill.

I hear this complaint often and I can name good programmer that are honestly scared of regular expressions. I think anyone who utters such a thing should have to take James's Regexp in an Evening course. :wink:

I've taught my wife a little Perl scripting, to help her at work. Part of that was a single evening of regular expressions. Programming is hard for her, and she just generally doesn't seem disposed to it; however, she picked up regular expression no problem and even seems to like using them. I really just taught her the basics and gave her a one page "cheat sheet," so I can't much tell you my secret, but it sure seems to work. I do know she keeps the cheat sheet by her monitor at work, so maybe that's part of it.

Anyway, I think you guys just had the wrong teacher for this one. :wink:

James Edward Gray II

···

On Oct 14, 2005, at 7:16 PM, Scott Ellsworth wrote:

like nedit :wink:

Randy Kramer

···

On Friday 14 October 2005 09:46 am, Martin DeMello wrote:

Use something with syntax highlighting and autoindent at least - afaics
notepad2 doesn't do the latter.