From: Bob Calco Date: 2002-09-07T23:20:23+09:00 Subject: RE: Larry Wall's comments on Ruby See below: %% -----Original Message----- %% From: Christian Szegedy [mailto:szegedy@t-online.de] %% Sent: Saturday, September 07, 2002 8:22 AM %% To: ruby-talk ML %% Subject: Re: Larry Wall's comments on Ruby %% Actually I have made a quite interesting experiance last year. %% My wife started to study computer science. She was a total %% novice: she has never written a line of code in any programming %% languages. Interestingly the base course in programming featured Haskell. %% Sometimes she came to me to ask questions and I had real problems, %% but she she seemed to pick it up quite naturally. %% %% The next course was about imperative programming in Pascal, and %% I thought it would be really trivial for her after Haskell. It was %% not the case: she has always complained that Haskell was so logical, %% but Pascal is a real mess. I had to admit that she was right. %% So I think the preconception that immperative programming is simple %% to novices, and functional or OO was harder is simply not true. I %% think it is based on the fact that most people enter the universities %% or courses, have already experience in some imperative language. %% %% Regards, Christian This makes total sense to me: Languages that are modeled after the way people actually think are easier for people to grasp than languages that are modeled after the way computers are designed to manipulate bits of data. Pascal, C, C++, and especially assembler are, for this reason, quite counter-intuitive to someone not familiar with the way computers process information (and the nuances in the ways different chip architectures are designed). At bottom, high-level languages must be implemented in the lower-level languages, or the computer would have no idea how to interpret what the human is asking it to do, but in terms of one's ability to "get" the syntax of a computer langauge, the syntax must be highly abstracted from the language of the machine. The pluses: + easy to learn + easy to use + easier to focus on the problem domain rather than on the mechanics of information processing, thus + easier to get work done quickly The minuses: - can severely limit one's view of how a computer actually works, thus trapping one in a single paradigm or computational model, in much the same way (as the saying goes) everything looks like a nail to someone who has only a hammer in his/her toolbox. OO is in this respect sort of like the ultimate Swiss Army Knife, but it is still just one approach of many that might work and work well in a given problem domain. - if one's favorite high level language were not available, and only a lower level language were available, one would be SOL unless one knew how to program in that lower level language. Everyone _should_ know at least one low level language well enough to get by in a crunch. Generally speaking, the pluses of high level languages like Ruby outweigh the minuses for most applications, since availability of high level languages is not a serious issue in light of the open source software movement, the Internet, and the decreasing cost of hardware. Sincerely, Bob Calco