4 ms·
> Because we all know, Google is known for hiring flakes who can't code or design real systems. The primary reason Java is the language used for Android is the
by DCKing 12y ago
> Because we all know, Google is known for hiring flakes who can't code or design real systems.
The primary reason Java is the language used for Android is the very same reason that Android is used so much in enterprises: it is easy to learn, and easy to get developers for. But the language's primary redeeming quality has become an economic one, and not that the language itself is so rewarding.
- seanmcdirmid 12y agoMost of the Googlers I know writing Java code would rather not be writing Java code. They would prefer Python or even Javascript (and a lot of FP enthusiasts also), but Java is what Android needs so Java it is. I would be very surprised if Google was hiring many people who only knew Java or were even very enthusiastic about it. Perhaps the only language more reviled than Java in Google is C++.
- mike_hearn 12y agoI worked at Google for a long time. The most problematic language at Google was (by far) Python. Mostly because tools that would start out as small Python scripts would evolve to become large Python codebases that ended up being unmaintainable. There were several examples of unmanageable Python codebases at Google that got rewritten in C++ or Java. I'm struggling to think of examples of code going in the opposite direction. This does not mean Python is a bad language. It just makes a different set of tradeoffs in its design. C++ and Java were designed with features that are known to increase verbosity but make it easier for large teams to work together. Python wasn't.
- alexfarran 12y agoThat's a really useful insight. What particular problems did you run across in Python that Java/C++ handled better?
- mike_hearn 12y agoIt's hard for someone who was not the author to dive in to the middle of the code and understand it, debug it or upgrade it, due to the lack of explicit types. Additionally there static analysis was limited to lint and refactoring tools didn't exist, or at least nobody seemed to use them (I never used PyCharm but I heard it can do some cool stuff). Also for whatever reason these codebases often weren't very well structured and there was a common tendency to define configuration files that were themselves Python, resulting in the codebase spilling out into things that were theoretically just static data, complicating unit testing.
- tootie 12y agoPyCharm is pretty neat, but coming form IntelliJ it's baby stuff. The tooling around Java can simply not be matched by a dynamic interpreted langauge. Probably ever.
- codygman 12y agoAnd the more expressive your type system is, the more that becomes true. It will be interesting to see what is done for Idris tooling if it gets some popularity. There's also lamdu[0] being made for Haskell which is pretty interesting. 0: https://peaker.github.io/lamdu/ https://peaker.github.io/lamdu/
- kyllo 12y agoWhat part of Python would you blame that on? Dynamic typing? Multiple inheritance?
- DCKing 12y agoThat was not my point. Android is a developer platform; it uses Java because that is an accessible language for app developers, not because it is liked internally.