[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Chicken-hackers] why Chicken?
Re: [Chicken-hackers] why Chicken?
Thu, 1 Feb 2007 20:05:09 +0100
On 1/31/07, Brandon J. Van Every <address@hidden> wrote:
Perhaps your answers to these questions will help me with further questions.
One thing that irks me, is I see "no particular brilliance" offered by
Chicken or Scheme to the general problems of software development. I'm
working with barely modern build technologies because there isn't
anything better out there. Software doesn't do anything for us; we
build it all by hand. So very little gets done, unless you throw lotsa
money and bodies at problems. The economic ramifications: I can poke at
something like Chicken or Scheme forever, and get very little done,
because of an infinite amount of things to do. If there is no
fundamental improvement in how software is developed, or some other
compelling economic advantage, then I can spend forever developing no
marketable skills at all. Chicken, and more broadly Scheme, can remain
unprofitable standards. They may be interesting to a computer
scientist, to say, "Ah, this kind of language exists," but no other reason.
How can Chicken help people build software more quickly, without all the
gruntwork and errors? What can Chicken automate about the software process?
Believe me, I'm asking this myself about once a week. We want to write
code in Scheme to leave behind the tools we hate, but somehow spend
all our time with the latter to make the former work. I get fed up frequently.
I throw up my hands and ask myself: why am I doing this? When have I
written the last real "fun" project? I think the last time was when I coded
some silly videogame on my TI-99/4A...
All this *is* gruntwork, that's true and I can understand everybody who
gets tired of it. I really do, since I'm tired of it myself. What I
usually do in
those moments is googling madly for the one ultimate programming tool:
the language that is pure elegance and simplicity, the implementation
that is halfway portable,
has a codebase that isn't a complete mess and provides enough functionality
or a decent FFI, so I can hack together all that I need myself. I search and
search and ultimately find: there isn't anything that really is much of an
improvement over Chicken. This is just natural, since it somehow represents
what I need most as a programming tool: simple source structure, usable FFI,
simple and elegant core language, very few dependencies, decently portable
(portable means for me OS X and Linux - when I was working with Windows,
the situation was different). There are of course loads of language
that do one or more of the things I mentioned much better, but it's
that I need. Nothing comes close (for me, but my demands are not necessarily
the same as yours or anybody else's).
But again the question is why *Chicken* ? These specs could describe a
lot of projects, whether languages or tools. Not as many projects as
one might hope. I think the fact that Chicken is basically a good
project, is unusual and important. I know that's a big part of why I've
stuck around this long. But the question remains, why *Chicken* ?
I don't know. It doesn't excel in one particular area (depending on
your point of
view), but it sucks not too much when you take everything together.
First of all: it's Scheme, which is the simplest and most powerful Lisp
dialect, which is the only programming language that really makes sense
(apart from Forth, but that is a different story).
For me, chicken is a "workhorse" Lisp: simple, reliable (and I'm not talking
about bugs - I mean precise GC, certain guarantees about memory consumption,
full tail-calls, full continuations). It's portable and simple to
build (Yes, it is
simple to build, despite the hard work that goes into the build system - that's
because we want a *single* build that covers *all* platforms. Putting together
a build for a particular platform and configuration is simple with a
bit of twiddling.
Not trivial, but simple). It can produce statically linked turnkey applications,
or ship .c files for building from sources - including extensions
(this is relatively
new and incomplete but technically not a problem). It has an FFI that, despite
that it can be ugly at times, allows relatively easy access to C,C++ and ObjC.
And or course it is supported by SWIG. So if one wants to ship real
there aren't many alternatives in the high-level language department.
Now, this all would already have been flushed down the toilet at some stage,
if it weren't for patience of everybody who uses it now. Staying calm, when the
compiler breaks, keeping cool when the build fails for the n-th time and keeping
conposed while wading through the mess of macro systems and little strange
quirks that show up once one digs deeper into Chicken. I still can't believe how
John cowan can give calm bug reports about a broken Cygwin build, even
though he should probably just say "oh to the devil with that thing". How Sven
Hartrumpf has endured endless compile times while translating 50k files in
block mode with the compiler that worked, well, most of the time, and
even generate correct C is beyond me. My frequent outbursts of "oh, let's
just clean up and simplify everything a little bit" must have driven Kon, Daishi
and Alejandro completely mad, and I fully understand them. But the
users are still
there, and that's enough to keep me going.
I don't know "why Chicken", I can only judge for myself - its the "road of
least suckage" for me (which should tell you something about how incredibly
bad todays software is. Or yesterdays. We are still in the stone age. No, we are
million years before that).
Anyway, thanks for your honest and well-meaning opinion.