This is the mail archive of the
kawa@sourceware.org
mailing list for the Kawa project.
Re: What is the Development Environment of Choice for Kawa?
- From: mikel evins <mevins at me dot com>
- To: Per Bothner <per at bothner dot com>
- Cc: mikel evins <mevins at me dot com>, "Rafik Naccache [TNTeam]" <rafik at tnteam dot rocks>, kawa at sourceware dot org
- Date: Thu, 18 Feb 2016 13:39:05 -0600
- Subject: Re: What is the Development Environment of Choice for Kawa?
- Authentication-results: sourceware.org; auth=none
- References: <56C5EED0 dot 8030500 at tnteam dot rocks> <56C61423 dot 4070801 at bothner dot com>
> On Feb 18, 2016, at 12:57 PM, Per Bothner <per@bothner.com> wrote:
>
>
>
> On 02/18/2016 08:18 AM, Rafik Naccache [TNTeam] wrote:
>> Hi,
>>
>> Coming from Clojure Land, I am experimenting with various scheme implementations, guile, chicken, racket,...
>>
>> As I am experimenting Kawa, I was surprised to see how this scheme can actually beat Clojure in terms of speed and elegance, and want to use it in a serious hobby project in which I have to interact with a great share of imperative Java, a setup that would make Clojure suffer...
>>
>> But then, I can't find what tool is commonly used by the community to develop Kawa: is it emacs with comint? is it slime with the little swank glue-code? maybe something else?
>
> Tooling is Kawa's weak spot - though its compile-time warnings and errors
> are better than most "dynamic languages" IMO.
>
> I'm pretty old-school, so I mostly use Emacs (mainly just editing), the REPL,
> and print statements. (Very rarely I might use jdb to track down an infinite loop.)
> OTOH I write more Java (and lately JavaScript) than I write Scheme â
I write more Scheme than Java, but my solution is the same as Perâs: Emacs and the repl. I got pretty far that wayâ far enough to write a 3D multiplayer network game that Per presented at the 2015 JavaOne conferenceâbut there are disadvantages, as Per said.
I generally use Emacs with scheme mode and Kawa running in an inferior quack process in a buffer. My emacs setup includes an interactive command to run Kawa with a classpath suitable to my project. Whenever I reload definitions or anything else happens that makes me doubt the integrity of the Kawa runtime, I kill the inferior process and restart it with a few keystrokes. It takes less than a second.
Of course, it blows away the runtime state and I have to rebuild everything from scratch, but Iâve generally solved that by writing loader files that bring my runtime back up to snuff in less than a second. Itâs not as good as real Lisp- or Smalltalk-style interactive development, but if youâre coming from the Clojure world then youâre probably not looking for that anyway, and are unlikely to miss it.