Re: Re: Pragmatic Requirements Summary : update

Brian Hurt <[email protected]> Mon, 4 Aug 2003 16:43:04 -0500 (CDT)
Newsgroups gmane.comp.programming.pragmatic
Message-ID <[email protected]>
On Mon, 4 Aug 2003, Martin DeMello wrote:

> --- Brian Hurt <[email protected]> wrote:
> > My understanding of the pragmatic philosophy was 180 degrees seperate.  
> > Being pragmatic meant not beleiving in golden hammers- *any* golden 
> > hammer.  You learn a new language a year so you know a lot of languages, 
> > and can use the right one for the job. Tip #17 is "program close to the 
> > problem domain".  Up to and including inventing new languages that are 
> > even closer to the problem domain.  
> 
> Which is why my ideal language is a kitchensink of features to let you easily
> build any given dsl atop it.
> 

Wonderfull theory.  Too bad it doesn't work.

I'll give you one example of why.  Many operating systems, internally, 
have the concept of swappable vr.s non-swappable memory.  Swappable memory 
is allocated in regions the OS can swap out if it's running short of 
memory- nonswappable is (obviously) memory it won't swap out.  Here's the 
thing- while holding a spin lock or in interrupt concept, you don't dare 
touch swappable memory, in *any* form.  If you do, and the memory happens 
to be swapped out, you panic the system.

Which means you need absolute control over where- in what type of memory-
everything gets put.  Where functions and constant data end up you
generally end up using compiler-specific extensions to specify (which
segment they go into, for example).  For data structures, you generally
replace malloc() with some other routine which has an extra parameter
saying which memory space to allocate from.

C doesn't have "hidden" memory- making it easy to tack down every single 
bit of memory used and figure out where it goes.  C++ starts having 
"hidden" memory.  The first place you hit it is the virtual function 
dispatch tables associated with most every object.  Where is this table, 
and what memory space does it go into?

This is just one example.  Hardware-level programmers need not just the 
ability to do things (e.g. pointer arithmetic), but the ability to *not* 
do things (touch swappable memory).  I don't even need to start talking 
about memory-size or real-time constraints.

Now, I turn the question around: assume you can't use Pragmatic to write 
your OS in.  So what?  Not that many people writting OSs anyways, really. 
IMHO, at least half the stuff written in C shouldn't be.  If you're not
directly banging on hardware, if you're not at least considering assembler
as the alternative, you shouldn't be coding in C.  All you lose is the 
ability to claim you are the one true language.  

My experience with One True Languages is that they're so busy trying be 
everything to everyone, they end up being nothing to anyone.  Who now 
remembers PL/I?  The great language, it'll replace all other languages.  
You can even- demonstratably!- write an OS in it (Multics was written in 
PL/I).  

Brian


------------------------ Yahoo! Groups Sponsor ---------------------~-->
Buy Ink Cartridges or Refill Kits for Your HP, Epson, Canon or Lexmark
Printer at Myinks.com. Free s/h on orders $50 or more to the US & Canada. http://www.c1tracking.com/l.asp?cid=5511
http://us.click.yahoo.com/sO0ANB/LIdGAA/ySSFAA/W4wwlB/TM
---------------------------------------------------------------------~->

To unsubscribe from this group, send an email to:
pragmatic_lang-unsubscribe-hHKSG33TihhbjbujkaE4pw@public.gmane.org

 

Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/