ncmagel@ndsuvax.UUCP (ken magel) (08/14/87)
Two factors which are important in the selection of a first programming language, but which have not been mentioned previously are: 1. Availability: the language should be available on a wide variety of microcomputers so that students may use it on their own machines as well as those available at the school. This may eliminate very large or memory- intensive languages such as ADA at least for a while. 2. Low cost: I think students should have access to their own language environments on microcomputers. Those environments should cost less tha $100 so that an undue burden is not placed upon the students. Many languages meet these requirements : Pascal, Modula 2, Prolog ( at least in the Turbo Prolog mutation), Lisp ( Translisp among others), and even Smalltalk ( SMalltalk/V).
ken@argus.UUCP (08/18/87)
In article <405@ndsuvax.UUCP>, ncmagel@ndsuvax.UUCP (ken magel) writes: > 1. Availability: the language should be available on a wide variety of > microcomputers so that students may use it on their own machines as well as > those available at the school. This may eliminate very large or memory- > intensive languages such as ADA at least for a while. Ada is available on IBM PC, IBM VM, DEC VMS, and Unix. I'd say that covers at least 75% of the major computer environments. > Many languages meet these requirements : Pascal, Modula 2, Prolog ( at > least in the Turbo Prolog mutation), Lisp ( Translisp among others), and > even Smalltalk ( SMalltalk/V). ^^^^^^^^^^^^^^^^^^^^^^^^^ I believe its SmallTalk. Why this language must have variables case sensitive is beyond me (except for making the compiler a bit easier to write). I'd like to recommend the REXX language for beginners. It's got a very simple data structure, pascal like syntax, and was designed from the beginning to be a readable language, unlike C and Lisp. Kenneth Ng: Post office: NJIT - CCCC, Newark New Jersey 07102 uucp !ihnp4!allegra!bellcore!argus!ken *** NOT ken@bellcore.uucp *** bitnet(prefered) ken@orion.bitnet
moraes@utcsri.UUCP (08/18/87)
In article <405@ndsuvax.UUCP> ncmagel@ndsuvax.UUCP (ken magel) writes: > Two factors which are important in the selection of a first programming >language, but which have not been mentioned previously are: > 1. Availability: ..... > 2. Low cost: ..... I agree. One factor which is invariably forgotten is what I call "floppy-disk useability". I find it hard to experiment with programs using most compilers on microcomputers, because these were invariably written with the underlying assumption "To use this seriously, you must have a hard disk". Even with a two drive floppy system, you end up swapping floppies in and out of drives, as you go through the edit-compile-link-run cycle. This factor usually results in interpretive languages being a better choice (Forth, Logo, yes even Basic) for a first programming language - Djikstra's comments notwithstanding. But there are a few integrated compiler environments that are excellent too - notably Turbo Pascal. It is worth keeping this factor in mind during debates on which programming language is best for XXX purposes. Mark. (moraes@csri.toronto.edu)
jesup@steinmetz.steinmetz.UUCP (Randell Jesup) (08/19/87)
In article <1010@argus.UUCP> ken@argus.UUCP (Kenneth Ng) writes: >In article <405@ndsuvax.UUCP>, ncmagel@ndsuvax.UUCP (ken magel) writes: >> 1. Availability: the language should be available on a wide variety of >> microcomputers so that students may use it on their own machines as well as >> those available at the school. This may eliminate very large or memory- >> intensive languages such as ADA at least for a while. > >Ada is available on IBM PC, IBM VM, DEC VMS, and Unix. I'd say that >covers at least 75% of the major computer environments. Speaking as one who has programmed in Ada for a living, I'd advise strongly against Ada as a first language. Not that it's a bad language (at least for a certain range of problems), but it has a VERY large syntax and even larger semantics. The students will spend lot's of time saying 'why doesn't the compiler like this', instead of spending it figuring out algorithms. And don't EVER let a novice near the LRM! (Language Ref. Man.). My personal guess would be that Modula-II would be a good first language. It has strong type checking (good for novices), the syntax is simple enough that they won't spend all their time learning it, and it supports modularization and data-hiding well. It isn't overgrown with features, but for a first class you should be learning how to apply concepts, not how to use zillions of features. Leave that until you understand what's going on. Before anyone accuses me of being a modula freak, I've never programmed in modula, for most of my work I prefer C or forth, depending on the project. But from examing modula, I believe Wirth has come up with a reasonable teaching language. (MUCH better than pascal) >I'd like to recommend the REXX language for beginners. It's got >a very simple data structure, pascal like syntax, and was designed >from the beginning to be a readable language, unlike C and Lisp. Also may be a good idea. Definitely oriented towards non-computer users (thing like choosing limits, such as precision, to be 'round' numbers so mundanes can remember them easily (like 500 digits precision instead of 512)). >Kenneth Ng: Post office: NJIT - CCCC, Newark New Jersey 07102 >uucp !ihnp4!allegra!bellcore!argus!ken *** NOT ken@bellcore.uucp *** >bitnet(prefered) ken@orion.bitnet Randell Jesup jesup@steinmetz.UUCP jesup@ge-crd.arpa
fpst@hubcap.UUCP (Dennis Stevenson) (08/19/87)
in article <5268@utcsri.UUCP>, moraes@utcsri.UUCP (Mark Moraes) says: > > In article <405@ndsuvax.UUCP> ncmagel@ndsuvax.UUCP (ken magel) writes: >> 1. Availability: ..... >> 2. Low cost: ..... Seems to me we're losing sight of the object of the exercise: to teach students how to program. If "bean counter" criteria are used, we'll all be coding cobol! -- Steve Stevenson fpst@hubcap.clemson.edu (aka D. E. Stevenson), fpst@clemson.csnet Department of Computer Science, comp.hypercube Clemson University, Clemson, SC 29634-1906 (803)656-5880.mabell
ken@argus.UUCP (Kenneth Ng) (08/20/87)
In article <7035@steinmetz.steinmetz.UUCP>, jesup@steinmetz.steinmetz.UUCP (Randell Jesup) writes: [edited comment on Ada being a big language] > And don't EVER let a novice near the LRM! (Language Ref. Man.). Agreed, but there are plenty of books out on Ada now (of course after I learned the language from the @#%$^#$ LRM). : My personal guess would be that Modula-II would be a good first : language. It has strong type checking (good for novices), the syntax is : simple enough that they won't spend all their time learning it, and : it supports modularization and data-hiding well. It isn't overgrown with : features, but for a first class you should be learning how to apply concepts, : not how to use zillions of features. Leave that until you understand what's : going on. : Before anyone accuses me of being a modula freak, I've never programmed : in modula, for most of my work I prefer C or forth, depending on the : project. But from examing modula, I believe Wirth has come up with a : reasonable teaching language. (MUCH better than pascal) I disagree. I find it an irritant in Modula-2 having to say WriteInteger, WriteReal, WriteConstantString, and so forth. The Ada 'put' is easier for the student to remember. Let the compiler do some of the work. Also both Pascal and Modula-2 have the irritating property of allowing one to directly use '+', '-', '*', and '/' with the types provided with the compiler, but not with the types defined by oneself. Ada lets me forget having to remember that I can do an add with '+' for integers and reals, but I must use vector_add to add my two vectors. : >I'd like to recommend the REXX language for beginners. It's got : >a very simple data structure, pascal like syntax, and was designed : >from the beginning to be a readable language, unlike C and Lisp. : Also may be a good idea. Definitely oriented towards non-computer : users (thing like choosing limits, such as precision, to be 'round' numbers : so mundanes can remember them easily (like 500 digits precision instead of : 512)). And I've recently read that in the IBM VM environments, REXX within a couple of years has become THE language to write new code in. On the other hand with an alternative language like EXEC2 I can see why (;-> . All that is needed now is an implementation for Unix. (I'll need a year or two, context sensitive languages are a bitch to parse.) ; Randell Jesup ; jesup@steinmetz.UUCP ; jesup@ge-crd.arpa Kenneth Ng: Post office: NJIT - CCCC, Newark New Jersey 07102 uucp !ihnp4!allegra!bellcore!argus!ken *** NOT ken@bellcore.uucp *** bitnet(prefered) ken@orion.bitnet
gwl@rruxa.UUCP (George W. Leach) (08/20/87)
In article <1010@argus.UUCP>, ken@argus.UUCP writes: > > I'd like to recommend the REXX language for beginners. It's got > a very simple data structure, pascal like syntax, and was designed > from the beginning to be a readable language, unlike C and Lisp. > I wasn't aware that it was the language that dictated readability. Silly me. I guess it is beyond the control of the programmer to ensure readability, no matter which language the program is implemented in. But seriously, the language that a beginner should use must not overwhelm he or she with details. The idea is to use a simple tool to learn the fundamentals of problem solving with computers, not to learn all of the particulars of a given language's syntax. In my particular case I first programmed in BASIC in a course I took in high school. I have never used it since then, but it served the intended purpose. The language was simple enough that the bulk of the course was devoted to problem solving with the simple tool. > > Kenneth Ng: Post office: NJIT - CCCC, Newark New Jersey 07102 > uucp !ihnp4!allegra!bellcore!argus!ken *** NOT ken@bellcore.uucp *** > bitnet(prefered) ken@orion.bitnet George W. Leach Bell Communications Research New Jersey Institute of Technology 444 Hoes Lane 4A-1129 Computer & Information Sciences Dept. Piscataway, New Jersey 08854 Newark, New Jersey 07102 (201) 699-8639 UUCP: ..!bellcore!indra!reggie ARPA: reggie%njit-eies.MAILNET@MIT-MULTICS.ARPA From there to here, from here to there, funny things are everywhere Dr. Seuss "One fish two fish red fish blue fish"
ken@argus.UUCP (Kenneth Ng) (08/22/87)
In article <290@rruxa.UUCP>, gwl@rruxa.UUCP (George W. Leach) writes: > In article <1010@argus.UUCP>, ken@argus.UUCP writes: > > I'd like to recommend the REXX language for beginners. It's got > > a very simple data structure, pascal like syntax, and was designed > > from the beginning to be a readable language, unlike C and Lisp. [edit] > The idea is to use a simple tool > to learn the fundamentals of problem solving with computers, not to > learn all of the particulars of a given language's syntax. [edit] > The language was simple enough that the bulk of > the course was devoted to problem solving with the simple tool. Agreed (kinda (:->), a beginning language should be rather simple to avoid confusing a beginner excessively. That's why a language like REXX is recommended. REXX has one data type: STRING. Can it get any easier? If the string contains a numbers only, you can add subtract, multiply and divide the strings. If you do a simple compare with '=', the strings 'stuff', ' stuff', and 'stuff ' are equilivant. If you want you can do an exact compare with '=='. REXX is a context sensitive language, therefore the user doesn't have the unneeded complication of knowing about reserved words. (Granted this can be used to make *VERY* confusing programs if one tries hard enough.) REXX is definitely not a solve all for all language. While one can define arrays, one cannot define structures. One can design lists of strings if really needed, but it gets complicated and starts sounding like LISP. Also the nature of the language makes compilers difficult, but not impossible. But for a beginner language I would place it above most languages, even Ada (yes you heard that right Reggie). > > Kenneth Ng: Post office: NJIT - CCCC, Newark New Jersey 07102 > George W. Leach > UUCP: ..!bellcore!indra!reggie > ARPA: reggie%njit-eies.MAILNET@MIT-MULTICS.ARPA Kenneth Ng: Post office: NJIT - CCCC, Newark New Jersey 07102 uucp !ihnp4!allegra!bellcore!argus!ken *** NOT ken@bellcore.uucp *** bitnet(prefered) ken@orion.bitnet
jv@mhres.mh.nl (Johan Vromans) (08/22/87)
In article <1016@argus.UUCP> ken@argus.UUCP (Kenneth Ng) writes: >REXX is definitely not a solve all for all language. While one can >define arrays, one cannot define structures. One can design lists >of strings if really needed, but it gets complicated and starts sounding >like LISP. Also the nature of the language makes compilers difficult, >but not impossible. But for a beginner language I would place it above >most languages, even Ada (yes you heard that right Reggie). Isn't that what happened to Pascal: a simple, clear language meant for educational purposes only, and then (after being accepted) it was heavily mal-treated to make it suitable for *ALL* purposes? : johan -- Johan Vromans | jv@mh.nl via European backbone Multihouse N.V., Gouda, the Netherlands | uucp: ..{seismo!}mcvax!mh.nl!jv "It is better to light a candle than to curse the darkness"
jay@splut.UUCP (Jay Maynard) (08/24/87)
In article <1228@mhres.mh.nl>, jv@mhres.mh.nl (Johan Vromans) writes: > Isn't that what happened to Pascal: a simple, clear language meant for > educational purposes only, and then (after being accepted) it was > heavily mal-treated to make it suitable for *ALL* purposes? Uhm, Johan...don't look now, but REXX was designed/written by IBM as a command-level script language for VM/CMS, and definitely NOT for educational purposes only. Unlike most script languages, it's powerful enough to do real programming in. Hacking up REXX should be simple, as all that is required is to write a CMS command processor to perform the required function...kinda like extending FORTH. -- Jay Maynard, K5ZC...>splut!< | uucp: hoptoad!academ!uhnix1!nuchat!splut!jay "Don't ask ME about Unix... | (or sun!housun!nuchat) CI$: 71036,1603 I speak SNA!" | internet: beats me GEnie: JAYMAYNARD The opinions herein are shared by neither of my cats, much less anyone else.
gwl@rruxa.UUCP (George W. Leach) (08/24/87)
In article <1228@mhres.mh.nl>, jv@mhres.mh.nl (Johan Vromans) writes: > In article <1016@argus.UUCP> ken@argus.UUCP (Kenneth Ng) writes: > >REXX is definitely not a solve all for all language. While one can > >define arrays, one cannot define structures. One can design lists > >of strings if really needed, but it gets complicated and starts sounding > >like LISP. Also the nature of the language makes compilers difficult, > >but not impossible. But for a beginner language I would place it above > >most languages, even Ada (yes you heard that right Reggie). > ^^^^^^^^ I'm shocked Ken!!!!!! > > Isn't that what happened to Pascal: a simple, clear language meant for > educational purposes only, and then (after being accepted) it was > heavily mal-treated to make it suitable for *ALL* purposes? > Pascal is not the first language used at NJIT. Fortran is taught to all students as a first language. This is a legacy from our origins as Newark College of Engineering. All CS students immediately will be cleansed in the Intro to CS course by being taught Pascal. I took this course in 1976 and I have taught it for the past couple of years. I have seen Pascal on an Interdata-32, IBM PC, Sperry UNIVAC and under UNIX. Although Pascal is far superiour as a teaching language than many other popular languages (yes Ken even better than C for this purpose), I still think there is a serious need for improvement upon this first attempt at a teaching language. Remember that it was first thrust upon the world in 1971!!! I did hear of a language called Turing, which was produced by the folks at the U. of Toronto. Turing was hailed as an improvement over Pascal as a teaching device. I did send away for the demo disk and the technical reports that accompany it. However, I have not had the time to really look into it in detail. Has anyone else? Is anyone using Turing or any other newer languages that have been produced specifically for the purpose of teaching programming? George W. Leach Bell Communications Research New Jersey Institute of Technology 444 Hoes Lane 4A-1129 Computer & Information Sciences Dept. Piscataway, New Jersey 08854 Newark, New Jersey 07102 (201) 699-8639 UUCP: ..!bellcore!indra!reggie ARPA: reggie%njit-eies.MAILNET@MIT-MULTICS.ARPA From there to here, from here to there, funny things are everywhere Dr. Seuss "One fish two fish red fish blue fish" > > : johan > -- > Johan Vromans | jv@mh.nl via European backbone > Multihouse N.V., Gouda, the Netherlands | uucp: ..{seismo!}mcvax!mh.nl!jv > "It is better to light a candle than to curse the darkness"
eugene@pioneer.arpa (Eugene Miya N.) (08/26/87)
LISP as first language (CARs, CDRs?!, Silly Parens?), REXX, LOGO? No, network memory. The new people coming into this discussion have not seen the earlier posting on this thrice discussed topic. Hugh LaMaster asked about LOGO. When I first heard of it, it sounded kind of neat, and I had a few minutes off from Grad School and an ANSI Pascal meeting in we had town [Santa Barbara] (when I was an alternate). It was just another language with some graphical constructs thrown in. Kind of disappointing but easily checked. I think the discussion should be "what makes languages hard to learn" rather than "what makes them good." We are blind to our biases, and we don't approach the problem in the right way. I wonder what the drop out rate for a lot of these classes are? A good work-person analyzes the shavings which fall on the floor every now and again. But, let me relate something to you which happened last evening. Normally, I have ACM/SIGGRAPH meetings one 4th Tues., but we were off for the summer months and last evening I gave a talk on non-computer stuff to the Sierra Club [but we were in Cupertino]. Afterward, the hostess of the house was talking about her Mac. Turned out she took an animation class at De Anza college from one of my local ACM/SIGGRAPH members. She talked about a few people's inabilities to comprehend animation but were otherwise excellent freehand/static artists. What might be an interesting first programming language might be one of these animation systems. I won't discuss tradenames, but "they run on Macs" and we had a SIGGRAPH meeting on some of these systems with Scott Kim and Marne Morris [Exercise left for reader: try one.]. We discussed the sequential nature of animation, the concept of state. You can get alternation without much problem (I'm pretty sure), and you can also get some nice concurrency. Still people had problems, but it sounds like fewer than with normal "languages." The basic technique is to create key frames and the machine does the "in-betweening" via interpolation. Normal programming languages are not very visual. The typical example of Smalltalk-80 graphics or LOGO are pretty crude. It's difficult to keep state clear (even in functional languages and even then the Mac screen is painfully small). But the visual metaphor offers perspective (care to see that COMMON block, or static global var up in the upper left hand corner?) and proportion which regular languages lack. From the Rock of Ages Home for Retired Hackers: --eugene miya NASA Ames Research Center eugene@ames-aurora.ARPA "You trust the `reply' command with all those different mailers out there?" "Send mail, avoid follow-ups. If enough, I'll summarize." {hplabs,hao,ihnp4,decwrl,allegra,tektronix,menlo70}!ames!aurora!eugene
windley@iris.ucdavis.edu (09/02/87)
In article <405@ndsuvax.UUCP> ncmagel@ndsuvax.UUCP (ken magel) writes: > > Two factors which are important in the selection of a first programming >language, but which have not been mentioned previously are: > 1. Availability: the language should be available on a wide variety of >microcomputers so that students may use it on their own machines... I disagree. I teach an introductory class and I don't wnat my students using there own machines. Two reasons: 1. I don't have the resources to track down system, dependant problems or deal with the student that comes to me and says "the problem you gave us doesn't work right on my computer...". 2. I have my readers grade the students programs face-to-face during the reader's office hours and therefore, the programs have to work on the school machines. Phil Windley Robotics Research Lab University of California, Davis