home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1992 #30 / NN_1992_30.iso / spool / comp / edu / 2196 < prev    next >
Encoding:
Internet Message Format  |  1992-12-16  |  3.6 KB

  1. Xref: sparky comp.edu:2196 comp.lang.misc:4023 comp.software-eng:4922
  2. Newsgroups: comp.edu,comp.lang.misc,comp.software-eng
  3. Path: sparky!uunet!ornl!rsg1.er.usgs.gov!darwin.sura.net!zaphod.mps.ohio-state.edu!saimiri.primate.wisc.edu!ames!purdue!yuma!csn!nugget.rmNUG.ORG!jacob
  4. From: jacob@nugget.rmNUG.ORG (Jacob Gore)
  5. Subject: Re: Programming language evaluation criteria
  6. Message-ID: <1992Dec13.183558.709@nugget.rmNUG.ORG>
  7. Organization: Rocky Mountain NeXT Users' Group
  8. References: <1992Dec12.091818.1847@msus1.msus.edu>
  9. Date: Sun, 13 Dec 1992 18:35:58 GMT
  10. Lines: 62
  11.  
  12. If it's pragmatics you want in language selection, here's the list:
  13.  
  14. 1.  See what languages the people who fund your project or pay your
  15. salary want you to use.
  16.  
  17. 2.  See which of those have reliable implementations available and
  18. affordable.
  19.  
  20. 3.  See which of those your teammates know or are willing to learn.
  21.  
  22. 4.  See which of those your teammates want to use.
  23.  
  24. 5.  Use it (learn it, if necessary).
  25.  
  26. Having got this out of the way, I explain to the students in my
  27. comparative language class that the reason they need the class is not
  28. to learn a bunch of languages, but to discover a variety of problem
  29. solving approaches.  They do that by doing exercises in ML (a
  30. math-looking strongly-typed functional language), Scheme (an
  31. assembly-language-looking dynamically-typed functional language where
  32. one can execute data structures one builds), and Objective-C (a
  33. dynamically typed but strongly typable traditional/object-oriented
  34. hybrid language -- my first choice would have been Eiffel, then
  35. Smalltalk, but I have neither handy).  I give assignments that are
  36. easy to do if you let yourself flow with the new (to most of the
  37. students) paradigm, but suffer greatly if you try to do things the old
  38. way.  (If time permits, we also do Prolog.)
  39.  
  40. Later, when they are forced to use whatever language filters through
  41. the first four lines of the above list, they will (hopefully) be able
  42. to reason along the following lines: "Well, this problem would have
  43. been a two-liner in ML, but the language I have to use is K&R C with
  44. no vararg library.  Still, I can try using recursive functions without
  45. side-effects and that will simplify the data structure needed, so
  46. here's how I can design this........"
  47.  
  48. Learning a language for the sake of learning a language is about as
  49. stimulating as learning all the legal chess moves.  Picking a language
  50. within one paradigm is like picking the shape and color of the pieces
  51. and the board: the choice will indeed make it easier or harder to
  52. play...but it is all insignificant if you are a bad strategist.
  53. Computer science education should be about becoming a good strategist.
  54. Exposure to other paradigms is like playing other strategy games: it
  55. is usually not directly translatable into chess moves, but it provides
  56. enlightening insights.
  57.  
  58. Sorry for the unsolicited preaching, Jim, but I'm a big believer in
  59. the "teach concepts, illustrate with specifics" approach (as opposed
  60. to "teach marketable skills, leave concepts for grad school" approach,
  61. whose proponents always want me to teach some bandwagon language.  As
  62. David Gries puts it (don't know if he quotes someone else): "program
  63. INTO the language, not IN it."  I do not for a moment think that
  64. you're in the bandwagon language camp (if you were, you probably
  65. wouldn't be thinking hard about language selection criteria), but the
  66. comparative language course is such a wonderful opportunity to make
  67. students reevaluate and enrich their bag of programming techniques...
  68.  
  69. Jacob
  70. (a horrible chess player, actually:-)
  71.  
  72. Jacob Gore, Eastern NM U.   Jacob@BlackBox.ENMU.Edu | Jacob@Gore.Com
  73. Member of the League for Programming Freedom (LPF)--lpf@uunet.uu.net
  74.