No. Lisp is actually the simplest programming language, and has no syntactic cruft. While it wasn't designed to be “easy to learn” like Swift, Python, Ruby, or Basic, there is less overall to learn and you will be writing real, useful programs in Lisp sooner than you could with other languages."
It's like a never-ending stream of lies, every word being a little more absurd than the last...
How To Design Programs for those interested in picking up Scheme: http://htdp.org/
But is it?
(format t "~{~@(~A~)~^ ~}, because ~{~A~^ ~} is easier!" llthw (cddr llthw))The thing with imperative programming is that you don't really need to know the language to at least get an idea of what's happening.
Lisp is so dense that while you can pack an unbelievable amount of programming into a small chunk, approaching it as a beginner is daunting. There isn't a really good way to 'build' on an algorithm and learning it is significantly harder than learning C# or Java or even better yet, Python.
It's like saying, 'Linux is easy to learn! You can do so much in so few characters! It's so powerful! And look, robust manual pages for all!'
Yeah, that's true, but handing a user some pipes and greps isn't going to explain what the hell they actually do or better yet, how to leverage that into something useful. It's just going to look like greek to anyone who sees it and a huge effort has to be made to get to the point where you can even begin to understand what's happening.
Imperative programming doesn't ask you of much. 'Here is a class. Here is the main method. Write some stuff in here. Here are some basic methods in the default libraries and their expected inputs. It's going to execute line by line. Go nuts.'
And that's really the difference here. Lisp asks a lot of the user up front. Python doesn't. C# doesn't. Fuck, Python is so loose that you don't even really need to know what any of the structure is to start writing something that kicks back some output. Yeah, as a group that understands Lisp and Scheme and Haskell and F#, it's really easy to say, 'Lisp isn't THAT hard', but that's bullshit. Lisp IS that hard. Lisp is a very difficult language to pickup when you are starting at square one and it's only marginally easier if your background is purely imperative languages. Misrepresenting that is a bold-faced lie.
Lisp has no syntactic cruft? It has (almost) no syntax, so there's less room for cruft. That said... cons? car? cdr? That's your syntax? That's not cruft? Seriously? There may be less total cruft, but the percentage of cruft might still be higher...
There's less overall to learn? If you mean to master the syntax, sure, that's true.
You'll be writing real, useful programs in Lisp sooner than you could with other languages? That's a much more arguable point. There's more to being able to effectively program in Lisp than learning the syntax (as there is for every language). Is that "more" easier to learn for Lisp than for other languages? I have no data, but for the web site's claim, I'd at least say "citation needed".
If you're a bright developer, who puts in time eagerly, it will take at least six months before you begin to "get it".
At that time you may start itching to evangelize to others, but those who have not put in the time will not get it.
It's not realistic to try to make someone see in one or two e-mails or postings what took you a year to see for yourself.
It's been my experience that most things are tractable once you spend long enough staring at them.
If you care enough about a subject to have strong sentiments like "never-ending pack of lies" then your time would perhaps be better served by spending time with the "adored" object, rather than these comments.
The idea that you can write a useful program in Lisp faster than in other languages is pretty unsupportable. For most users, the time and effort spent getting Lisp up-and-running on their machine of choice will already have lost. Incidentally, I played with the interactive REPL and it wouldn't advance beyond the second page.
And, if you do write a useful program in Lisp, you run into the deployment problem. The deployment problem is pretty bad. Apple's Advanced Technology Group at one point had one of the highest concentrations of Lisp-heads in the world and produced a bunch of stuff like Dylan, Sk8, etc. that was intimately tied to their Lisp implementation. Not only was this not cross-platform, and pretty hard to distribute and deploy even on the platform it was created for (680x0 Macs) it was killed by the transition to PowerPC.
This isn't as big a problem if you're writing server software, but it's absolutely disastrous if you're writing desktop or mobile software.
One could show someone how to do something useful and deployable in Python, PHP, Perl, Javascript, or whatever in a few minutes and chances are they could have a usable dev environment set up in a few minutes.
There isn't any syntactic cruft in Lisp that will have you scratching your head as to what goes with what.
There are semantic head-scratchers related to syntax, like working out the implied actions of complicated, nested backquotes. There is never a question of syntax, though: nested backquotes are not ambiguous syntactically: they are just nested lists, with some sprinkling of a simple prefix-based notation throughout (splices and unquotes).
Lisp is a difficult language due to it's density and unreadability.
Useful stuff hasn't been built in functional languages until very recently, exception being some AI. Haskell and friends are making functional languages cool and useful (and that's great!) but if you want to build something useful as soon as possible, learn .NET, Java, Python or Ruby.
Keep in mind too that different Lisps have different syntax. The only thing in common between them is Polish notation, S-expressions and a macro system. A Clojure program and a Common Lisp program look and feel very different.
As a transhumanist myself I resent the arrogance that led to this ridiculous appropriation. Yes, Lisp is pretty great, but the use of other languages is not some grave cultural defect through which you can glimpse at all the badness in the world.
If the goal here is to evangelize Lisp, radiating this kind of pomposity seems like a questionable move because it reflects badly on the community you are trying to win new members for. Worse, this could be interpreted as willful cluelessness in the face of the rich multi-language ecosystem potential readers are living in.
As far as the singularity is concerned, monocultural boneheadedness is not something people associate with technological progress.
> 1958 - John McCarthy and Paul Graham invent LISP. Due to high costs
> caused by a post-war depletion of the strategic parentheses reserve LISP
> never becomes popular[1]. In spite of its lack of popularity, LISP (now
> "Lisp" or sometimes "Arc") remains an influential language in "key
> algorithmic techniques such as recursion and condescension"[2].Willful ignorance about other languages and their features is as much a cultural failure as, the hypothecial, unwillingness to learn about Lisp.
It seems as though the author is trying to sell a religious experience to his readers. If that is the case, that's interesting in the sense that it is certainly unlike any other programming text I've read. I personally think evangelizing Lisp should be in the form of making it more familiar, human, and relatable to the average programmer, but I can't help but to respect the sheer uniqueness of the approach.
How circular! A Lisper would respond that the very passage you critiqued is the appropriate response to your critique---that Lisp is coming, no matter the tone, and our complaints or praises will have no effect on the final outcome.
Perhaps Lispers would do well to be less pompous, but that is for their welfare, not Lisp's.
At best, this is a religious point of view, and at worst it's also a matter of being part of the in-group - which means this opinion is calcified because it's a critical part of these programmers' identity.
I generally don't like to comment on these kinds of threads anymore than I would on political or religious ones. However, this thread is about outreach to people outside of the cult. Continually forcing the impression of being a cult might well serve to recruit more followers, but I'm wondering: does it really have to be a dogmatic movement? Isn't the larger opportunity here to try and reach another kind of person?
I know there's a taboo in this community about addressing aggressiveness and arrogance, and maybe that's an excellent policy to prevent flame wars. However, I think it's a mistake to overshoot this target by accepting abrasiveness and fervor as valid replacements for reason and reflection.
[1]http://lemire.me/blog/archives/2010/05/31/computer-science-i...
From your link:
> The first self-modifying AIs will hopefully be written in functional programming languages, so learn something useful like Haskell or Scheme.
Q: Is this site affiliated with Zed Shaw and Learn Code The Hard Way?
A: No. This is a separately run and managed site, based on the format of Zed Shaw's LxTHW open-source package [1] for writing your own programming language course. You should check out the project and see what others are up to! More information is available at: Learn Code The Hard Way [2]
I do support books like this as I think there needs to be more "trainer" style books, especially for beginners, because they work.
1. You can't really trademark titles of books, and I wouldn't want to in this case because there needs to be more books in this style. This method works for beginners, and works really well, so I want there to be more.
2. I created the repository so that there's an even lower barrier to entry than having a title to copy. I actually need to update this repository, but if I made it then I want people to reuse the methodology and make their own.
3. My only complaint would be when people rip off my words. If someone wants to write one of these, they just need to do their own writing in their own words and not copy mine.
That's my stance on it. I like people copying the title and method as it means there's more books that will help people learning to code. I just don't like them copying what I wrote.
Also, read the README: https://gitorious.org/learn-x-the-hard-way/learn-x-the-hard-...
Zed A. Shaw created project Learn X The Hard Way 2011-08-29 22:06:48 UTC This is a skeleton book project that makes it easier to start working on a "Learn X The Hard Way"...
The intro is a little bit copied but it's fine since he is keeping to the idea and the "rules" I have, but could be nicer if it was in his own voice more. Who knows, maybe he does write like me a lot or he's just ultra inspired.
The big reason I say people should use their own words, apart from copyright, is that if you're writing one of these books for a programming language you love then your words will express that better. You'll say things that come from your community and culture, and you'll give away a sense of what you like about that language. When people copy what I say the prose comes out obviously not by them and not for that language.
Anyway, this is pretty cool and I hope he works on it some more.
edit : I can't reply to you, but re-read what I said. I am making the point that I believe Land of Lisp to be for people coming from other languages, whereas I think that "learn X the hard way" is better for people new to programming altogether.
The parent of my reply is pointing out to zedshaw that "Land of Lisp" is a good beginners book. I am adding that it's my opinion that it's a good "beginner at lisp" book, and not an overall "good-for-beginner-programmers" book.
> The Little LISPer is based on lecture notes from a two-week ``quickie'' introduction to Lisp for students with no previous programming experience and an admitted dislike for anything quantitative. Many of these students were preparing for careers in public affairs.
I don't know exactly what that means, but it sounds university-level?
All the examples are about food, and there's cartoons littered throughout. There's a bunch of books that seem to be of that tone (Learn you a Haskell, Land of Lisp, Realm of Racket, Learn You Some Erlang), and I found myself instinctively recoiling from all of them (I haven't read the Erlang book, but it seems very much in that style).
I think it's important to have lots of different styles of books for learning a language, because I think different people respond better to different approaches, but selfishly, I wish every language had an equivalent to "ANSI Common Lisp" (by this site's benefactor emeritus) and Real World Haskell. I am also a big fan of the way Zed chose to lay out his books.
>Is Lisp as hard as people say it is?
>No. Lisp is actually the simplest programming language, and has no syntactic cruft.
I always see this used when claiming certain languages are easy to grasp. "It's not complex at all! The syntax is incredibly simple!" x86 assembly also has very simple syntax but it's not too easy for beginners to write in, beyond very simple and small programs.
It may be better to leave the intro part for the end as it may alienate programmers that have preconceived notions about lisp based on hearsay and not actual experience (i.e. it's enlightening, it's old, full of cruft, hard to read, it's functional, Clojure is the future of lisp).
It is also very much a WIP that the author didn't submit so keep that in mind.
I hope he gets to writing the chapter on Quantum computing: http://learnlispthehardway.org/book/3-14-0-quantum-computing...
But seriously - i've been wanting to learn a lisp for a while now and this seems like an accessible way to go about it.
The title is right, IMO. This is a difficult way to learn Lisp. I'm feeling the burn already.
I stumbled into Lisp some fourteen years ago when a hard copy of the book landed my way.
The book is now freely available in electronic form (and has been for years): http://www.cse.buffalo.edu/~shapiro/Commonlisp/
No. Lisp is actually the simplest programming language, and has no syntactic cruft. While it wasn't designed to be “easy to learn” like Swift, Python, Ruby, or Basic, there is less overall to learn and you will be writing real, useful programs in Lisp sooner than you could with other languages."
Is it necessary to put strong subjective statements that have no supporting links or proof? Also, are you seriously saying that /Common/ Lisp is the simplest language? (from FAQ: "Lisp — the friendly nickname for Common Lisp")
Of course, simple syntax is nice, but it doesn't actually get you very far by itself.
I like lisp, but this kind of mystical gobbledeygook is not helpful. It's worth noticing that mystics and lisp-ninnies are alike in a very important way: promising much, and delivering little. The people who actually accomplish things in lisp (Yann LeCun, Richard Fateman) do not speak in this preposterous mouth foamy way. They also don't work for overt frauds like d-wave.
Just to put my two cents in, as a general reply to a lot of comments here... this is a very, very early draft in progress, and I didn't expect anyone to pay attention to this project, let alone post it everywhere. It needs a lot of work, particularly in toning down the Lisp Evangelism, and staying true to the methodology without accidentally parroting Zed Shaw's voice.
Zed Shaw: it means a lot to me to get your perspective here. Yes, you and your series ultra-inspired me. I've wanted to write a book on Lisp for a long time, but it wasn't until I was pointed to your series that I felt like I could give Lisp the perspective it was missing. I'll make a point of editing the Preface more carefully---everything that's up there so far, I wrote off the top of my head with very little editing, so I guess in following your method and format I accidentally used some of your words as well.
Thanks everyone!
http://learnlispthehardway.org/book/preface/
> The biggest secret to Lisp is that it is actually the simplest programming language ever created—and that, coupled with its expressiveness and elegance, is why it is favored exclusively by the best programmers in the world.
As a Lisp novice...my thoughts are, "Really?" to both of those assertions. Because the natural follow up is..."So if all the best programmers use it, whatever "best" means, why is it a language that seems so rare in everyday use?".
No need to assert things you can't actually prove or show...it just builds up skepticism before the reader even starts learning. Just talk about the language at hand, or at the very least, do a quick Rosetta Stone comparison of Lisp doing something much more simply than Python/Ruby/PHP, and that's all you need to write in the intro.