c.im is one of the many independent Mastodon servers you can use to participate in the fediverse.
C.IM is a general, mainly English-speaking Mastodon instance.

Server stats:

2.9K
active users

Christoph Berger

"Go is neither an OOP language nor an FP language.
What is it, then?"

Someone asked me this today. My answer:

If you have an OO background, the first step is to see Go as "OOP without inheritance". (That's a good thing, as inheritance complicates programming a lot while achieving little.)

The second step is to think of Go as a "language of verbs". Don't think, "what object do I need to assign that task to?", but rather, simply ask, "What has to be done?" In other words, functions play a much more important role than objects (that are mostly "data types with methods").

The standard library is a good example of what that means. Many packages have top-level functions. Objects are kept simple and can be understood by looking at their data type, fields (if it's a struct), and methods.

No inheritance tree to climb, no overloading to inspect in order to find out what that code in front of your eyes does.

The beauty of simplicity.

@christophberger in was a promise of code reuse to software industry managers. It's the least boilerplate way of extending work done by developer A who is not working on that code anymore by developer B who just arrived.

In theory dev A would "complete" at least the abstract base classes and get it right once and dev B, C, D etc. after A wouldn't have to worry about the base. Saves money and enables flexible hiring.

It didn't work because if you're not a super strict government agency which even plans procedures of taking a dump, "getting it right" the first time is always a far away goal. And oftentimes modifying a base class means excessive refactoring of derived classes.