Return Styles: Pseud0ch, Terminal, Valhalla, NES, Geocities, Blue Moon. Entire thread

Negative Sense Fantasy World: Next Big Lisp

Name: Percolater 2010-07-30 0:42

Assume for the moment that Common Lisp is dying. Whether or not this is true in real life is totally up for debate, but in this hypothetical scenario, CL is breathing its final death rattle and it's way more trouble than it's worth to write any kind of program in it. In fact, let's go so far as to say that every CL implementation is unmaintained, and in a state of total disrepair.

Also, assume that Clojure is the only real alternative as Lisps go, and that you are completely dissatisfied with it as a replacement for Common Lisp, for extremely valid technical reasons that cannot be ignored or worked around. (This also might be true in real life depending on what kind of program you want to write, but let's all get on the same page.)

Now, let's say you could hire a genius programmer full time to design a replacement for Common Lisp. In this scenario you are a charismatic marketing god like Steve Jobs, so your programmer can be a world-class anuslord from the back alleys of Wichita, but your new language would still be a success because the programmer is only concerned with technical matters.

Who do you hire?

Name: Anonymous 2010-07-30 0:45

What are the choices again?

Name: Anonymous 2010-07-30 0:51

>>2
I think we're supposed to only pick homeless programmers from Wichitaw

Name: Zappa and the Marvolos 2010-07-30 0:52

Zhivago. Duh.

Name: Anonymous 2010-07-30 0:55

[ol]
[li]Hygienic macros.[/li]
[li]Syntax.[/li]
[li]Generous standard libraries.[/li]
[li]Language based on Scheme, not CL.[/li]
[li]Optional strict typing, with automatic boxing/unboxing when interfaced with dynamic parts.[/li]
[li]Haskell-like type system.[/li]
[li]Type inference.[/li]
[li]Support for linear types.[/li]
[/ol]

Name: Anonymous 2010-07-30 0:58

NO EXCEPTIONS

I'll leave it to someone else to paste the lyrics to Baby Do You Dig Your Man.

Name: Anonymous 2010-07-30 1:09

>>5
Optional strict typing, with automatic boxing/unboxing when interfaced with dynamic parts.
Haskell-like type system.
Support for linear types.

( ≖‿≖)

Name: Anonymous 2010-07-30 1:28

Gaul Praham.

Name: Anonymous 2010-07-30 2:04

>>8
Why so..Cardassian?

Name: Anonymous 2010-07-30 2:06

Oh damn it. I just wrote a longpost and my browser refreshed by accident, so I lost it. I'll just summarize it:

Even if you were a good marketing god, do you think you'd get people to swallow prefix and parens that easily? That seems to be what's putting most people off. I find it most natural, but some people don't.
On the other hand you have really complex and verbose languages like sepples that are still popular. Or simpler, but very verbose, sometimes limited languages like Java or C# which were marketed as a better sepples.
Both of those are a result of trying to make a better C. And then you have a lot of languages with C-like syntax and varying semantics, with varying degrees of popularity. Lisp syntax is very important as it gives you homoiconicity which makes true macros possible, among other things.

As for hiring a single programmer: I fear it may lead to guido-syndrome. The programmer will just include what they like and leave out features they don't. This is why you shouldn't hire Paul Graham or Rich Hickey, or any other single programmer. I'd hire a committee, just like Common Lisp was the collected knowledge of many current (at that time) Lisp implementations and ended up getting most of the good features picked up, while this also lead to some redundant things getting in there solely for compatibility reasons (make it easier to port old code).

I'd imagine this new CL would be a cleaned up CL(some redundant things removed), standardized MOP, maybe standardized FFI and networking/sockets (we have defacto standards for all of them! this is reason enough), clarified certain  issues that never got fixed during the standardization, Gray(or simple) streams, maybe, I dare say, some standardized GUI(is this a good idea? There is CLIM, but even if it's rather nice, people don't seem to keen on it, it's also terribly complex), maybe make certain things in the package system more extensible than they already are(hierarchical packages, or something new altoghether, but not TOO different. possibly attempt to make major language redefition even more portable than it already is, without having to incur some speed penalties(inlined functions, etc, this is a complex issue, I doubt it would ever get fully solved)), even better/easier control of reader macros (lexical reader macros made easy?), locatives as part of the standard(as opposed to a tiny library), certain common utilities standardized (with-gensyms, once-only, etc), maybe dynamicly scoped functions (like aspect orientation), even more extensible numeric generic ops, standardized threading, specify portable pathnames better (implementations differ too much), maybe make some standard system definition facility (asdf is defacto and almost portable, however this might be a bad idea to standardize on), extensible/generic sequences, advice/function encapsulation, more specified/extensible type system, maybe better support for static typing (optional inference like SBCL does, but with more ways for the user to control it) and some other neat things I'm too lazy to think of now. Almost all of these features are supported in some (others in all) of the current CL implementations (which are actively maintained, but I'll just assume they're not as you said OP). Some are de-facto standards, but these things are still a bit messy and the user should know what to do to get everything working (It's not really that hard, but it doesn't beat a standardized alternative). While we can get all this today, it'd be cool to have all this supported by most/all implementations like CL is.

So, I'd imagine I'd have a committee of people working on it, probably selected via a community process(with open participation):
Some of the older guys who worked on CL(X3J13) or were involved in some direct way: Kent M. Pitman, possibly Steele, maybe Gregor Kiczales, Daniel Weinreb, Richard P. Gabriel and others (Erik Naggum if he was still alive ;_; included here since he apparently joined X3J13 later on, but I don't think he had any involvement in the released standard)Some implementors: Christopher Rhodes (SBCL), R. Matthew Emerson (CCL), lead LispWork and Allegro developers (Duane Rettig, Weinreb, others), maybe some of the ITA hackers.
Some library writers, reasonable users, researchers/"teachers": Pascal Constaza(CLOS-related research, AOP), Edi Weitz, Peter Seibel, Tim Bradshaw, Xach, maybe even Kenny(due to Cells), and many others (participating via the community process), authors of various de-facto standards (see up there), guys involved in CDR (http://cdr.eurolisp.org/).

It'd probably end up lengthy and costly, but might yield something interesting, although with such a selection of people, you can't really hope to go too far from Common Lisp, but I'd expect many things to get ironed out and defacto standards to get edited, fixed if needed and passed into standards. One could go further and go specifying standard libraries (usually can be implemented using only portable means, think for example of CL-PPCRE) - it could include things like better unicode support, ppcre, xml parsing/output, and many more(all of which are currently available as portable or de facto portable libraries). It might end up like Java's large library.

All things aside, current CL implementations do allow either all or most (some allow all) of the things mentioned, and nothing would probably bear too high of a cost to implementors, if it was ever passed into standard (although there is this one feature I'd really like to have: thread-safe letf - they used to have those on Lisp Machines. I have no idea if this can be done without major overhead while still staying threadsafe, I believe P. Constaza implemented this portably with some clever hacks and progv, but that's likely less efficient than what it would be if an implementation offered native support).
It's still doubtful a marketing god would make people like Lisp. An interesting attempt of this kind was Dylan where they tried to take CL and ideas it had and removed the parens to try to make normal people like it more. It never got popular mostly due to marketing failures, not due to issues inherent in the language. However, to me a Lisp isn't Lisp if it doesn't stay homoiconic.

Name: Anonymous 2010-07-30 5:32

>>10
So, I'd imagine I'd have a committee of people working on it
This is why we can't have nice things.

>>1
Does it have to be someone else? Why can't it be me?

I'm not saying I'm anywhere near the level of anyone else suggested in this thread. I'm just saying that there's a 99.9% chance it will fail even if I hire the best developer in the world. If I have the money to pay someone's salary I'd rather pay myself to do it just for the learning experience.

Name: Anonymous 2010-07-30 8:07

>>11
You're supposed to be the project manager, not a developer. So no, you can't be.

Name: Anonymous 2010-07-30 8:38

>>10
Even if you were a good marketing god, do you think you'd get people to swallow prefix and parens that easily? That seems to be what's putting most people off.
What puts people off is their ignorance of why these are good design choices for a language. Let them wallow, I say.

Name: Anonymous 2010-07-30 8:42

>>2
Me too!

Name: Anonymous 2010-07-30 9:03

I'd basically glue a simplified CLOS onto Scheme and make the compiled C code as close to `natural' C as possible, along with a small runtime that loads libraries and non-core functions only if necessary.

The result would be a Lisp with a simple C interface (such that it takes half an hour to write the glue for existing C libraries), with OOP capabilities (meaning a gentle learning curve for programmers of more mainstream languages, so they aren't immediately turned off and eventually learn a proper functional paradigm with minimal effort), that quickly gains an enthusiastic and wonderful userbase.


*sigh* If only...

Name: Anonymous 2010-07-30 9:04

>>13
Really? I thought it was the massive runtime and the lack of consistency between implementations. That does it for me anyway.

Name: 15-san 2010-07-30 9:07

Oh, who do I hire? Shit that, I'm doing it myself.

Name: Anonymous 2010-07-30 9:13

>>17
Get on it then.

Name: Anonymous 2010-07-30 9:20

>>15
So what you're saying is, you'd make Racket.

Name: Anonymous 2010-07-30 9:57

Thread title sounds like a touhou game.

Name: Anonymous 2010-07-30 10:27

>>16
There's some with small runtimes, like that one that compiles to C. I still prefer those with larger runtimes for overall development - much nicer to work with, but if size is an issue for deployment, considering alternatives is always an option. As for lack of consistency: I've written some medium sized applications/tools in CL, depending on 5-10 systems, and it even included a bunch of unportably things I had tied to SBCL at that time. How much time did it take me to port it to CCL, ECL, CLISP? Under an hour. Most of it was testing that things worked properly. I just had to use a few read-time conditionals to implement about 3 non-portable functions I made used from SBCL internals, and I was able to do it mostly out of the box with the other implementations. Testing/compiling was easy with SLIME/asdf. Yes, there's that initial setup hurdle that you have to go through to get multiple implementations working like you want them to be (as well as Emacs/SLIME/Paredit/Redshank/others), usually involving setting up a central asdf repository that all implementations can use, but after that it's a piece of cake. So far, I was most annoyed by "portable" pathname differences between implementations, but this was hardly a major issue that couldn't be solved by adding another compatibility layer (there are some floating around).

tl;dr: The Common Lisp way - the base language is powerful enough and standardized, implementations usually support it well enough. If you need non-standard behaviour portably, write a thin compatibility layer or use someone else's (available for 99% of things you need, spend an hour to implement the other 1% if you need). So far this approach has served me well, most of my code is compliant with ANSI CL, while the parts that are not are clearly isolated and are easily made de-facto portable by using a few reader conditionals for all implementations I care about (and if using someone else's code, many others which I don't).

Name: Anonymous 2010-07-30 10:29

s/unportably things I had tied to SBCL/unportble things tied to SBCL/

Name: Anonymous 2010-07-30 12:56

>>13
You know, it is possible to both understand and dislike s-expression syntax. Not everyone wants to explicitly write out the full fucking AST of your program; in sane languages, that's the compiler's job, not yours.

Name: Anonymous 2010-07-30 14:26

>>23
in b4 macrofag

Name: Anonymous 2010-07-30 14:33

>>1
Zed Shaw of course.

Unlike many homoiconic personalities popular amongst aspiring programmers, he actually writes useful software and is rather good at it.

Name: Anonymous 2010-07-30 14:48

>>23
Interesting. Am I to understand, then, that one wouldn't like lisp because it is too low level? That... is certainly an interesting critique.

Of course it is imaginable that someone wouldn't want to type out an AST directly. For non-trivial programs, lispers don't, either. But you must understand the naive reading of >>13 implies a problem with parentheses themselves, rather than a problem with trees, which is is where my reply came from.

Perhaps I just should have said I hate semicolons and tabs.

Name: Anonymous 2010-07-30 14:49

>>24
in b4 Xfag

we know where you belong, do you?

Name: Anonymous 2010-07-30 14:58

>>21
We've had this thread before. Lisp bloat is like the bloat you get when talking about Lisp: your post could have been cut down to some reasonable size, but then it wouldn't really be a Lisper response but some unreasonable facsimile instead.

Name: Anonymous 2010-07-30 17:24

>>27
I belong in /b/ and you belong in /a/ because that's where they started the "gb2" thing.  Now off with ye.

Name: Anonymous 2010-07-30 17:34

>>29
Well you belong in preschool because that's where they started the "being an idiot" thing. Now off with ye.

Name: Anonymous 2010-07-30 18:19

>>29
actually "gb2" started on Something Awful.

And telling people to go back to some other location, please is a clearly unrelated practice which originated guess where: right here on /prog/
So now that you're wrong and also stupid, please return to your native board post-haste.

Name: Anonymous 2010-07-30 18:30

>>15
If you ignore the requirement for "compiles cleanly to C", then such a thing already exists. ITS CALLED R6RS. Tiny Clos is portable, and the FFIs of Mosh, Larceny, and Ikarus are close enough to each other THAT A PORTABLE FFI HAS BEEN WRITTEN[1]. It's pretty simple to use, and only has one obvious problem, which is the lack of a portable finalisation mechanism, which you want for correctly freeing C resources. I'd like to see Guardians more widely supported, but for the moment it's just Ikarus, Chez, and Guile.

--
1. It's the FFI from Marco Maggi's Nausicaa libraries (GPL 3), The (spells foreign) library claims to be portable between Ikarus, Ypsilon and Mzscheme, which means it should be possible to write a library that combines the two to cover Ikarus, Ypsilon, Mzscheme and Mosh.

Name: Anonymous 2010-07-30 18:31

>>32
s/Larceny/Ypsilon/

Name: Anonymous 2010-07-30 18:38

I'm working on scheme→LLVM compiler.

Name: Anonymous 2010-07-30 19:18

I'd write a lisp that compiles to bytecode resembling a imaginary lisp-architecture cpu.  Then I'd write a VM which mimics this architecture.  Then I'd write a Lisp OS.  Everyone starts using aforementioned Lisp OS, I get enough money to get Intel to build my imaginary Lisp CPU.  LISP RULES THE WORLD.

Name: Anonymous 2010-07-30 19:33

>>35

And I'd be the programmer.  If someone wants to hire me go ahead.

Name: Anonymous 2010-07-30 22:02

>>27,30-31
Fuck off, ``faggot''.

Name: Anonymous 2010-07-31 0:25

>>35,36
Call it Copland Enterprise OS and I'm there

Name: Anonymous 2010-07-31 4:42

>>31
You seem to have misunderstood the memes in question.  The /prog/ meme is meant as a little joke, and in contrast to the image board variant is very polite.  The image board version is very rude, and associated with "shit posters".  The image board version has recently managed to get a foothold here in /prog/, image board immigrants are surely to blame.

I haven't seen the /prog/ version used in a long while.

Name: Anonymous 2010-07-31 5:31

>>31
back to gaia, please

Newer Posts
Don't change these.
Name: Email:
Entire Thread Thread List