If I'm complaining about bad teaching then it's my *own* bad teaching I'm talking about, and I wouldn't say I taught Java particularly badly, though there were definitely things I'd have liked to have improved upon.
That Lisp has no syntax is more related to the directness between lisp source code and an AST. LOOP is just a macro and isn't particularly hard, but I was by no means a beginner when I met it, and I've never watched a beginner programmer try to use it. It's so similar to LINQ that I imagine the beginner experience to be similar, and from watching the ##csharp IRC channel for a few months it seemed that beginners didn't have great problems with LINQ. My argument against Java is just as a first language. It's less direct, more awkward and involves concepts before the novice is ready to meet them. Novices generally struggle with static, with having to switch syntax entirely to go from arrays to Lists, with using 3rd party libraries, with the difference between public X() and public void X(), with checked exceptions, and probably a lot more if I rack my brains for longer. What I dislike is that they generally have to meet these before they're ready to unless they follow a very narrow path. A language that doesn't force everything to go in classes is probably easier to begin with, and Python doesn't even force everything into procedures, nevermind classes. You can directly use everything in the language without having to worry about those things until you need them. It's much less likely than Java to force 'forward references', i.e., learning about a concept you don't yet care about or aren't ready for. Does that help? By the way, I didn't say I don't like Java. It's fine, it has some features I miss elsewhere and lacks some features I'd like it to have. It's a big improvement on the previous status quo, C/C++, especially in terms of simplicity of compilation/linking. On Sun, Dec 25, 2011 at 1:46 PM, Jon Kiparsky <[email protected]> wrote: > Ricky, it sounds to me like you're complaining more about bad teaching than > about languages. I can assure you that java need not be taught badly. > > Every language has syntax, of course, and you always have to learn it. Lisp > folks insist that Lisp "has no syntax", and then presently you come to the > loop constructions, which are far worse to learn than anything in Java. > Python fans insist that it's as natural as breathing, but I remember having > to learn how to make it work, and there's plenty there that's idiosyncratic > and just downright weird. So I still don't see how your arguments against > java hold up, or that you're making a case for any particular language (as > opposed to just making a case against Java). > > I'd really, really like to hear what you have to say in favor of python, or > any language, as a first language. I think I understand now that you don't > like Java, and that's fine, but what is it about python that makes you think > it's brilliant to learn first off? Is it just that it's so simple, or is > there anything about it that opens up a student to more insights about > programming? (I can think of a couple of ways I'd make this case, but I'd > like to hear you make it) > > > On Sun, Dec 25, 2011 at 10:48 AM, Ricky Clarkson <[email protected]> > wrote: >> >> "Excited people about fun languages" have more chances of becoming >> useful than "bored people about boring languages", because they're >> more likely to continue. There are many many people who studied >> programming as part of some other course and have the idea that it's >> about fighting with a compiler, or taking a professor's solution and >> modifying it to make it work without touching the predefined bits. Or >> as in the course I studied, that programming is about remembering that >> int/int gives int, and the syntax of a for loop. >> >> Plenty of perfectly capable people avoid programming because of dull >> or overly difficult initial presentation, and Java is part of that >> problem. One of my colleagues is perfectly capable with Perl and is >> now learning Java because the client wants him to, so he wrote >> something trivial and had to learn about exceptions and static before >> he was going to be interested in them. He's not put off, but I >> remember when I was teaching, that as soon as you had to involve >> exceptions to load an image file, eyes started to glaze and it was a >> battle to bring them back to full interest. >> >> On Sun, Dec 25, 2011 at 7:36 AM, Fabrizio Giudici >> <[email protected]> wrote: >> > On Fri, 23 Dec 2011 17:36:13 +0100, Ricky Clarkson >> > <[email protected]> wrote: >> > >> >> I think the point is to maximise the chances that the student enjoys >> >> and >> >> continues programming, rather than worrying that they might be missing >> >> low-level concepts, etc., at least in the first instance. >> > >> > >> > Excitement must be put in the proper perspective. Excited people about >> > fun >> > languages who don't understand fundamentals have higher chances to >> > become >> > useless and not making a great career (that's not exciting). I think >> > that >> > there's a pedagogical value in properly focusing excitement: it's more >> > valuable to be excited because you are able to create something that >> > works, >> > rather than the tool that you used. >> > >> > Not to mention that at the university not all classes were exciting to >> > me. >> > For instance, math-based ones were boring to me (to me maths is >> > fascinating, >> > but not something I'd like to do, such as mountaneering). Still I worked >> > hard and got almost always the maximum marks. It's a good thing that >> > people >> > is taught to apply also to boring parts, because they can't be >> > eliminated by >> > the real life. >> > >> > >> > -- >> > Fabrizio Giudici - Java Architect, Project Manager >> > Tidalwave s.a.s. - "We make Java work. Everywhere." >> > [email protected] >> > >> > http://tidalwave.it - http://fabriziogiudici.it >> > >> > -- >> > You received this message because you are subscribed to the Google >> > Groups >> > "The Java Posse" group. >> > To post to this group, send email to [email protected]. >> > To unsubscribe from this group, send email to >> > [email protected]. >> > For more options, visit this group at >> > http://groups.google.com/group/javaposse?hl=en. >> > >> >> -- >> You received this message because you are subscribed to the Google Groups >> "The Java Posse" group. >> To post to this group, send email to [email protected]. >> To unsubscribe from this group, send email to >> [email protected]. >> For more options, visit this group at >> http://groups.google.com/group/javaposse?hl=en. >> > > -- > You received this message because you are subscribed to the Google Groups > "The Java Posse" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/javaposse?hl=en. -- You received this message because you are subscribed to the Google Groups "The Java Posse" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/javaposse?hl=en.
