Kawa 2.0 Supports Scheme R7RS 62
First time accepted submitter Per Bothner (19354) writes "Kawa is a general-purpose Scheme-based programming language that runs on the Java platform. It combines the strengths of dynamic scripting languages (less boiler-plate, fast and easy start-up, a REPL, no required compilation step) with the strengths of traditional compiled languages (fast execution, static error detection, modularity, zero-overhead Java platform integration).
Version 2.0 was just released with many new features. Most notably is (almost) complete support for the latest Scheme specification, R7RS, which was ratified in late 2013. This LWN article contains a brief introduction to Kawa and why it is worth a look."
Version 2.0 was just released with many new features. Most notably is (almost) complete support for the latest Scheme specification, R7RS, which was ratified in late 2013. This LWN article contains a brief introduction to Kawa and why it is worth a look."
Re: (Score:2)
One thing is for sure; All the scala folks are going to try it.
Re: (Score:1)
Re: (Score:2)
..that runs on the Java platform. (Score:1)
'Kawa is a general-purpose Scheme-based programming language that runs on the Java platform"
Why do language designers shoot themselves in the nether regions like this? Use the Java platform, bring in all the baggage that entails, watch your language get know traction until the need to make some money diverts your interest to productive pursuits. The problem with the Java platform is any niche that can suffer under it is already filled with Java or .net.
Re:..that runs on the Java platform. (Score:5, Interesting)
But if I want to introduce JRuby, Jython, Scala, Groovy, Clojure, or Javascript (available in the JVM via Rhino in older versions of Java and via Nashorn in Java 7), I can get consideration.
So I suspect Kawa is an attempt to build a Scheme developers can use at work, for production, without convincing the CTO to scrap the existing JVM-based technology stack and starting over from square one. I wish them good luck. I haven't looked at Kawa yet, I'm still hoping to get my boss to look at Clojure.
Re: (Score:2)
Re: (Score:2)
I have golden handcuffs at my current job, I work with some of the nicest, most professional, and especially most intelligent colleagues and managers I've had the privilege to encounter. So I'm not looking to leave soon for any reason. But most of my work is in vanilla Java, and I'
Re: ..that runs on the Java platform. (Score:2)
Does this bring anything to the table that Groovy doesn't?
Re: (Score:2)
Yes. (I suggest reading the LWN article linked in the submission - it's fairly short.)
Re: (Score:2)
Both languages have dynamic typing. Both have a REPL. Depending upon what task you're trying to accomplish, both will let you get it done with far less syntactic overhead than Java without sacrificing readability (i.e. no crazy implicit variables or bizarre syntax shortcuts). Groovy has optional static types, while Scheme does not out of the box. On the other hand
Re: (Score:2)
However, Kawa does have optional static typing. That, plus careful language design, plus a smart compiler, means that Kawa code run very faster - much faster than Groovy or Clojure or JRuby or ...
Re: (Score:2)
Re: (Score:2)
kawa (Score:2)
A Polish development by any chance? kawa being the polish for coffee, with a java base it seems likely
Re:kawa (Score:5, Informative)
I took it over in 1996, and re-wrote it as a compiler. At this point, I doubt any of Alex's code still exists. I'm Norwegian-American, and Kawa means nothing in Norwegian. Still, I saw no reason to change the name.
Re: (Score:2)
Re: (Score:2)
Sort of. The first version of Kawa was by R. Alexander Miowski [milowski.com]. He's an American, but with a pretty clearly Polish name. However the main developer has been Per Bothner [bothner.com] since ~1996.
Re: (Score:2)
That's "R. Alexander Milowski" with a slash on the 'l', which Slashdot ate since I guess it still doesn't support Unicode in 2014...
Traditional (Score:5, Insightful)
the strengths of traditional compiled languages....zero-overhead Java platform integration
I never thought I'd hear someone say that Java integration is a traditional strength of compiled languages (especially for a dialect of a language invented in the 50s).
Re: (Score:2)
Java has a great runtime environment. It is miles ahead of python, which is too dynamic to be optimised, even at run time.
Re: (Score:3)
Re: (Score:2)
"Great" clearly means different things to different people.
To malware authors, JRE is clearly great, because it is a frequent (successfully attacked) target. Maybe it's also great if you trust Oracle, which I don't.
Oracle's JRE patching record is not great, but worse than that you daren't set it to automatically update itself because Oracle has previously distributed malware bundled with JRE security updates ( http://www.zdnet.com/article/a... [zdnet.com] ).
Re: (Score:1)
the strengths of traditional compiled languages....zero-overhead Java platform integration
I never thought I'd hear someone say that Java integration is a traditional strength of compiled languages...
...and you didn't. The text you quoted neither says nor implies that that's a traditional strength. (In the text you quoted, the word traditional is used as an adjective modifying "languages".)
Re: (Score:2)
Re: (Score:2)
Re: (Score:1)
The whole of reality is a dialect of Lisp. Realizing it takes just a list of faith to the proofless world of the Second Order.
Re: (Score:2)
Re: (Score:3)
Re:Traditional (Score:4, Insightful)
Re: (Score:2)
R7RS? (Score:2)
Re:R7RS? (Score:5, Informative)
Technically "The Revised Revised Revised Revised Revised Revised Revised Report on the Algorithmic Language Scheme".
Scheme was first specified in a 1975 report, which was revised in 1978. The 1978 report was called "The Revised Report on Scheme, A Dialect of Lisp". The next version of Scheme, in 1985, initiated the current trend, by naming itself, "The Revised Revised Report on the Algorithmic Language Scheme", or "R2RS" for short. Since then it functions as sort of a version number, so R3RS was the successor to R2RS, and so on. But from R3RS onward, nobody actually writes out the "Revised Revised..." part.
Re: (Score:3)
The next version of Scheme ... naming itself, "The Revised Revised Report on the Algorithmic Language Scheme"
I kinda doubt the thing named itself. More likely the author named it that.
Can I have my Grammar Nazi sticker now?
Re:R7RS? (Score:4, Funny)
Can I have my Grammar Nazi sticker now?
Oh. You almost had it. ...".
It's "May I
How does it compare to Clojure? (Score:3)
Re: (Score:3)
The linked LWN article [lwn.net] meantions some reasons: Among them that Kawa is much faster than closure (both execution speed and start-up speed). Plus some might like that Kawa is mostly-compatible with a pre-existing independently-specified language.
Re: (Score:2)
Re: (Score:2)
why this is cool (Score:1)
kawa is one of the most performant dynamic language implementations on the jvm.
and it's a lisp, so it has all the advantages of that language family going for it.
the real win is the confluence of these things: a powerful dynamic language with
full access to the jvm ecosystem.
applications can run for months or years at a time with continuous hot updates.
no doubt that this is possible with other language runtimes, but i haven't seen one
that makes it easier than kawa.
compared to clojure: performance is probably
Obi-Wan told Luke... (Score:4, Insightful)
It's like Old Ben Kenobi told young Luke Skywalker:
"If you're trying to run it on a JVM you've already lost to the darkside."
Star Wars Quotes (that never happened) [about.com]
E
Let's compare these advantages to Haskell (Score:2)
It combines the strengths of dynamic scripting languages (less boiler-plate, fast and easy start-up, a REPL, no required compilation step).
Let's see whether the great dynamic scripting language Haskell also fulfills these points.
Now we see Haskell has all the advantages of dynamic scripting languages. How
Re: (Score:2)
Pretty sure that kawa is compiled as it happens, so your distinction between haskell and dynamically typed scripting languages is false.
The parenthesis thing is a bonus for kawa, since it enables advanced syntax tree manipulation of source code both in the editing
environment, and for meta programming. And once nice feature of lisp compared to haskell is that you can do basic I/O without spending
three weeks understanding what the hell a monad is.
Parentheses (Score:2)
Most software developers will take one look at the excessive parentheses required for Kawa and Scheme and say "nuke it from orbit". Even Lisp advocates like Paul Graham admits that syntax like "(* (+ 1 2) (- 5 4))" is painful to deal with.
Thankfully, there *are* solutions for Scheme: SRFI-105 [schemers.org] and SRFI-110 [schemers.org] (which I co-authored). These are extensions to Scheme that let you keep meta programming (and syntax tree editing in an editor) with readable syntax [sourceforge.net]. To my knowledge Kawa doesn't implement them, but
Re: (Score:3)
Re: (Score:2)
Yep, it's true there are times when prefix notation is painful. I got used to it years ago, though, so it doesn't really bother me any more. For maths, I agree, it confuses but it's easy to drop that, or use a threading operator for non mathematical code. And it largely absolves me from the hassle of having to think about syntax the rest of the time.
Compromises in lisp as in all things.
Re: (Score:2)
Semantic indentation? Blech.
If you want Python, go write Python. Don't ruin Lisp trying to turn it into Python.
Re: (Score:2)
When the organisation you're developing for is a 'Java shop'. The selling point here for Kawa over, say, Racket is that a solution can be deployed to a Java EE container.
c.f. jruby, nashorn/rhino, jython
Re: (Score:2)
A similar case is when you want to deploy to a platform-as-a-service (PaaS) provider like Heroku or Redhat OpenShift. Scheme isn't popular enough for any of these to support Scheme apps directly, but they do almost all support Java apps. So if you can deploy your Scheme app as a Java app, you can run it there.
Re: (Score:3)