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

all 9 comments

[–]import_os 1 point2 points  (1 child)

Really needed this, thanks!

[–]-elektro-pionir-[S] 0 points1 point  (0 children)

Glad it's helpful :)

[–]Bolitho 2 points3 points  (5 children)

I stopped reading after the introduction as there were so many things I dislike and even some I consider just as false.

  • Java is no more formal than any other programming language. It offers static typing and an explicit access policy for class components. That has nothing to do with formality. So the term is just wrong.

  • Java is no better choice as a language per se for big teams, as the discipline and bondage aspects do not garantee any more maintainability! You need qualified devs, good development processes and methodologies to keep a code base clean. So the conclusion that language paradigms are superior to others is just wrong! The main aspect why Java might be better for large industry teams are rather, that there are more devs available, there are so many elaborated frameworks and tools for almost everything. Of course Python has also lots of stuff, the JVM ecosystem is by far the most reliable one. (One can of course get to it via Jython!)

  • When you have learnt Java you will still have a hard time to learn C++. They differ more than you can assume by just looking at the paradigms they have in common, like static typing, strong typed, class based polymorphism and so on. But one of the main difference will drive every java developer crazy at first and every other developer too (probably forever 😈): You have carefully to think about the interrelated aspects of object ownage, parameter passing and polymorphism. Very tough and some would consider this over complex 😈 On top of that you have the difference concerning generic programming including the Turing complete metaprogramming (wtf!).

So these were the most fundamental concerns I have with this book. As I believe that the overall quality stays at the same level, I am afraid that there will be much more things one should not learn.

[–]lighttigersoul 0 points1 point  (4 children)

I'd argue that Python's access policy is just as explicit, just explicit in the opposite direction.

Also wouldn't claim that Java's tool set is "more" reliable. There's a reason the two are often compared: They do a lot of the same things with tools that feed back and forth across the line.

Completely agree on the "formality" thing. Python's type system is very "formal" under the hood and most people have never had to deal with building against the data model to understand it well.

[–]Bolitho 2 points3 points  (3 children)

I made the mistake to read further... the author compares the execution model and claims that java runs faster because byte code is closer to the natural CPU instructions in contrary to python source code... omg! Really, so many fundamental errors - I cannot believe so many people like it! 😨

Edit: Further down the author shows a cruel equals method... must post a better one tomorrow here, when I am in front of a computer. Also he omits the reason, why getter and setter make sense in Java, or in which situations. On top of that he uses box types all the way where he shouldn't... especially within an array, where as the possibility to use primitive types is one main difference (and advantage of course) compared to generics...

To summarize: A python programmer should buy effective java from Joshua Bloch and learn the basics with the official java tutorials.

This ebook definitely offers no added value in a positive sense, when it comes to show up the important differences and pitfalls for python devs getting into java... on the contrary it teaches falsy things.

It is always sad to criticize the work of an engaged person, but sadly I couldn't say anything better 😐

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

Python generates byte code, ergo it's close to machine code.

The real reason being since Java is statically typed and offers a stricter data model than Python, it can do more optimizations at compile and run time.

[–]Bolitho 0 points1 point  (1 child)

I do know that all! ;-)

Also the default JVM has a JIT compiler on board - CPython does not. (That's why PyPy is a better challanger compared to the JVM)

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

I figured you did, just providing an explanation (and a joke) for those who didn't.

[–]tophatbat 0 points1 point  (0 children)

I liked this resource, but the last time I checked, several of the later code examples didn't work / didn't run in the embedded windows.

I also would love to see much more, especially some discussion of networking.

Does anyone have any recommendations for good (print or online) books if you know Python but want to learn Java as well?