Changeset 19354

Show
Ignore:
Timestamp:
01/07/08 08:18:27 (12 months ago)
Author:
Darren_Duncan
Message:

ext/Muldis-DB/ : in SeeAlso?.pod, added new prospective item MuldisX::DB::Simple, high priority

Location:
ext/Muldis-DB
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • ext/Muldis-DB/Changes

    r19333 r19354  
    1212 
    1313    * New file versions are: DB.pm and Interface.pm and Validator.pm and 
    14     Example.pm 0.7.0 and SeeAlso.pod 0.4.3.  Added new file 
     14    Example.pm 0.7.0 and SeeAlso.pod 0.5.0.  Added new file 
    1515    lib/Muldis/DB/Engine/Example/Value.pm, which starts at version 0.0.0. 
     16 
     17    TODO: Describe the new Value.pm and other new friends. 
     18 
     19    * (SeeAlso.pod)  The prospective extension namespace MuldisX::DB::\w+ 
     20    is now also for experiments by the Muldis DB core developers, not just 
     21    unblessed extensions.  Also added prospective item MuldisX::DB::Simple 
     22    which is an experimental alternate Muldis DB API that is more dwimmy, 
     23    less verbose, and generally more pleasant to use than vanilla PHMD; 
     24    this would be made by the developers of the core, and be high priority. 
    1625 
    1726    * Incremented all copyright year range-ends to 2008. 
  • ext/Muldis-DB/lib/Muldis/DB/SeeAlso.pod

    r19333 r19354  
    205205 
    206206Unofficial extensions to Muldis DB could be named in this space, though it 
    207 doesn't have to be used if prior coordination happens between developers. 
     207doesn't have to be used if prior coordination happens between developers; 
     208moreover, this namespace is likely to be used even by the main Muldis DB 
     209developers to experiment with possible extensions without tying up a "good" 
     210namespace for them. 
     211 
     212=item C<MuldisX::DB::Simple> 
     213 
     214The Muldis DB native API, as presented by the C<Muldis::DB::Interface> 
     215roles, is quite verbose.  It by default just accepts Muldis D code 
     216formatted as vanilla Perl Hosted Muldis D tuple and relation values that 
     217are of Muldis D system catalog data types.  While this format is simple and 
     218yet very expressive, unambiguous, easy to validate and translate, it tends 
     219to be non-dwimmy and require a programmer's intent spelled out for it, 
     220which increases code size an order of magnitude over a dwimmy equivalent, 
     221and also all expression trees have to be decomposed into a tagged list of 
     222tree nodes (a tuple or relation value is always a fixed composite depth 
     223rather than N-depth), which HLL programmers may find less friendly. 
     224 
     225The C<MuldisX::DB::Simple> module is an abstraction over I<Interface> which 
     226adds a considerable amount of dwimminess to it, and adds support for 
     227writing expressions as actual N-depth trees, and adds a considerable amount 
     228of huffmanization and common task shortcuts; this greatly reduces the size 
     229of the Muldis D code that programmers would actually write on a day to day 
     230basis, and make it more resemble other high-level languages. 
     231 
     232Unlike other such modules, C<Simple> is written by the creators of the 
     233Muldis D core itself.  Some of its concepts may make their way into the 
     234core roles as an additional API option, but meanwhile they are in the 
     235separately distributed (under the same LGPL license) C<Simple> where they 
     236can be experimented on more freely without unduly complicating the core 
     237(and encouraging competition). C<Simple> is a top priority for 
     238implementation, as it should help to test the core as well as help get the 
     239initial user base off the ground faster. 
     240 
     241In regards to what huffmanization and common task shortcuts are provided by 
     242C<Simple>, a lot of influence should be taken from the variety of existing 
     243C<DBI> or SQL wrappers on CPAN whose mandate is to make them simpler or 
     244more dwimmy, such as C<SQL::Abstract>.  In fact, while full emulation isn't 
     245promised, C<MuldisX::DB::Simple> may provide quasi-clones of several of 
     246such module's interfaces, so to help migration of people using them.  As 
     247with those other modules, C<Simple> will provide pass-thru when it doesn't 
     248have any special treatments for things that programmers want to do. 
     249 
     250In the longer term, C<MuldisX::DB::Simple> is deprecated (at least under 
     251that name) in favor of better solutions, independent or otherwise. 
    208252 
    209253=back