[Tutor] tutor

ALAN GAULD alan.gauld at btinternet.com
Sat Jul 14 23:35:57 CEST 2007


> > I'm intrigued by that statement. What do you find challenging?
>
> All of it seems complicated at first because I'm not familiar with the
> nuances of the new language. ....I do not have a CS background.

That's one of the reasons I wrote my tutor. It became obvious to me 
that most web tutors assumed a CS training. I decided I neded to 
define the CS terminology and as much of the theory as was 
necessary to understand the other tutors. Kind of like the meat 
of my first year computing course at uni' but accessible to 
non-CS folks.

> > Those can usually be learnt in a morning and after that
> > its a matter of gaining experience writing (and reading) code.
>
> Not everyone can pick things up as fast as some people do.

True, but if you already understand the concepts its usually pretty 
easy to translate them to a new language. You don;t need to remember 
the new syntax, just create your own short reference card. 
I find most lamnguages can be represented on a single side 
of A4/Letter paper. Not the whole language but enough to tackle
basic problems and start getting some hands on experience.
Thats the level I mean by a morning.

> One of the first languages I learned was a dialect of Lisp, a
> functional programming language called Logo. 

Logo is great, I first used it on an old CP/M 8 bit Micro.
The syntax is easy and yet extensible, with less parens 
than Lisp. I even had a Windows version (ie it could write 
GUI programs not just run in a window!) MSWLogo, for a while, 
and an OOP version (objectlogo).

The comp.lang.logo newsgroup still has a little bit of traffic, 
I sometimes drop by for old times sake! Last time I looked 
a version of MSWLogo had been produced for XP...

> > fluent in a new language within a week. I would never send
> > someone who can program on a training course for a new
> > language (except for C++!)
>
> Why the exception for C++ ?

C++ is a really tricky language. Not only is it huge but there 
are lots of real sneaky gotchas lurking that only long periods 
of painful debugging will reveal without training. The biggest 
problem is that C++ creates zillions of temporary objects which
sometimes don't get deleted thus chewing up memory
(no garbage collection). also the rules around multiple inheritance 
and member data access are arcane beyond telling. For example:

class X {
private:
    int foo;
protected:
    int bar;
public:
    int baz;
}

class C: public X{....}

class D: protected X {...}

class E: private X {...}


C *c = new(C)
D *d = new(D)
E *e = new(E)

Now tell me which attributes are visible
1) to the methods of C,D,E and 
2) to the users of the instances c,d,e.

And thats only single inheritance!

Too much power and flexibility leads to too many permutations.

> > (One such experiment was Borland's ObjectWindows - did
> > anyone else ever use that?)
>
> Was that the one that used objects like old flowchart symbols
> to design a program? I may have seen pictures of it somewhere,
> but never actually saw it in person. =)

That's the one. It was quite powerful with very easy database access 
mechanisms (but without a loop construct!) but ultimately so finnicky 
to use that you were a lot quicker writing code. As soon as Delphi 
appeared ObjectWindows died a quiet but surprisingly prolonged death


Alan G.





More information about the Tutor mailing list