๐Ÿ’พ Archived View for bbs.geminispace.org โ€บ u โ€บ norayr โ€บ 17670 captured on 2024-08-25 at 08:20:14. Gemini links have been rewritten to link to archived content

View Raw

More Information

โฌ…๏ธ Previous capture (2024-08-18)

๐Ÿšง View Differences

-=-=-=-=-=-=-

Comment by ๐Ÿ™ norayr

Re: "Object-orientation and other dumb ideas"

In: s/Stories-from-the-Interwebs

i am not an oop hater, i adopted some oop techniques, and often unconsciously write oop.

however i should leave here a link to

โ€” programming in oberon

book and recommend its last chapter on oop.

in it wirth explains how he feels about it, in particular that oop is a marketing word, when people were in the search for panatsea. that he doesn't like the terminology (nobody died so someone would inherit) and explains that lots of concepts were already present even in modula-2, before oberon.

he refrained from using the word object in the language, ttere are just the records and he uses the term 'type extension'.

๐Ÿ™ norayr

Jun 05 ยท 3 months ago

18 Later Comments โ†“

๐Ÿ™ norayr ยท Jun 05 at 01:28:

i did oop before i got to know oberon, but i only started to understand what am i doing when using oberon.

๐Ÿ™ norayr ยท Jun 05 at 01:35:

and another link belongs here:

โ€” the costs and benefits of interfaces.

mr. chapman measures how much time gets a vmt resolve and figures that can eat about 8 frames per second: huge loss for a game.

in oberon-1 and oberon-07 there is no vmt, there is only a type descriptor. wethods just get to directly be assigned to the record fields.

๐Ÿš€ stack [OP/mod] ยท Jun 05 at 01:41:

There are some sensible ideas, but it definitely turned into a stupid fad. Most data we have to deal with don't map neatly onto an object tree, and structuring code around object hierarchies leads to terribleness in practice.

I am fond of Smalltalk and CLOS (although I am not sure OOP makes life easier), but not Java or C++...

โ˜•๏ธ Morgan ยท Jun 05 at 05:49:

Bad OO code can be very bad :) but good OO code can be great. Indeed, it's a matter of not overusing the OO features.

Reality is rarely hierarchical ;) and even when it is, the hierarchy might not be stable.

Mapping OO structures onto data is a favourite topic of mine: a clean mapping to data can be a sign of a good design.

๐Ÿš€ agh ยท Jun 06 at 08:08:

I think it largely comes down to the language. Simula and Smalltalk were designed as OOP, Ada, is imperative and OOP, however, the OO principles in Ada are in the language, thus enabling the user to abstract the problem and solution domains in (OOA)nalysis, and (OOD)esign methodolgies. If the either of those domains do not fit, than perhaps the language is inadequate, which is not a problem of OOP, but the language. C, and C++ are not OO languages, they are trash based on a legacy of PDP11, and reducing the high order constraints of Algol.

๐Ÿš€ agh ยท Jun 06 at 08:10:

The webpage linked is a good read, it fails to recount the reason why OOP was created, and what problems is what was solving in software engineering.

๐Ÿ™ norayr ยท Jun 07 at 15:18:

i guess i can add that what i dislike is when the language doesn't allow mixed style programming. for example in java even if you are writing a simple hello world, you have to use oop. and given that java is often used in education as first language, the beginner is told to write something they dont understand. why class? why public? also i think oop is indeed not easy to understand and one should not start with it. i thin simple structural language like pascal or even lisp is much more understandable for a beginner than oop and java.

๐Ÿ™ norayr ยท Jun 07 at 15:19:

and i used oop for years before i was able to understand what am i doing, and i only understood because i started to program in oberon, its first dialect and because i have read wirth's related part of the book i think i linked before in this thread.

โ˜•๏ธ Morgan ยท Jun 07 at 17:02:

Dart is pretty much Java minus the annoying bits. So:

void main() {
  print('hello world');
}

or even

main() => print('hello world');

๐Ÿ™ norayr ยท Jun 07 at 19:10:

i am sorry that i could not resist to tell this, but some language names i just don't want to hear. those are sometimes pretty good, just i have this feeling that it wouldn't be so well known if not the big powers behind it, and i have this feeling of injustice, because there are not bad, comparable languages that don't have much of corporate support, and those aren't known and especially, loved by people. plus this is geminispace, many of us are here because we'd like to be able to understans significant amount of tech we use, thus we are attrackted by simpler and more minimalistic tech. and usually corporate languages aren't like that because well, the corporation which promotes the language has to market it and add new features in newer releases, show 'growth', because how without it?

โ˜•๏ธ Morgan ยท Jun 07 at 20:24:

I get where you are coming from :)

For me there are two main types of corporate involvement in the language space: creative, and coercive.

On the creative side there has been a lot of good stuff. Apple, Microsoft, Google, even Facebook have done a lot of work on their own languages, and I'm sure the world has benefited ... software is complex, programming language are complex and hard to build, and we all benefit from the state of the art being pushed forward.

The coercive side would be when a corporation is pushing for their preferred language or platform to the exclusion of others. That can be pretty bad. On the whole though I think the situation there is a lot better than it used to be! It's generally considered uncool now to overly restrict developers. But corporations have big feet and may push for exclusivity as a side effect even without any particular bad intent.

Honestly, I think we are in pretty much a golden age of software, from any independent developer's point of view--at least, as golden as we've had it--where it's easy to exchange ideas, most tools and platforms are open, and if something's really good there is every chance it will succeed. It's still an incredibly tough market if you want to start a new language :) and it's frankly amazing that we do keep seeing interesting new ones. What a time we live in...

๐Ÿš€ stack [OP/mod] ยท Jun 07 at 20:28:

There was a low point in my life when I started studying for a Java certification test, because it really looked like I wasn't going to get any work without it in NYC...

๐Ÿš€ agh ยท Jun 08 at 03:21:

Yeah I agree, the language should be multi-paradigm, tho, Smalltalk is interesting, and Self too. I understand Self takes the everything-is-an-object to the n-degree. Java is a place north of me as far as I am concerned. Sun produced some nice things, but a high order language VM, no, Smalltalk did that better.

๐Ÿš€ agh ยท Jun 08 at 03:26:

I thought I understood OOP when I started learning C++, it was exciting, then I realised C++ was a dumpster fire, it's multiply inheirtance, polymorphism, and generics were total crap, these are important abstractions for OOP, and C++ could not provide a decent language feature of any. Many years later, I picked up some books by Grady Booch on Ada, and OOP really crystalised for then. Ada provides those abstractions in the language, and it is all static compile time, unless you are referencing the root type (Class in Ada terms), like Oberon, you can avoid the overhead of the method table loopup.

๐Ÿš€ agh ยท Jun 08 at 03:29:

Yeah, Pascal should be the first language to learn in an educational setting, it sets the bar high, typed, fast compile times, and code often works without changes from generation to generation, this minimises cognitive load, and allows the student to focus on what is important.

๐Ÿš€ stack [OP/mod] ยท Jun 08 at 04:05:

I was obsessed with Self for many years, and eventually got to play with it. Sadly Sun hired Ungar and pretty much killed further development. Many amazing things from Self -- compiled polymorphic caches and a very innovative garbage collector wound up in Java's JIT compiler.

Self is like Smalltalk on drugs. You can use any object as a prototype and add slots, and everything just works. Things get weird fast, and you have to come up with all kinds of ways to keep inheritance from biting you.

I kind of loved it, but in the end, it's really hard to get anything done with it. After a while I missed the simplicity of Smalltalk (which now has bytecode interpreters that use Self tech).

I spent a couple of years writing a language that was Self-like, but instead of individual slots you mixed and matched interfaces, or groups of slots. It actually worked a lot better than Self conceptually. Eventually I ran out of steam and money, like so many of my great ideas that no one cares about.

๐Ÿš€ agh ยท Jun 08 at 06:46:

I spent a couple of years writing a language that was Self-like, but instead of individual slots you mixed and matched interfaces, or groups of slots. It actually worked a lot better than Self conceptually. Eventually I ran out of steam and money, like so many of my great ideas that no one cares about.

Wow that sounds awesome, unfortunate about the lack of steam and money. I love interfaces, and Smalltalks multiple inhiertance does get scary (like C++'s) for sure.

๐Ÿš€ chirale ยท Jun 11 at 05:11:

There's something you don't like? Call it stupid idea and social contagion. Add some out of topic hot takes.

Original Post

๐ŸŒ’ s/Stories-from-the-Interwebs

Object-orientation and other dumb ideas โ€” Daniel Lemire has posted some great articles and is always interesting to read. Here is his short take on OOP, a stupid idea based on nothing that went so viral that opposing it would cost you your job, your friends, and your reputation. Includes a guide on how to spot these brain viruses as they spread near you. Look around and spot some current idiocies around you, and post your observations here, if you dare!

๐Ÿ’ฌ stack [mod] ยท 19 comments ยท 1 like ยท Jun 05 ยท 3 months ago