Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

I've been programming for a long time, and writing in Lisp (well, mostly Scheme) for a little less. My experience in these languages (and other functional languages) has informed my ability to write clean code even with less powerful tools. Lisp-family languages have lovely facilities for implementing every abstraction in common use:

  • S-expressions generalise structure.

  • Macros generalise syntax.

  • Continuations generalise flow control.

But I'm dissatisfied. Somehow, I want more. Is there a language that's more general? More powerful? As great as Lisp is, I find it hard to believe no one has come up with anything (dare I say) better.

I'm well aware that ordinarily a question like this ought to be closed for its argumentative nature. But there seems to be a broad consensus that Lisp represents the theoretical pinnacle of programming language design. I simply refuse to accept that without some kind of proof. Which I guess amounts to questioning whether the lambda calculus is in fact the ideal abstraction of computation.

share|improve this question
1  
Clojure is arguably better. I will not question lambda calculus. Let's just say that the best way to stop people fight over what they like and hate in syntax is to have as little of it as possible. –  Job Aug 9 '11 at 3:52
1  
Sounds like you want to go read some programming language textbooks. I recommend PLAI and Benjamin Pierce's "Types and Programming Languages". –  John Clements Aug 9 '11 at 3:56
13  
@Job Clojure isn't a more general language than Lisp. Actually Clojure is a restricted Lisp. –  Chiron Aug 9 '11 at 4:24
3  
You ask "is there a more general language" and say you're not satisfied. What is it you're not satisfied with? Can you think of specific areas that need improvement? –  Mason Wheeler Aug 9 '11 at 18:09
2  
Something you missed is Common Lisp's reader macros; you can (to some extent at least) customise the Common Lisp reader. –  compman Aug 9 '11 at 18:21
show 7 more comments

closed as not constructive by Robert Harvey, Walter, gnat, ChrisF Dec 10 '12 at 23:26

As it currently stands, this question is not a good fit for our Q&A format. We expect answers to be supported by facts, references, or expertise, but this question will likely solicit debate, arguments, polling, or extended discussion. If you feel that this question can be improved and possibly reopened, visit the help center for guidance.If this question can be reworded to fit the rules in the help center, please edit the question.

6 Answers

Assembly Language

Because there's nothing it can't do.*

(* with a heck of a lot of it)

share|improve this answer
3  
lol............ –  Daniel Little Aug 9 '11 at 5:37
7  
A continuation is a generalisation. A conditional jump is a primitive. Big difference. ;) –  Jon Purdy Aug 9 '11 at 5:41
    
For this to be correct don't you also have to demonstrate there is something that Lisp can not do? –  jk. Dec 10 '12 at 18:27
    
Brainfuck passes this test, too. Don't want to code in it, though. –  Ira Baxter Oct 7 '13 at 4:53
add comment

I would say that Lisp is both a "minimalist" and "general" programming language. I think it is a rare characteristic among programming languages. The only language with this characteristic I can think of is the Forth programming language (and other stack-based languages, I guess).

Like Lisp, its syntax is utterly simple, and we can think of it as a "programmable programming language", too.

I cannot say it is more powerful than Lisp. Anyway, it's an interesting approach to computer programmation.

Note : I never programmed in Forth, I only read about it.

share|improve this answer
    
Factor's also worth a look, as it has good support for functional programming. –  Larry Coleman Aug 9 '11 at 12:58
add comment
  1. Logic programming: Prolog
  2. Constraint based programming: Oz, ...
  3. Set theoretic languages: Setl
  4. Term rewriting-based languages: Pure

Generally they belong to what is called "declarative programming" paradigm: programmer enters properties of desired results and system tries to construct them.

All of them can be implemented in Lisp, though.

share|improve this answer
add comment

That's a difficult question to answer meaningfully without devolving into waving one's hands about.

Obviously all Turing-complete languages are equivalent, that's the vacuous answer.

Lisp has the ability to have a restricted self-modification ability via macros. Possibly if one set up a macro environment where the forms could be enumerated at run-time would expand that to 'almost unrestricted'

Type systems can be induced over Lisp (C.f. Qi) with macros.

Probably the most general Lisp is one of the more sophisticated Schemes (Racket maybe?). To be truly be the most general possible, however, the language would have to have the ability to directly dynamically inject and run assembly.

share|improve this answer
add comment

Clojure clearly is itself a Lisp (and therefore technically cannot by definition be more general than Lisp :-) ), but it does add some more nice new abstractions for your list that to my knowledge are unavailable in most other languages:

  • Seqs : generalisation of iteration over any kind of structure (lists, trees, files, XML nodes, whatever....)
  • Managed references : generalisation of changes to mutable state (e.g. co-ordinated transactional change to multiple variables using STM)
  • Protocols : generalisation of polymorphism as a solution to the expression problem (a bit like interfaces on steroids with the ability to dynamically extend them to new classes)

There's a couple nice video lectures on these topics:

share|improve this answer
add comment

Brian Harvey claims that Scheme is the greatest language in the world. And after taking an undergraduate course with him, I have become convinced as well.

If you've used Scheme and are still not convinced, you must read SICP.

I'm not sure how you one could "prove" that a language is "more general" or "more powerful" without clearly defining your terms. From a theoretical point of view, LISP is already Turing-complete.

share|improve this answer
    
Isn't Scheme just a dialect of Lisp? Is there a relevant difference for the purpose of this question? –  Eric Wilson Aug 9 '11 at 18:31
    
Yes it is. I'm claiming that there is no greater language :) –  tskuzzy Aug 9 '11 at 18:31
    
Scheme is a member of the lisp family. But yes lisp can be a very powerful in the right hands. –  Zachary K Aug 19 '11 at 14:44
    
-1 While it's nice that you're enjoying Scheme, this answer fails to address the OP's question. –  Caleb Dec 10 '12 at 22:02
add comment

Not the answer you're looking for? Browse other questions tagged or ask your own question.