Jun 12, 2012 10:37 PM
I'm giving a short presentation on Kotlin tomorrow at my company, and this got me thinking about what to talk about, mainly which advantages/features of Kotlin might be useful/appealing to our development team.
So I've been thinking about is what are the greatest advantages of using Kotlin, and I think the biggest is the functional paradigms. But as a Java developer, I don't have a lot of experience in functional programming. I started reading the book "Functional Programming in Java", and this was somewhat helpful. Does anyone have any other good resources for learning good functional programming paradigms? Along the way I found this pretty good article by Bruce Eckel, the author of Thinking in Java: http://www.artima.com/weblogs/viewpost.jsp?thread=328540 It is about Scala, but I guess it can largely apply to Kotlin as well. It would be great if someone wrote an article like this that talks about Kotlin.
Anyway, here is the outline of the topics I was planning to talk about for this presentation:
- functional programming (first class functions, delegation, function literals, higher-oder functions, infix functions/LINQ-like queries)
- extension functions means you can add useful methods to classes (like C#, and categories in Objective-C)
- null-safety (no NPEs), properties, operator overloading, local type inference
- inline functions: performant control structures
- build infrastructure (modules) as part of the language
- the upshot of all the features above: better, more readable code
- plays well with Java. Seamless integration with Java means that you can use it where it's useful/needed, but keep java code you already wrote, and refactor code slowly instead of having to throw out all your java code at once.
- first-class IDE developed by JetBrains
Here's what I was NOT planning to talk about... Builders, declaration/use-site variance, reified generics. I could talk about them, but I don't think the developerment team would care that much about it and honestly I don't understand these features very well myself... although they are definitely kool features
If anyone has any ideas, tips for a presentation, please reply. Also, does anyone have any resources I can use for a presentation? (good code examples, a slide deck, etc.) that could save me some time for this. Thanks!