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=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: 1094ba,690ce1f62160d05a X-Google-Attributes: gid1094ba,public X-Google-Thread: 109fba,690ce1f62160d05a X-Google-Attributes: gid109fba,public X-Google-Thread: 1014db,690ce1f62160d05a X-Google-Attributes: gid1014db,public X-Google-Thread: 103376,690ce1f62160d05a X-Google-Attributes: gid103376,public From: Gregory Pietsch Subject: Re: How to Design an Application Programmers' Interface (API) Date: 2000/08/13 Message-ID: <3996E280.955B77FD@flash.net>#1/1 X-Deja-AN: 657840505 Content-Transfer-Encoding: 7bit References: <39921178.819F6DCB@netwood.net> <399386EF.4F2AA3E6@netwood.net> <3996456C.CAD018D5@netwood.net> <3996C42F.2713C90A@flash.net> <3996BFCE.662A8DFC@netwood.net> X-Accept-Language: en Content-Type: text/plain; charset=us-ascii X-Complaints-To: abuse@flash.net X-Trace: news.flash.net 966189928 38.26.139.117 (Sun, 13 Aug 2000 13:05:28 CDT) Organization: FlashNet Communications, http://www.flash.net MIME-Version: 1.0 NNTP-Posting-Date: Sun, 13 Aug 2000 13:05:28 CDT Newsgroups: comp.lang.c++,comp.lang.c,comp.lang.fortran,comp.lang.ada Date: 2000-08-13T00:00:00+00:00 List-Id: "E. Robert Tisdale" wrote: > > Gregory Pietsch wrote: > > > Of course not. It was never an OOP language. > > > > That's because we C programmers don't even WANT > > any mechanism for hiding the data members. > > They certainly do. If they wanted it, they'd be C++ programmers. C is not C++. Why not cut through all the layers of OO obfuscation right down to the bare metal? That's what C gives you and C++ does not. > > > In other words, > > a union of the real type with an array of int (or char) the same size? > > No. > There are two definitions -- one private and one public. > Only library functions have access to the private type definition. > Application programs can only include the public type definition. Ah, yes -- the distinction between the interface and the implementation. This is fundamental to OO. > > > Seems a little complicated. Why don't I just write the program? > > It isn't complicated. > You just write the program which 'include's the library header file. > When you've finished debugging and testing your program, > you simply define a C preprocessor macro > which selects the static inline functions > instead of the external library function prototypes and you recompile. If I did that, I'd have to retest it to make sure that it worked. You can't be too careful. > > Fine. Whenever I write C++ programs, I'll avoid adding get/set methods. > > > > This is getting into OO philosophy more than anything. > > No. It's not just philosophy. > It's just good design practice. Until you understand that, > you won't be a competent programmer in ANY language. The one thing that made me sick about C++ when I first encountered it was that philosophical aspect. If you weren't doing things the way that the high priests wanted you to, you'd be banished to writing payroll programs in RPG, or worse, being called an unwashed heathen who was unworthy even to enter the computer room. OO has been hyped so much that you'd figure that it would solve world hunger and usher in an era of world peace. NOT! OO is a tool; that's all it is. I AM a competent C programmer; one visit to Richard Heathfield's K&R2 site would prove it (I've written about a dozen answers to the K&R2 problems). Later, Gregory Pietsch