Re: choosing a teaching language, was Java compiler courses

Marco van de Voort <marcov@stack.nl>
Tue, 15 May 2007 19:55:21 +0000 (UTC)

          From comp.compilers

Related articles
Java compiler courses wookiz@hotmail.com (wooks) (2007-04-20)
Re: Java compiler courses usenet@gmx.info (Michael Klemm) (2007-04-26)
Re: Java compiler courses marcov@stack.nl (Marco van de Voort) (2007-05-10)
Re: choosing a teaching language, was Java compiler courses DrDiettrich1@aol.com (Hans-Peter Diettrich) (2007-05-11)
Re: choosing a teaching language, was Java compiler courses cdsmith@twu.net (Chris Smith) (2007-05-12)
Re: choosing a teaching language, was Java compiler courses gah@ugcs.caltech.edu (glen herrmannsfeldt) (2007-05-13)
Re: choosing a teaching language, was Java compiler courses kenney@cix.compulink.co.uk (2007-05-14)
Re: choosing a teaching language, was Java compiler courses marcov@stack.nl (Marco van de Voort) (2007-05-15)
Re: choosing a teaching language, was Java compiler courses DrDiettrich1@aol.com (Hans-Peter Diettrich) (2007-05-16)
Re: choosing a teaching language, was Java compiler courses DrDiettrich1@aol.com (Hans-Peter Diettrich) (2007-05-16)
| List of all articles for this month |

From: Marco van de Voort <marcov@stack.nl>
Newsgroups: comp.compilers
Date: Tue, 15 May 2007 19:55:21 +0000 (UTC)
Organization: Stack Usenet News Service
References: 07-04-074 07-04-118 07-05-037 07-05-039
Keywords: courses
Posted-Date: 16 May 2007 03:04:49 EDT

On 2007-05-11, Hans-Peter Diettrich <DrDiettrich1@aol.com> wrote:
>> I somewhat wonder why people think that Java is easier to learn than
>> C. In ome of my classes I found the opposite (which surprised me too),
>> specially if the students had no prior IT knowledge (they were classes
>> for graduated non IT bachelors).
>>
>> They consistently found C easier to handle. The reason was pretty
>> simple, more transparant, less knowledge required for an initial
>> program (of any kind).
>
> Then you should choose Basic, if you expect that your audience will
> immediately understand how to use a language for writing programs.


If I'd buy the ease of use in Basic myth, I would yes. Moreover I'm still
teaching, not producing.


>> We had them doing walking pointer trees in 5
>> weeks, while in the paralel Java class they were still struggling with
>> inheritance, and explaining what was needed to make a minimal program.
>
> In this case your audience has to understand too much at once:
> - writing programs
> - writing structured code
> - using subroutines
> - using pointers (or references)
> - using OOP
> - using powerful libraries
> - designing event driven GUI's
> and possibly more less obvious things.
>
> Would people with a COBOL background have had less problems, to move to
> C or Java?


Don't know. Don't get to many students with Cobol backgroun nowadays.


>> Now, I agree that this is partially due to the tools and
>> libraries. (with all their form designing logic) But I don't assume
>> people writing this here are using special educational versions of
>> Java?
>
> Doesn't writing compilers require, or at least profit, from using
> appropriate languages?


Sure. The ML discussion. But the question is if it is worth it, if I have to
teach a language (in a different class even) before I can start.


Note also that I only made a remark about the "ease of learning" of Java.
(in practice, which is more than the mere language). People always assume it
as easier. But e.g. engineering students I experienced could deal with quite
some complexity and could be precise with e.g. pointers) as long as it was
transparant, which was the devil in Java's case.


> At least I cannot imagine to write n compiler in Basic (without
> extensions), whereas Pascal is well suited for such an task, without a
> need for using any additional library.


> The use of libraries IMO is an important detail, when talking about
> learning and mastering languages. C is a bare bone language without a
> library, lacking such fundamental things like string handling and I/O.


Sure. One could probably teach Java too cmdline. Note that that was part of
what I meant. The whole system must be suitable. Libraries, toolchain,
examples etc. In the Java case, typical programs require inheritance.


The mere availability of stuff like a form designer is a distraction. This
goes for e.g. a Delphi too. Turbo Pascal or Topspeed M2/Pascal would be
better, but the whole cmdline is too alien to the students nowadays.


So IMHO the only decent way is to move to special educational tools.


For FPC support I sometimes find myselfe on fairs and seminars, and we get
a lot of teachers asking for such tools. Unfortunately it is outside the
direct scope of the project.


> The same for C++ or Java, these also are useless without additional
> libraries, even if the languages have more features than e.g. C or
> Basic.


Note that this also depends how much you prepare the course for the
students. Do you let them search and implement anything yourself? Or do you
prepare and provide certain stuff (like e.g. doing a lesson about a basic
tokeniser, and afterwards give them a stronger one to use the rest of the
course)


The do it yourself method is of course best, and the most academic (and fun
for the teacher, since occasionally you get surprised). Unfortunately, class
time is limited however, and you sometimes also need to teach lesser
motivated students.


> When people have to learn the fundamental library structures and
> functions, in addition to a programming language itself, it IMO doesn't
> make a difference whether the language is kind of assembly language or C,
> honestly. Look at the interface or implementation of a library - just the
> declaration syntax of C is better suited to hide things before the reader,
> than to explain them. Add the C standard header files, and their #defines,
> and try to count only the key "words", which a person has to learn AND to
> remember, before she can read or write useful C code.


> Then do the same for Java, certainly with similar results, and then
> for Pascal...


Assuming you have learned enough languages to understand a superset of these
languages.


Post a followup to this message

Return to the comp.compilers page.
Search the comp.compilers archives again.