[plt-scheme] Re: HTDP - evidently not for everyone.

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Sat Feb 20 11:13:40 EST 2010

Start a volunteer project to implement BLAS in PLT. -- Matthias

On Feb 19, 2010, at 8:53 PM, Jos Koot wrote:

> Thanks for your very elaborated story.
> One small remark about myself. I read The Little LISPer (nowadays The Little Schemer) without having a Scheme or Lisp interpreter available. After reading the book I wrote my private Scheme interpreter in Pascal on a 10MHz/1Mbyte Apple computer. My first Scheme interpreter did make continuations available to the user. The continuations could even be dumped into a file for later restart (all values were sexprs, even the value of a primitive function or a lambda expression) But my first interpreter was not tail recursive and therefore not a decent Scheme interpreter. However, it allowed me to play. Later I discovered PLT and that's what I use ever since. There is only one thing I am missing in PLT (or in Scheme in general), a comprehensive library for linear algebra (like BLAS for Fortran) Many computations in physics come down to matrix inversion and matrix diagonalization, frequently in an iterative process searching for a self consistent state. An interface between Scheme and BLAS would be great, even though all numbers would have to be converted to flonums and would have to be returned as flonums.
> Because Scheme makes it easy to represent data, it would be a great tool to make a program for the computation of matrices for transformation of the angular parts of quantum mechanical systems between different ways of looking at these systems (in fact based on the the properties of the continuous symmetry group O3) Long ago I wrote something alike in Fortran, but in Scheme it would be easier because of the virtually infinite precision of rationals. The aforementioned computations result in real numbers whose squares are rational numbers which can be computed with exact precision. In Scheme it would be peanuts to make a representation for this kind of numbers. Multiplication would be easy. Addition impossible, but additions of certain sequences of these numbers would again be easy by means of exact recursion relations. It is on my list to do, but probably will remain there for a long time.
> Jos
> ----- Original Message ----- From: "Benjamin L. Russell" <DekuDekuplex at Yahoo.com>
> To: <plt-scheme at list.cs.brown.edu>
> Sent: Saturday, February 20, 2010 1:28 AM
> Subject: [plt-scheme] Re: HTDP - evidently not for everyone.
>> Jos Koot wrote:
>> > I have always thought of 'The Little Schemer' as a book about recursion
>> > rather than programming. This is clearly stated in the preface.
>> > Nevertheless, for me it was the first introduction to Scheme/Lisp as
>> > well. But more importantly, a very good primer before studying Lambda
>> > Calculus. Thanks Daniel and Matthias!
>> You are right:  The stated purpose of TLS, IIRC, is to teach the reader
>> "how to think recursively"; nevertheless, TLS uses Scheme as a tool for
>> doing so.  When I used to read TLS while back at NYC, I used to take
>> along my old Handspring Visor Deluxe with a portable folding keyboard
>> with me to Kinko's at 3 AM or so, when everything was quiet, and to take
>> breaks from studying relational databases by typing out my solutions to
>> the questions from the dialogs in TLS on my Visor.  However, I also
>> wished I could actually try out my solutions in a Scheme interpreter,
>> preferably on a laptop (I wasn't aware of Scheme interpreter for the
>> PalmOS, such as LispMe (see http://www.lispme.de/lispme/index_en.html)
>> at the time, partly because I didn't have a laptop at the time with
>> which to surf the Internet, and was trying to save money by not using
>> the computers at Kinko's).
>> Of course, had I had a laptop, I would have probably discovered LispMe,
>> and worked out the exercises in that Scheme interpreter on my Visor.
>> Let me provide some background for my reason for reading TLS.  The whole
>> point of reading TLS as a motivational tool for self-study to become
>> better at programming, not because I wanted to learn programming for a
>> job, but because I felt that certain kinds of programming were fun.
>> When I was in college in the Computer Science major, I was continually
>> surrounded by majors in that discipline who were much better programmers
>> than I, and I always had what may be deemed a kind of inferiority
>> complex toward their ability in programming.  My forte had always been
>> in English writing, especially English poetry, and my writing professor
>> had even been sufficiently impressed with the poetry I had written to
>> accompany me to the library to recommend that I apply for graduate
>> school in English; however, my main interest was in computer technology,
>> especially multimedia applications, and most particularly virtual
>> reality, but I lacked the linear algebra background to take a course in
>> computer graphics.
>> However, there were no courses in such areas at my college, where the
>> focus in most areas was in theory and research.  Many topics were highly
>> mathematical.  The closest approach to my interests was the Computer
>> Science major.  My parents would not allow me to switch to a different
>> college.
>> I had the misfortune of starting my study of the topic with an
>> introductory course in programming in Pascal.  Programming in Pascal
>> felt like running in a straitjacket:  Pascal encouraged writing a
>> plethora of functions all operating on one data structure, rather than
>> writing a myriad of data structures, and felt extremely inflexible.  I
>> then struggled through Common Lisp at first in the Introduction to
>> Computer Science course, and then discovered Scheme.  Scheme encouraged
>> writing many different data structures flexibly to suit the purpose
>> without having to memorize an entire library of functions:  I felt as if
>> the straitjacket had been replaced by a gym suit.
>> I did somewhat better in the following Data Structures and Programming
>> Techniques course, also in Scheme, then took about two years away from
>> programming (including a year-long LOA) to prepare for a required course
>> in Design and Analysis of Algorithms.  My favorite programming language
>> was Scheme, although I also enjoyed studying Haskell.  My least favorite
>> languages were Pascal, Common Lisp, and C, in that order.  I enjoyed
>> functional programming and tended to dislike C-style imperative
>> programming, except when the programming involved Scheme-style
>> recursion.  (Except for weekends and holidays, I usually only slept for
>> about four hours or less per day, and frequently went without sleep at
>> all just before submitting problem sets or taking examinations.  I was
>> continually sleep-deprived.)
>> During this period, I managed to conquer mathematics phobia, eventually
>> conquered algorithms, and even went on to advanced algorithms, but my
>> lack of practice in programming resulted in my almost bombing a systems
>> programming course in C.  This resulted in my never proceeding on to
>> operating systems or compilers and interpreters, and not seeking a job
>> in programming after graduation, but eventually becoming a patent
>> translator focusing on topics related to the field of computer science,
>> but I have regretted my not taking those courses ever since, considering
>> myself only 1/2 (or less) of a full programmer.  (By "full programmer,"
>> I mean "a student who has successfully completed the full expectations
>> of a Computer Science major, including such core courses as compilers
>> and interpreters and operating systems, and mastered linear algebra at
>> the undergraduate level or above, and who feels confident enough in
>> his/her own computer science/programming/mathematics abilities and
>> knowledge to write significant applications, such a compilers,
>> interpreters, operating systems, or cryptography programs that require
>> knowledge of all these subject areas, preferably with flair and ease.)
>> A course in Compilers and Interpreters for Computer Science majors is
>> like a course in Group Theory for Mathematics majors, or a course in
>> Advanced Writing for English majors:  It is where the nuts and bolts of
>> a core portion of the major are taught.  I still do not feel that I have
>> truly properly completed the Computer Science major, even though I did
>> graduate with a Bachelor of Science in that major, because my education
>> is missing certain crucial core components:  compilers and interpreters,
>> operating systems, and linear algebra (my professor for the course in
>> discrete mathematics covering that subject was a visiting professor who
>> spent only two weeks on that topic, which was not enough to master it;
>> although I know such elementary operations as matrix addition and
>> multiplication, I have not yet mastered eigenvectors, eigenvalues, or
>> determinants).  However, I did learn such topics as formal semantics
>> (including the lambda calculus, one of my favorite topics), recursive
>> function theory, first-order logic, recursion equations (domain theory),
>> and the above-mentioned advanced algorithms, including the analysis of
>> running time of sorting using Fibonacci heaps--a fascinating data structure.
>> I have not given up on pursuing such topics, even though sixteen years
>> have passed since I graduated, and am still pursuing my own studies in a
>> subset of programming language theory at my own pace while working
>> professionally as a patent translator.
>> I maintain my own programming language theory blog, "Monadically
>> Speaking: Adventures in PLT Wonderland" (currently at
>> http://dekudekuplex.wordpress.com/, which I'm in the progress of
>> migrating to http://dekudekuplex.sakura.ne.jp/blog/en/), where I
>> occasionally describe discoveries on such topics as continuations in
>> Scheme, monads in Haskell, and morphisms in Category Theory.  Eventually
>> I plan to master the remainder of linear algebra, and, with luck,
>> proceed on to Hilbert spaces and quantum computer science on day.
>> I feel that there is an intersection between the vast power of the the
>> quantum computer and the vast requirements of a highly immersive virtual
>> reality generator.  Study time is very limited, especially since the
>> study is almost completely unrelated to my professional work;
>> nevertheless, I feel that I have a duty to myself to complete my full
>> education in the major of Computer Science, no matter how long it should
>> take; otherwise, I somehow feel that I have not truly completed my
>> major, despite my diploma, and won't be able to move on to more exciting
>> topics, such as virtual reality generators and quantum computer science,
>> as described in such books as _The Fabric of Reality_ (see
>> http://www.qubit.org/people/david/index.php?path=The%20Fabric%20of%20Reality),
>> by David Deutsch.  (In particular, Deutsch interweaves "The Four
>> Strands" of Karl Popper, Richard Dawkins, Virtual Reality, and Quantum
>> Computation, which are  also coming together in my self-studies as they
>> branch off to Squeak and Croquet.  Squeak is an implementation of
>> Smalltalk, which was inspired by _The Selfish Gene_ (see
>> http://books.google.com/books?id=WkHO9HI7koEC&dq=%2B%22The+Selfish+Gene%22&printsec=frontcover&source=bn&hl=en&ei=gyd_S7W0NYq7rAfauOCbDw&sa=X&oi=book_result&ct=result&resnum=4&ved=0CBgQ6AEwAw#v=onepage&q=&f=false),
>> by Richard Dawkins; Croquet (see
>> http://www.opencroquet.org/index.php/Main_Page) is a tool for developing
>> virtual world applications in Squeak.  Soon, I hope to find a
>> collaborator with whom to develop a virtual world application within
>> which users could live most of their entire lives without having to
>> leave to go to school or work each day or perform most daily errands;
>> having to log out each day and go to work in a boring office surrounded
>> by workers who are not interested in discussions related to computer
>> science or virtual reality is such a pain, especially most of the
>> discussions of these coworkers seem to be focused to such mundane topics
>> as food, money, or the opposite gender; personally, I'd rather be
>> studying continuations in Scheme.)
>> TLS fits into this overall schema as a great motivational work.  It is a
>> kind of spice for the field of computer science:  It projects an
>> Alice-in-Wonderland atmosphere over the often dry study of the field of
>> computer science with its dialogs, implicit puzzles, and illustrations.
>> The problem is that this element of story-telling is often missing
>> from many computer science textbooks.  It is no accident that one of my
>> other favorite computer science textbooks, _Compared to What?: An
>> Introduction to the Anaylsis of Algorithms_ (see
>> http://www.amazon.com/Compared-What-Introduction-Algorithms-Principles/dp/071678243X),
>> by Gregory J. E. Rawlins, also features the same Alice on its cover and
>> motivates the study of each algorithm with a story of the process
>> leading to its discovering, adding a human element to the discussion.
>> TLS is one cornerstone is a quest to learn the art of programming as one
>> part of a complete Computer Science major.  Although the eventual aim is
>> to master the remainder of the spectrum of the field of computer science
>> at the undergraduate level (which I feel that I had missed), programming
>> is one part of it.  A laptop is a useful tool for self-study and
>> practice of programming, motivated by TLS.
>> -- Benjamin L. Russell
>> -- 
>> Benjamin L. Russell  /   DekuDekuplex at Yahoo dot com
>> http://dekudekuplex.wordpress.com/
>> Translator/Interpreter / Mobile:  +011 81 80-3603-6725
>> "Furuike ya, kawazu tobikomu mizu no oto." -- Matsuo Basho^
>> _________________________________________________
>> For list-related administrative tasks:
>> http://list.cs.brown.edu/mailman/listinfo/plt-scheme
> --------------------------------------------------------------------------------
> Se certificó que el correo entrante no contiene virus.
> Comprobada por AVG - www.avg.es
> Versión: 9.0.733 / Base de datos de virus: 271.1.1/2697 - Fecha de la versión: 02/19/10 08:34:00
> _________________________________________________
> For list-related administrative tasks:
> http://list.cs.brown.edu/mailman/listinfo/plt-scheme

Posted on the users mailing list.