Skip to main content

Visualizing Complexity

Posted by daniel on November 12, 2003 at 6:39 AM PST

Is the best documentation for code the code itself? In Gosling's recent work the code is seen as one of the ways to view a program. Bill Venners paraphrases Gosling as saying "if the notion of truth in a program is the abstract syntax tree, not text, you can display the program in a lot of interesting ways."

The latest installment of Bill's interview with James Gosling is Visualizing Complexity, the featured link in our Also in Java Today section. Bill suggests that "you could have many different code views. If someone doesn't like curly braces, for example, they wouldn't have to look at curly braces. I could also imagine that programs could be viewed at more abstract levels that would help people see problems with their design."

Gosling is looking to present programs in ways that make sense to people coming from different backgrounds. He explains that

if you've got a piece of code full of gnarly math, it's probably a lot more comprehensible to the people who understand gnarly math if you actually display it in something that looks like conventional mathematics. [...] But in a banking application, specialized visualizations for state diagrams, database modeling, and database access might help. If you crack open database textbooks, you'll see diagrams of what databases look like. Maybe your program ought to look like that. Maybe your program would be a lot more comprehensible if it looked like that.

Gosling describes the challenges of handling comments in code and also describes the use of the J2SE 1.5 metadata spec. In addition to attaching persistent information to code, Gosling suggests that you may want to include a piece of metadata that indicates whether this information can be omitted in some views.

Venners asks Gosling how you "could visualize and understand the complexity of distributed systems?" Gosling answers that maybe it is ok that this problem is so hopeless to solve and refers to the design of the web.

In some sense, the brilliant thing that Tim Berners-Lee did was simply to say, "I don't care." For 20 years people had been failing to solve these problems in any large-scale way. Berners-Lee decided to just do the simple obvious thing that solves the problem he needed, namely, getting ahold of a resource. [...] On the one hand, the URL design has made the Web somewhat fragile. Broken links are all over the place. On the other hand, if they had tried to really solve that problem, the Web never would have happened, because the problem is just too hard.

Our other linked story is the Java tech tip Using the TimeZone class. Both you and "the code you write might need to communicate and coordinate across time zones. Because of this, your code might need to account for time zone differences in various locations. For example, it might need to determine whether a remote location does or does not observe Daylight Saving Time. This tip shows you how to use the TimeZone class to retrieve information about the local time in other locations."


In the java.net Weblogs , the discussion returns to web based clients vs. fat clients. Philip Brittan returns with his post Microsoft retrenches around fat clients . He explains that Microsoft is "phasing out development of a stand-alone Web browser. Longhorn will have HTML viewing/browsing capability built right into the OS, and there will no longer be an Internet Explorer."

Yikes. Chris Adamson and I were recently at a presentation of the benefits of fat clients presented by Dan Wood, creator of Watson. Dan made compelling arguments for using a more rich user experience. On the way out of the room Chris asked me whether this might mean the death of non-Microsoft platforms. Would a company such as Amazon develop platform specific clients for Linux and the Mac if they covered 95% of the market with their Windows version?

Sure enough, Philip's article points to a news item about Google's Windows only client. The article includes the following quote: "The Google Deskbar is a search utility for the PC so that people can search Google in a faster and new way," said John Piscitello, product manager for Google Deskbar and the Google Toolbar. "It works from any application at any time on Windows."

In many ways, as Scott Ellsworth points out, we already have web based code that is just written for one platform. I feel the pain that Scott describes in Web and rich interfaces:it should be easier than this. I wrote the initial editorial plan for java.net in html using a nice CSS style sheet that I adapted from one of Eric Meyer's designs. It worked beautifully in every browser on every platform except IE/Windows. It rendered perfectly on IE on a Mac even. The solution that some designers take is to specify that single popular browser on that single popular platform. Moving to fat clients just makes this decision easier for some.

I encourage you to follow the link on Satya Komatineni's entry A knowledge folder for portlets based on JetSpeed. The topic is interesting and worth a look - but what really struck me was how nice his idea of a knowledge folder is. He has gathered resources in a single location making it easy to find what he is looking for. Many of us use wikis or other technologies (hypercard stacks), and this was another example of a simple collection of links that can be shared. Thanks for sharing Satya.


In Projects and Communities , the java-net community is showing off its new community directory. Check the links at the top of the page to view the projects on the java.net site alphabetically, by topic, or by community. You can also look at which projects are gaining steam in the incubator or look at downloadable snippets or running code in the Java jar. Looking to make your game a bit more realistic? Check out the community's forum on Game Physics . Having your objects bounce off of each other or splash in liquid the right way or reflect light correctly can make all the difference to your users.


In today's java.net News Headlines :

Registered users can submit news items for the href="http://today.java.net/today/news/">java.net News Page using our
news submission form.
All submissions go through an editorial review by news director Steve
Mallet before being posted to the site. You can also subscribe to the href="http://today.java.net/pub/q/news_rss?x-ver=1.0">java.net News RSS
feed.


Current and upcoming Java Events:

Registered users can submit event listings for the href="http://www.java.net/events">java.net Events Page using our href="http://today.java.net/cs/user/create/e"> events submission form.
All submissions go through an editorial review before being posted to the
site.


This blog is delivered weekdays as the href="http://today.java.net/pub/q/java_today_rss?x-ver=1.0">Java Today RSS
feed. Once this page is no longer featured as the front page of href="http://today.java.net"> Java Today it will be archived at href="http://today.java.net/today/archive/index_11122003.html">
http://today.java.net/today/archive/index_11122003.html. You can
access other past issues in the href="http://today.java.net/today/archive/">java.net Archive.