Virtual function table causing lots of cache misses "everything is a reference" causing lots of cache misses (issue does not exist to same degree in c++) encourages packing loads of fields into one struct, polluting cache huge class hierarchies, most data hiding is just obfuscation hacky design patterns that aren't needed in other paradigms outdated type systems literally Platonic idealism promoted by managers because they think it makes programmers more replaceable other stuff too. Look up "Data oriented design."
Eli Russell
I tend to agree with you, and that OOP is generally shit. Functional all the way and procedural for the low level bits that need optimization. agree it sucks, the only reason it became popular is because you didnt have to write the type name in front of variables making development faster. Now with static compiled languages having type inference (C++'s auto and C#'s/Java10+'s 'var' for examples) there really is not much reason to use dynamic typing.
Lisp is an exception to dynamic languages being shit because its uniquely simple syntactic structure makes it have unique meta-programming properties i.e. macros.
just a quick pedantic note: not a golang programmer, but was under the impression that go coroutines were not "muh troo multithreading".
Rust: I like what I see, is likely to slow down development though as you have a very strict type system. Still, good choice for long term production systems.
JAVA: HELL to the NO. I know cockshott likes it but he was a programmer back in the 70s/80s/90s and his whole shtick was a version of Pascal he made, and if youve seen pascal/delphi syntax it looks sortof like a procedural version of java. The JVM is good, but java itself is a dogshit language. eww eww ewww ewwww. Its the COBOL of the 21st century. Maybe a JVM based language though like Scala or Clojure.
One thing I havent heard mentioned is DOTNET CORE. with dotnet 5 coming out in 2020 (supposedly) all of the current disparate dotnet platforms for mobile, desktop, game engines, etc. will be unified under a single, open sourced and free platform of dotnet, phasing out the old proprietary asp.
dotnet advantages: C# is better than java. has native functional programming in terms of F# mainstream language so has all kinds of libraries/frameworks to choose from.
Jonathan Anderson
8/10 bait
not real problem aka "I can't into proper basic architecture"
ok if you think thats BS what about difficulties with parallel programming due to mutable state
Juan Clark
ok the bourgeois OOP is obviously a shitpost, but you have to admit that the way OOP has been interpreted by mainstream corporate languages like JAVA is terrible and has lead to bloated terrible software.
Design patterns A LA gang of four arent really necessary in FP, plus immutability makes unit testing easier as you only have to test the function and not also take into account stateful variables. Plus you can more easily parallelize operations
Sebastian Bennett
ok, I understand your point, except for "terrible" OOP interpretation of JAVA, with which I have absolutely no experience as primary .net developer. Every time I have to work with lot's of data I push all(most of) business logic onto database engine which do this kind of heavy lifting very efficiently.
It's an async IO/thread pool model. A mix of userspace threads and OS threads. Also called "green threads." There will usually be fewer OS threads than goroutines, since the blocked goroutines can be moved off the OS thread and replaced with a routine that needs to run while it waits for an IO signal.
Well, isn't that precisely a bourgeois mindset? Languages without Algebraic Data Types and memory safety assurances slow development down immensely once the codebase gets big enough, because of all the debugging headaches. But from the capitalist POV, it's just getting venture capital and shipping a half-finished product that counts. As well, Rust code can be very abstracted and clean. It has all of the nice quality of life stuff people want– iterators, map/filter/reduce/etc, lambdas, type inference… Once you understand the "everything is a move" management model and a few other things, there's no reason it couldn't be great for scripting.
I agree, but I mentioned it out of consideration for the Java-programming masses. Really, they should be re-trained to better languages (some of which, like Go, are simpler to use).
I've heard it's nice, but a lot of C#/DOTNET stuff is still not Linux-friendly. You are right, F# is good, though still has some jank with interop.
David Johnson
Cache misses are making most programs five to twenty or even hundreds of times slower than they should be. L1 cache takes like 2 cycles to move into registers, main memory takes upwards of 300 in many cases.
i like the armchair programming experts ITT who act like they know what's what but haven't contributed a goddamn thing to any meaningful open source project