Musings about modularity and programming in the large

Bergel, Alexandre bergel at iam.unibe.ch
Thu Jan 24 04:07:00 UTC 2008


I spend some effort to summarize those work. If you are interested in  
this...

http://www.iam.unibe.ch/~scg/Archive/Papers/Berg05cModuleDiversity.pdf

Related work in:
http://www.iam.unibe.ch/~scg/Archive/Papers/Berg05bclassboxjOOPSLA.pdf

Cheers,
Alexandre

On 23 Jan 2008, at 15:16, Jason Johnson wrote:

> Wonderful, thanks.  I dig through those and see if I find something
> like what I'm envisioning.
>
> On Jan 23, 2008 3:10 PM, Bergel, Alexandre <bergel at iam.unibe.ch>  
> wrote:
>> There has been many propositions like this: J&, MZScheme's Unit,
>> Selector Namespaces, Method Namespaces, Expander, Java Module System,
>> Jiazzy, ... I could say another 20 more.
>>
>> I see that the three main difficulties in adding a module system in a
>> programming language are:
>>         - Turning non-modularized libraries into modularized one
>>         - Preserving backward compatibility
>>         - Getting the community accept the proposal
>>
>> Cheers,
>> Alexandre
>>
>>
>>
>> On 23 Jan 2008, at 08:28, Reinout Heeck wrote:
>>
>>> Jason Johnson wrote:
>>>> Hi all,
>>>> Recently working in other high level languages I was thinking about
>>>> how modularity is accomplished in these systems and how we might
>>>> do it
>>>> in Squeak.
>>>
>>>
>>> This is a recurring discussion and I often see suggestions like
>>> yours: postulate a mechanism and discuss its viability. I would
>>> call this the bottom-up approach.
>>>
>>> If we went top-down we could start with specifying what we want to
>>> get from a module system. I recently came across a paper on J&
>>> ('Jet') which starts out with a list of requirements we might want
>>> to ponder in this regard:
>>>
>>>
>>>
>>> http://lambda-the-ultimate.org/node/2591
>>> "
>>> J&: Nested Intersection for Scalable Software Composition by
>>> Nathaniel Nystrom, Xin Qi, Andrew C. Myers. 2006.
>>>
>>>     We identify the following requirements for general extension
>>> and composition of software systems:
>>>
>>>        1. Orthogonal extension: Extensions may require both new
>>> data types and new operations.
>>>        2. Type safety: Extensions cannot create run-time type  
>>> errors.
>>>        3. Modularity: The base system can be extended without
>>> modifying or recompiling its code.
>>>        4. Scalability: Extensions should be scalable. The amount of
>>> code needed should be proportional to the functionality added.
>>>        5. Non-destructive extension: The base system should still
>>> be available for use within the extended system.
>>>        6. Composability of extensions.
>>>
>>>     The first three of these requirements correspond to Wadler's
>>> expression problem. Scalability (4) is often but not necessarily
>>> satisfied by supporting separate compilation; it is important for
>>> extending large software. Non-destructive extension (5) enables
>>> existing clients of the base system and also the extended system
>>> itself to interoperate with code and data of the base system, an
>>> important requirement for backward compatibility. Nested
>>> inheritance addresses the first five requirements, but it does not
>>> support extension composition. Nested intersection adds this
>>> capability.
>>> "
>>>
>>>
>>> IMO point 5 is often overlooked in Smalltalk systems, we love
>>> extending base code but we hardly ever think about isolating these
>>> extensions so the base code dependents don't get 'confused' by
>>> those extensions.
>>>
>>>
>>>
>>> R
>>> -
>>>
>>
>> --
>> _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
>> Alexandre Bergel  http://www.bergel.eu
>> ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
>>
>>
>>
>>
>>
>

-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:
Alexandre Bergel  http://www.bergel.eu
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.






More information about the Squeak-dev mailing list