Path: ...!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!.POSTED!not-for-mail From: John Ames <commodorejohn@gmail.com> Newsgroups: alt.folklore.computers,comp.os.linux.misc Subject: Re: TeX and Pascal [was Re: The joy of FORTRAN] Date: Mon, 30 Sep 2024 16:27:17 -0700 Organization: A noiseless patient Spider Lines: 56 Message-ID: <20240930162717.0000340b@gmail.com> References: <pan$96411$d204da43$cc34bb91$1fe98651@linux.rocks> <5mqdnZuGq4lgwm_7nZ2dnZfqnPSdnZ2d@earthlink.com> <vcub5c$36h63$1@dont-email.me> <1r0e6u9.1tubjrt1kapeluN%snipeco.2@gmail.com> <vcuib9$37rge$5@dont-email.me> <vcvuhh$3hroa$2@dont-email.me> <llhieuF8ej2U2@mid.individual.net> <20240925083451.00003205@gmail.com> <Pascal-20240925164718@ram.dialup.fu-berlin.de> <mdd4j63pmo1.fsf_-_@panix5.panix.com> <oJ-cnQSrLZDYdGX7nZ2dnZfqnPWdnZ2d@earthlink.com> <vdatb6$1l4ch$8@dont-email.me> <vdauah$1lq1u$1@dont-email.me> <20240930110933.00002ec1@gmail.com> <appeal-20240930203239@ram.dialup.fu-berlin.de> <20240930135208.00004170@gmail.com> <OOP-20240930220855@ram.dialup.fu-berlin.de> MIME-Version: 1.0 Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: 7bit Injection-Date: Tue, 01 Oct 2024 01:27:26 +0200 (CEST) Injection-Info: dont-email.me; posting-host="f3a1ced4425b80106d0fe41f21b562dc"; logging-data="2555150"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19iPQE+wqMaIo76TbzKKFKxANX5RfXgszk=" Cancel-Lock: sha1:GkwQkPrD1fWEvF9+Po/GP8qFbBc= X-Newsreader: Claws Mail 4.2.0 (GTK 3.24.38; x86_64-w64-mingw32) Bytes: 4333 On 30 Sep 2024 21:10:33 GMT ram@zedat.fu-berlin.de (Stefan Ram) wrote: > I see. So, it seems to me that what you discovered was more about > Smalltalk specifically than about OOP concepts in general. I thought > maybe you could give some insights about what OOP is and what any > advantages or disadvantages of it might be because in your "I finally > *got* it", I assumed that "it" referred to "OOP". It's a bit both, and it's hard to separate in my head because I don't think I've seen it applied as naturally anywhere *other* than in ST. OOP got wrapped up in all kinds of trendy buzzwords back in the '80s/ '90s depending on who was selling it to whom and which problem it was being proposed as a cure-all for - "code reuse" for the corporate suits who saw programmers as monkeys grinding out fungible "code product" by hammering on typewriters and wanted to maximize hammerage-per-monkey (and minimize monkey headcount, natch,) "information hiding" for the security freaks, etc. But basically, when you strip away all the marketing BS, I think the true appeal of OOP (as I see it) is that it's an extension of the *concept* of data structures; that is, it's a way of organizing data into discrete structures that (when designed well, anyway) map neatly to entities in the model of the problem the program is meant to solve. But in addition to raw data, OOP allows the programmer to package the *operations* inherent to an entity right along with it - and to adapt them to one particular flavor of entity or another, as needed, so that rather than having to remember the distinction between: void sliceApple(apple * f) and: void slicePear(pear * f) one could simply write: fruitPile[i++].slice(); and trust that the Right Thing will be done. In this way (in a perfect world,) a cleaner and (hopefully) more flexible model of the problem can be built. Now, *contrary* to what the marketroids of the '90s would've had us believe, it's *not* magic pixie dust that makes everything better, it does *not* obviate the need for intelligence and understanding of the problem on the part of the programmer, and it has its own pitfalls to be wary of (in particular, the distinction between operations which can be appropriately classified as *methods of an object* and those which are part of larger algorithms within the problem is both critical for good OOP design and also somewhat fuzzy and requiring of careful consideration and good judgement.) But as I see it, that's what the draw is - a different way of modelling problems that (ideally) makes the process clearer and simpler than doing it some other way.