veganism.social is one of the many independent Mastodon servers you can use to participate in the fediverse.
Veganism Social is a welcoming space on the internet for vegans to connect and engage with the broader decentralized social media community.

Administered by:

Server stats:

294
active users

#oop

1 post1 participant0 posts today

one aspect on the complexity of software projects is a complex graph of dependencies (I'm not thinking only to other packages, but class/module dependencies inside a single package/library).

Functional programming encourages to use really tiny and precise dependencies (i.e. functions) instead of collections of them (e.g. classes).

This makes the dependency graph more complex. Hence managing and organizing the dependency graph becomes harder.

Could this be a reason why in functional programming projects I tend to see less code organization than in OOP ones?

#Claude4 Sonnet and I have successfully built our Sunya bootstrap compiler using #Fortran and #Assembly. So, from now on Sunya can compile itself and starts growing into the real core Sunya programming language. If we succeed, Sunya will be the first AI Human fully #modularized #OOP #programming language that does not use pointer but has array and matrix as its primitive datatype. I will call it Organic #Object Programming. No more #C, #Python, #Rust, F#, C#,...

What is #OOP? The current Object Oriented #Programming has been distracted by #classes, #interfaces, #override, .. and is ignoring its crucial component, namely #object. Claude4 Sonnet and I are developing this new language called Sunya to get rid of all the nuisance and focus on objects. An object is a standalone entity that has attributes and functionalities and that can "emulate" other objects directly. As object is a set of functions with a persistent state. A module is a complex object.

Continued thread

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)

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.

bitsavers.org/pdf/xerox/interl

#commonLisp #programming #amop #mop #metaobjectProtocol #exercise #closette #learnToCode (my own experience) #oop
screwlisp.small-web.org/amop/e

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. simondobson.org/2024/07/23/the

screwlisp.small-web.orgArt of the metaobject protocol Exercise 1.1: Memoize Closette apply-generic-function

A string "this is an object" is a "literal" in #Csharp. In #computer science, a literal is a fixed VALUE. In c#, "this is an object" is not a simple value, but an object. c# is designed base on OOP. The word literal was used well before #OOP was even a concept. Should a simple string "this is an object" be called a literal? Say I have a class SillyAnimal with only a string literal string sillyanimal = "I am a silly animal". I instantiate SillyDog as a SillyAnimal. Is Sillydog a literal? #logic

One pro I have noticed regarding object oriented programming in a large corporate environment: it soft-encourages a team to document their conceptual nouns.

You can certainly do this in functional programming too, but in general I find that when people do their language equivalent of alias SkagWuzzit map<int,map<int,list<map<str,str>>>, they often completely forget to ever get around to defining what a SkagWuzzit actually is. This is something you can handle with programming discipline (i.e. peer review and make people provide definitions for these types and what they conceptually mean, document the module in which the type is defined, etc.), but a class definition with no docs looks naked in a way that a single type def on a line by itself doesn't.

New Kitten Release 🥳

kitten.small-web.org

(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 mastodon.ar.al/@aral/114432417)

• 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: codeberg.org/kitten/app/src/br and codeberg.org/kitten/app/src/br

• 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.)

kitten.small-web.orgKitten: Home

Gemini 2.0 is very smart, though not as smart as 2.5 pro. The problem is not 2.0 herself, but the fact that she has to handle a huge amount of queries. She will not spend too much resources on a particular user. You have to push her to her limit to get the "correct" response.

Whatever you can achieve with "#Interface", you can do it with OOP. if you have a perfect understand of #OOP, there is really no need for interface. In any case, here are 2 examples of using "this" in both cases. #C#

I have this whole object-model in my head which is basically a compromise between class-based #oop, and prototyped with differential inheritance.
You would just need to differentiate between an objects namespace and its layout, decoupling state and strutucture. 'Layout' only being created when the object is used as a prototype, and the resolution chain would go local ns->local layout if any->proto layout. Changes to the layout would have to be done explicitly to get propagated down.