YOUR FEEDBACK
Ross Cooney wrote: Buying servers is capital intensive...and impossible for startups. Buying capaci...


2008 East
DIAMOND SPONSOR:
Data Direct
Frontiers in Data Access: The Coming Wave in Data Services
PLATINUM SPONSORS:
Red Hat
The Opening of Virtualization
Intel
Virtualization – Path to Predictive Enterprise
Green Hills
IT Security in a Hostile World
JBoss / freedom oss
Practical SOA Approach
GOLD SPONSORS:
Software AG
The Art & Science of SOA: How Governance Enables Adoption
PlateSpin
Effective Planning for Virtual Infrastructure Growth
Fujitsu
Automated Business Process Discovery & Virtualization Service
Ceedo
Workspace Virtualization
Click For 2007 West
Event Webcasts

2008 East
PLATINUM SPONSORS:
Appcelerator
Think Fast: Accelerate AJAX Development with Appcelerator
GOLD SPONSORS:
DreamFace Interactive
The Ultimate Framework for Creating Personalized Web 2.0 Mashups
ICEsoft
AJAX and Social Computing for the Enterprise
Kaazing
Enterprise Comet: Real–Time, Real–Time, or Real–Time Web 2.0?
Nexaweb
Now Playing: Desktop Apps in the Browser!
Sun
jMaki as an AJAX Mashup Framework
POWER PANELS:
The Business Value
of RIAs
What Lies Beyond AJAX?
KEYNOTES:
Douglas Crockford
Can We Fix the Web?
Anthony Franco
2008: The Year of the RIA
Click For 2007 Event Webcasts
SYS-CON.TV
TOP THREE LINKS YOU MUST CLICK ON


Confessions of a Procedural Programmer
Confessions of a Procedural Programmer

Okay, I'll risk my career and admit it: I not only know how to draw a flowchart, I still find myself using them from time to time.

I have one of those little green plastic flowcharting templates to help draw the symbols and arrowheads, but I don't use it much anymore. (I don't like to take it out of its climate-controlled vault; the chill might warp my precious slipstick.)

I'll bet a few of you are smiling wistfully right now, secretly yearning for The Days of Boxes and Green Plastic: the expansive surfaces of glistening unblemished flowcharting paper, each patterned page awaiting its chance to represent pure logical art. What mere "problem" could possibly withstand our iterative onslaught of ink and thought? Get thee behind me, General Ledger!

Yes, they were simpler days, or perhaps it was just me who was simpler. Ah, but those first tastes of process abstraction (imposing order upon thought, what a concept!) were just too alluring.

My first exposure to flowcharts wasn't until college. I know for a fact that I was much simpler then, but fortunately so were the programming problems I faced. There always seemed to be a way to get that virtual boxcar attached to the virtual train without having to lift it off the virtual tracks. No list went unlinked, no record went unwritten, and no parameter went unpassed, by value or by reference. Simpler days, indeed...

When I look back at my proudest individual programming achievements, I can't help but start with that first college-level Pascal programming course. The instructor was meticulous and unwavering: no global variables without solid justification (which meant no global variables), all local variables descriptively named and declared alphabetically, and every procedure well begun with a standard commentary prologue.

That's how they lure you in. "Come on! Here! Impose order on an unruly universe... You can do it!" Yes, that was my first foray into flowcharting, and something in me changed.

I remember rushing to my then-future wife one bright summer day, waving my multipage fanfold printout, and proudly exclaiming, "Look! This Pascal assignment took over a HUNDRED LINES of CODE! Isn't that AMAZING!?" She smiled, and I fell in love (which is the only hard proof in existence that I do, in fact, have moments of brilliance).

Next it was a thousand lines of this and a thousand lines of that ­ logistic equations, with variable zooming, grid lines, and decimal input fields; fractal monster functions, continuous yet nowhere differentiable; images of reality that no one in the history of man could ever have seen in the days before transistors on silicon. I came to know the Turbo Pascal graphics library by heart. Programming these ugly beige boxes to display such unfathomable beauty was reaching deep into the viscera of the silicon beastie and twisting. I liked it. I was hooked on programming.

Then I got a job, and it was my guts' turn to be twisted... "Oh, Mandelbrot sets are fascinating and beautiful and all, but we really need that big honkin' component test plan you promised us. Okay?" The joy of individual, top-to-bottom programming ­ just for the fun of it ­ was still there, but there was also a different, even better, kind of joy: the joy of contributing to something much, much larger.

My first big chance to prove myself part of the team was during the development of a new optimizing compiler back end for our box. The theory of compiler front and back ends was new to me then, though its simple elegance was instantly compelling.

The idea is simple: separate the compilation process into two phases ­ a "front end" and a "back end." The front end converts source code to an "intermediate representation" (IR) ­ a form that completely and unambiguously represents the form and function of the compilation unit, but which does not presuppose any particular hardware configuration. Then, a compiler back end gets involved, and converts the IR into optimized, hardware-specific instruction streams and data structures.

The sweet part is this: any software that can be compiled into a given IR will run on any hardware that has a matching back end. Now, if this sounds familiar, it should. It's arguably the very heart of the write-once run-anywhere promise of Java.

At the front end, we have javac, Jikes, or anything that generates proper bytecode. (There is at least one RPG-to-bytecode compiler, for instance.) The IR, of course, is the classfile format. The back ends are the various JITs, AOTs, and true interpreters that make our JVMs work so well.

Imposing order upon thought... What a concept! Maybe those boxes and arrows and diamantine decisions led somewhere after all.

About Blair Wyman
Blair Wyman is a software engineer working for IBM in Rochester, Minnesota, home of the IBM iSeries.

YOUR FEEDBACK
Russell Kneebone wrote: How about using a compiler to shift boxes? I notice that the tables have turned with respect to the availability of IBM's VisualAge compilers on Intel and PowerPC. It used to be that to compile a C++ program for OS/400 you used a "co-operative" compiler that presumably created the intermediate representation via the Intel compiler then ran a PowerPC backend compiler to target OS/400. Nowadays the version 6.0 of VACPP is only available for PowerPC (AIX and Linux), with the Intel versions ceasing at 4.0 (Windows and OS/2). Surely IBM has it within their power to allow the Linux verion of the compiler to run on an iSeries LPAR, use the integrated X-Series server card to communicate to an Intel backend and co-operatively create Windows and OS/2 executables. Just think of the box shifting power! A VisualAge diehard would have to replace the $600 program that used to run on any bran...
Mark Pardue wrote: Many objects that are programmed in Java (or any other OOP) will have complex methods beyond set's and get's. Anytime these methods get beyond a few lines of code, I (and other programmers I've worked with) do some type of flow charting to establish the logic to be used, and at times to explain what's going on to our peers, managers, and/or customers. These flow charts tend to complement the state diagrams and sequence diagrams of UML and serves a critical need in many cases. The real difference in top-down programming between OOP and the old procedural languages seems to be that with OOP you start with objects (class diagrams et. al.) and their properties/interactions. With procedural languages, you start with the flow chart of what you want to accomplish with the program.
LATEST JAVA STORIES & POSTS
Transmeta, the uppity microprocessor wannabe that pushed Intel to create low-power chips before Intel crushed it, is getting bought by Novafora Inc for $255.6 million in cash, roughly what Transmeta has in the bank thanks largely to an IP licensing deal with Intel. Novafora is a ...
JavaScript is pretty much everywhere you look these days, reaching far beyond your desktop browser. Adobe AIR lets you use JavaScript to create desktop installed HTML and AJAX apps. Apple uses it in its gadgets and in the iPhone's browser. And Nokia recently announced support for...
The Java Community Process (JCP) Program Management Office has announced the final results of the 2008 JCP Executive Committees (EC) elections. After two ballot rounds – for ratified and elected seats – the winners are Ericsson, SpringSource, SAP, Intel, and Werner Keil for t...
If you think your network is safe from the new strains of content security threats, think again. Today’s cybercriminals use sophisticated attacks that multiply quickly and thwart traditional defenses, rendering conventional security ineffective and unmanageable. To protect your...
Tidal Software has announced Intersperse 8.0, a product that monitors J2EE and .NET applications and their transaction component performance to produce meaningful metrics for managing applications and high-level business processes. The product leverages a combination of lightwei...
ILOG has announced ILOG JViews 8.5, the latest version of ILOG’s Java-based visualization suite, with new features that enhance the creation of Rich Internet Applications as well as desktop applications. ILOG JViews 8.5 adds support for the Eclipse platform including the new IL...
SUBSCRIBE TO THE WORLD'S MOST POWERFUL NEWSLETTERS
SUBSCRIBE TO OUR RSS FEEDS & GET YOUR SYS-CON NEWS LIVE!
Click to Add our RSS Feeds to the Service of Your Choice:
Google Reader or Homepage Add to My Yahoo! Subscribe with Bloglines Subscribe in NewsGator Online
myFeedster Add to My AOL Subscribe in Rojo Add 'Hugg' to Newsburst from CNET News.com Kinja Digest View Additional SYS-CON Feeds
Publish Your Article! Please send it to editorial(at)sys-con.com!

Advertise on this site! Contact advertising(at)sys-con.com! 201 802-3021


SYS-CON FEATURED WHITEPAPERS

SPONSORED BY INFRAGISTICS
In every field of design one of the first things students do is learn from the work of others. They ...
There are many forces that influence technological evolution. After a decade of building enterprise ...
2008 is going to be an important year for Rich Internet Applications. Most organizations are deliver...
The OpenAjax Alliance is developing an Ajax industry wishlist for future browsers, using a dedicated...
Infragistics announced the availability of two Community Technology Preview (CTP) User Interface (UI...
The YUI development team has released version 2.5.2; you can download the new release from SourceFor...
ADS BY GOOGLE