3 ms·
This can be a difficult thing to answer, as choice in programming language can be something very personal in that different things resonate in different ways wi
by BruceM 13y ago
This can be a difficult thing to answer, as choice in programming language can be something very personal in that different things resonate in different ways with each of us.
For me, some of the important things are:
* The language is much smaller and cleaner than Common Lisp (and designed by some of the same people that participated in the CL standardization).
* Because it has a smaller community and installed base at this point in time, it has the freedom to evolve in new directions whereas an existing Lisp is already defined and tied down to what it is (for the most part). (Coroutines would be a nice addition for example.)
* You can produce executables from it and don't have to have a running image.
* The integration of the type system is, for the most part, nice. It is nice to have the ability to have a mix of dynamic and more static typing. (The type system could be better, and that too is an interesting possible future direction.)
* Always using multi-methods and everything being an object and the more powerful dispatch capabilities are quite handy.
* It has a condition system like Common Lisp rather than exceptions.
* The macro system is okay.
* It is nice having multiple return values, #rest parameters and keyword parameters, all cleanly integrated.
* The C-FFI is good.
* Some people like the syntax. I enjoy how readable the code is to me.
* I'm not tied into using the JVM.
Some Lisps have some of the above, some don't. Not everyone might like all of the above, but for me, it is a comfortable fit.
- sspiff 13y agoPoint 1 & 3 are nice enough to convince me to try it out, but I kind of miss the bracey syntax. Is the backend of the compiler outputting C or native assembly? Is there a way to use Dylan on ARM/Linux?
- BruceM 13y agoThe compiler has multiple backends. The "HARP" backend outputs native code for x86-linux, x86-freebsd and x86-windows. The C backend outputs C and works on x86_64-linux, x86_64-freebsd and Mac OS X. We have an in-progress LLVM backend that will support all of the above platforms and more. As for ARM/Linux, we have a port in progress for the C backend. In theory, it should work after a cross-compile or using cross-compilation tools, but we haven't quite tried it out yet ourselves (the person doing the port is getting married this weekend and going away for a couple of weeks). If you would like to help out with Dylan on ARM/Linux, drop by #dylan on FreeNode IRC and I'll work with you. (The hack-a-thon this weekend is a great time for that.) Otherwise, we plan to have this in the 2013.2 release (whenever that is).
- sspiff 13y agoI would love to help, and I'm really interested in compiler development etc, but I have the habit of promising to help out and concluding that I don't have the time to follow through. I might have a few weeks between projects in August, and if so, I'll try to see if I can help out (but no promises! ;)) I'll definitely join #dylan tomorrow though!
- rayiner 13y agoThere are two backends, including a C backend. Porting to a UNIX-y platform is pretty easy as I recall. I think I had it running on OS X/PPC after a week of fiddling.
- BruceM 13y agoIt has all gotten easier since then. :) I've also written most of a porting guide in our Hacker's Guide as well: http://opendylan.org/documentation/hacker-guide/porting.html http://opendylan.org/documentation/hacker-guide/porting.html
- reddit_clone 13y agoHow does it do threading? Does it support native OS threads or green threads?
- rayiner 13y agoNative OS threads.