Tag Info

Hot answers tagged

68

In answer to question 2, "Most widely used dialect": Depends on how you interpret "Most widely used." Here are some napkin math for lower bounds on how much use each of a few chosen dialects get. Most raw code written Possibly Scheme (all dialects) because of educational applications 270 schools... Let's guess 50 students/year, 500 lines of ...


61

There are a few reasons I am working on becoming competent with Common Lisp. Homoiconic code. This allows structured self-modifying code. Syntax-aware macros. They allow rewriting of boilerplate code. Pragmatism. CL is designed to get stuff done by working professionals. Most functional languages aren't, as a rule. Flexibility. It can do a lot of ...


60

My undergrad degree was in Cognitive Science and Artificial Intelligence. From that I had a one-course intro to Lisp. I thought the language was interesting (as in "elegant") but didn't really think much of it until I came across Greenspun's Tenth Rule much later: Any sufficiently complicated C or Fortran program contains an ad hoc, ...


60

I rather like Scheme, if you want to work with the JVM you should check out Clojure, which is a lisp that is designed to work in the JVM. And yes Lisp is still worth learning to see how powerful such a minimal design can be! The folks who created lisp got some things really right. Its amazing how many of the cool new features of modern languages lisp had in ...


52

Expressiveness isn't always a positive language trait in a corporate environment. Java is extremely popular partly because its easy to learn, easy to write, and easy to read. Mediocre programmers can still be very productive in Java, even if their code is wordy and inelegant. Furthermore, it's easy to abuse expressive languages. An expert java programmer ...


46

I suggest learning both, Haskell first, then Common Lisp. My experience with Haskell was that the static typing seemed to be a restricting annoyance at first, but once I got used to it, I noticed that most of my type errors had logic errors hiding behind them. When you get to this point, and the next milestone, which is learning to think in types and define ...


43

Is LISP still practiced/used in todays world, or is it a legacy language Yes, it is, but you have to know where to look. People who use LISP don't tend to shout too loudly about it but there's a handful of examples of a few high-profile startups having used it to great effect over the last 20 years. It is also very popular with small companies in ...


33

Well, BASIC had 'LET' for assignment as part of the syntax from the start in 1964, so that would predate the use of 'let' in Lisp, which as Chris Jester-Young points out didn't appear until the 1970s according to Evolution of Lisp. I don't believe COBOL, Fortran, or ALGOL have 'LET' in their syntax either. So I'm going to go with BASIC.


30

I think the biggest advantage of learning Lisp, ML or Haskell for a Python programmer is the appreciation of thinking recursively for algorithmic problems, separation of mutable and immutable states, the importance of deterministic output types, the problems of type coercion, and a familiarity of basic functional programming building blocks such as lambda, ...


30

You should read Paul Graham's Beating the Averages article, which explains why Lisp can implement other languages' concepts but usually not the other way around. One of the key features Lisp has is real macros (as opposed to cpp or m4 macros). With macros, you can bend the language to whatever shape you'd like it to have. You can implement a complete OO ...


27

AND please. Haskell teaches you the purest of FP, as far as I'm aware at least, just like Smalltalk teaches the purest of OO. (I mention this not to suggest that OO and FP can't marry, but because both these languages are "gem" languages - a core idea taken to extremes.) Lisp is really a family of languages, so I'll talk about Common Lisp because that's ...


27

Can't really speak for all Lisps but Clojure is definitely a hot and relevant language at present. A London Clojure User Group I went to earlier this week had over 100 attendees.... I've found it to be a very enlightening experience to learn Lisp in the form of Clojure over the past year (after a lot of experience with Java and C#). Main reasons for this ...


25

I'd like to add a theoretical point of view: In classical lambda calculi, let is just syntactic sugar. For example let x = N in M can be rewritten simply as (λx.M)N So its first appearance in early (functional) languages isn't that interesting. However, it become very important with the invention of Hindley-Milner type system and its type inference ...


23

I usually don't like pasting a link as an answer, but I wrote a blog article on this very thing. It is not exhaustive, but it gets some of the major points through. http://symbo1ics.com/blog/?p=729 Edit: Here are the principle points: EXISTENCE: Both lisps came after a bunch of other lisps. Scheme took the minimal, axiomatic route. CL took the baroque ...


23

There's a lot of good information in the other answers, but IMHO they are missing Stallman's point. I believe Stallman was referring to the fact that Lisp itself is a nice regular abstract syntax tree which can be executed by a lisp interpreter or compiler. The process of interpreting or compiling TCL (or another non-lisp language) is one of converting the ...


23

Lisp has a simple syntax. It probably is the simplest practical syntax for a Turing-complete programming language. Lisp programs are data, in the most straightforward possible sense. This makes it possible for Lisp to process and manipulate itself. Lisp allows relatively straightforward creation of macros. Macros are a form of meta-programming, primarily ...


23

A canonical reference for this type of question is Paul Graham's What Made Lisp Different. The two remaining key features of Lisp that are not widely available, according to this article at the time of its writing, are: 8. A notation for code using trees of symbols. 9. The whole language always available. There is no real distinction between ...


22

I recently started a home project using a library that has a C version and a Java version. I wanted to use Lisp for the project, and I spent about a month vacillating between using Common Lisp, Scheme or Clojure. I have some experience with all three, but only toy projects. I'll tell you a bit about my experience with each of them before telling you which ...


22

I feel your pain, I would love to do more coding in functional programming (Haskell looks so fun!). I feel like I have only just scratched the surface because I have yet to use it in a business context. I would strongly suggest against doing it though. If you program in a language only you know then only you will be able to support it. Unless you want to ...


21

One of the key differences between LISP-like languages and other languages is that in LISPs, code and data are the same thing. This makes it possible to do things such as have a program modify some of it's algorithms during runtime as it "learns" new things, as a native part of the language. Another aspect that goes into this, though not as much, is LISP's ...


20

I am the author of IronScheme. I am not really sure how to answer your question, but will try :) IronScheme firstly tries to implement Scheme (R6RS specifically), with the secondary objective being CLR interoperability. Compared to Clojure (focusing on the their bad points), IronScheme won't: give you CLR runtime exceptions; IronScheme uses Scheme's ...


19

Top-down is a great way to describe things you know, or to re-build things that you've already built. Top-down biggest problem is that quite often simply there is no "top". You will change your mind about what the system should do while developing the system and while exploring the domain. How can be your starting point something that you don't know (i.e. ...


19

Scala makes this possible too (in fact it was consciously designed to support the definition of new language constructs and even complete DSLs). Apart from higher-order functions, lambdas and currying, which are common in functional languages, there are some special language features here to enable this*: no operators - everything is a function, but ...


19

The AI course I participated in online, taught at Stanford, recommended that Python be used for the homework. I believe Georgia Tech still uses LISP. The fallacy here is "new" is "good". AI research is one of the oldest computing research disciplines. It keeps calving off subfields as people realize that techniques from it can be used elsewhere. Language ...


19

It is very much like learning math will improve your analytic skills and learning latin/classic literature will improve your writing skills. People who designed those languages have thought hard about what does writing a program means. And those languages are the results of those researches. That said, learning Java will also make you a better programmer. ...


17

I like Lisp for its unified, simple and elegant way of representing both code and data. unique point of view, which gives me the crucial 80 bonus IQ points on solving hard problems (with hat tip to Alan Kay) extremely agile, interactive and conversational development environment unprecedented power to create and manipulate abstractions Programming is ...


17

Assembly Language Because there's nothing it can't do.* (* with a heck of a lot of it)


17

I'm sure if I leave the team, --not saying I'm leaving. :)-- no one would maintain it. Possibly False. If the program has value, and management sees the value, they will task someone with learning Clojure and maintaining it. Happens all the time. This program will be destroyed and some will develop with other language. Always true. So why worry ...


16

I believe the correct LISP answer is more gnomic. Something like: "If you have to ask, you are not ready." Then if anyone questions further the correct answer is either "yes" if it's an either/or question or "You are not ready."



Only top voted, non community-wiki answers of a minimum length are eligible