O'Reilly Web site editor Allen Noren caught up with Steven the day after he returned from Dublin, Ireland, and asked Steven what gets him excited about PL/SQL.
So, sure, PL/SQL is hot stuff. But mainly my brain likes to latch onto abstract problems and figure out ways to solve them. In fact, I like to tell my students that they should not think of themselves as programmers, but as problem solvers. It's not hard to learn the syntax and features of a computer language. They are much, much easier to learn than human languages -- because you use them to converse with a linguistically dumb entity: the computer. I bet lots of people think that computers are really smart. But they're not. They're mostly just fast. If they were smart, I could say to the PL/SQL compiler things like this:
BEGIN
IF my_function
THEN
NULL;
ENDIF;
END;
and the compiler would say to itself "Oh, he meant to put a space between the END and IF instead of ENDIF. I'll take care of that for my good old buddy Steven." But it doesn't, so the PL/SQL compiler is not particularly smart, and it's not my friend either.
Where was I (you can see how I have ended up writing over 2000 pages of published material on PL/SQL!)? Right, we are not programmers, we are problem solvers. You can learn all the syntax you want, but if you can't proceed step by step, logically, from the problem to a solution, well, I don't want to have to see the code you end up writing in your application!
So the things I really get excited about are: solving tough problems in the abstract, and also helping other developers enhance their skills, to learn how to take full advantage of the PL/SQL language.
PL/SQL stands for Procedural Language extensions to SQL, and that describes it very accurately: it is a database programming language. But when objects were added to Oracle (and PL/SQL was enhanced to support manipulation of those objects), this question naturally popped up: should PL/SQL become a true object-oriented language? Or should it continue to focus on providing a tight, efficient programming path to the Oracle database? Or should it, can it, do both?
And, in a way, Java has decided the issue for Oracle. Now that Java is moving into the database itself (with Oracle8i), Oracle doesn't have to feel pressured to transform PL/SQL into an O-O language. If you want to do object-oriented programming, use Java. If you want to write high-performance programs to work with the Oracle database, and you want to write them in the most productive, straightforward way possible, use PL/SQL.
Was it a "natural" process? Well, I like to think that everything we humans do is natural, since we are a part of Nature, but that doesn't mean that what we do is not perverted in any number of ways (socially, ethically, environmentally, etc.). I believe that Larry Ellison decided early on that Java was strategic (both for technical reasons and Microsoft-bashing reasons) and pushed hard to reorient the company.
I could write for, well, 900 pages about all the great things you can do with built-in packages: Read/write operating system files, execute dynamically-constructed SQL and PL/SQL programs, parallelize program execution to reduce greatly elapsed time for applications, manipulate LOBs and RAW values, submit stored procedures for scheduled execution. I could go on and on.
The bottom line for me is that developers who build PL/SQL applications and do not use the built-in packages:
2. Are limiting their skill-set and ability to excel (and thereby limiting their revenue generation capabilities) in the world of PL/SQL.
Many developers undoubtedly will get that first book, Oracle PL/SQL Programming, and think they have everything they need, but it just ain't so! I couldn't fit into a single book everything you need to know about PL/SQL -- and still include all the examples that people seem to appreciate deeply.
So I would strongly recommend that every single PL/SQL developer in the whole wide world buy a copy of Oracle Built-in Packages. And -- I am being perfectly honest here, really I am -- I would suggest that they buy that book even if it were written by someone else and published by another publisher. The information in it is that good, that crucial.
Anyway, yes, it is true, that I am thinking about doing a book of examples, a kind of workbook, but I haven't made any commitments yet. I suppose that if after this interview is published, I am flooded with requests from my dear readers to provide such a book, I will be more likely to write it.
To be honest, I have also been very, very surprised by the response to my first book, Oracle PL/SQL Programming. I can't tell you the number of times I have received email, or students in my seminars have come up to me, with a story that goes something like this (actual quote):
"This is by far the best programming text I have ever read. The style you use is easy to follow, extremely smooth-flowing, and contains enough humor to keep me chuckling through every chapter.
After endless examples of alphabet soup, student_id, order_detail, etc., it does my little brain good to see 'Sam I Am' and winterizing task programming.
With every bit I learn from your book, I see how powerful PL/SQL is and how much fun it is to program in. Who'da thunk it? ...
I graduate in March and intend on landing a job in data base management as soon as possible. After 25 years of restaurant management, I kick myself for not pursuing this career earlier."
I do get tickled pink whenever anyone tells me that Oracle PL/SQL Programming is the best book on programming they have ever read. See, my background would not seem to have lent itself to the writing of such a text. I have very little formal education in programming. I took 3 different "101" computing classes in college: Algol, Lisp, and Pascal. I fell into a programming job at the University of Rochester and just sort of drifted around from one Fortran job to another, until I answered a headhunter's ad for a database-related position. Turned out to be a "pre-sales" technical consulting job with Oracle Corporation. I didn't know a thing about relational databases at the time, so I hunted down an article on Codd's 12 Rules for Relational Databases, memorized them, and went to my interview.
Of course, my future manager didn't ask about any of that stuff. In the true Oracle style, he wanted to find out if I had the raw smarts to do the job, and also whether I could handle making presentations to small and large groups. And at this point, I must admit, the whole experience got a big strange and wonderful all at once, because I found myself telling John of Oracle Corporation about my political organizing background and how I would give speeches to groups of several hundred people, at conferences and demonstrations.
Who would have thought that five years of actively protesting Ronald Reagan's war against the people of Central America (for which I was investigated illegally by the FBI) would help land me a job at Oracle Corporation? You couldn't write fiction as strange as that!
Well! So I got my job and learned PL/SQL and SQL*Forms and all that other good stuff, then left Oracle after five years to join the ranks of consultants. But to make a long story at least a little bit shorter, I thought I knew PL/SQL very well and in 1994 publishers were starting to very aggressively seek out authors for Oracle books. I thank my lucky stars that I ended up with O'Reilly (a truly wonderful, eclectic publisher with lots of personality) and a contract to write a book on PL/SQL.
At first I thought that I would have trouble coming up with 400 pages on the topic. After all, PL/SQL is such a straightforward language! Ha, ha, ha! 1,200 pages later we had to cut 400 pages out of the book to make it publishable in a single volume -- and I had discovered just how much of PL/SQL I had not known at the time. For example, prior to writing the book, I didn't know about packages, named notation, PRAGMAs and so much more.
I often tell students at my classes that if they really want to learn a technology, just write a book on it.
So I didn't come to the project (writing that first PL/SQL book) with lots of formal training, which resulted in a trade-off: I didn't have a lot of the buzzwords and theories down pat, but I also wasn't restricted by those theories. I could think about things in my own way, and offer my own, often very "creative" solutions. I also made no effort to exclude my somewhat bizarre sense of humor from my writing; I don't think I could have, if I wanted to. And my editor, Debby Russell, was always very supportive of my less than thoroughly technical content (though she did make a number of suggestions for cuts, for which I am thankful). The result is, according to many developers, a very accessible, readable book -- and as far as I can tell, we technical people are just desperate for books like that.
In the next six months, I will be taking a much closer look at all the new technology. I will be integrating what I learn into various products from RevealNet (such as PL/Vision and the PL/SQL Knowledge Base). I will also be coming up with a plan of action for modifying existing books or perhaps providing additional texts (much shorter, though, I promise!) to cover the new features.
It's way to early to tell if this will even be noticed by Mr. Gates, much less irritate the poor guy.
Being that I am not such a self-centered person (or I at least hide those tendencies pretty well), I will save my wish for something much more important. Seriously, I am feeling very positive about the addition of Java as a database programming language in Oracle for several reasons:
The issue facing Oracle developers will be how to take advantage of both PL/SQL and Java; they'll both be there and they'll both play a role in the life of any Oracle application developer in the coming years. With a solid technology like PL/SQL (not to mention thousands of PL/SQL developers and millions of lines of in-production PL/SQL code), the approach that makes the most sense is to learn how to integrate PL/SQL and Java -- within projects, applications, and an individual's skill-set. Oracle will make interoperability a possibility. It is up to us, the developers, to make it a reality.
So my approach in the coming months and years will be to help developers figure out how to use Java effectively in the Oracle environment without sacrificing the investments that they've made in PL/SQL. I intend to pay close attention to the issues PL/SQL developers confront as they move into and within the Java environment. And, unless I suddenly lose the power of expression (and my compulsion to communicate), you can bet that what I learn will show up in books, articles, and software over the next couple of years.
I no longer do hourly consulting. I present three day seminars on PL/SQL technology (many of them sponsored by Oracle Corporation) all around the country - and even the world. I am amazed at my good fortune! All because of PL/SQL and my writing on it, I have visited Australia, Amsterdam, Madrid, Caracas, Mexico City, Vienna, London, Belfast, and Oslo.
When I am not traveling, I work out of my house, spend time with my family, build software for RevealNet, write articles and text for books - and sometimes I even get away from my computers to do non-PL/SQL things, like play racquetball and work with the Crossroads Fund, a foundation that funds grassroots organizing working for fundamental change in the Chicago area.
Much of my professional time is now devoted to crafting software that PL/SQL developers and development managers can use to improve the quality and performance of their Oracle-based software. I am especially proud of PL/Vision, a code library of over 50 packages, and PL/Generator, a coded generator which I believe personally has the potential of being a "killer app" in the Oracle arena. Of course I am biased, but I think that it is absolutely nuts for any development organization to not take a serious look at the RevealNet product line. Why write code when someone else already wrote it for you? Why write code when you can have a product generate it for you instead?
Another example of Oracle's evolution is its recent embrace (well, that might be a bit too strong a word) of the Linux operating system. After lots of "grassroots" pressure, Oracle announced that it would port its database to Linux. Rumor has it that the port was already largely completed, done by a group even before official blessing was bestowed.
Support for Linux is significant because (a) Oracle generally hasn't previously had a presence in or much vocal support for the Open Source movement and (b) it shows that Oracle is much more responsive to the user community than in the past. So, on the one hand, don't be looking forward to an Open Source version of the Oracle8i server technology. But on the other hand, let's be glad that Oracle remains committed to putting their database on just about any and every operating system known to the human species.
As I tell my classes, I don't know everything there is to know about PL/SQL -- no one does. Every time I give a presentation, I learn something new -- from my students!
I believe that people respond to this openness, and feel less threatened or intimidated. I have also worked hard to create (with the support, encouragement and effort of my friends at RevealNet) the PL/SQL Pipeline, an on-line and totally non-commercial community for PL/SQL developers.
The Pipeline is probably the most active site on the Internet for PL/SQL developers (we also have a DBA Pipeline that boasts similar high traffic). What can you do at the Pipeline? You can:
Still, I am a referee for Eli's AYSO (American Youth Soccer Organization) soccer league, and truly love bossing those little kids around. I am on the board of directors of the Crossroads Fund, a progressive foundation. I visit the Maryville-Columbus Reception Center every Sunday morning (if they need me) to hold and feed and play with babies who have been taken from their parents for any number of reasons. I really like babies. I want to believe (though I also know this belief is incredibly naove) that if men would only spend more time with (and be more responsible for the raising of) children, especially infants, they would be less likely to take a life -- to murder on either an individual or institutional level.
I play racquetball whenever possible and try hard to get exercise on a regular basis so I don't get fat as I get older and so I can live as long as possible. I have a wonderful life (in large part because I have a wonderful wife, Veva Silva) and I want to accomplish "great" things in the time I have left.
Copyright © 2007 O'Reilly Media, Inc.