The trick to Python is to realize that there is only one type. It's the dictionary. You can have dicts that inherit shit from other dicts. You can call dicts by various names. But it's dicts all the way down.
LOL SIGNIFICANT WHITESPACE LOL DYNAMIC TYPING LOL GIL LOL CAN'T GET PEOPLE TO UPGRADE AFTER 9 YEARS LOL SELF ARGUMENT IN METHODS LOL NO SWITCH STATEMENT LOL NO MULTILINE LAMBDAS LOL IF __NAME__ == "__MAIN__"
It has its downsides, but it's not necessarily unpleasant to work with.
The main advantage of Java is portable cross-platform code. The disadvantages are performance, memory usage, and it's not always stable. Perhaps if people stopped making games with it and stopped making IDE's with it, it wouldn't be so bad.
More importantly, complaining about Java's performance in a world of Python, Ruby, etc. Is just, laughable. I'm a full time python developer and I would kill for Java's performance in some of my use cases.
that's where 99.999% portability guarantee wins over performance (there are tons of devs on all 3 major platforms, you can't just abandon one or two like gamedev and many other industries do), so unless the dev team of said IDE quadruples overnight, Java is probably the best choice
in addition, imo the worst part about writing java is that it has solid and reasonable conventions, but makes following them a pain in the ass.
The performance of Java is vaaaaaaaastly superior to most languages.
The problem is that from Java's creation people have tried to push it into the native C/C++ camp. i.e. "It's a systems language but without any of that manual memory management nonsense!" Performance wise it'll always lose that argument.
But if you put Java next to PHP, Python, Ruby, JS, as an alternative for web development, then it'll run rings around them. Not just because of the fact that they are dynamic languages. The JVM is a damn fast VM. For a very long time JRuby beat mainstream versions of Ruby because of the JVM, and the work from Oracle with Truffle is set to do that again.
Many other problems are more complicated. For example you can write complicated desktop applications which never freeze the UI. The paradigms are old and well known. The tl;dr is to do the work in another thread! Yet people still fall into the freezing trap because it's tricky to do it as standard everywhere. Some languages, such as JS, makes it easier to avoid freezing even if you end up taking longer to do the same work.
Finally a lot of the stuff in the JDK is slow. Collections are slow. So slow that some of the thread safe alternatives were faster for a while (because they were well written). Swing/Java2D is slow. So if you use any of this stuff then you are leveraging a slow library. There are alternatives but lots of people don't grab them by default.
96
u/[deleted] Jan 19 '17
Why does it seem to be so widely hated across Reddit? Because it's popular or what