Should i learn lisp or scheme




















Clojure is an interesting derivative, but if you want to learn Lisp, you should start with one of the above, a little bit dependant on what kind of application appeals to you most. But if you want me to narrow down my recommendation to a single answer, it would be Common Lisp.

It has one single comprehensive standard and there is a lot of real-world development done in Common Lisp. Scheme has a smaller standard, so while that is easier to pick up quickly, most Scheme implementations have a lot of extensions for all the stuff not in the small standard :p.

So with Common Lisp, you have a much larger overlap between implementations. For development, SBCL is great, as it is a free and open source implementation of Common Lisp which also has one of the best compilers to native code around, with well written code, you can get amazingly fast speed.

Practicall Common Lisp is a great resource for learning. It is very comprehensive, covering the important parts of the language and has some real-world examples. Land of Lisp is very nice, a bit more playful. I would say that the principle of scheme with a few well chosen primitives that compose into efficient abstractions is something I will forever carry with me.

Common lisp is amazing as well. Have you tried Chicken? I'm playing with Scheme again and trying to decide between Chicken and Chez. A bunch of very nice people. I have called it the friendliest place online for years. I ended up having to write some portable r6rs code, and that is easier in guile and chez, so that's why I went. I still feel a bit like I owe them to spread the word.

Chicken is a very capable and plenty fast scheme. I would say that it is slightly faster than, or just as fast as guile3, but slower than chez. Thanks for your assessment. Chicken's community looks pretty cool. I'm not super concerned about speed or portability right now, I'm just scratching a personal itch. I'll have to check out Chez soon though. The course teaches the Racket language, but proceeds at a rapid pace. It follows the "How to Design Programs" methodology developed in the s?

There is a follow-up course, "How to Code: Complex data" but I didn't take it. I would start with Common Lisp. Best way to learn any language: build something. I picked Clojure and haven't looked back since.

If you keep wondering what's the best implementation, then you will suffer from analysis paralysis -- you'll end up spinning your wheels and doing nothing. Flip a coin, pick something, and start building. I can't say its the best way, but I found learning Clojure as my first was really helpful for me.

Like you, I prefer working on real projects as well. Given how easy it is to use both Java and JS libraries Clojurescript there's a bunch of real-world project ideas I could execute on web apps, CLI tools, cloud-related tooling. I'd say via Emacs is the easiest way. When you want to adapt Emacs to your workflow you are kind of forced to learn Lisp and once you have learned the basics you may be seeing yourself writing Emacs packages even.

Progress with learning Clojure from there. This is how I learned Lisp. It's not just a good way to learn lisp, it's also fun and has some nice side effects. Elisp is a bit quirky, I don't think it makes sense to invest time in it unless you plan to become an Emacs power user. That said Steve Yegge "Emergency Elisp" is a great intro.

Try learning Common Lisp. Meta programming is way easier with Lisps. Python would not normally be classified as functional btw. For that matter, Common Lisp isn't a functional language by the modern definition either.

Python doesn't really have anonymous functions unless they are 1-line functions, which, in python, means they can't do much. This pretty much disqualifies it as a functional programming language. Additionally, Guido and the community in general discourage functional programming. CL certainly supports a functional programming style, and there are some good libraries designed for this, and it certainly lends itself more to functional programming than python. But CL isn't a functional programming language the way haskell, or even other lisps like scheme and clojure, are.

CL is really a multi-paradigm language. You can use it for FP, or OOP, or straight imperative, and probably some other less-mainstream paradigm. It's up to you. I would recommend learning Clojure because you can immediately build useful and fun programs with it e. If you're not familiar with lambda calculus - and if you do, you wouldn't likely ask this question - this article has a good chance to make you pause and re-evaluate importance and versatility of functions.

The benefit of this article is that the code is in a more traditional JavaScript, and it talks about just some ideas - not the whole landscape, so it's relatively short. It's quite a project to read this an make all tacitly suggested exercises. The big point is that you can have an expression, which evaluates other expressions - in a chunk one can hope to bite. After this you can aim to write your own interpreters.

By this time you'll have some practical ideas about how closures are built; Michael Nielsen uses Python's functions for that. Look at "Structure and interpretation of Computer Programs" for solid foundations. Look at "On Lisp" for e. I'd also recommend checking "Paradigms of Artificial Intelligence Programming" - another book by Norvig available on the Internet to read - which teaches Lisp while providing plenty of examples of its use for interesting problems.

You will probably get most out of pp. You'd see why Lisp is at times called "a big ball of mud", and how this old language somehow manages to become inspiration for new languages, while absorbing new ideas from modern language research. I would recommend Racket over CL and Clojure. The ecosystem is self-contained unlike Clojure and the design is very clean unlike Common Lisp. Also it comes bundled with a nice and simple IDE. An award-winning book that serves as a serious introduction to the language with many practical projects.

A fun introduction involving writing silly retro games in Lisp. I would recommend against learning Clojure because the error messages often tie too closely to the JVM, which might be annoying. But really the main thing is macros which enable the above , macros allow for easy customisation of the language syntax to better suit the problem at hand.

I had exposure to Scheme during my undergraduate years taking courses in programming languages and compilers, but earlier this year I started learning Common Lisp and I'm really enjoying the language. I'm pining for the days of Symbolics Genera, the operating system for Symbolics LISP machines, but sadly it's not open source and it's extremely difficult to obtain a legal copy these days. This does not cover the entire language, but it covers the basics of the language, including macros.

I went through this text and enjoyed its gentle introduction to the language. Good luck and have fun! Christian Lescuyer. This answer should mention Yahoo Stores, the first web app, was partially written in lisp. Quoting Wikipedia: In , Yahoo! Phil Bennett. I use dotlisp. There's even a lisp environment, racket, designed to make DSLs — Lazerbeak Konrad Rudolph.

I think there is a fair criticism in what you say. I only mean to say "it looks much harder as you've presented it, and looks much clearer as it is presented here". I think that you would have to agree that many languages look a lot more confusing if their indentation conventions are not followed. Further, if we compare the indentation of, say Java and Lisp, I would say they generally require about the same level of knowledge of the basic constructs of each language to indent them correctly.

But, it's fair, although entirely subjective, to say it still looks hard. To make it a bit simpler you could use the standard let and use a defun at the start of the function to define fn as it doesn't change. Similarity to English? What about mathematical notation? More like your 'rebuttal' sounds like "Whinge whinge". Try the programming language sniff test. Take someone who hasn't programmed before and show them a page of VB code and a page of Lisp code.

I'll happily bet my left nut on which of the two the casual observer will be more easily able to draw meaningful observations from. I wonder what a Chinese, Japanese, Korean, Sumerian, Hindi or Arabic non-programmer would think of your rather brash desire to give up your testicle for a facile argument. Show 2 more comments. It's because you're a good programmer.

Bad programmers, instead of influencing old skills with new knowledge, think in already known languages while writing in new ones. But why are you using Java after lisp? I second that. I'm currently on my second foray in to Lisp, 5 years out of school. One term of Lisp when you're still green may not have adequate effect -- I remember focusing only on the metaprogramming, and didn't yet have appreciating for the metaprogramming and flexibility. If you have to ask yourself if you should learn lisp, you probably don't need to.

I'd say the opposite: if you already understand lisp because you have experience with a similar language then it's probably not necessary. If you don't understand what lisp has to offer, then you could benefit from the exposure. MrFooz there is no similar languages that can remove the need to learn the lispy part of lisp. The main features of lisp are not found in any languages. Though most are. Depending on your goals. If you want to die, you don't need to breath.

But that doesn't mean that you shouldn't. Erlend Halvorsen. The most important language? I think not, sir. Well, it's available on pretty much any device that has a web browser and probably a few that don't , so as far as languages for running end user applications go, it has probably the highest penetration of any programming language on the planet.

Obviously you could have an entirely different opinion on what's important. Will it be used to cure cancer? Probably not. But, like it or not, it will be one of the corner stones of web application development for years to come. I went the same way! Although I was already using Javascript's functional and prototyping features, after learning Lisp Javascript was a new language nevertheless for me.

Adam Haile. Small note: On Lisp is not a suitable introduction to Lisp, read something else first. I recommend Practical Common Lisp. I also recommend How To Design Programs, for those wanting to learn from scratch.

It's great for non-programmers. Antonio Haley. So get a book and an implementation, and start trying to write programs. Read existing source code to get an idea of Lisp style. If you run into trouble, ask on comp. People there are always willing to help newbies. Which should I learn, Common Lisp or Scheme? What's the difference? Common Lisp is powerful but ugly. Scheme is small and clean, but the standard only defines the inner core of the language.

Do you know a good, free Lisp implementation? There are several. Can you recommend a book for someone who wants to learn Lisp? You might like this one. Can you elaborate which tooling and set of "standard libraries" you use?

I'm doing day to day work in Python "batteries included" and reall would like to make the switch. Personally I come from Common Lisp world, so can't say much about other Lisps tooling. In CL I just mainly use couple of different implementations, whatever might suit for the job best.

Library-wise not much out of the ordinary. Either just built-in tools or maybe some usage of the most common libraries like alexandria basic utils , cl-ppcre regex , uiop OS stuff , usocket sockets , bordeaux-threads threads , Closer-MOP meta-object protocol and some web tools like Clack with Hunchentoot or Woo etc. So nothing really out of the ordinary in CL. The language spec of Common Lisp is pretty large not necessarily a good thing so the built-in libraries offer a lot so you don't necessarily need much third-party libraries.

Issue with this along side the size of the spec is the fact that the spec is old, so it's missing some crucial stuff from it like threading etc. That experience will make you a better programmer for the rest of your days, even if you never actually use LISP itself a lot.

Completely agree! But the understanding of logic I gained has been a part of my foundational understanding when developing. GianFabien 8 months ago prev next [—]. Brendan Eich set out to implement Scheme in the Netscape browser. Due to marketing and business management pressure he ended up creating a hybrid of Scheme and Self a successor to Smalltalk using a C-like syntax.

Unfortunately, along the way JS lost the homomorphism feature of Lisp. That is partly the reason we have so many transpilers to JS. I always say I write scheme because it's fun. Fun, like back when I discovered JS in I do it to keep my soul.



0コメント

  • 1000 / 1000