[PD-cvs] externals/pureunity README,1.2,1.3
Mathieu Bouchard
matju at users.sourceforge.net
Wed Jan 3 01:44:30 CET 2007
Update of /cvsroot/pure-data/externals/pureunity
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv28702
Modified Files:
README
Log Message:
some notes that I added a long time ago, plus some notes from two weeks ago.
Index: README
===================================================================
RCS file: /cvsroot/pure-data/externals/pureunity/README,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** README 13 Jan 2006 04:54:08 -0000 1.2
--- README 3 Jan 2007 00:44:28 -0000 1.3
***************
*** 403,412 ****
> tests won't tell you this.
! I once called unit-tests "test-by-example" and contracts "test-by-rule". I
! think that those names are preferable to the more common names. I also had
! listed "test-by-use" which is to use the software in practice: this may
! include testing a component A using the unit tests for B because B uses A.
! The last I had listed was "test-by-proof", which is rarer and is the only
! one that requires analysing the implementation.
> > One limitation of documentation is that it has no enforcement power,
--- 403,407 ----
> tests won't tell you this.
! [...]
> > One limitation of documentation is that it has no enforcement power,
***************
*** 420,443 ****
that it was the contracts that acted as documentation!
! I've thought of a triad:
!
! A. "the real thing"
! B. what it's documented as
! C. a way to verify that (1) and (2) agree
!
! and another one:
!
! changing A to match B+C:
! programming
!
! changing B to match A+C:
! the scientific method (aka reverse engineering)
!
! changing C to match A+B:
! unit-tests and contracts and scientific experiments
!
! _ _ __ ___ _____ ________ _____________ _____________________ ...
! | Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju
! | Freelance Digital Arts Engineer, Montréal QC Canada
+-+-+--+---+-----+--------+-------------+---------------------+
--- 415,419 ----
that it was the contracts that acted as documentation!
! [...]
+-+-+--+---+-----+--------+-------------+---------------------+
***************
*** 481,482 ****
--- 457,594 ----
+-+-+--+---+-----+--------+-------------+---------------------+
+ Date: Fri, 13 Jan 2006 17:19:41 +0900
+ From: Mathieu Bouchard <matju at artengine.ca>
+ Reply-To: ruby-core at ruby-lang.org
+ To: ruby-core at ruby-lang.org
+ Subject: Re: Design contracts and refactoring (was Re: mathn: ugly warnings)
+
+ [...]
+
+ In order to entrench the tests-as-documentation habit firmly in the Ruby
+ community, we need a catchy acronym. Like RTFUT = Read the Fabulous Unit
+ Tests!
+
+ +-+-+--+---+-----+--------+-------------+---------------------+
+ http://lists.puredata.info/pipermail/pd-dev/2006-01/005920.html
+ Date: Fri, 20 Jan 2006 23:52:22 -0500 (EST)
+ From: Mathieu Bouchard <matju at artengine.ca>
+ To: pd-dev <pd-dev at iem.at>
+ Subject: macros and such (was: pd-lib, SIMD)
+
+ [...]
+
+ I think that the Pd source doesn't use nearly enough macros or other
+ code-reducing tricks.
+
+ The reduction of code isn't so much about making things use less RAM: the
+ RAM excuse is quickly evaporating as even the tiniest computers come with
+ plenty of RAM and even the faster kinds of RAM come in ever more copious
+ amounts (big caches).
+
+ The reduction of code is programmer-oriented. I'm not talking about length
+ of identifiers here (this is a separate issue). Every line of code should
+ do something interesting by itself. Code should read like a good story and
+ not like a car. Ever tried to read a car? It's boring. The same damn
+ piston copy-pasted 12 times.
+
+ The reduction of code is also documentation-oriented. Once the programmer
+ has been contaminated with the wisdom required to make small code or
+ understand small code, then why wouldn't the programmer explain it to his
+ students in higher-level terms instead of chanting 12 times the same
+ piston as if it were a marathon of Hail-Marys ?
+
+ This is why Pd needs a taxonomy of object classes. If I don't get that
+ taxonomy in Pd itself nor in its help files, at least I'll have it in its
+ unit tests.
+
+ Once and only once.
+ Once and only once.
+ Once and only once.
+ Three strikes and you refactor.
+ for x in [1,2,3] say: Once and only once
+
+ http://c2.com/cgi/wiki/?ThreeStrikesAndYouRefactor
+
+ BTW I'm not talking about only inheritance of implementations. The most
+ important thing to me is inheritance of expectations, so that if I name
+ 100 classes that obey the rule "Operator2", then you have just learned
+ something common about 100 classes.
+
+ Operator2 means right-inlet is cold, left-inlet is hot, there is a "set"
+ method for using left-inlet as cold, there is a "bang" for explicitly
+ activating the main computation. The main computation only produces one
+ message. That's what "Operator2" means in my taxonomy, and it's that much
+ that hasn't to be stated explicitly in each help patch.
+
+ Help patches can be abstractions to be used to by other help patches. Just
+ put a [operator2-help] object in your help patch to indicate that the
+ currently documented class obeys the standard operator2 rules.
+
+ Who's against it?
+
+ +-+-+--+---+-----+--------+-------------+---------------------+
+ http://lists.puredata.info/pipermail/pd-list/2006-02/035169.html
+ Date: Sat Feb 4 21:22:29 CET 2006
+ From: Mathieu Bouchard <matju at artengine.ca>
+ To: pd-list
+
+ * Previous message: [PD] dealing with arguments and inlets
+ * Next message: [PD] Re: [PD-announce] A new version of FFTease is now available for Pd
+ * Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
+
+ On Fri, 3 Feb 2006, Hans-Christoph Steiner wrote:
+
+ > The way I have been thinking is that the first inlet is the general
+ > inlet, and it can accept many types of messages. Then the second inlet
+ > lines up with the first argument, the third inlet to the second
+ > argument, etc.
+
+ I agree. Many objects obey the rule that the k'th inlet matches argument
+ $k for several arguments in a row, usually all of them.
+
+ > I think this is pretty clean and flexible, and I think
+ > it would be nice to have some kind of standard for this.
+
+ And the best way to make sure people are following a standard is to make
+ it so easy to follow that it's harder to not follow it than to follow it.
+ Of course I don't mean adding hurdles to doing it otherwise, but rather
+ make a shortcut for those who follow the standard. Short of this, people
+ who make abstractions/externals can get a friendly reminder, from someone
+ who cares, that it would be better if they followed the standard.
+
+ > Obviously, it doesn't work for all objects, but I think it would be good to
+ > standardize on objects it does work for.
+
+ PureUnity's goal (when I work on it) is to design a taxonomy that
+ separates objects that obey certain properties, from those that don't,
+ because that's a way to reuse tests, but also because certainly it doesn't
+ hurt documentation either, and it's even better if it can influence how
+ abstractions are made.
+
+ _ _ __ ___ _____ ________ _____________ _____________________ ...
+ | Mathieu Bouchard - tél:+1.514.383.3801 - http://artengine.ca/matju
+ | Freelance Digital Arts Engineer, Montréal QC Canada
+
+ +-+-+--+---+-----+--------+-------------+---------------------+
+ From matju at artengine.ca on Dec 18, 2006
+
+ I thought up some kind of classification of type systems, avoiding to call
+ them strong/weak or static/dynamic because those words are confusing.
+
+ 1. Typed expressions: each piece of code that can give a value, has a
+ type that can be figured out at compile-time.
+
+ 2. Typed variables/parameters: declarations allow runtime checks but not
+ compile-time checks.
+
+ 3. Typed values: variables don't have types, they can contain any value,
+ but every value has a type.
+
+ 4. Typed uses: values don't have types, a type is a way of using a value.
+
+ Strictness, in the sense of forbidding things to the user, is not on that
+ scale, it's another aspect. A well-balanced strictness allows one to
+ bypass the system whenever needed, but without being too error-prone.
+
+ However it's difficult to say what it means to "bypass the system" for all
+ four typing categories at once, or even within one category.
More information about the Pd-cvs
mailing list