Skip to main content

Command Palette

Search for a command to run...

My Perspective On "Go is Not Java" Article

Updated
2 min read
My Perspective On "Go is Not Java" Article

I came across this article "Go Is Not Java". Here are my thoughts.

Design Patterns

  • For programmers using objected-oriented languages, I would recommend all to learn Design Patterns. Refactoring Guru is a good place to start. Of course Design Patterns: Elements of Reusable Object-Oriented Software is a book worth keeping.

  • It is important to know when to apply the patterns, and equally important to know when it is not applicable.

  • Design Patterns are not a sliver bullets, it will not solve all your problems. But for the right problems, they provide elegant solution keeping your code adaptable to future changes.

  • Design patterns are typical solutions to common problems in software design. Each pattern is like a blueprint that you can customize to solve a particular design problem in your code.
    - https://bit.ly/3xZ74Xn

    Design pattern is not just for object-oriented languages. You can create patterns for non object-oriented languages too. Of course the patterns by GoF (Gang of Four) is mainly targeted at object-oriented languages.

OOP

  • Go is not an object oriented language. It is flexible enough to allow you to use it like one but it is not design to be an objected oriented language.

  • Go has its way of doing things. Some people, in the name of Design Patterns, try to turn Go into Java/C#. If Go can solve a problem elegantly, there is no need to force Java-style Design Patterns on Go.

  • Object Oriented programming is actually not even about the Objects it is about message passing.

    Originally, the core principle of OOP is messaging passing. But this is rarely taught in school, and long forgotten. Nowadays, people tend to focus on "object" part of OOP.

More from this blog

Hong's Tech Blog

110 posts

The blog is older than you know. I prefer counting from the emergence of one integral anomaly to the emergence of the next, in which case this is the forth version.