Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Java -> Python?

Tags:

java

python

Besides the dynamic nature of Python (and the syntax), what are some of the major features of the Python language that Java doesn't have, and vice versa?

like image 508
jodonnell Avatar asked Sep 08 '08 14:09

jodonnell


People also ask

Can I use Java with Python?

The seamless interaction between Python and Java allows developers to freely mix the two languages both during development and in shipping products.

Does NASA use Python?

You can view the full list of projects used by NASA for Ingenuity here – and there are about 60 of them, including Python, SciPy, NumPy, Matplotlib, OpenCV, Elasticsearch, and F ' (FPrime).

How is Java different from Python?

Java is a statically typed and compiled language, and Python is a dynamically typed and interpreted language. This single difference makes Java faster at runtime and easier to debug, but Python is easier to use and easier to read.

Should I learn Python or Java first?

If you're just beginning to learn how to code, you might want to start by learning Python because many people learn it faster. It's simple and more concise, while Java has more lines of complex code.


1 Answers

  1. List comprehensions. I often find myself filtering/mapping lists, and being able to say [line.replace("spam","eggs") for line in open("somefile.txt") if line.startswith("nee")] is really nice.

  2. Functions are first class objects. They can be passed as parameters to other functions, defined inside other function, and have lexical scope. This makes it really easy to say things like people.sort(key=lambda p: p.age) and thus sort a bunch of people on their age without having to define a custom comparator class or something equally verbose.

  3. Everything is an object. Java has basic types which aren't objects, which is why many classes in the standard library define 9 different versions of functions (for boolean, byte, char, double, float, int, long, Object, short). Array.sort is a good example. Autoboxing helps, although it makes things awkward when something turns out to be null.

  4. Properties. Python lets you create classes with read-only fields, lazily-generated fields, as well as fields which are checked upon assignment to make sure they're never 0 or null or whatever you want to guard against, etc.'

  5. Default and keyword arguments. In Java if you want a constructor that can take up to 5 optional arguments, you must define 6 different versions of that constructor. And there's no way at all to say Student(name="Eli", age=25)

  6. Functions can only return 1 thing. In Python you have tuple assignment, so you can say spam, eggs = nee() but in Java you'd need to either resort to mutable out parameters or have a custom class with 2 fields and then have two additional lines of code to extract those fields.

  7. Built-in syntax for lists and dictionaries.

  8. Operator Overloading.

  9. Generally better designed libraries. For example, to parse an XML document in Java, you say
    Document doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse("test.xml");
    and in Python you say
    doc = parse("test.xml")

Anyway, I could go on and on with further examples, but Python is just overall a much more flexible and expressive language. It's also dynamically typed, which I really like, but which comes with some disadvantages.

Java has much better performance than Python and has way better tool support. Sometimes those things matter a lot and Java is the better language than Python for a task; I continue to use Java for some new projects despite liking Python a lot more. But as a language I think Python is superior for most things I find myself needing to accomplish.

like image 75
Eli Courtwright Avatar answered Sep 27 '22 23:09

Eli Courtwright