Quicklisp - The upcoming solution to Common Lisp's "library problem"
netzhansa.blogspot.com
netzhansa.blogspot.com
I am currently testing it with ABCL. Common Lisp on the JVM. I would say about 80% of Common Lisp libraries work on the JVM unchanged, and the rest (CFFI/UFFI stuff) we're patching them manually.
It's pretty sick stuff. It's Lisp, but it can call 100% of Java libraries. I made a quick "breadth-first" conquest of Java libraries and I seem to be able to use everything; J2SE, J2EE, Android and JavaFX. I am still learning Java, but I can safely say that Java apps and libraries are almost 100% usable via Lisp.
The future of Lisp, if it has one, is Clojure.
"The future of Lisp, if it has one, is Clojure."
It's not the Clojure part that got you downvoted, as that would have been a valid argument, seeing how sweet clojure is. I think it's the "if it has a future" part. Anyone even remotely aware of programming languages will tell you Lisp has a future, in the same way Algebra does. It's the simplest representation of computable functions, and it has existed, on paper, at least since 1930, and as an implementation since 1958. It's a gateway drug to lambda calculus ,combinatory logic, complexity theory, computable functions and CT, the entire FP field, symbolic logic, formal semantics, compiler construction, and a host of other non-sexy, but essential fields of study.
LISP: This is the apex of untyped programming with nested scoping and metadata manipulation. It's at the end of the line, not because of lack of potential, but it's so simple and powerful than any improvements to it can be implemented in LISP itself without affecting the core language. In 100 years, after the last C and C++ programmers are long gone, there will still be LISP enthusiasts. But don't expect large-scale software development to happen this way.
So yes, Lisp has a future in that it epitomizes a certain programming paradigm, but as a language with real production significance it has a very hard road ahead, and will need all the advantages that a single-implementation JVM/CLR dialect like Clojure can provide.
You'll notice that hardly any of the companies spawned by Y-Combinator, the ultimate Lisp cult, actually built their systems in Lisp.
You would be stupid to think YC companies amount to anything in the global economic radar. One DoD contract is more profitable than all their revenues combined.
Take a step back, get yourself a phone book and scan it, read international economic reports; none of what we're doing is the apex of human innovation. The AK47-wielding fucktards in the Congo have more global influence than all the startup founders combined. In the grand scheme of things, computer programmers, their bosses, project managers, and employers are the janitors of the world economy. We're call-center operators, glorified with a smidgen of science. And YC "com'nies" have less than $50k standing between them and obscurity; that's less than what the typical restaurant owner spends on kitchen renovations.
Wake up and small the coffee; it's a 99-cent 7/11 re-fill, and I hope you like it.
The really smart Lispers like Peter Norvig recognized Lisp for the lost cause it is and moved on to build companies like Google. Maybe you've heard of it? People have been solving hard problems for decades without the "magic" of the Lisp primadonnas.
Most of them seem to just download the source from some repository and stop once it builds. It's a step up from the manual or scripted process from before, but it's hardly anything on the scale of CPAN.
It's probably too much to ask, but I'd love to see something like an actual CPAN for Lisp. A centralized, mirrored archive network. Standardized package meta-data. Standardized documentation tools. Author verification that doesn't require the users to store individual author keys on their rings.
But I suppose the reason it hasn't been done is:
1. Lispers don't care/need/desire it 2. It would take a significant group effort and most people would rather be hacking something else 3. What we have works well enough that it doesn't justify the effort to go that last 10%
Still... one can dream (and I'd throw in my hat to help too).
I have lots of ideas for more metadata that can be gathered automatically or semi-automatically. It should be straightforward if time-consuming to set up automatic testing, even if it's as simple as "Does library foo compile and load on implementation bar on operating system baz?" Same with gathering data to answer questions like "What foreign libraries are needed for this project?" or "What is the license for this project?"
If you'd like to give the early version a try, drop me an email (xach@xach.com) or visit freenode #quicklisp.
Maybe testing can just start with a TAP library.
POD-like documentation would be a little harder with reader-macros. Maybe a syntax can be defined that doesn't step on too many toes...
Either way, I'll be taking a look at it ASAP. Cheers.
EDIT: Free implementations thrive and grow because they are free (as in free beer) even when they start - or are - lesser. That does not mean not having a bells and whistles free implementation is a measure of a language's worthyness.
Ruby / Python people willing to pay for a good environment? Have a look at http://www.activestate.com/activepython or other activestate software. It's not a separate language as such, but they do create enough of their own environment setup in just the right way, to consider them comparable.
Noone said that languages must be free. Then again - it makes the development so much easier, since it enables communities that know the technology rather than a specific product and are not lost when they don't have access to their one true compiler/ide/whatever. Times of paying for your compiler are long gone. Most of the really creative compiler improvements lately came from OSS anyways.
Actually - can you think of any closed-source general programming compilers that matter? Apple likes Clang, but it's still OS. ICC is not useful unless you only want to support intel chips.
I'm aware of specialised compilers - yeah - most of the VHDL and similar are proprietary and commercial. But as soon as you need special hardware, your random audience goes down to ~0 pretty quickly, so there's no point in having the language free.
> Ruby / Python people willing to pay for a good environment?
I didn't say Ruby and Python aren't worthy languages _now_. I've said they were when they started. Yes, now that they have gained a big community, they enjoy lots of support from companies as well.
> Noone said that languages must be free.
This is implied whenever people say that CL has poor libraries because _free_ CL implementations have poor libraries, whenever developers weren't interested in some areas (web development, for instance). OTOH, how do Ruby and Python stack against CL when in comes to AI libraries?
I hope we agree that free CL implementations in themselves are very good quality, anyway; even more so if you consider how little their community is compared to mainstream languages.
> Actually - can you think of any closed-source general programming compilers that matter?
MS Visual C++ coming to mind? However, that's not the issue. I was arguing that CLers willing to pay for their environments when they could just grab another free language should tell us something.
Peace.
Re. MSVCpp - Not only I got a free version from university (and another one from another university), there's a starter edition (not sure about the name - express?) which is free.
Without context, it's hard to say why are they willing to pay. Maybe it's because they liked the environment? Maybe it's because their codebase is so big they can't switch anymore? Maybe because free alternatives suck at some level? Maybe the company pays and noone asks why? There are so many potential reasons, we'd need to analyse some stories of why are people doing this.
Spot on! We think a language lacks libraries whenever we look at a language which has not been among the language of choice in our area of interest.
> Re. MSVCpp - Not only I got a free version from university (and another one from another university), there's a starter edition (not sure about the name - express?) which is free.
You surely are a young gun ^_^ MSVC++ has been a successful commercial product for a long time (and still is). I think MS made it free just because it started feeling the heat from GCC and didn't want to lose share. However, we were talking about open-source implementations, not free ones.
> Without context, it's hard to say why are they willing to pay.
If you were to hang on comp.lang.lisp for a while, you'd learn that CL do really prefer CL to any other language because of some features intrinsic to CL itself. Moreover, it looks like when they are freelancers, then they are making a good living, therefore having to shell out some cash for their own convenience; if they are employees, they are experienced enough to make the decision about what their company should buy. Why struggle to install a CL environment? Just shell out €1200 and you're up and running with Lispworks CL (among others).
There are people paying for IDEs (e.g. IntelliJ IDEA & Resharper, Visual Studio), but this is an IDE for an already very widely used language backed by big companies. All of the attempts at developing a new language for a profit seem to have failed or at least not made it big (e.g. Lisp vendors, Dylan, Smalltalk vendors, Rebol) despite being better than the free alternatives in a lot of ways.
You should consider your target audience carefully. For instance, a startup founder is very likely short of cash, so she will be more inclined to choose, if not a free implementation, a cheap one. Could that pay back your development efforts? Because your development efforts will be hefty. Remember that to be attractive to smart developers, your language will have to be better than the languages you have mentioned, and by a reasonable margin. Don't underestimate the difficulty of designing a good editor, either.
I'm saying this because you have said "not made it big". If you are after just making a living doing what you like, maybe the success of Clojure in that regard can be encouraging.
Have you considered tapping the non-technical audience? Maybe many non-technical users would be delighted to be able to customize their environment. If you are looking for a challenging intellectual task, don't underestimate the difficulty of designing simple tools.
I'd like to provide more creative suggestions, but that's all I can say.
EDIT: You know, we developers tend to think about other developers, and we forgot how our knowledge could be beneficial to "outsiders".
- They seem to have the money because they buy expensive IDEs, expensive version control systems, expensive things that allow them to track project progress, etc.
- They care less about whether what they are using is open source
- Building it on top of .NET means development costs are much reduced but still massive
- They are using overly complicated and not very usable tools/libraries on .NET
> I'm saying this because you have said "not made it big". If you are after just making a living doing what you like, maybe the success of Clojure in that regard can be encouraging.
Yes I would be happy with something like that too, but if I have something that improves someones productivity by 10% that provides a lot of value; I'd like to turn this value into a financial success too ;)
> Have you considered tapping the non-technical audience? Maybe many non-technical users would be delighted to be able to customize their environment. If you are looking for a challenging intellectual task, don't underestimate the difficulty of designing simple tools.
The problem with this is that I have zero ideas in that space...that said it's definitely an interesting space. Making some of the things you can do by programming available to a non-technical audience seems very hard though.
Have you considered developing tools or plugin to easy their work? For instance, I'm using WholeTomato's Visual Assist and it really rocks.
> The problem with this is that I have zero ideas in that space...that said it's definitely an interesting space. Making some of the things you can do by programming available to a non-technical audience seems very hard though.
Just don't go overboard. I urge you to go out and meet people, and look for ways to easy their pain. For instance, you will be shocked at how small-business owners struggle to accomplish simple tasks. At how big-companies employee struggle with outdated software.
Good luck!
I can't find the original article but here's a rference to it: http://www.codinghorror.com/blog/2007/11/mort-elvis-einstein...
Admittedly I haven't researched this in depth, but I don't think any of them do a "free for non-commercial use" edition without severe restrictions. Even Oracle, one of the most ruthlessly commercial companies in the software business, lets you download for free to kick the tyres...
EDIT: It would be nice if HN showed both up-votes and down-votes, instead of just their sum.
yes
Really? Rails, DJango, qt, SciPy, need I go on?
People get used to their working environment, and find ways to solve problems even in the absence what, in hindsight, are amazingly useful tools. When you pitch something new to people, they basically have to imagine to some degree how their life will be improved with it. (Will Wright talked about this regarding videogame box design and The Sims. People pick up a box and then have to basically design the game themselves in their head and imagine how much fun, or not, it would be.)
Anyway, I hope Quicklisp will be an easy sell, because I think it works pretty well where everything before it has worked pretty poorly. It won't take a lot of imagination to see that.
If you play this game in the Perl or Python or Java communities, you get a very different average than Lisp. Not saying that that's a good or bad thing, mind, but it is true.
Qt, Scipy/Numpy and others are amongst the best libs available for their target language, but many other are really bad. It's just that the natural selection has been occurring for a longer time and the total libs population is bigger. Also when developing a lib in eg. Python, it's easier to get feedback as there are potentially many more users.
EDIT: formatting