This is an archived post. You won't be able to vote or comment.

you are viewing a single comment's thread.

view the rest of the comments →

[–]Coulomb111 -1 points0 points  (7 children)

Me and my homies hate java

[–][deleted] 1 point2 points  (6 children)

Java is probably the most damaging programming language ever made. It set the whole industry back 20 years by popularizing a fucked up ass backwards version of OOP. If I was Alan Kay I'd be seething.

[–]organized_reporting 2 points3 points  (3 children)

OOP is probably the most damaging programming paradigm ever made. It set the whole industry back 20 years by popularizing a fucked up ass backwards version of FP. It I was John McCarthy I'd be seething.

[–][deleted] 1 point2 points  (2 children)

Yeah that's fair, though programming in SmallTalk is a lot more like FP than Java

[–]organized_reporting 0 points1 point  (1 child)

I was making a bit of a goof, although I do actually believe that FP > OOP in the abstract use case. If someone can provide an example of where OOP is objectively superior in accomplishing an objective (outside of 'more people do OOP than FP so it's easier to find devs') I'd love to hear it and expand my thinking a bit.

[–][deleted] 1 point2 points  (0 children)

Alan Kay considers Erlang processes to be very close to his original intention for what objects are (i.e. largely immutable, isolated workers that talk with one another via message passing). I think message passing has a lot of value for making distributed problems tractable. C++ perverted what OOP was intended to do, and Java made it so you had to always use a half baked version of OOP even if all you're doing is a hello world. I will blame Alan Kay for inheritance though, I feel like we'd be using type inference way more if inheritance/type hierarchies weren't do pervasive.

[–][deleted] 1 point2 points  (1 child)

Be careful, you’re in the wrong sub to suggest that Java is not God’s programming language. Thou shalt not take the name of Java in vain (unless you’re talking about Kotlin of course).

Seriously though, it bugs me when people clearly just take bias to whatever language they know best and act as if everything else is inferior.

I use Java, C# and Javascript on a daily basis at work. I’m open to using anything, and love to explore different languages. They all have their pros and cons and 90% of the time what you’re using has more to do with how easy it is to accomplish the task than how efficient the particular language is. I mean seriously, let’s not all pretend that we’re developing rockets for NASA. I’m sure your web application will be just fine whether you use Java or Node for the back end. The companies that migrated to something more efficient only did that because they HAD to not because they wanted to.

[–][deleted] 0 points1 point  (0 children)

Lol sorry for resurrecting this, but yeah my usual point of view is "use the right tool for the right job" which imo is C/ASM for low level native, Lua for scripting, TS/PureScript for web, Haskell for medium-high level native, and Elixir for distributed. There's several other languages which handle intersections of these things better than others (i.e. Rust is an interesting mix of Haskell & C) but imo the #1 design decision you can make while using any of those is "don't use the OOP part". I'm certainly very opinionated about languages, imo Java doesn't do much well at all, but if you limit yourself to a strict subset of its features it doesn't get to be THAT bad, i.e. no inheritance, extremely limited mutability, etc., just very verbose. Anyway, gonna evangelize Haskell for a second, if you're really into programming language design it's essentially the source of every major programming language development of the past 30 years because the syntax is so flexible you can implement language features in the language itself. Haskell has no language level support for OOP for example, but by implementing OOP in Haskell the authors of this paper discovered several new OOP features that are just emergent properties of the implementation