Roman Shaposhnik's

 

Sun Studio Compilers on Linux are [almost] 1 year old


It looks like summer is Sun's time for doing the right thing. Last summer a year ago we opened Solaris to the community and a bit later what had started as a skunworks project of just a couple of guys trying to bring some software they like to the platform they cherish was finally approved by the management (thanks Don!) to be released to the outside world as well.

And thus what is now known as Sun Studio Compilers for Linux Technology Preview Program was born.

At the time it was a small project fueled mainly by the enthusiasm of good folks around me (thanks Lisa, Kuldip and Richard) but it was because of you guys reading this that this project was allowed to morph into a much more respected and supported one called Sun Studio Express. Now its not just about making Sun Studio compilers on Linux available but about changing the way our organization produces software. And that's a biggie.

I guess in this last paragraph I just want to thank everybody who supported us by downloading our stuff, trying it out and discussing it on forums -- keep doing it! The only reason it all goes out is because of you!

Thank YOU!

On LEGO bricks and OS design


It is not always that we can explain our deep attraction to particular patterns be they real or imaginary. To some extent that is exactly what makes art so subjective. But even in the realms of programming these matters hardly become any clearer. Why does the majority of computer scientists and programmers find recursion particularly exciting ? Well, I guess we can speculate all we want but it won't get us any closer to really answering this question.

Now, as I've told everybody time and again -- I love Plan9. I think its the most elegantly designed and implemented OS since the dawn of UNIX. And anything else (be it Linux or Solaris) just pales in comparison not only in the pure artistic sense, but also in a number of very practical areas. I truly believe that Plan9 and its ideas were somewhat ahead of their time and anybody seriously considering a fully networked world of devices ranging from one bit sensors to full fledged humans must study Plan9. Its like that old LISP saying: "If you don't know LISP you're bound to reinvent it. Poorly".

An excellent introduction into Plan9 philosophy does a nice job of explaining the 3 key ideas on which Plan9 is built:
    "The view of the system is built upon three principles. First, resources are named and accessed like files in a hierarchical file system. Second, there is a standard protocol, called 9P, for accessing these resources. Third, the disjoint hierarchies provided by different services are joined together into a single private hierarchical file name space. The unusual properties of Plan 9 stem from the consistent, aggressive application of these principles."
but it does nothing to help understand why so many smart people find them (and especially the first one) particularly exciting and somehow very powerful.

It took me a number of years of thinking about it, one trip to Madrid and a conversation with the brilliant computer scientist named Nemo to finally come as close to a conscious explanation as one can get.

Its rather simple, really, as an application developer my ideal world would be the one where I can reuse useful components/services literally in a manner of LEGO bricks. The world where a component that gives me a "binary editor" capability would be equally easily accessible from my debugger, my editor, the application I use to edit fonts, etc. Ideally I shouldn't even care about where component resides or what language/infrastructure it is implemented in. A SOA of sorts.

Do we live in an ideal world ? Not really, but before I state why Plan 9 comes as close to it as one would hope to get, lets look at some of the "proposed" solutions to this universal reusability problem.

Java comes to mind right away. Its widespread and it abstracts you sufficiently enough from the outside world, so that you don't have to care how to create threads or windows -- its all part of the grandure API. It also provides the level of reusability I've mentioned via [Net]Beans and such. However, the unbelievably high price you have to pay for this is that you absolutely have to remain in Java's world. Both from an VM and from an API standpoint. Suppose I even have that binary editor module coded as a [Net]Bean and it works fine in that framework, but can I get to it from my favorite editor ? From my favorite debugger ? From a command line prompt ? No! I have to use Java and Java alone to "glue" this piece of functionality to the rest of my working environment.

It is sort of like having LEGO bricks which not only do not stick to each other if you put 'em together, but require a particular brand of glue to form any sort of complex structure. The glue called Java in my previous example, or the glue called C language, or what not...

Now, the question becomes is it even possible to have anything at all which would let my LEGO bricks just stick together ?

My answer is -- yes and it is called files!

Files are my true universal glue, the lowest common denominator of sorts, the one and only API present in absolutely *all* common programming languages and systems.

It takes a bit of time to realize just how far the lack of files as a universal glues pushed various developers. Do you know that when you do "getline a < /inet/tcp/lport/rhost/rport" in (g)awk the right thing happens ? Do you realize how much extra code was duplicated and how many bugs were reintroduced ? Same question about all these jolly Java APIs -- sure its fun to reinvent the wheel, but you should at least start from wood, not from carbon molecules...
 
 
 
 

README.1ST


My name is Roman Shaposhnik and I have a confession to make -- I used to be a latent blogger who had to come out of the closet because of the burnt out therapist.

Apart from that, I work for Sun microsystems doing Sun Studio compilers and tools and I also tinker with the Universe using Math, Software and Physics.

I have a nasty habit of keeping lots of files in ~rvs/notes and my hope is that this blog will replace a need for that collection of things I want to keep track of or otherwise salvage from sudden onsets of forgetfulness.

Finally one last thing I have to explain before moving on: when I first heard of blogging a couple of years ago we had a conversation with a friend of mine about how much blogging reminded us of the good old FidoNet days. In fact, it is quite amazing to realize how similar blogs and semi-restricted echo conferences (the best kind!) really are. And its not just the technical aspect of it, but the social one that gives me goose bumps. I guess there's a very basic human need here that has to be addressed and each age of computing offers its own take on how to do that. Of course, given that my latent condition goes as far back as IBM PC XT and 2400 BAUD days it was absolutely necessary for me to operate a BBS and a FidoNET node back in the '90.

Today the legacy of 2:5030/359: Yellow Submarine BBS lives on this blog!
 
 
 
 
 

June 2006 »
SunMonTueWedThuFriSat
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
29
 
       
Today

[RSS Newsfeed]

Theme by Rowell Sotto.
 
© Yellow Submarine