Why does linus hate java
What a horrible VM. So, I am like whatever, you are barking about all this crap, go away. I don't care. He just bashes Java using strong language and not providing any arguments. This could get my respect if Java were some kind of sacred cow that nobody dares criticize. I accept that this quote doesn't give his reasons. However, I have to agree with him. My reasons are that Java is slow and bloated. Why do so many people say Java is slow? What's slow? In fact Java compares fairly well against pretty much everything except C.
It's a memory hog, but it sure isn't slow, whatever that means. Which is fine if that is what you are comparing it to. I wish I could just get away with it like that. It's rare that I've seen the Java VM described as horrible. In fact, it seems to be quite highly respected and seems to be working out well for Scala and Clojure.
Linus Torvalds is one of those people, which helps to explain his dislike for the format. There are no excuses. XML is nasty to parse for humans, and it's a disaster to parse even for computers. There's just no reason for that horrible crap to exist.
History : Solaris was created as a proprietary operating system by Sun Microsystems based on Unix System V and first released in Fortunately, for Torvalds and Linux, OpenSolaris was discontinued in after Oracle bought Sun though derivatives of it live on and decided to make Solaris once again a proprietary operating system.
Linus Torvalds has cited Tanenbaum as an influence and one of the reasons he became interested in Unix in the first place. Surprisingly, Torvalds later apologized for his comments. Follow Phil on Twitter at itwphiljohnson. You must be logged in to post a comment. In the end, however, it is bottom of the question — albeit with questionable reasons. Java is not terrible because it supports OOP, but because of pretty much everything else.
Related Posts: Is C the best programming language or Java? Do companies prefer to use Java than other… Why is Turing completeness the criterion for… How does a programming language work?
What is the worst programming language you have ever… Which programming language is used by hackers? Published by admin. Prev What was the worst thing you experienced at school? You say, "look at the greatness of my bloated monstrosity! Look how general it is! See all of the great features! It'll be smaller and faster. Yeah, it's a bit faster in some cases, but it usually doesn't make any meaningful difference.
A good programmer writes good code in every language, a poor programmer writes bad code in all of them. It's very good for embedded systems, you get the control you need from the C heritage, combined with much more powerful options for automation. As for bad code It's not like there isn't a metric ton of terrible C code out there.
Like what? For embedded purposes, it is basically C with better type checking. Java makes things a bit more sane, but also makes it mandatory, which is also bad. I'm sure implementing a template for a generalized CRC algorithm is fun and very satisfying. There is a class of programmer that "clicks" with the OOP concepts of inversion of control, dependency injection, and always coding to an interface.
This approach feels so correct to them that they become almost religious in their devotion to it. They believe it is the one-size-fits-all solution to every programming problem, and consider anyone who disagrees with them to simply be less intelligent than themselves because no rational person could possibly disagree.
I have worked with such people. They quadruple the codebase, significantly increase development time, and introduce more bugs by doing so, all the while insisting that this will make the code easier to maintain in the long run.
But it actually doesn't; it just means that there is that much more code that must be refactored as new features come along. They point at the ease with which layers can now be swapped-out as a total win. There is nothing to switch anything to because there just isn't any need. And future development isn't simplified by finding just the right layer to adjust; the changes are almost always cross-cutting so you have to refactor all those interfaces and layers top-to-bottom, each time, to get things working.
The last major benefit they harp on is the ability to test in isolation and use mock objects to keep the test cases simple. That's great if you want to have a lot of automated tests that pass in mocked-out unreal environments, but not so great if you want to actually find the bugs that come out once the code encounters the real world. There probably are specific kinds of project that benefit from this approach. But there are many, many more that suffer rather than benefit from it.
All the versatility that the code buys you just doesn't deliver value, and all the layers it costs you just get in the way. If I wanted to write some utility that I would be confident would run on any Linux variant, I could just static link the output, and even though the binary would be bigger, it would run regardless of the state of the machine, provided a basic kernel and userland was present.
Although the only real binary I statically link these days winds up being busybox, bash, and rsync For Synology machines because the included rsync binary is half broken. I wonder how Rust compares for writing something similar, like a shell, or other executable, especially if statically linked to ensure as few dependencies on the box as possible. I disagree that it's a "crap" language, but anyone who has worked with it can easily see it has a huge number of flaws. But that long-term stability and backwards compatibility are both a strength and a weakness, of course.
It's easy to forget how ridiculously old the language is. Why replace one ancient language with another not-quite-as-ancient language? It's essentially opt-in memory safety. Rust, in contrast, forces you to specifically opt-out of memory safety, which ensures you only do it when absolutely necessary, ensuring a smaller footprint of unsafe code to review. The argument of "just don't make mistakes" or "use better libraries" are just not realistic. All humans make mistakes, and C has serious limitations as a language that still force the onus of safety on the programmer instead of the compiler.
Using C as a guideline, it can do whatever it wants. And what it wants to do is everything. If you hire a bunch of men who do the same, also great. If you learned to think in pure OO space and you code that way, that's great. Again, if you hire a bunch of men who do the same, also great. But put these guys on the same team and you have guys who have a C-with-extra-stuff language versus people with a completely different paradigm.
The second group has more academic stuff to point to, the first group has a metastable nonstandard that everyone agreed with at first glance and it evolved unpredictably over time.
Some languages are too small to support this kind of thing. Others are too new, even though the language could go in that direction. Oh, and it gets worse, because as you include different libraries written in different ways especially C libraries side by side with stuff like boost , you are including those libraries for their functionality and performance.
The code you wrap those in will look even stranger. The "C-with-classes" guys in particular need something written down, as they are, in my experience, the least able to make a coherent point defending their coding style. Then I switched to C and Java and now only Java. Ok do some Python, and Javascript, but I digress. Around or ? Namely I was returning a value and it would keep erasing itself and causing a GPF.
I thought, did I declare the return value in the function stack? I looked and looked and could not figure it out. Well I did figure it out several days later. Thankfully we have libs like fmtlib [github. Thankfully we have abseil [abseil. Welcome to the 's. I wish people wouldn't mod you down for this. People these days can't handle a bit of spirited debate.
You missed some important ones too, like the pain of cross-platform build tools and third-party library integration, which requires more third-party solutions like CMake or dependency management systems. Just curious, what do you mean by "function temperature"? That's not a term I've heard of before, and searching turned up nothing relevant. There is no reason similar constraints could not be enforced in C or any other language for that matter to achieve similar results.
You're proposing using TWO languages. C and another language to define all the safety. There's no need for that. One can put most of the constraints in the programming langu. One can put most of the constraints in the programming language - things like don't access array elements that don't exist. Or Cargo To be fair I haven't tried rust in a bunch of years. My issue wasn't as much around the language, but the set of libraries that came with it.
I am a big fan, of using standard libraries that will have long term support, and very rarely using the third party, unless I really have too. Rust, when I was checking it, seemed way to basic on its own, and adding in the Libraries, seemed like a crap shoot on getting something that will be useful for the next 15 years of the product lifecycle.
Last year it still didn't have any decent GUI libraries, but Linus wouldn't be concerned about that. For me it meant it was unusable.
Either Wx or Qt would have been good enough It's better but not solved. There are now lots of high quality crates for many of the standard things you would want to do. But the metadata for working out which is which is not always there, and there are some missing gaps notably, GUIs I guess.
The flip side is that you don't have to wait for some major release of Rust to get secondary library updates. In general, Rust updates and advances quite quickly and the improvement has been obvious over the last few years. And I think Rust will also avoid "stand.
0コメント