You would have thought that rms would have made more of an effort to build a great Lisp on which to build better free software. Developers would be much more productive in Lisp than C or Java, for example.
You would have thought that rms would have made more of an effort to build a great Lisp on which to build better free software. Developers would be much more productive in Lisp than C or Java, for example.
Lisp:
http://en.wikipedia.org/wiki/Emacs_Lisp
"Richard Stallman chose Lisp as the extension language for his rewrite of Emacs"
and
C compiler:
http://en.wikipedia.org/wiki/GNU_Compiler_Collection
"When Tanenbaum told him that while the Free University was free, the compiler was not, Stallman decided to write his own."
It's not about the "theoretical possibilities" it's about the practical limitations.
I can't refer to you to any single resource regarding the limitations of any Lisp for implementing the free-source replacement of Unix, but if you investigate how the Lisp in Emacs was actually implemented you can get the picture. Provided you have enough basic knowledge about the low level aspects of the CPUs, compilers and interpreters and also the limitations of all the hardware before the most modern CPUs. Even today, what's "good enough" on the desktop can be "too much demanded" from the lower power systems. But the lower power systems of today are also much more advanced than what we had for decades during which GNU project grew.
GCC 1.0 was released in 1987. The 2000 USD computer had less than 1 MB of RAM then.
We'd all agree C isn't as necessary today. Lots of great stuff is done in Ruby, Python, JavaScript, Node.js, Clojure, etc. Developers are building editors in browsers (atom.io) and Microsoft used atom with 200k of Typescript in their new cross-platform tools.
And all this is not because of what RMS did or didn't do. He did great things, and I don't agree that anybody can claim that he could have done something differently given the real constrains he had.
Lots of the applications written in ML are barely viable; the only reason they're performant now is due to Moore's law.
I ran Franz Lisp on my Atari ST which included a native compiler.
I just wanted to point out that this class of computers was a valid target for a good Lisp system.
http://en.wikipedia.org/wiki/Game_Oriented_Assembly_Lisp
Million polygon levels running at 60fps when the majority of games on that system had 1-2 orders of magnitude less geometry and ran at 30fps and were written in C/C++
I'm NOT saying therefore RMS should have used lisp instead of C but I am suggesting that any perf objections or memory objections are mostly not factual. It's perfectly possible to make a performant non-memory hungry lisp.
https://www.ma.utexas.edu/pipermail/maxima/2001/001119.html
RMS: fighting proprietary software for more than 3 decades.
Also interesting: the game company "transitioned to C++ for future projects" according to Wikipedia.
Allegro CL appeared long AFTER Stallman decided to form the FSF...
They did after Sony bought them, to improve code sharing with other Sony game developers.
After they found out that this was not the case, they have been using Scheme (a dialect of Lisp) again in their development.
http://www.naughtydog.com/docs/Naughty-Dog-GDC08-Adventures-...
http://de.slideshare.net/naughty_dog/statebased-scripting-in...
And there were some other opinions on usefulness of such approach:
http://en.wikipedia.org/wiki/QuakeC
"Despite its advantages, the concept of implementing the game logic in a separate scripting language and writing an interpreter for it was soon dropped (even by John Carmack who had implemented this concept) because of the overall inflexibility of an interpreted language,[3]"
On another side, there are a some games which used Lua for scripting:
http://en.wikipedia.org/wiki/Category:Lua-scripted_video_gam...
As for the arguments that you can't interface with others because they don't know lisp and there aren't lots of libraries that's true of every language at some point in their lifecycle. There might be other reasons that's never happened for lisp or it might just be that no one has successfully made a concerted effort to get it there?
Maybe one of the LLVM based lisps would help a transition or at least let people try lisp on part of their C/C++ code base
Only when "the whole" is defined to mean "the object scripting."
http://www.psxextreme.com/feature/45.html
"The final game engine has about nine different renderers, each is optimized for its specific task."
http://c2.com/cgi/wiki?LispInJakAndDaxter
"GOOL was used to control objects in the game"
Jak II had apparently the most of GOAL:
http://lemonodor.com/archives/000610.html
"Of the 1.2 million lines of code, roughly 900,000 lines are written in GOAL."
Still that leaves 300,000 lines which were certainly the most low-level and performance-sensitive ones.
The 900,000 lines aren't exactly "the Lisp," but that custom language, developed using the commercial Lisp, but I admit it's certainly an engineering achievement.
As he ultimately decided to not go this direction, I'm going to assume he considered it more of a dead end.
Which would mean he likes C.
How then is it doing the world a favor to write less of one of his favorite languages?
It's very easy to do hyperbolic statements like lauding lisp, it's hard to use it in practical situations.
Very few of the software from the GNU project have been written by RMS, they are often starten outside the GNU project and join or get adopted later.
http://benchmarksgame.alioth.debian.org/u32/compare.php?lang...
It was about Clojure vs Haskell and more specifically, dynamic vs static typing. Person was claiming that it was so much easier to change statically typed languages. It get more difficult to maintain large projects that are Lisps.
From what I've learned so far about languages, it makes sense. It looks that Lisps are more suitable for implementing algorithms because of the reductionism, but in more realistic systems world, you build interfaces, add random strings, and so on.
If you are patient and good enough, you can probably build significant part of a system, but not all of it. I do not know any systems built entirely on Lisp, but I might be wrong.
Static typing certainly makes it easier to maintain large systems, but it's certainly not a requirement.
You can certainly write entire systems in Lisp; people have made entire computers in order to run Lisp in hardware; there have been operating systems etc.
Moreover, you don't really need to use it for whole systems; use it where it works. There need not be One True Language.
At the moment, Clojure is used in production at Netflix, Twitter, Amazon, Akamai, etc etc etc.
For some examples of systems built on Lisp: Emacs, Hacker News, Paul Graham's startup Viaweb, the original Reddit.
[1]: http://www.sbcl.org/manual/#Type-Errors-at-Compile-Time
It's nowhere near Haskell/ML, or even C/Java.
All I really know is that when I've programmed with SBCL, I've gotten useful type checking warnings at compile time.
I agree that static type checking is very useful for less stressful refactoring, and so on, and I'm a huge fan of Haskell. But I think very simple kinds of type checking can often be enough.
The argument was that Lisp lacks types to such an extent that building large Lisp systems becomes very difficult (due to the lack of typing). Well, there are lots of large JavaScript systems these days, and Common Lisp, in my experience with SBCL, provides at least more compile-time type checking than that.
And some lisps, such as Racket, allow you to switch from untyped to typed with nominal changes.
http://www.aaronsw.com/weblog/rewritingreddit
Over at reddit.com, we rewrote the site from Lisp to Python in the past week. It was pretty much done in one weekend. (Disclosure: We used my web.py library.) The others knew Lisp (they wrote their whole site in it) and they knew Python (they rewrote their whole site in it) and yet they decided liked Python better for this project. The Python version had less code that ran faster and was far easier to read and maintain.
http://www.redditblog.com/2005/12/on-lisp.html
If Lisp is so great, why did we stop using it? One of the biggest issues was the lack of widely used and tested libraries. Sure, there is a CL library for basically any task, but there is rarely more than one, and often the libraries are not widely used or well documented. Since we're building a site largely by standing on the shoulders of others, this made things a little tougher. There just aren't as many shoulders on which to stand.
...
We were already familiar with Python. It's fast, development in Python is fast, and the code is clear.
...
The entire task took less than a week, with 80% of the code written in a single weekend.
I know of several other large corporate projects over the years that made similar switches for similar reasons. Perl, Python, Java, etc. were faster to write in, performed better, and had better long-term maintainability (okay, maybe not Perl). Nobody regrets those switches except for a couple Lispers who continue to complain about how none of this is true, even after Lisp didn't provide the results, and something else did.
Continuing to claim that Lisp is better than all the proven better alternatives starts to make it smell like religion. Trying to explain away why a Lisp didn't work for whatever reason, but it's still the best start to taste like religion.
At some point its important to just make a call and realize that Lisps are interesting, you can compute with them, and they've had important influence, but they aren't the best way to do things - for many reasons. There's always another language choice that's faster, or easier, or offers a better ecosystem.
GNU CL has been out for a long while now, and it hasn't taken the world by storm. "Better", while qualitative in many respects, is also obvious, and it's obvious across a sample of millions of software projects that there are simply better holistic software development tools.
edit it makes me really happy when this gets downvoted without comment. Nobody ever downvotes an anti-Lisp rant with a pointer to a large and ongoing Lisp-based project. They just virtually claim I'm wrong without any substantial backup.
> I know of several other large corporate projects over the years that made similar switches for similar reasons.
I've seen lots of large corporations rewriting all kinds of software. For example I've seen a lot C++ software being rewritten in Java.
Large corporations are not interested to use 'powerful' languages like Lisp. They are more interested in cost cutting, outsourcing, offshoring, 'industrialized' software production, cheap supply of labor, ...
> Continuing to claim that Lisp is better than all the proven better alternatives starts to make it smell like religion.
It's religion. Stallman's statement is decades old. Lisp is powerful, flexible, etc. ... but there are a lot of great alternatives. Plus, as I said above, in many companies 'powerful' and 'flexible' is not the most important criteria when selecting languages and tools. Java got successful because of other qualities: being developed by SUN (then Google and IBM) for enterprise software development.
'GNU CL' was never a GNU project as such. GNU CL based on KCL/AKCL and has been used in a few applications. It never has been a focus of the GNU project - it's merely published under their umbrella.
Stallman also never was a fan of Common Lisp - when he developed Emacs Lisp, he developed a very much simpler version, also based on Maclisp - which Common Lisp replaced.
- to use a lisp on large-scale production software, the developers need to be experts, while the same isn't true of other languages
- if you just commit long enough, a lisp will come through in the end
- unless it's the wrong lisp (without specifying what is a right lisp)
- large corporations don't want to use languages that are powerful or flexible, they prefer weak and rigid languages
- lisps don't provide cheap, large-scale, easy to synchronize development at an industrial scale
- other languages became successful because they targeted their audience
So let's invert that and derive the ideal audience for a lisp that you just described:
- not on a large scale project or team (something you can write 80% over a weekend in Python is too large)
- already at an expert level
- will commit to a path even when it's not working
I'm not saying this to bash your statement, but I think you've provided a microcosm of why not to use Lisp. From a language selection standpoint, there are pitifully few consequential projects that scope to the ideal for a lisp. There's no obvious as to why its better, and there is to all of the alternatives. Based on this, it's possible to make easy arguments as to why to choose Asm, Perl or 80's Basic over a lisp that make those languages look like great ideas for almost any project where a lisp might be proposed.
And nobody still has backed up a downvote with a pointer to a good lisp project. Not even one. I can probably find a list of ongoing MS-Basic projects without too much fuss, but it's like doing dentistry on an angry tiger to get something similar from the lisp community.
That's not what I said.
> - if you just commit long enough, a lisp will come through in the end
That's not what I said.
> - unless it's the wrong lisp (without specifying what is a right lisp)
That's not what I said.
> large corporations don't want to use languages that are powerful or flexible, they prefer weak and rigid languages
That's not what I said.
> - lisps don't provide cheap, large-scale, easy to synchronize development at an industrial scale
That's not what I said.
If you want honest discussions, then you might want not to distort what I've said. Things are not black or white.
> And nobody still has backed up a downvote with a pointer to a good lisp project. Not even one
* Google did the core of their flight search engine in Lisp.
* DWAVE writes the OS for their quantum processor project in Lisp.
* American Express checks credit card transactions using a rule-based system in Lisp
* PTC sells a large CAD system, written largely in Lisp
etc. etc.
1. "At reddit were not really Lisp experts" - this implies that they would have been successful if they were Lisp experts. Not needing to be an expert in a language to be productive is a powerful reason to use something that's not a Lisp.
2. "They wrote not more than a sketch of the site in Lisp and at the first sight of problems they switched to a language/implementation they were more familiar with" - implies that they didn't commit long enough to the language and that it would have worked out in the end. Reddit says their code wasn't even all that complicated, and they were already hitting huge intractable problems. Problems large enough that moving to an entirely different language was a better solution than continuing to fight with tools that didn't work.
3. "'GNU CL' was never a GNU project as such. GNU CL based on KCL/AKCL and has been used in a few applications. It never has been a focus of the GNU project - it's merely published under their umbrella." - This implies that GNU CL is not a good Lisp. What is a good Lisp? No idea, apparently there isn't one because RMS had to roll his own. Having to write your own dialect of a language to be productive does not sound like a good language.
4. "Large corporations are not interested to use 'powerful' languages like Lisp. They are more interested in cost cutting, outsourcing, offshoring, 'industrialized' software production, cheap supply of labor, ..." - you use a lot of words describing what large corporations want. The implication is that Lisp doesn't offer or support these things or corporations would be using one.
5. "Plus, as I said above, in many companies 'powerful' and 'flexible' is not the most important criteria when selecting languages and tools. Java got successful because of other qualities: being developed by SUN (then Google and IBM) for enterprise software development." See #4 above.
And yes, anybody can go to the "Applications" section for Common Lisp on Wikipedia. What's more interesting is that Lispers, part of the Lisp community, can't just name some interesting projects off the cuff. Most developers can rattle off a list of interesting projects in languages they have only tangential relationship with.
If you look around in the Lisp community, you see lots of "stuck at square one" with hundreds of implementations of some kind of Lisp, or Lisp compilers, or Lisp written in Foo language or Lisp-likes, but not a real big ecosystem beyond that.
Why don't lispers just say "Hunchentoot", "Maxima" or something (Heck HN is written in a Lisp last I checked). These are legitimate, interesting projects!
Lisp is exactly where it has been for decades, despite being taught formerly in major schools, have the same access to the internet and community as elsewhere and having supposed benefits that make it "better". But something like 90% of the time, when developers have to choose a language to work in, they don't choose a Lisp.
It's not powerful if it doesn't solve people's problems.
This bizarre cognitive dissonance among lispers is a real problem for the community and a big part of why the language is stuck in such a quagmire.
> Nope, it's actually what you said, point for point in the same order.
I told you what I said.
>1. "At reddit were not really Lisp experts" - this implies that they would have been successful if they were Lisp experts. Not needing to be an expert in a language to be productive is a powerful reason to use something that's not a Lisp.
'this implies' nothing. Speak about yourself. YOU infer something from what I said.
I said 'a'. You infer that this also means 'b' and tell me that I said 'b'. What kind of strange discussion tactics is that?
> this implies that they would have been successful if they were Lisp experts.
That's YOUR opinion, not mine. You are not listening to what I say.
> 2. "They wrote not more than a sketch of the site in Lisp and at the first sight of problems they switched to a language/implementation they were more familiar with" - implies that they didn't commit long enough to the language and that it would have worked out in the end. Reddit says their code wasn't even all that complicated, and they were already hitting huge intractable problems. Problems large enough that moving to an entirely different language was a better solution than continuing to fight with tools that didn't work.
A beginner in a language sees a 'huge intractable' problem. Okay...
> 3. "'GNU CL' was never a GNU project as such. GNU CL based on KCL/AKCL and has been used in a few applications. It never has been a focus of the GNU project - it's merely published under their umbrella." - This implies that GNU CL is not a good Lisp.
Why do you say it is not a good Lisp?
> What is a good Lisp? No idea,
Now you are discussing arguments you made up with yourself. Sorry, you are wasting my time.
> apparently there isn't one because RMS had to roll his own. Having to write your own dialect of a language to be productive does not sound like a good language.
> 4. "Large corporations are not interested to use 'powerful' languages like Lisp. They are more interested in cost cutting, outsourcing, offshoring, 'industrialized' software production, cheap supply of labor, ..." - you use a lot of words describing what large corporations want. The implication is that Lisp doesn't offer or support these things or corporations would be using one.
> 5. "Plus, as I said above, in many companies 'powerful' and 'flexible' is not the most important criteria when selecting languages and tools. Java got successful because of other qualities: being developed by SUN (then Google and IBM) for enterprise software development." See #4 above.
> And yes, anybody can go to the "Applications" section for Common Lisp on Wikipedia. What's more interesting is that Lispers, part of the Lisp community, can't just name some interesting projects off the cuff. Most developers can rattle off a list of interesting projects in languages they have only tangential relationship with.
I've written down these examples without looking at Wikipedia. Maybe you need to do that. Not me.
> If you look around in the Lisp community,
Where? The 'Lisp community' is extremely diverse.
> you see lots of "stuck at square one" with hundreds of implementations of some kind of Lisp, or Lisp compilers, or Lisp written in Foo language or Lisp-likes, but not a real big ecosystem beyond that.
That's why there are languages like Common Lisp, which have mature implementations and allow code sharing between implementations.
> Why don't lispers just say "Hunchentoot", "Maxima" or something (Heck HN is written in a Lisp last I checked).
I gave you other examples. American Express 'Authorizer's Assistant', or PTC's 'CREO are Lisp applications, too. DWAVE's quantum computer also.
Great, if you can name more. We can play this game a long time.
> These are legitimate, interesting projects!
The applications I told you about are legitimate, interesting projects.
> Lisp is exactly where it has been for decades, despite being taught formerly in major schools, have the same access to the internet and community as elsewhere and having supposed benefits that make it "better". But something like 90% of the time, when developers have to choose a language to work in, they don't choose a Lisp. It's not powerful if it doesn't solve people's problems.
You are thinking in some bizarre way that developers need to choose Lisp. There are literally thousands of programming languages out there.
Why are not more people driving a Mercedes S-class or the recent BW beetle. Aren't they supposed to be good cars? 99% of the time drivers are choosing another car. This is all pointless.
> This bizarre cognitive dissonance among lispers is a real problem for the community and a big part of why the language is stuck in such a quagmire.
Maybe the bizarre cognitive dissonance is in YOUR head?
Until lispers like yourself can get over these mental blocks, Lisp will continue to not be chosen as a computing tool. Right now it's requires too many qualifications, more downsides than up, and the community has deluded itself into being comfortable with those issues, and excusing them, rather than fixing them.
It's a cool language family, but it has lots of problems, and the state of denial the community is in about those problems won't solve them. Unfortunately, it's also a community of ideological purists who can't see the problems with their religion to fix them.
Lispers are right, once you commit to a Lisp, and it 'clicks' something in your thinking process changes, and I'm pretty sure it's not a good change.
edit and goodness, Amex doesn't use the lisp Auth Assistant anymore. What is this? 1991? You can stop bringing it up, they moved away from Lisp just like everybody else. And it never provided more than summarized database information as part of the larger authorization enterprise.
Almost every single one of these examples is no longer relevant or decades old http://www.c2.com/cgi/wiki?CommercialLispApplications
It's far more important for there to be new, or well maintained projects than to continue to rely on old, irrelevant glories that have long been surpassed by something else. Go out and write some and put them up on github! Do something interesting!
The default comparison is to Java: http://benchmarksgame.alioth.debian.org/u64q/lisp.html
>>I'm assuming the optimization/safety settings are…<<
They are shown: http://benchmarksgame.alioth.debian.org/u64q/program.php?tes...