���������� ��������� ��������� ����� ��������� ��������� �����߱�� �����߱�� �����߱�� ���� �����߱�� �����߱�� ��� ��� ��� ��� ��� �� ��� ��� �� ��� ��� ��������� ��������� ��������� ��� ��� ��������� �����߱�� �����߱�� ���߱�� ��� ��� �����߱�� ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ��� ���������� ����� ����� ��������� ����� ��������� ����� ����� ��������� ���� ���� �������� ���� �������� ���� ���� ������� ������� �����ܱ�� �߱��� ������� ��۱�۱�� ���� ����� ��۱�۱�� ���� ����� ��۱�۱�� ������� ������� ��۱����� ������ ������ �� ����� ***** O R ***** ���������������������������������������������������Ŀ � R E A L M E N P R O G R A M I N " C " � ����������������������������������������������������� by John Richard De Palma ���������������������������������������������������������������� Red haired Sandra is the manager of the local Egghead Software store. Gazing at her collection of software I said, "Hi Sandra, Uh... can you show me what books and software you have on learning to program in BASIC?" "No, no...NOOOO... John, you want this!" Sandra said, as she thrust an orange 10 pound box of manuals and disks into my arms. She gave me a beaming smile. She went on, "I studied Pascal and "C" in college for TWO years, no one, and I mean no one studies BASIC anymore, it's a dead programming language." She laughed, "Just as dead as learning Latin." "Well, Ah, hmmm...," I shifted my feet for better support and put down Borland's version of Turbo Pascal with a small grunt, "I studied Latin for two years, and it's not all that dead,". "You see, Latin teaches you to know intuitively many English prefixes, suffixes and many of the Romance language verbs and nouns...." my voice trailed off, even to me that sounded like an apology for spending two years learning about BIG Julie (aka Julius Caesar) and wars fought with catapults and giant slingshots. "Oh, don't be SILLY," Sandra said, "Here, if you don't like that, buy this, its C ++ with OOP." "I'm not even going to ask what "OOP" is, I said, just sell me something in BASIC," I sighed. "What KIND of basic programming do you want?" Sandra asked briskly, swiveling around to check on her employees and motioning to Brian to stop playing with the joystick and get back to work. "Well, hell, I DON'T KNOW, I just want to learn how to make my own programs like Paul Somerson does. If BASIC is good enough for him, it's good enough for me," my voice rising a half-octave. I started looking around for the IBM utilities section in the hopes of finding some box with basic BASIC information on it. There was no question that I knew NOTHING about programming. I was awkward and out of my depth. I knew nothing about programming except that it had to be better than using batch files to do things with MS-DOS. I was going to tell Sandra about batch files. Tell her about all the batch file programs that I had looked at that promised much and delivered little. I wanted to tell her about batch techniques that did not allow input into them except as parameters on the command line or by using the dopey "FOR" command or the klutzy "IF ERRORLEVEL" command. I wanted to tell her I wanted to make colorful screens with selections that could be input by cursor control. I wanted to be able to change directories, do file sorts... I wanted to understand how the computer worked and then tell it what to do. Hell and again hell, I wanted to control the computer software. Who's Paul Somerson?" Sandra queried. "Some computer propeller head in Santa Monica?" "Gad, Sandy, give me a break! Paul Somerson is the editor of my favorite PC bible, "DOS Power Tools," he programs in BASIC. Look...look, you have his book on your bookshelf right here. Wait... waaait, I'll find the section and read it to you. Come back here, Oh let Brian wait on that guy, this will only take a minute." I picked up the book, found the page and read from my hero Paul[1], "One of the nicest things about BASIC is that if you suddenly find yourself with a problem BASIC can tackle, you can load it, stumble your way through a program and emerge with a solution a few minutes later. So maybe your program wasn't the most elegant display of programming virtuosity; who cares as long as it worked?" Sandra went on, "Well shoot yourself...I mean suit yourself, heh, heh, a little joke there. BASIC is dumb and slow. Learn "C" or Pascal, I did when I went to UCLA. No one teaches that dumb stuff." Sandra was very convincing and convinced. Backed into a corner and now defending both Latin, a dead language and BASIC a dead programming language I asked, "Well, if that's true, let me ask you a couple of questions. Do you use a computer...? You do. Do you use a computer to do applications, spreadsheets and mathematics...? You do. Do you use ANY of the Pascal and "C" you learned to help you to doing things with these programs. You don't..? Why?" Sandra went on to tell me how hard it was to keep up these great skills she learned in college and that she really didn't have the time to program, or the interest. She freely admitted that though she studied programming for two years, she never used it outside of class. She glanced at the clock, at the three people questioning Brian all at the same time and gave me a book called "Learn BASIC Now." She said as she walked away, "BASIC, is too dumb, it's a wimpy language. You're wasting your time, you'll be sorry. It's really not even a HIGH language." Apparently I bought a peasant computer language of limited capacity for limited minds. If I wanted to be part of the intelligentsia, I should program in "C". At least in "C" if not in C ++ with OOP or in Pascal. So I went home, loaded the software and wrote my first BASIC program with Microsoft's Quick Basic 4.5 Interpreter. The program was one line of text which printed to the screen. Big deal, I want power and I get a batch file look alike. If I couldn't learn BASIC how could I learn these more elitist and complicated computer languages? I needed some verification and clarification. I began asking my friends about computer programming. Harry said, "Gosh John, I learned FORTRAN and COBOL when I was 17, wrote flocks of programs in them, nope don't know BASIC, it's too dumb and slow. What's that...do I ever USE FORTRAN and COBOL? No, not in years. What good was learning it then? What the !@#$%*!, kind of question is that!" Harry is always a little sensitive if you imply that he might be bragging. Harry is a card carrying elitist, he wouldn't be caught dead using such a peasant computer language as BASIC. Ray is different. Ray owns his own manufacturing company and has three Phd.s', a law degree, and went to medical school for three years. "Of course I can program in BASIC, John, don't be silly, that's child's play. But don't get too technical, it's been several years now, Hee Hee..., Ray chuckled. "Well Ray, that's great, I'm having a dickens of a time, I didn't realize that there was BASIC, BASICA, GWBASIC, PDB, and QUICK BASIC. What do all of these names mean and which BASIC should I learn?" I asked naively. Ray sputtered a fine spray just as he was tasting the wine. He ordered another bottle of Petite Sirah; and we were able to finish dinner with that question hanging like still smoke in the air. So it went on, if they did program "in the higher languages" of C, C +, Pascal they couldn't tell what and how they did the programming. "Well John why do you REALLY want to learn to program for, comm' on, tell me....comm' on...tell the truth," Marvin asked. Marvin programs in "C" and does programs in artificial intelligence and makes jokes about "the artificial intelligentsia." In desperation, I asked Marvin to write me a program that could be an all purpose tool, sort of a Swiss Army knife that would put up menus, take direct input from the keyboard, let you pick your colors, be user friendly, be modifiable, you know like software should be. Marvin said that I didn't really know what I wanted or, I wanted too much. Besides nobody programs in BASIC. So I went home and dragged out QUICK BASIC again and tried halfheartedly to learn something that no one knew about from books written by REAL "propeller heads." I read and reread the texts trying to UNDERSTAND what the writer was driving at. Unfortunately BASIC is mainly written by programmers who can write code but who can't write to communicate with humans. It was a sort of Zen, reading and not understanding. It was a sort of chant. Reading again and again such stuff as: "DATE$ Statement sets the current date," and "DATE$ Function returns a string containing the current date," and "FUNCTION Statement Declares the name, parameters, and the code that form the body of a FUNCTION procedure.[2]" Well that is as clear as Zen, and like Zen you have to have a FEEL for the terms. As any Zen master will tell you once you have the answer to the question, you DON'T have the answer. QUICK BASIC is Zen, a doing without knowing. But I followed the instructions ---cook book style--- and a program could be made to do something. The sound of one hand clapping makes sense now. Trying to understand what is the meaning of the phrase, "What is the sound of one hand clapping?" is no more difficult than trying to understand books written by programmers. I would have given up too, except I was given a QUICK BASIC program that did something that I needed to have done. Pete programs in QUICK BASIC. Pete is probably the only person I know that REALLY programs anything for himself and he uses QUICK BASIC. We have a mutual interest and problem with some data collection and analysis. Pete had an answer to the problem and he had a real program that would give an answer all written in QUICK BASIC. "Now Pete, I WON'T steal this program. Also, I won't sell this program and make a million dollars on it (Well... at least not without giving you HALF). Yes, I promise, yes that's right, cross my heart and hope to die. And I won't give it to the Iraqis! Now will you please...please....PLEASE give me a copy to take home?" After whining and pleading that I would not sell his first born program into slavery or copyright it, he gave me a copy. That is another Zen portion of programming, you have to earn the knowledge yourself, no one can do it for you. Only with programmers it's worse than Zen, they won't give you a copy of what they know! I watched him pull up the file, run it through his compiler and give me code that would run by its self. It was like watching someone start a fire by using an ancient ritual, by using a bow and a stick. It was the dawn of civilization, the passing of knowledge, the starting of fire by friction. I was given a real stand-alone executable program written by a real person, Wow! After more whining he capitulated completely and gave me the SECOND file, the QUICK BASIC code file. I put the diskette in my shirt pocket, it was too important to place it anywhere's else. That night I ran it inside of my QUICK BASIC compiler. Gadsooks! it worked! The damn thing calculated and printed the results out lightening fast and it was information that I could really use. Zen, part two, you can't learn something you have no use for. That's what Sandra, Harry, Ray and all the others were talking about. They wrote programs in class on problems that they were given, not on problems they wanted solutions for themselves. That's why learning programming is like Zen, it is meaningless unless you have some use for the knowledge (which is both very much like and UNLIKE Zen). Good ole Paul Somerson was right. First, you need a project that you really...really want to do. Then use the books to look up the procedures to do the project with. Just learning all 190 QUICK BASIC commands won't cut it. You have to use it ...or lose it! I went back to Egghead Software; Sandra and Brian had moved on. Scott and Lance programmed in Pascal. I asked them if there was anything new in QUICK BASIC that was fun. Lance gave me Microsoft's GAMESHOP. It came with the same book that I already had, but the software contained 6 games which could be run inside of QUICK BASIC, the code could be examined. With much head scratching and replaying you could actually figure out how the programmers did what they did. Again, like Zen you must persevere, be tested, try and fail, try and fail, knowledge doesn't come easily. But everyone likes to play games, so it wasn't all Zen. That was a month ago, and though it is still slow going, I am making progress. Pete and GAMESHOP gave me hope. I have uploaded two programs to CompuServe as shareware. The first program has attracted two dozen downloads in two weeks. Not great, but a start and this is also Zen; you work and study long for small (or no) rewards. I guess some modem users downloaded the program because it was simple, colorful, and played a song. Nothing grand, just a program called BIRTHDAY.ZIP that puts up colored boxes on the screen, accepts user input, and plays "Happy Birthday" if the computer clock reads the same day and month as the ones you type in. If it's not your birthday, it flashes different colors and plays "Happy Unbirthday." Some one laughed when I played the program for them and jokingly asked to see it display the EXACT age of anyone whose birthday was not the day it was run. He also wanted something that would distinguish if the person inputting the data was young or old (over or under 21). That was beyond my ability, but then I found, if you looked hard enough, someone had already done some of these things in QUICK BASIC or BASICA. I found a Julian (named after Big Julie no less) calendar function which does just that, and added it to the program. After struggling to add that formula, it was easy to figure out a "LOOP" that would change a phrase depending on what the person's age was. Though the latter was simple math, it had been years since I had been forced to do any thinking about mathematics. Zen and math have a lot in common, but that is another story. With a program that calculated the person's exact age, every young woman that played the program exclaimed ", that's wrong I am NOT 29.078345 years old!" if that was her exact age. I now warn women over 30 that this might be a traumatic event as the computer will calculate their exact age, but they sail blithely ahead, not believing that it will happen. All in all, a lot of fun and some insight into human nature. The second program, FOR-LISA.ZIP uses random number formulas to generate screen colors, changes the screen to 40 characters wide, and displays more ASCII graphics. This one plays a Beethoven sonata and takes advantage of some great 1982 music programming in BASICA that I found on a BBS. Again, I generated simple mathematical formulas to do the work of many lines of code. Another secret of programming which could only be uncovered by doing. Zen is doing and not doing. So, nothing sensational, but now my batch files are getting a once over with this new knowledge. Now I realize that the macros in Microsoft Word, WordPerfect, and the script in ProComm Plus are written in BASIC. Now these macro formulas make sense! There has been a mystic clarification of macros, again like Zen what you learn affects other areas of knowledge. I am thinking of ordering from Crescent Software[3] a QUICK BASIC package that allows you to program mice, windows, accounting, and databases. Now I have hope, and that also is Zen. Yeah, nothing sensational unless you thought that BASICA was another name for Zen and that "Real Men only program in C." �������������������������������������������������������������ͻ � � � REFERENCES � � � �������������������������������������������������������������ͼ (1) Somerson, Paul, PC Magazine Power Tools 2nd Edition, Bantam Books, 1990 June;1157. (2) Microsoft, Programming in QuickBASIC Version 4.5, 1988;270-1. (3) Crescent Software, Inc; 32 Seventy Acres, West Redding, Connecticut 06896; VOICE: 203-846-2500. ����������������������������������������������������������Ŀ ������������ � THE AUTHOR � �����������Ĵ ������������������������������������������������������������ The author, John Richard De Palma is a California physician who practices adult internal-medicine and nephrology (kidney diseases and treatment of kidney disease by the artificial kidney). He is the CEO of a health-care company based in Glendale, California called Hemodialysis, Inc. Though he is old enough to know better, he has decided to study computers; including the art and science of programming. All the conversations and facts in his articles are true, only the identities and locations have been changed to protect the unknowing and innocent who talk to him. He has written over 130 research papers and editorials in the field of medicine and nephrology. He continues to write and is the "Contemporary Issues Editor" of the magazine CONTEMPORARY DIALYSIS & TRANSPLANTATION. All comments and opinions are his own and reflect his own experiences and thinking processes. He would welcome any thoughts, comments, criticisms, spelling corrections, or QUICK BASIC code that is under- standable by an ordinary mortal. He looks forward to receiving any kind of reader's mail. He can be reached by dialing CompuServe's E-Mail service and leaving a message there for him. His CompuServe number is: 76076,571.