Runtime Revolution
 
Articles Other News

Beginning Programming for Dummies

Wallace Wang, interviewed by Heather Nagey

 

Can you tell us a little about yourself? I believe you've been writing technical books for some time now, how did you get into that?

"I wound up with three job offers that all wanted my combination science and writing ability: the CIA, the DIA (Defense Intelligence Agency), and General Dynamics"

For as long as I can remember, I've always bounced back and forth between writing and science. In college, I had a dual English and Engineering major, which actually made me an outcast in both camps. My fellow engineering classmates were always terrified of writing while my fellow liberal arts classmates were equally terrified of science and math. To me, both science and writing are nothing more than forms of communication. Science communicates using formulas and equations while writing uses words and language.

I never realized it at the time, but my combination of science and writing abilities opened up a much broader job market for me than for most of my engineering or English classmates. After graduating from Michigan State University, I wound up with three job offers that all wanted my combination science and writing ability: the CIA, the DIA (Defense Intelligence Agency), and General Dynamics, a defense contractor out in Southern California.

I was initially attracted towards working with both the CIA and the DIA, but the government had a sudden hiring freeze and they were unable to offer me a job until later in the year. So I wound up taking the technical writing job at General Dynamics, writing corrosion control manuals for removing rust from the cruise missile. Not exactly exciting stuff, but it did get me out to sunny Southern California where I've been ever since.

I've heard that you don't spend all your time writing about software - can you tell me something about your other activities?

"Now in most countries, the goal of the police is to catch the suspect without hurting any innocent by-standers. Not so in Zimbabwe"

I was working for General Dynamics in 1983, which was pretty much the start of the MS-DOS PC revolution. That's when I got involved in personal computers and computer programming. I had taken some programming classes during college, but they were woefully archaic, using punch cards and FORTRAN to program the computer. In high school, I had taken a programming class and learned BASIC on an old teletype machine connected to a mainframe through an ancient 300 baud modem that would often cut out in the middle of the connection.

So I had always loved programming and when PCs became popular, I quickly gravitated towards programming, studying for my master's degree in computer science at night. That's when I learned to program predominantly in Turbo Pascal but also a little in BASIC and C.

To me, programming languages represent the ultimate in communication so I love playing with different programming languages such as Prolog, LISP, C, Pascal, and assembly language. I enjoy studying how different programming languages force you to think about the same problem in different ways, such as writing a program in Prolog vs. C.

After receiving my master's degree in computer science, one of my classmates got a job as the chairman for the computer science department at the University of Zimbabwe (the former country of Rhodesia). He had some grant money to bring American-educated instructors out there so he offered to bring me out for a month and I accepted.

That's when I got a chance to spend a month living and working in Zimbabwe and exploring a completely foreign country where everyone referred to me as "the American from California" since their primary knowledge of America came from TV shows and movies, most of which were filmed or produced in California, so California held a special fascination for many people in Zimbabwe.

During that time, I lived in a modest hotel in Zimbabwe that had no heat, air conditioning, radio, or TV. Basically, I lived in a room with a bathroom and running water and that's it. So at night time, I would amuse myself by talking to myself, and I started making jokes. During my lectures at the University of Zimbabwe, I would make jokes to make the lectures more interesting, usually joking about neighboring countries such as Malawi where the laws at the time forbid men from having hair long enough to touch the top of their ears or women from wearing anything that showed their knees. If a man was caught in Malawi with hair touching his ears, he had a choice of going to prison or having a haircut.

Another favorite target of mine to joke about was Zaire, where the government of Zaire actually made money by printing counterfeit Zimbabwe money. The police in Zimbabwe were also favorite targets of mine to joke about too. They patrolled the streets with loaded AK-47 assault rifles and the week before I arrived, someone tried to rob a bank and the police chased after the suspect.

Now in most countries, the goal of the police is to catch the suspect without hurting any innocent by-standers. Not so in Zimbabwe. Over there, the police opened fire with their AK-47s, mowing down dozens of innocent by-standers, but triumphantly proclaiming they caught and killed the bank robbery suspect!

Living in Africa was like being Alice in Wonderland where people were happy while nothing around them seemed to make any sense. There were routine power outages in the middle of the day so most people walked up flights of stairs rather than risk getting trapped inside of elevators. Few people could afford cars so they had private taxis, which were essentially station wagons crammed full of businessmen in suits with about six people wedged in back with the tailgate open so the dust from the road would fly in and cover everyone in back. Public buses were always crowded, so it was common just to hang on to the sides as the bus lumbered down the street, weaving in and out of traffic with businessmen in suits clinging to the windows with their feet wedged inside rusted openings in the sheet metal sides of the bus. Books and magazines were so precious that street vendors often sold twenty year old Time and Newsweek magazines so people could learn more about the outside world. When you're surrounded by an environment like that, it's hard not to see the humor in life, especially when you return back to the United States where one out of ten Americans can't even find their own country on a map.

Interesting - its a big leap from software to comedy... How did that happen?

" I continued that direction for my comedy and created a politically-oriented type of comedy act"

After making jokes during my class lectures and having fun with it, I decided to try stand-up comedy when I returned to the States. I enjoyed making jokes during my college lectures in Zimbabwe so I decided to repeat that experience back in America. Since most of my jokes in Zimbabwe focused on poking fun of events and establishments in that region, I continued that direction for my comedy and created a politically-oriented type of comedy act such as the following:
"Pope Benedict enraged the Muslim world when he quoted an ancient philosopher who said that Islam has brought nothing but evil and inhuman things to the world. Pope Benedict later said it was not his intention to insult Muslims and if he could do it all over again, he would just have gotten drunk like actor Mel Gibson and insulted the Jews instead."

So about this book, Beginning Programming for Dummies. Its into its 4th edition now, isn't it. What inspired you to write the first one?

Beginning Programming for Dummies originally started out to teach people how to use the free QBasic interpreter that come with MS-DOS 6.22. Since every PC came from QBasic, it was an easy way to introduce people to programming with a tool they already had on their computer. The original goal of the book was to teach programming without getting bogged down too much in the specific syntax of a programming language.

How has the book evolved through editions?

"the 4th edition of the book is designed to appeal to Windows, Mac, and Linux users and also broaden the coverage to focus more on programming principles "

When Windows took over and QBasic disappeared, I switched the focus of the Beginning Programming for Dummies book to cover a QBasic-like clone called Liberty BASIC. Although Liberty BASIC was shareware and included free on the book's accompanying CD, readers could still use and practice writing BASIC programs on their own computer.

Unfortunately, Liberty BASIC only ran on Windows, and with the growing Macintosh and Linux market, I started looking for a way to broaden the book's appeal beyond just Windows users. So the 4th edition of the book is designed to appeal to Windows, Mac, and Linux users and also broaden the coverage to focus more on programming principles and less on a specific programming language like BASIC. That's why this fourth edition of the book includes and covers BASIC, C++, and Revolution.

BASIC coverage still includes Liberty BASIC, but I also included REALbasic to show readers how an object-oriented BASIC language works. I included C++ simply because C++ is the most popular programming language around, and I wanted readers to understand the pros and cons of BASIC vs. C++ and how two different programming languages can use different techniques to solve the same problem.

Finally, I didn't want readers to think that BASIC and C++ were the only ways to program a computer, so I also added Revolution to show a more radical approach to programming. That way, readers can see how programming languages can differ dramatically yet still retain similar characteristics, and it's these similarities that people need to learn and understand before worrying about the syntax of particular programming languages.

I also chose REALbasic and Revolution for their Windows/Mac/Linux cross-platform capabilities so users of any of those three operating systems can use and benefit from the book.

When and where did you come across Revolution, and what persuaded you to include it in the book?

"Revolution ... offered a lower price along with a better user interface. I bought an early copy of Revolution and I've been hooked ever since."

My first exposure to Revolution occurred when I ran across an alternative health reference program called IBIS, which was written by a group of alternative health care practitioners. The IBIS program itself is fascinating, and to see how non-programmers could create something as sophisticated as IBIS intrigued me. That's when I found out that IBIS had been created using MetaCard (the precursor to Revolution).

I had played with HyperCard in the past and loved it, but after HyperCard died away, I never found a satisfactory alternative. MetaCard came the closest, and especially intrigued me with its cross-platform capabilities, but its high cost kept me away until I learned that Revolution was based on MetaCard and offered a lower price along with a better user interface. I bought an early copy of Revolution and I've been hooked ever since.

So my initial interest in Revolution came about from seeing how non-programmers could create a sophisticated program (IBIS) quickly and easily.

How much of the book is devoted to programming in Revolution?

"By the end of the book, readers should understand how programming in general works"

The 4th edition of Beginning Programming for Dummies focuses on teaching programming fundamentals and then provides short examples in Liberty BASIC, REALbasic, C++, and Revolution. So although this book isn't really a Revolution tutorial, it does help provide a foundation for readers to learn and use Revolution (or BASIC or C++) without letting the syntax of each language get in the way of their understanding of common programming principles.

By the end of the book, readers should understand how programming in general works, and then they can better understand how to use any programming language whether it's BASIC, C++, Revolution, or anything including LISP, Modula-2, or even COBOL.

How do you feel Revolution stacks up against other programming languages?

"after learning Revolution, I find languages like C++ or REALbasic way too frustrating since it takes a handful of commands just to do something that Revolution can accomplish in a single line"

As a programming language hobbyist who enjoys studying different languages to see how they solve certain problems easier (and also make other types of problems harder), I find Revolution both fascinating and frustrating.

Having been trained in more traditional languages like BASIC, C, and Pascal, the Revolution language is radical enough to create a seemingly steep learning curve. However, I'm always pleasantly surprised at how simple Revolution can be to use since a single Revolution statement can replace a dozen or more traditional programming statements.

I appreciate REALbasic since it's similar to Visual Basic (I've written several books about Visual Basic). So it's much easier for me to grab REALbasic and jump right in to write a program.

However, after learning Revolution, I find languages like C++ or REALbasic way too frustrating since it takes a handful of commands just to do something that Revolution can accomplish in a single line. With Revolution, I can get more work done with less commands. With C++ or BASIC, I wind up writing three to five times as many commands to get half as much work done as I could in Revolution.

What do you find unique about Revolution?

"Revolution's cross-platform capability has always been near-perfect from the start. Write a Windows program, compile it for Mac or Linux in Revolution, and it just seems to work with minimal, if any, tweaks to the code"

I think the two most unique features of Revolution are its much simpler programming language and its cross-platform capability. I was initially disappointed by REALbasic's cross-platform capability because earlier versions weren't quite as compatible as advertised. For instance, in REALbasic 4.5, the manual offered a tutorial to build a simple word processor, but the code only worked when creating Mac programs. If you compiled that same source code as a Windows program, it wouldn't work at all. Of course, REALbasic has made tremendous progress in getting their cross-platform capabilities more equal, but I found Revolution's cross-platform capability has always been near-perfect from the start. Write a Windows program, compile it for Mac or Linux in Revolution, and it just seems to work with minimal, if any, tweaks to the code. As more people start using Macs, Linux, and Windows, cross-platform tools like Revolution are going to be extremely important. All those people building and selling programs that only run on Windows are going to start missing out on the growing Mac (and to a limited extent Linux) markets, all because their compiler won't let them create cross-platform applications.

Beyond Revolution's cross-platform capability, the second most important feature is the Revolution language. I'm always amazed at how a simple Revolution command can do the work of multiple, equivalent commands in BASIC or C++. As a writer, I'm particularly intrigued by Revolution's text chunking capabilities and hypertext linking. Finding the third word of the second line of a paragraph is easy to do in Revolution. Trying do do that in C++ or BASIC would require writing an entire subprogram and debugging it, and it still wouldn't offer as many features as Revolution's much simpler text chunking commands.

Do you think you might in the future write the book the Revolution community is waiting for, Revolution for Dummies?

"building a ... program in C++ is slow, complicated, and tedious while building that same program in ... Revolution would take half the time with fewer bugs, and probably offer twice as many features"

I've been pushing to write a Revolution book for years, but publishers are reluctant to back any programming tool that doesn't come from Microsoft. Books about REALbasic have had disappointing sales and books about Borland's Delphi are fast becoming extinct.

I think the problem is that most professional programmers are too enamored of languages like C++ and Java and don't want to consider more productive, but lesser known alternatives such as REALbasic, Delphi, or Revolution. Companies don't want applications written in REALbasic, Delphi, or Revolution because they prefer the "safety" and familiarity of C++. Of course, building a hospital record-keeping program in C++ is slow, complicated, and tedious while building that same program in REALbasic, Delphi, or Revolution would take half the time with fewer bugs, and probably offer twice as many features, but too many people don't want to stray from the comfort of what they already know, which is what they've learned in school -- C++. As a result, the book market for such alternative programming tools is close to nothing.

That's part of the reason I included REALbasic and Revolution in the latest Beginning Programming for Dummies book. I wanted to expose more people to these "alternative" languages.

I think the best way to market Revolution is to target non-programmers, since these people will find Revolution's language intuitive and easy to learn, and these are the type of people who don't want to study years just to learn how to write a simple program in C++ or BASIC. The beginner programming market, consisting of people who haven't yet made an emotional commitment to a particular language like BASIC or C++, is the target market for the Beginning Programming for Dummies book.

Besides the small potential market for a Revolution for Dummies book, the title alone might convey images of Marxist revolutions and wind up getting the book banned from most parts of the world.

Hmm, perhaps you are right, we might need to call it something else...

Thank you so much for your time, and I know our readers will be delighted to hear you have agreed to write some articles for future editions of our newsletter. You can buy the book Beginning Programming for Dummies here.

Besides Amazon.com, they can also find information about the book at www.dummies.com

 
©2005 Runtime Revolution Ltd, 15-19 York Place, Edinburgh, Scotland, UK, EH1 3EB.
Questions? Email info@runrev.com for answers.