D vs Java as a first programming language

Chris R. Miller lordsauronthegreat at gmail.com
Sun Sep 28 17:12:37 PDT 2008


Sean Kelly wrote:
> Nicolas Sicard wrote:
>> I am a teacher in a field where my students don't know what a 
>> programming language is! I need a language for a first approach of 
>> programming. I would say that Pascal, or BASIC even if a bit outdated, 
>> or even D would fit, but not Java.
>>
>> I can imagine my first lesson with Java:
>>
>>     public class HelloWorld {
>>         public static void main(String[] args) {
>>             System.out.print("Hello world!");
>>         }
>>     }
>>
>> I would have to explain what a class is. What a method is. What a 
>> public or private visibility means. What a static method is. What the 
>> dots in "System.out.print" mean... :) Then how to compile it. Why you 
>> can't run it without a virtual machine. A virtual what?
> 
> The typical approach to this tends to be "just put this stuff in the 
> file and ignore it--I'll explain it later.  I never understood why this 
> is considered a good teaching method :-)

There are so many concepts and mechanics that are at work with even the 
simplest Hello World in wee simple C that it's completely irrational to 
expect a student new to programming to comprehend what's going on.  Just 
think about it...

#include <stdio.h>

int main(){
     printf("Hello, world!");
     return 0;
}

Right there!  More concepts than can even be explained!  You have the 
concept of an include, and how the parser literally strings all the 
files together to create a processed source code, then how the compiler 
creates a new C run time in suspended animation which will then run the 
function main(), and how printf is supplied by the include directive 
earlier.  We get it 'cause we've been trained.  To a lot of kids it's a 
completely foreign thing.  I mean... gee, this computer is hecka dumb 'n 
stuff if we need to tell it where to find out how to talk through the 
display!  Not to mention the distinction of a constant character array, 
arrays in general, string literals, types, casting, return values, etc. 
  It's a crazy world!

At a certain point you have to pedagogically ask the student to take 
certain things on faith until you can better explain it all.



More information about the Digitalmars-d mailing list