From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-0.3 required=5.0 tests=BAYES_00,LOTS_OF_MONEY, REPLYTO_WITHOUT_TO_CC autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,b87849933931bc93 X-Google-Attributes: gidfac41,public X-Google-Thread: 1108a1,b87849933931bc93 X-Google-Attributes: gid1108a1,public X-Google-Thread: f43e6,b87849933931bc93 X-Google-Attributes: gidf43e6,public X-Google-Thread: 103376,b87849933931bc93 X-Google-Attributes: gid103376,public X-Google-Thread: 114809,b87849933931bc93 X-Google-Attributes: gid114809,public X-Google-Thread: 109fba,b87849933931bc93 X-Google-Attributes: gid109fba,public From: Tansel Ersavas Subject: Re: What is wrong with OO ? Date: 1996/12/14 Message-ID: <32B3769F.4EC5@deep.net> X-Deja-AN: 204197127 content-type: text/plain; charset=us-ascii organization: RASE Inc. mime-version: 1.0 reply-to: tansel@deep.net newsgroups: comp.lang.c++,comp.lang.smalltalk,comp.lang.eiffel,comp.lang.ada,comp.object,comp.software-eng x-mailer: Mozilla 3.0 (Win95; U) Date: 1996-12-14T00:00:00+00:00 List-Id: I have got an e-mail that grilled me a bit about some of my words (2nd part of the reply). In case other people thought along similar lines, I am posting a slightly modified version of my reply here as well. > Kragen wrote: > >> Tansel Ersavas wrote: >> Before we discuss 'what is wrong with OO', shouldn't we discuss what is >> wrong with the current popular paradigm, procedure orientation. > I'd be interested to hear what you have to say on that. Could you > forward me your previous posting to comp.object about the subject? > Unfortunately I accidentally deleted my original posting to comp.object that you requested. But I'll restate some of the key points here: What is wrong with Procedure orientation? You may well know the story I am about to tell you at least I'm sure you know parts of it. But it is so easy to forget, so I'll have to restate here, because it is essential for us to know where we are coming from to be able to see where we are going. Procedure orientation is not invented as an optimal solution to our problems. It was designed to be the answer of the original question of, and original design purpose of the modern computer. Do you remember why the original computer was invented? The key to why we have procedure orientation as our main modeling tool in computers lies in the answer. The ancestor of all modern computers is ENIAC, designed after EDVAC. EDVAC was one of the first computers designed, but had several problems. Designers of ENIAC were working to solve these problems. The problem at hand for compters to solve was: There were people (sometimes called computers, literally!) whose entire duty was to perform a series of calculations on a huge amount of data. Such as payroll, or bank account updates. Sure, there were IBM Hollerith card processors that could automate this process, but they weren't flexible enough. During the design process, the design team asked Dr. John von Neumann, one of the most respected mathematicians and computer figures of the day, his ideas, along with EDVAC's and their proposed design. The memo von Neumann sent them back became a legendary paper and influenced virtually all computer architecture beginning with ENIAC, and, from then on became known as the von Neumann architecture. One of the key points of his suggestion was to use binary, instead of the decimal system EDVAC was using. After investigating the problem, he suggested, as they were trying to automate a person doing manual calculations, a design involving a central processing unit (cpu) and a memory. In this design, the cpu would replace (or automate) the person. CPU would have an arithmetic-logic unit (alu) replacing the mechanical calculator that the person was using. His or her short term memory would become the registers, and the paper that kept the intermetiate results (data) as well as the instructions (program) became the memory (Hence, stored program machine). To program a von Neuman machine one would need to supply instructions in form of simple, imperative sentences, such as LOAD register with this value, or AND 1 with the register. Since the aim of ENIAC was to automate a human computer, nothing elaborate was needed. The simple imperative sentences in form of op-codes (which tell the cpu what to do) and operands (passive data, or a reference to tell the computer with what) were organized in procedures. All one had to do was to invoke the necessary procedure to perform that task. Such a simple and elegant design. SO THE MODERN COMPUTER WAS NOT DESIGNED TO BE A GENERAL PURPOSE PROGRAMMING MACHINE. IT WAS A SPECIFIC MACHINE WITH A SPECIFIC TASK IN MIND. Up to now, I guess most people know the story. However, what's not widely known is von Neumann's objections to other invented uses of the system. When people saw that they would do a lot more than simple calculations, and they started developing applications that would be far beyond its intended use, Von Neumann repeatedly warned them, and indicated that the use of this architecture anything beyond simple-serial operations would be totally inappropriate. However, no one wanted to hear his warnings. After all, they had such a wonderful machine that could do anything. No one noticed that things would be exponentially more complex when one tried to program more with that machine. Von Neumann, in vein, started to design a new computer, but died long before he could finish it. His last work 'The Computer and the Brain' states his objections to the architecture ironicaly named after him, while he was frantically working towards a different type of computer (much like a brain) to be able to deliver these people the right platform for what they wanted to do. It is essential that we have to understand John von Neumann's reservations about the architecture he designed himself. After all, he was the only authority at that time who could understand the limitations of his architecture. John von Neumann died while still writing his last book. This book is now very difficult to find anywhere. However, in my opinion, it should be read by everybody before writing even one line of procedural code. His dire warnings about abusing this machine beyond simple, serial operations are totally ignored, then forgotten. <... the other stuff was related to what is the alternative (OO), and what are the precursors for succeeding> > > programming one of the the most labor-oriented, miserable works > > available Today > > I must violently disagree with you on this point. I have stuffed > tacos at Taco Bell; I have taken phone reservations for Super 8 > Motels; I have washed dishes and made sandwiches in a cafe; I have > mixed tons of bubblebath, put it into bottles, put the bottles into > boxes, and stacked the boxes on pallets. All of these things I have > done in the last two years. > > Also, for the last year, I have spent part of my time administering a > network, doing tech support, and teaching people about UNIX, and part > of my time programming. I assure you, programming is much less > labor-intensive than any of my non-professional jobs, and even less > labor-intensive than the other things I do now. > > And miserable! You have no *clue* what miserable is if you think > programming is miserable. I am happier programming than in any other > part of my job, but *any* part of my job is infinitely better than > when I was manufacturing bubblebath. I don't have to do any of the > following: > > - work with detergent on my hands in an environment that's below freezing > - risk falling into a vat of bubblebath with a spinning propeller mixing it > - fight with 450-pound drums of mildly toxic chemicals > - work 13-hour days of moving 25-pound boxes > - clean up enormous bubblebath messes on the floor > - get paid $5 an hour > - work in an 85-dB ambient noise environment > - never see the sun > > But let me tell you something. That bubblebath-factory job is > infinitely better than the jobs many of the people in America have, > and even *those* jobs are infinitely better than the jobs most of the > people in Bangladesh have. > > I think you owe an apology. I think you have no business declaring > that your job's misery is near that of mining coal or sewing clothes > in sweatshops. > I think you are right. I got carried away a bit. If I offended you by saying that, I sincerely apologize. Perhaps, I can not choose words very well, after all English is a second, and a relatively new language to me. Being born in a thirld world country, and working in a metal factory counting bolts, brushing bolts with metal brushes, and visually inspecting parts, and being paid $5 a fortnight, I'm well aware of the conditions you're mentioning. I'll try to make myself clearer by stating what I actually tried to say when I used the words "labor oriented" or "miserable". The phenomenal success of computers is actually a big time bomb ticking. Today, failed projects total about HUNDREDS of BILLIONS of DOLLARS every year. No one will admit it, because they think that it has to be like this. Software must be problemmatic. This waste of money is in my opinion totally unnecessary and should be stopped right now. Talk about the impact of this money to the misery of us here and the third world. I have personally witnessed a $100 Million project collapse after 5 years of effort, and closely followed another very similar project collapse with $120 Million down the drain. These are your and my money wasted. I simply can not tolerate it any more, and if I am using strong language (sometimes inappropriately), I am sorry, but I don't think that we have this luxury to throw money away. When I am working in a project in a big organization that makes $1,5 Billion profit a year, if a project costs $10 Million, where I can see it could cost far less than $1 Million and can't do anything about it, then forgive me, but I am more miserable than the days I was counting bolts. Not for myself, as a consultant I am paid very high $$, and work far less than 13 hours a day in an air conditioned room. I should be quite happy, the more chaos out there, the more people will seek my services, and the more expensive I'll be. In fact people in my position have been enjoying enormous rate increase. If you go to a place in crisis, and make things only 20% better, you save them good money. But this is the chaos they chose to be in it in the first place, and in the long term, doesn't benefit any of us. And, labor intensive: yes. This doesn't mean "hard labor", but it is still labor. In fact people would like to think that programming is a mind intensive operation, having had signatures under million line code systems, IMO programming is an extremely labor intensive task, compared to what it should have been. When you are using Unix, I am sure you realize how many man-years were spent to deliver you that system. The system I'm using has software on it (is a simple notebook with Win 95) has an incredible amount of effort put on it just for people like me to be able to perform a number of operations. The most complicated structure on Earth became software since the MVS operating system was declared just that in terms of its moving parts. What does the MVS operating system do? Move mountains? No. Could it be done much simpler? Yes. I still believe that we are more productive when we are stuffing taco shells then when we are doing programming (I Just wish taco shell fillers were paid accordingly). If we had to cook the shell, prepare the sauce, and chop the salad every time, then it would be closer to programming. In fact taco filling is a very component oriented visual assembly work with a level of maturity and sophistiction, it can only be a programmer's envy. We still have years to catch the same technology. The problem is we can develop software just like we fill taco shells, and we don't. The awe that is created for us in computers in terms of complexity is just a reflection of seeing a paste formed by leaving a taco in a blender for a couple of minutes while it is running, instead of a taco. It is not a virtue to create complex structures. The actual virtue is to be able to do it as simple as possible. My point there was to try to grab people's attention to investigate the bridge they are on first, and see its collapse, before stoning the other bridge that is currently their only savior. This is a long issue, and takes days (even months) to fully explain my point of view. I'm ready to answer all your questions as much as I can. Finally, I think we can all disagree, even strongly, but please not violently > Peace, Always... Tansel Ersavas RASE Inc. mailto:tansel@deep.net http://www.rase.com/