Don't mind me, I'm just poking around this newfangled OOP thing with LOOPS on Medley Interlisp. LOOPS (Lisp Object-Oriented Programming System) is the object extension of Interlisp.
Don't mind me, I'm just poking around this newfangled OOP thing with LOOPS on Medley Interlisp. LOOPS (Lisp Object-Oriented Programming System) is the object extension of Interlisp.
Russian developer Yegor from yegor256.com uses a simple example of two similar approaches to modeling an action, and their implications from an object-oriented design and programming patterns perspective. One of the two approaches provides superior extensibility, data encapsulation, and more flexible error handling.
"remove(42) vs. find(42).remove()"
The LOOPS primer, published in 1987, captured well the essence of exploratory programming in Lisp:
The LOOPS interface provides both a programming tool and a thinking tool. As you develop a new system, each preliminary version provides an object for thought and discussion. The preliminary versions are a crucial part of the design process.
LOOPS (Lisp Object-Oriented Programming System) is the OOP extension of Interlisp.
#commonLisp #programming #amop #mop #metaobjectProtocol #exercise #closette #learnToCode (my own experience) #oop
https://screwlisp.small-web.org/amop/eg1/
Today I simply share and solve (hopefully!) The Art of the Metaobject Protocol exercise 1.1
(the softball generic classes #memoization exercise from chapter 1)
I just added a lexical closure of hash tables.
@simoninireland wrote about the art of the metaobject protocol in his #lisp bibliography a year ago. https://simondobson.org/2024/07/23/the-art-of-the-metaobject-protocol/
#programming #oop #commonLisp #GUI #app #McCLIM #gamedev #devlog https://screwlisp.small-web.org/lispgames/hurkling-onwards/ #hurkle
Well, it's pretty graphical now. Yes, table columns goofily resize and the history of button presses appear in the interactor shell: Really I just wanted to show you those features working.
Next article, I'll add two more asks and "launch" the game on itch.io.
Anyone else have a McCLIM show-and-tell?
Published in 1987, "Xerox LOOPS, A Friendly Primer" is a concise tutorial to the LOOPS (Lisp Object-Oriented Programming System) object extension of Interlisp. Some chapters of this copy are in the wrong order but all the content is there.
New Kitten Release
(Run `kitten update` to update your dev machines. Production machines will automatically update in a couple of hours.)
• You can now add a generic script block to your markdown pages (see https://mastodon.ar.al/@aral/114432417394114105)
• Markdown pages can now be `KittenPage` instances and attach `KittenComponent` instances (so you get a full server-side component hierarchy with an event-based workflow; ideal for authenticated pages where you can be use only the author of the page will be accessing them and thus the additional memory and processing overhead are not issues. Isn’t the Small Web great? Only having instances of one makes it possible to optimise so many things for the human experience instead of vertical scale of the data farming machine.)
• Two new examples showcase the new features: https://codeberg.org/kitten/app/src/branch/main/examples/streaming-html/markdown-script-simple-components and https://codeberg.org/kitten/app/src/branch/main/examples/streaming-html/markdown-kitten-components
• Attributes with object values are no longer serialised into the DOM (but your components’ render functions will continue to receive them, of course.) This is because only string values make sense for attributes in the context of the HTML DOM. (You can still, of course, have stringified representations of objects in attributes, as used by the `data` attribute to pass data from nodes to event handers on the server.)
Mixing #functionalprogramming and object oriented techniques in JavaScript is bad. I can easily see how someone exposed to this would think that #oop was inferior or frustrating. Someone only used to OOP is likely to feel the reverse.
@amoroso #clos #commonlisp #oop #lisp there was still a choice between various proposals then...
But the actual CLOS was not far away - the standard proposal was published in September 1988: https://dl.acm.org/toc/sigplan/1988/23/SI
Available above as a PDF. The final version was then published with the ANSI CL standard.
As installments of the ARTIFICIAL INTELLIGENCE column by Ernest Tello, in 1987 Dr. Dobb's Journal published a series of articles on OOP and object-oriented extensions for Common Lisp and Scheme. Back then CLOS was not yet on the radar but the Common Lisp extensions the articles covered already contained the main ideas of CLOS.
https://archive.org/details/1987-03-dr-dobbs-journal/page/126/mode/2up?view=theater
https://archive.org/details/1987-04-dr-dobbs-journal/page/146/mode/2up?view=theater
https://archive.org/details/1987-05-dr-dobbs-journal/page/132/mode/2up?view=theater
Functional vs object-oriented vs procedural programming?
The problem with object-oriented languages is they've got all this implicit environment that they carry around with them. You wanted a banana but what you got was a gorilla holding the banana and the entire jungle.
— Joe Armstrong, Jason Gorman
one of my favorite quotes about #OOP is that a class hierarchy isn't made to unleash your inner Linnaeus ;) - but this most certainly is: https://jillianhess.substack.com/p/carl-linnaeuss-note-taking-innovations - cute lil video about Linnaeus' note taking system. (As a german political scientist I'm course Luhmann's Zettelkasten inspired ) Cool bits of information design however - If you love Tufte's book, you'll love this :))
The principle of data hiding in #OOP is an evil principle, for it seeks to instill a product/consumer dichotomy in the programmer's mind, and this is inherently hierarchical and #oopressive.
New Blog Post!
Fizz Buzz has just enough complexity to demonstrate a principle that is usually tough to understand through toy examples: the open/closed principle.
https://kerrick.blog/tutorials/2025/fizz-buzz-object-oriented-edition/
I've been using #AI to critique my #blog posts before I publish them. Among other techniques, I have it stereotype commenters on various tech sites. Tonight's example was pretty funny. #RewriteItInRust
Bounded Context: Problem oder Lösung?
In @ewolff zweitem Talk auf der #OOP in #München spielen Bounded Contexts eine zentrale Rolle. Dabei werden drei Bedeutungen aufgezeigt: als fachliche Geltungsbereiche, technische Module und Aufgabenbereiche von Teams. Diese vielseitigen Definitionen können jedoch auch zu Verwirrung und erhöhter Komplexität in Projekten führen.
Link zum vollständigen Beitrag: https://swaglab.rocks/bounded-context-problem-oder-loesung/
"The mix-in revolution: How an ice cream innovator in Somerville influenced Lisp pioneers at the MIT AI Lab—and made a lasting mark on programming."
https://www.technologyreview.com/2025/02/25/1111238/the-mix-in-revolution/
Object-oriented design is the roman numerals of computing.
— Rob Pike
If you really must have plain #Perl #OOP methods with the same name that differ because of their argument signatures (also somewhat analogous to C++ function overloading), you can use Class::MultiMethods: https://metacpan.org/pod/Class::Multimethods
More from @manwar (including native #RakuLang multimethods) here: https://gist.github.com/manwar/db11c8e7493d37d2d8373fd64ba871bb
#programming #coding #SoftwareDevelopment https://fosstodon.org/@manwar/114076955754327846