Objects are abstractions of processing. Threads are abstractions of schedule.
— James O. Coplien
Objects are abstractions of processing. Threads are abstractions of schedule.
— James O. Coplien
I also got experience with the following (5 = a lot, 1 = a little) :
#machinelearning #ml (3) (I have implemented some ML models myself in the past, for learning purposes.)
#guix (3) (Using it for reproducible setups of projects.)
#functionalprogramming #fp (5) (Doing it in my own projects.)
#objectorientedprogramming #oop (4) (last job and past xp in my own projects.)
#CI / #CD (3) (Last job)
#make (4) (using it for my own project setups and convenience)
#testing (4) (last job, own projects)
Objects are abstractions of processing. Threads are abstractions of schedule.
— James O. Coplien
Intro to Object Oriented Programming
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.
#YouTube #AI gets automatic key concept identification wrong:
I'm about to watch a video about two project interaction libraries for my favorite #TextEditor (#Emacs). They're called #Projectile and project.el.
Below the video, YouTube shows an image of a missile, under a heading that says "Key Concepts". Below the image, it says: "A projectile is an object that is propelled by the application".
The hashtags #OOP and #EditorWar come to my mind.
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?
In the 1980s Xerox PARC taught courses on LOOPS (Lisp Object-Oriented Programming System), the object extension of Interlisp. The participants learned to develop knowledge systems in a simulation game called Truckin which is still available on Medley.
https://ojs.aaai.org/aimagazine/index.php/aimagazine/article/view/400
So, despite all the #abuse, let me be "un-#humble" for a moment longer, and say this: everyone who truly wants to understand #OOP in such languages such as #Java, #csharp, #python etc. and is not satisfied with current explanations of how to do OOP and struggles with whether to use basic functions, or is annoyed by arbitrary numbers for boundaries for "clean" #code, etc.
These offer a different view, trying to incorporate more aspects:
- https://dannyvanheumen.nl/post/engineering-simplicity-minimal-objects/
- https://dannyvanheumen.nl/post/engineering-the-unified-oop-paradigm/
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.)
@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
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.
Trying to sell my treasured copy of the rare Derren’s Brown book, Absolute Magic. I had it signed by Derren, in person, because I knew he wouldn’t like me having that older book. I then took it to Penn and Teller and got them to sign it, because I thought it would be funny.
Derren’s didn’t like me having the book, andPenn and Teller did not think it was funny, but they signed it like good sports, all the same.
Pleas boost to see if there are any fellow travellers out there in need of rare knowledge.
#derrenbrown #pennandteller #magic #mentalism #oop #rarebook
Drei Tage OOP gehen dem Ende zu. Anstrengend war's, aber gut. Danke @gazebo_c, das war sehr interessant und wird hoffentlich sehr hilfreich sein!
in case you prefer #functionalprogramming over #oop your primary motivation is /was
New Kitten update
• Added `remove()` method to kitten.Component class. Use this when working with live pages and components and you want to remove a component from the page (or its parent). It will handle removing event listeners for you so you don’t end up with any memory leaks.
• Improved `update()` method so it similarly removes listeners on child components before updating the component itself in case you have class-based child components that will be reinstantiated on render.
• Updated the `send()` methods on `page.everyone` and `page.everyoneElse` so you can pass a swap target to insert the element being streamed to the page before, after, asFirstChildOf, or asLastChildOf another. (This was already there for the page.send() but now the two broadcast objects have the same consistent interface.
The @small-web/kitten npm package (Kitten’s types package) has also been updated to version 5.1.0 to reflect the latest changes.
(Remember that the new class and event-based page and component model is still experimental and largely undocumented and fully backwards compatible with the classic functional way of authoring your page routes and components.)
Enjoy!