>I first because fascinated with the idea of a computer program after
>seeing a demonstration of an application at a personal computer show
>in circa 1981 for interactive computer music on an Apple ][ j-plus computer
>(see
>
http://www.apple2world.jp/apple2/COL/MapItems/apple2jplus/apple2jplus.html
>(in Japanese)) (at the Sumitomo Sankaku Building in Shinjuku, Tokyo). The
>application involved a user playing music on a music keyboard, and vertical color
>bar graphs on a horizontal line appearing in real time in response to the notes
>played on a color monitor. The idea of a computer exhibiting a form of
>artificial intelligence by responding to user input in real time according to
>a computer program seemed fascinating at the time.
>
>Also interesting at that show was a lunar lander program, which I think
>was on a black-and-white Commodore VIC-1001 (see "History of Commodore
>Computers" at
http://oldcomputers.net/vic20.html, for Commodore Japan for
>1980) (known as the VIC-20 (see
http://oldcomputers.net/vic20.html) in the
>United States, where it was released a year later), in which the player's
>character would occasionally fall into a ditch while running across the screen,
>which I found extremely humorous.
>
>After that, I first started out in programming in 1983 with N-BASIC on
>the NEC PC-8001 (see
>
http://museum.ipsj.or.jp/en/computer/personal/0001.html and
>
http://park10.wakwak.com/~pinevill/image/nec/PC8001.JPG) (I was a poor
>student at the time, so I had no choice but to code on coding sheets and
>manually to enter my code in computers line by line at computer showrooms).
>I planned to write and sell my own computer program in order to purchase my
>own computer; alas, this plan later failed miserably (my N-80 BASIC pocketbook
>accounting program, written on a PC-8001 mk II (see
>
http://park10.wakwak.com/~pinevill/image/nec/PC8001mkII_1.JPG), wouldn't
>sell), and as a result, I was prohibited from programming between 1985 and
>1989, when I finally entered college.
>
>Later, I became exposed to the Apple Macintosh personal computer (see
>
http://applemuseum.bott.org/), and felt excited at its prospects for multimedia
>applications. This is when I first became interested in multimedia applications
>for personal computers.
>
>Just before entering college, in March of 1989, I visited a computer exhibition
>at Tokyo Dome featuring the Fujitsu FM TOWNS "hyper-media personal
>computer" (see
http://museum.ipsj.or.jp/en/computer/personal/0029.html).
>This computer was essentially a Japanese counterpart to the Macintosh, geared
> toward starting a home-use-focused multimedia-based personal computer
>movement in Japan, to counter the business-use-focused PC-9801 personal
>computers (see
http://museum.ipsj.or.jp/en/computer/personal/0011.html)
>from NEC. Exposure to the FM TOWNS at this event greatly strengthened my
>interest in multimedia applications for personal computers, especially on home-use
>entertainment applications focusing on the use of high-speed three-
>dimensional color computer graphics and stereo sound in a virtual reality
>environment.
>
>Then in college, I became exposed to Scheme in computer science. I was also
>briefly exposed to Pascal, Common Lisp, and C, but greatly preferred Scheme
>because of the emphasis on higher-order programming techniques, which I
>found greatly helped me to concentrate on what I wanted to program,
>rather than how to program it. For similar reasons, I also became interested
>in Haskell, to which I was also briefly exposed. However, I did not have many
>opportunities to study Haskell at that time, because the language was not
>used in the courses that I actually took (as opposed to audited). I also took
>a course in Formal Semantics of Programming Languages, which I found to be
>one of the most interesting courses in computer science. In particular, the
>discussions on the operational and denotational semantics of the lambda calculus
>were especially interesting.
>
>One difficulty that I had in sustaining my interest in computer science was the
>lack of any focus on multimedia applications. While functional programming was
>very interesting from a theoretical viewpoint, most functional programming
>courses lacked any focus on multimedia applications.
>
>After graduation with a Bachelor of Science in computer science, since I was
>more interested in the theory of programming languages than in business
>applications, I looked for ways of using this background at work, but
>unfortunately, most careers in industry did not use any of this background. I
>was very exhausted from years of lack of sleep in conquering math phobia and
>discrete mathematics in eventually passing the course in design and analysis of
>algorithms, and did not want to proceed immediately to even more years of even
>less sleep in graduate school. So, I decided to pursue my study of programming
>language theory as a hobby, and eventually to find a way somehow to earn
>income without having to spend time in work (perhaps through writing a book or
>creating a popular Web site with income from advertisements), so that I could
>concentrate on studying programming language theory full-time as a hobby, while
>simultaneously searching for a way to integrate this interest with my other interests
>in virtual reality and multimedia applications.
>
>Currently, I work as a Japanese->English translator/interpreter at a patent office
>in Tokyo, where I translate patents for computer technology while studying
>programming language theory whenever I have free time during the week after
>work.
Basically, what led me to the idea of this survey were the following
thoughts:
1) A recent discussion on
comp.lang.prolog, entitled "How long it
takes to educate Prolog/CLP programmer?", where Nick Wedd stated, "The
more C++-like experience they have, the higher this factor [of the
amount of time required to learn Prolog and CLP compared to that
required to learn a C++-like language such as Java] will be.
Logic and mathematics are barely relevant." Wedd's hypothesis is that
there exists an inverse correlation between experience in
object-oriented programming and speed in learning Prolog. I suspect
that a similar correlation exists between experience both procedural
and object-oriented programming and speed in learning non-strict,
purely functional programming languages, such as Haskell or Clean.
2) A blog entry that I read in 2006 (in Japanese) in which one person
who desperately wanted to learn programming, but who was inadept in
the art, failed at learning VB, Perl, Python, C, C++, and Java, but
was eventually able to learn Haskell (see the (Japanese-language) blog
entry at
http://d.hatena.ne.jp/scinfaxi/20070523/1179935877). (He
then complained that he remained a NEET (one "Not currently engaged in
Employment, Education or Training") because he had difficulty finding
a programming job using Haskell.)
At the time, I did not consider this entry surprising, but since then,
I have discovered that Haskell seems to have a much steeper learning
curve (at least for me) than Scheme or Ruby (even though I also find
it highly interesting precisely for this reason). I am now very
surprised that somebody who had difficulty with Perl and Python would
not have such difficulty with Haskell, and suspect that there is an
inverse correlation between familiarity with alternative programming
paradigms and the ability to learn a non-strict, purely functional
programming language such as Haskell or Clean; i.e., the less one
knows about alternative programming paradigms, the easier it is to
learn Haskell or Clean.
3) A discussion I read several years ago (reference unavailable) in
which somebody once said that students of programming should not learn
BASIC as a first language because it leads to students writing
spaghetti code. Somebody else also wrote (reference unavailable) that
line BASIC should be especially avoided (presumably for this reason).
Summary:
There seems to be an inverse correlation between familiarity with
procedural/object-oriented programming languages and ease of learning
a non-strict, purely functional programming language language, such as
Haskell or Clean. A detailed survey might help in investigating this
correlation.
If you could please briefly outline your evolution in programming
languages as a functional programmer (preferably in this thread), and
describe any related thoughts/comments that you have on this
correlation (or anything else relevant), your assistance in this
research would be greatly appreciated.
-- Benjamin L. Russell