Basic 10 PRINT "DO YOU NEED INSTRUCTIONS?" 20 INPUT A$ 30 DIM A$(1) 40 IF A$="N" THEN 80 50 PRINT "PLEASE GUESS A NUMBER BETWEEN 1 AND 60 PRINT "THEN I WILL GIVE YOU A HlNT" 100/'; 70 LET X=lNT((100*RND(0) 1) ‘--' 80 INPUT R 90 IF X=R THEN 150 100 IF R<X THEN 130 110 PRINT "GUESS LOWER" 120 GOTO 80 130 PRINT "GUESS HIGHER" 140 GOTO 80 150 PRINT 'YES!" 160 GOTO 10 Logo TO START 10 PRINT "DO YOU NEED INSTRUCTIONS?" 20 IF IS REQUEST "YES" THEN PRINT "PLEASE GUESS A NUMBER BETWEEN 1 AND 100, THEN I WILL GIVE YOU A HINT" 30 QUIZ RANDOM 1 100 REQUEST END TO QUIZ :X: :GUESS: 10 IF EQUAL :X: :GUESS: THEN WON ELSE LOST LESS :GUESS: :X: END TO WON 10 PRINT "YES!" 20 START END TO LOST TOOLOW: 10 IF :TOOLOWS: THEN PRINT "GUESS HIGHER" ELSE PRINT "GUESS LOWER" 20 QUIZ :X: REQUEST END To which language should we prefer to expose ourselves or our children? Keep in mind that most machines including microprocessors have long had all the instructions needed to easily realize Algol-like control, which Fortran-like languages use only for parsing formulas. A decade ago Fortran was wasting abilities of most machines it ran on, now it and its relatives are simply more wasteful of more machines. The actual range of computations and data-types could also be a topic of discussion (e.g. Fortran and Basic do numerical work easily, string manipulations with difficulty). Apart from attempting elegance, some languages serve particular computational audiences (eg. Snobol for strings, Lisp for lists/functions). However, nearly all languages suffer idiosyncratic limitations when type definitions lend predisposition of meaning to data. Profusion of data-types is all right as long as it does not hamper the user's own constructions. The enterprise of reality or programming is message processing and the effect (meaning) of a particular message depends upon the action of the computational chunk (object) that receives it. This merges with the idea of an extensible language in which the user can construct new entities which truly expand the power of the language. Procedure definitions in Algol, Pascal, Logo, etc. constitute only a beginning (subroutines in Fortran and Basic are but trivial excursions into machine language, because they lack even the syntactic status of primitives). Education and computers can be linked via language extensibility. We want the machine to understand us in our vernacular or a sensible approximation of it. We want to phrase programs as solutions to our problems in clear, powerful prose. For these purposes, no existing language may ever be satisfactory as it stands. Including English, etc.I Thus the need for extensibility - syntax and semantics being under our control during the course of a computation. Languages which allow the creation of new types of objects and new examples of existing types have been around for some time, Simula for instance. Generally their births were motivated by desires to model real-world systems by simulation (e.g. of forests, hospitals, etc.). Their abilities to create new types and examples of objects that intercommunicate at will allows one to begin to program with a greater sense of reality. But restrictions remain, Simula is fixedly Algol-like, Simscript is incomprehensibly couched in Fortran syntax, and so on. Perhaps the ideal is a language which captures the essence of "objectness" and intercommunication, yet is itself an editable object accessible to its users. Exciting work along such lines is being done by some people and will surely leave a mark on our computational future. So, the rest of the answer to the opening question is: "certainly every effort should be made to breach the gap between computer and human language". Particularly in educational settings, where it is paramount that the student's language be the language through which learning proceeds. The goal isn't English, or any other known language in particular, but the ability to construct whatever objects/languages one wants. 'Say something in computerese."