I got great grades in college, but could never wrap my head around LISP (Lost In Stupid Parentheses). For anything non-trivial, I cheated and handed in somebody else's work. There, I said it.
I felt the same way about lisp and always reached for the same acronym when I was in college at UT. 7 years later I'm a huge fan of lisp (CL/Clojure/Scheme) and enjoy writing Clojure whenever I get the chance.
It's hard to appreciate the elegance of the language before experiencing years of pain working with others. I have similar feelings about learning Haskell (and not appreciating it) in college.
I got great grades in college, but could never wrap my head around LISP (Lost In Stupid Parentheses). For anything non-trivial, I cheated and handed in somebody else's work. There, I said it.
By contrast, I recall the story of a guy who had the choice between C and Lisp for his programming class, and chose Lisp because he couldn't figure out C.
IIRC Richard Stallman also has a story about secretaries at MIT using Lisp for basically the same reason.
I got great grades in college, but could never wrap my head around LISP (Lost In Stupid Parentheses). For anything non-trivial, I cheated and handed in somebody else's work. There, I said it.
Unfortunately I think many people get "Lost In Stupid Parenthesis" because they either refuse to use or are not supplied with the proper tools. Lisp programs are of such an elegant structure form that they lend them selves to highly structured editing tools.
I use CL in my day job and would find it highly painful if I did not have all the editing tools I use. Basic things like auto closing parenthesis; this makes the whole I need to balance my parenthesis issue disappear, coupled with transforming existing symbolic expression.
Georgia Tech, one of the top schools in the US, couldn't even teach lisp. They tried scheme with SICP (IIRC, not sure what else would have been used in 2001). It ended with a major cheating scandal [1]. I was convinced at the time the issue was a lack of understanding on the parts of the TAs. Very few of them had a background in scheme, it was the blind leading the blind according to friends who had started that year…
At least as far as I can tell, the problem was that they required everyone to learn scheme, including the non-CS majors.
I don't think that was the problem, but it was a problem. I still contend the inability of the instructors to do their job was the problem. If the TAs had been prepared to teach scheme, and not come out of a year with a background in pseudocode (based on Pascal for CS 1311/1321/1511/too many other numbers) and Java (CS 1312/1322/1512/too many more numbers), but instead had a background in functional programming and scheme in particular, they might have been able to help their students out. That transition period from the pseudocode based intro to computing to the scheme/SICP based course should have been more gradual. Which leaves the ultimate failure on the part of the faculty who decided on an abrupt transition for their students, and ultimately failed the students in the process.
What does he mean when he says that it's not possible to write a C program that can write other C programs? Seems like there are counterexamples here: http://www.nyx.net/~gthompso/quine.htm Furthermore, it's possible to encode another programs' code into a single print statement, thereby writing one piece of code with another. As that's trivial, I suspect he meant something else. What was it? :).
I suspect "possible" here is not used in the absolute sense, but more just "it would be a total pain in the ass in C, whereas Lisp excels at it".
After all, anything is "possible" with hand-written assembly code, too, but realistically speaking, it's not practical.
What does he mean when he says that it's not possible to write a C program that can write other C programs? Seems like there are counterexamples here: http://www.nyx.net/~gthompso/quine.htm Furthermore, it's possible to encode another programs' code into a single print statement, thereby writing one piece of code with another. As that's trivial, I suspect he meant something else. What was it? :).
I think you might have missed the point of the statement "programs that write programs", it goes far beyond a toy quine.
You can't do it in C unless you also implement a compiler or evaluator. And even then generating any sort of reasonably complex C code with C would be highly painful to say the least.
You can possibly nearly get there with C macros but I would argue it's not C writing C there, rather a text preprocessor.
What does he mean when he says that it's not possible to write a C program that can write other C programs? Seems like there are counterexamples here: http://www.nyx.net/~gthompso/quine.htm Furthermore, it's possible to encode another programs' code into a single print statement, thereby writing one piece of code with another. As that's trivial, I suspect he meant something else. What was it? :).
I got great grades in college, but could never wrap my head around LISP (Lost In Stupid Parentheses). For anything non-trivial, I cheated and handed in somebody else's work. There, I said it.
Unfortunately I think many people get "Lost In Stupid Parenthesis" because they either refuse to use or are not supplied with the proper tools. Lisp programs are of such an elegant structure form that they lend them selves to highly structured editing tools. I use CL in my day job and would find it highly painful if I did not have all the editing tools I use. Basic things like auto closing parenthesis; this makes the…
> I use CL in my day job and would find it highly painful if I did not have all the editing tools I use.
Just curious, what kind of things do you do with CL at work? I'm always interested in how people use less-common languages :)
I got great grades in college, but could never wrap my head around LISP (Lost In Stupid Parentheses). For anything non-trivial, I cheated and handed in somebody else's work. There, I said it.
I highly recommend buying a copy of Structure and Interpretation of Computer Programs (SICP), downloading Racket http://racket-lang.org, and learning you some Scheme (err, Racket).
I took a class centered around SICP my first term in college, and it was an incredibly enlightening experience.
Unfortunately I think many people get "Lost In Stupid Parenthesis" because they either refuse to use or are not supplied with the proper tools. Lisp programs are of such an elegant structure form that they lend them selves to highly structured editing tools. I use CL in my day job and would find it highly painful if I did not have all the editing tools I use. Basic things like auto closing parenthesis; this makes the…
> I use CL in my day job and would find it highly painful if I did not have all the editing tools I use. Just curious, what kind of things do you do with CL at work? I'm always interested in how people use less-common languages :)
We do digital optimization
The modelling is done in MatLab but the automated experimentation platform is all CL.