1. 50
    1. 9

      They all subscribe to a “Kingdom of Nouns” vision of “object oriented” that tends towards lots of gang of four patterns in codebases, that makes it hard to find the code that actually does stuff.

      It is encouraged by C# and Java, but happens in any language unless someone continually fights it. I propose calling the phenomenon “DRY-rot”.

      1. 7

        It really bothers me when people write Java with Python syntax. Classes with only static methods, endless getters, etc.

        1. 4

          It really bothers me when people write code. There are some useful exceptions though.

        2. 4

          after C# 3 (lambdas, linq, yield, monomorphized generics, extension methods, etc. all exist by then), i think writing code that way is more of a corporate culture thing than a language thing. and the situation has improved with every release since then

          it does enable it, though. and it’s especially a problem if people are coming from java backgrounds, and stick with the feature-set they know

          1. 3

            I’ve found most people’s impressions of C# and dotnet as a whole to be pretty consistently stuck a decade in the past.

          2. 1

            But, you can just as easily misapply DRY with functions and functional programming style, so it doesn’t make sense to call “Kingdom of Nouns” and GoF patterns something with “DRY” in it unless you specify that it’s “OOP DRY-rot” or something.

            Also, I think the main reason it can happen in any language is because people are bringing over baggage from Java and C#, not because it’s some natural tendency for people. If you’ve ever worked with someone who went straight from C to Java or even OO C++, you’d find that “Kingdom of Nouns” is NOT the natural state.

            1. 1

              unless you specify that it’s “OOP DRY-rot” or something.

              And now I’m imagining a version of Captain Crunch, except instead of OOPS all berries, it’s OOPS all dry-rot. I think it’s time for bed.

          3. 8

            I like its classification of SQL.

            1. 4

              And the conclusion as well!

            2. 7

              D-Languages:

              Forth, Factor, and other stack languages where dup shows up a nonzero number of times.

              1. 4

                Correction: true J-languages do embrace verbs, among other parts of speech.

                1. 3

                  I wouldn’t put Go and Rust in the same camp.

                  1. 1

                    both compile to native, let you call C functions, have package managers, and aren’t as unsafe as C++. so, they have a lot of overlapping use-cases

                    they do feel a fair bit different, and have different performance characteristics and target platforms, though

                    1. 1

                      “Not C but not Java” :P

                      1. 2

                        Honestly, I think Go probably belongs in the same camp as Java. It was a significantly streamlined and improved Java when it came out, but Java keeps evolving, so now Java has var and value types and green threads too, so the differences are mostly just that Go has less historical baggage and IMO better syntax and stdlib. I know Java is defined to run on the JVM and not actual hardware but even that can probably optimized to the point that it’s a non-difference in practice and it’s just one runtime vs. another, slightly thinner runtime.

                    2. 2

                      Conclusion

                      computers

                      This got me! 😋

                      1. 2

                        Lumping Rust and Go into one category creates a group where one is using rather old-fashioned concepts from computer science (such as traits) while getting C-like performance in memory safe code and the other doing minimal latency garbage collection, green threads (a.k.a. goroutines) and little else.

                        1. 2

                          The article says it’s for languages with “safety while targeting native bytecode like a C-language”, which seems correct.

                          1. 2

                            Has go solved the data races in their channels in the meantime?

                            1. 2

                              Go 1.1, released in 2013, added the data race detector if that’s what you mean.

                              1. 1

                                AFAIR, it still did not fully detect all data races. But maybe that’s been fixed in the meantime.

                        2. 1

                          It’s missing L-languages (Lisp family)

                          1. 2

                            I think you’ll find that if you ask a Lisp enthusiast for a lazy and flippant classification they’ll claim every other language is merely a malformed Lisp.

                            1. 1

                              Every other language contains an incorrect Lisp on which to implement a minimal correct Lisp.

                              1. 1
                          2. 1

                            Was a fun read! And also kind of makes sense.Thanks for sharing!

                            1. 1

                              This was actually a delight to read. Well done.

                              1. 1

                                P languages are, lately, J + C + sometimes R languages too, which is fun.

                                1. 1

                                  S-languages: bash, make, and even DOS batch. The glue that holds all of computing together; colourless, tasteless, and highly toxic fumes. Countless hazardous waste sites have been created by well-meaning amateurs and inexperienced professionals.

                                🇬🇧 The UK geoblock is lifted, hopefully permanently.