I'd say Java's very good as a first language because it's just so simple. If they already know other languages, they should be fine picking up Kotlin. I think I've had issues getting people who have never written code, or are really bad at writing code, to use Kotlin though. There are a lot of language features, and paradigms like functional programming aren't very apparent to them
02/26/2017, 12:50 PM
kevinmost: i can't say from experience, but i don't think they have to know any of that. kotlin is pretty simple and you can take only what you need. and you don't have to worry about everything being in a class, etc. i'm not sure how people handle non-hello-world projects. like..i don't know some first timers currency or "buying things" applicationn. but i mean, they don't have to learn or even use anything functional. they can even use plain old loops if they want to.
the important thing about beginning anything new is to start small and not get overwhelmed by looking at the big stuff. i say this as someone who isn't that knowledgeable at kotlin and many (particularly OOP, generics) concepts are a bit over my head (mostly from not having many opportunities that can use them)
the biggest issue they'd have though is the small community. java, for any problem that you can imagine, there's likely a solution for it in java on the internet somewhere
02/27/2017, 11:20 AM
I think there are just certain fundamentals that you're forced to learn when you don't have a language as convenient as Kotlin. In Java, you have to learn to use builders since there are no default/named params. You have to learn how to overload constructors properly. You have to use getters and setters for your methods.
Things like lambdas (which you need for a lot of stuff even early on, like on-click listeners) look really simple to us, but are kind of foreign to newcomers; in Java, it's a lot easier to understand that it's just an anonymous instance of some base type, with an overridden method.
Plus, when you do things procedurally with a loop in Kotlin, the IDE will recommend you autochange it to the functional version, and that would confuse and muddle concepts for newcomers too. I just think that Java is so simple that it puts aside syntactic sugar and the "cleanest" way to do something and focuses on just teaching someone how to get from point A to point B (maybe not in the best way, but in the way that requires them getting intimate with the fundamentals)