[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Axiom-developer] Re: noweb

From: root
Subject: Re: [Axiom-developer] Re: noweb
Date: Wed, 3 May 2006 23:56:49 -0400

> Get serious! awk is a standard unix tool and is part of every
> linux distribution. It has been around for at least as long
> the C programming language. We make no attempt to explain C
> programming or even lisp programming to anyone, so why should
> we need to explain awk?

three points:

1) perl, python, asp, javascript, etc are all part of any standard
linux distribution as are several dozen other langauges like m4
(used by sendmail). though i've written commercial applications
in over 60 languages and used unix for over 20 years i do not speak
any of these languages.

axiom uses only a few languages, lisp, C, some trivial shell scripts,
latex and make. it also (currently) includes boot which is completely

i'd much rather reduce the number of languages need to understand
axiom rather than enlarge the number. some are necessary (like
lisp, spad, aldor) but some are optional (e.g. java in the aldor
merge) and more properly should be done using existing tools.

there are many feasible solutions to a problem. and there are
many "convenient" solutions in many different languages. but 
solutions which expand the needed skill set for maintainers are
much less desireable than ones which do not.

as a policy i favor minimizing the number of languages used.
adding sed (1 language), awk (a second), clever bash shell
scripts (a third), java (a fourth), auto* (a fifth), simply
reduces the number of people who can reliably maintain the system
and increases the work required to port, possibly to the point
of being impossible.

2) sed and awk are NOT standard parts of a windows distribution.
again as a matter of policy we need to reduce the requirements
so we can work across a larger number of systems. ideally all 
of axiom would run in common lisp and porting becomes a copy
operation. C is only slightly more problematic. in fact, the
key reason that axiom does not currently run on the mac is breakage
caused by C. awk/sed/autoconf all seriously complicate the port issue.

frankly i'd much rather see the tools devolve into lisp implementations.
gcl, sbcl and clisp generate native exe files on windows and executables
on linux. given that lisp is a full programming language and is integral
to axiom why don't we write code that is trivial to port rather than
add requirements that are certain to make axiom unportable?

as a policy i favor doing things in lisp unless it can be shown
that such a solution is impossible. in the future i'd make the
same claim about using aldor (assuming we free aldor).

3) in fact i'm making every attempt to explain the lisp programs
as you'll see in the eventual bookvol5.pamphlet file. it is
NOT necessary to explain the language idioms but it IS necessary
to explain what is happening in a block of code.

the noweb script will be sitting in a standalone pamphlet in src/scripts.
it will not appear as an integral part of anything to a future maintainer.
so the future maintainer can reasonably expect to have a (possibly 
redundant) explanation of why this script exists, what it does, what
data it expect to work on, etc. this is NOT the same as explaining
the awk language constructs.

i would argue that literate programming is a fundamental change in
mindset that requires you to explain to some future maintainer how
and why any new code works. he should be able to read the paragraph
and know where this code fits as well as what it is trying to accomplish.
that's NOT the same as explaining the awk/sed language. but it IS the
whole point of literate programming.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]