![]() |
|
|
|
|
1
20th February 07:52
External User
Posts: 1
|
Great point! I fully agree.
A bit rambling of this issue with regards to Mathematica. In Mathematica, there's symbols True and False. If a predicate expect a boolean but something other than True or False is given, then the expression evaluates to itself. (i.e. without resolving into anything) Example: In[1]:= If[True,3,4] Out[1]= 3 In[2]:= If[False,3,4] Out[2]= 4 In[3]:= If[something,3,4] Out[3]= If[something,3,4] --------------------- Here's some personal story about how i ventured into lisp. The path of my computing experience is kinda unusual like most other things about me. In 1991, i was 23, and was attending a 2-year community college in California. (DeAnza College and Foothill college) (i have never had highschool (more or less never had a _chance_ to, actually.)) During these college years (which is about 1991-1994, rather unusually long for a 2-year community college), i've took all math courses they offered (roughly equivalent to math classes of first 2 years in a 4 years university; culminating in multi-var calculus and a intro course on Differential Equations and Linear Algebra, but no Abstract Algebra nor Analysis proper), but i've never took any computer science courses. (i think i might have taken a Pascal course) It is also during the early 1990s, i started to learn programing on my own. My first “language” is the one in HP-28s programable scientific calculator. I remember having wrote a program to solve the 8-queens problem all on my own. (without knowing or heard of the term back- tracking) (see http://xahlee.org/prog/hp28s/hp28s.html ) And, during these years i bought Mathematica (because i heard it's the best math tool and i love math and wanted to have the best tool). I taught myself Mathematica and wrote some programs for visualizing plane curves. ( see http://xahlee.org/SpecialPlaneCurves...aneCurves.html ) By 1997, i'm one of the world's top Mathematica application-programing expert. But the curious thing is that, i have absolutely no idea what is a compiler, parser, lexer, and absolutely have no faintest idea how Operating System worked or its basic structure or purpose in technical terms, and have absolutely no idea how networking worked. Do not even have a practical concept of what's a computing protocol (as in TCP/ IP). Absolutely do not know anything about “unix”, and vividly remember that i don't know what is “tar” and “gzip” (just know that these are something in “unix workstations” and some mysterious GNU). (during all these years up to 1997, i was using Mac, being what a Mac fan might call a “power user” (as a computer user (as opposed to a programer); and using the mouse; in the days when Macs are just Finder and Multi-Finder, and used by Desktop publishing, with MacUser and MacWorld magazinings publishing tricks and software application reviews etc. (e.g. Microsoft Word, Word Perfect, Nesus Writer, Spreadsheets...etc))) I must stress, i have absolutely no concrete idea about anything that a normal computer science student would know in his first year. I do not have any concrete idea what IS a language specification (such as Java lang spec or Common Lisp “Hyperspec” or Emacs Lisp Reference Manual, etc) I have close to absolutely no knowledge to how ANY other computing languages. Put in another way, i wouldn't know how to write a Hello Word in any other language. I have no notion of what's a “white paper”, “functional programing”, and DO NOT understand (or even heard of) the meaning of “side effect” (in the context of functional programing). (i vividly recall, the first time i heard the term “side effect”, is in 1995 when i was trying to describe a nature of the code i wrote in some verbose manner, to Stephen Wolfram (in the sense a student is trying to present his idea), and he said “[you mean] side effect”, and i was like “Yeah, exactly, ‘side effect’!” (and feeling enlightened how the phrase described the situation well).) The gist of this is that, from my programing experience from 1991 to about 1997, i learned programing only in HP-28s and Mathematica, by the shear reading of their manual from cover to cover (practically several times), while having just about no concept of any programing a 1st year computer science student would know. (I do know, of course the concept of algorithm, as that is essential to programing and is also a fundamental concept in math and discrete math, which i have learned a lot mostly by myself too. (But i do not at the time know anything actual, typical Algorithms that are taught, such as sorting algorithms, tree walkers, etc) (i have tried to read Knuth's Art Of Programing but it was pretty imcomprehensible)) From about 1997 onwards, i started to study most of these things, starting with unix and perl, by sheer reading of the manuals and documentations and books and hands on coding in them. (by 2000, i'm fairly a unix admin and perl expert, with knowledges in SQL/database, working knowledeg of IP protocols... etc, actually working in start- ups in Sillicon Valley's tech boom since late 1998.) Ok, the main point i started to write this personal history, is my first encounter with Lisp. (the previous paragraphs are just intro.) Although lacking a formal or conventional education, i'm by birth fairly intelligent and by nature very curious. This means i have read a lot of books or texts or literatures i have in contact with and in library (was a avid library visitor), such as the massive number of programing FAQs and FAQs of other subjects (such as BDSM) etc. So, it is very present in my awareness, that there is a language called Lisp, and is supposed to be extremely powerful and beautiful. And, at the time, i have heard, that Scheme, is the most beautiful and elegant language that exists. (this is my reading impression, anyway) And, i heard that the book “The Structure and Interpretation of Computer Programs” by Harold Abelson et al, is the best computer science book.. So, i started to read it and learn Scheme. Remember, at the time i'm a master of Mathematica _the language_ itself, yet do not know much about the basics of computer science. When i started to learn Scheme, the first thing that hit me is the cons business. To me, who are accustomed to Mathematica, finding the cons business weird and unwieldy. It puzzled me. I was thinking, how can a elegant language have this? Certainly in Mathematica i can extract and manipulate tree structure far more easily. At the time, since i barely have basic knowledge of any computer science subjects, i was greatly puzzled about the situation. (in fact made a newsgroup post in comp.lang.scheme (and was flamed by one Erik Naggum) (this is 1998 or 1999, i think)) Of course, today, with various levels of expertise in several languages (Mathematica, emacs lisp, perl, php, javascript, sql, java, Linden Scripting Lang (Second Life virtual world), inert langs (HTML/ CSS/LaTeX,POV-Ray ...)) and have read countless tech papers and worked in complex software, data centers, and wallowed in all kinds of industrial spaghetti code with non-existent documentations, i know for a certainly, that Mathematica, which perchance to be my first language, is in fact the world's _most_ advanced and high-level language, bar none. (this short personal account is not supposed to be a pitch for Mathematica. It just came out that way. There are, of course other langs, depending on context and area of application, are equal quality as Mathematica. For example, i would think Haskell, erlang, ML/OCaml family etc would qualify, but i just have not actually learned these) (gee, i just typed as quickly as possible and it came out to be over 1 thousand words of a brief personal bio of my computing experiences. Good for me! The orginial intention was just to describe my first impression of Scheme) Xah xah@xahlee.org ∑ http://xahlee.org/ ☄ On Jan 28, 5:48 pm, Blake McBride <bl...@mcbride.name> wrote: |
|
|
|