Kotlin
Kotlin
 - это универсальный язык программирования, созданный JetBrains
 в качестве альтернативы Java с намного более удобным синтаксисом, но выполняющийся на JVM и полностью совместимый с существующей экосистемой Java.
Поддержка языка уже доступна из коробки в ItelliJ IDEA
 от JetBrains и Android Studio
 от Google. Поэтому перспективы внушительные. См. про это в блоге: Kotlin 1.0 Released: Pragmatic Language for JVM and Android
.
Kotlin уже стал официальным
 и предпочтительным
 языком для Android и официальным языком соревнований ACM ICPC
.
Официальная справка по языку
 (по-русски
)
A Comprehensive Kotlin Learning Guide for All Levels: https://blog.jetbrains.com/education/2024/04/04/kotlin-learning-guide/
Краткое описание по русски
Хабрахабр: Почему следует полностью переходить на Kotlin
 (список фич)
Осторожно, опросы показывают, что Kotlin вызывает привыкание: https://insights.stackoverflow.com/survey/2019#technology-_-most-loved-dreaded-and-wanted-languages
Видео по-русски: Что такое Kotlin? Введение
, Введение в Kotlin
, Идиоматичный Kotlin
, Корутины в Kotlin
Вводные видео
Серия видеоуроков
 (playlist
)
Видео по-английски + livecoding: How to Kotlin
, Kotlin: Ready for Production
, Functional Programming with Kotlin
, Kotlin 102 - Beyond the Basics
, Kotlin/Anywhere
, Kotlin in Space
Coroutines: Introduction to Coroutines
, Kotlin Coroutines in Practice
, Server-side Kotlin with Coroutines
.
Введения: 
Habr: Андрей Бреслав и Дмитрий Жемеров о Kotlin 1.0
 (внутри много ссылок).
https://superkotlin.com/kotlin-mega-tutorial/
Интересные иллюстрированные введения в концепции языка (англ.): https://typealias.com
Книги: 
Курсы: 
Бесплатные курсы по Kotlin на Stepik
, https://www.coursera.org/learn/vvedenie-v-yazyk-kotlin
Coursera: Kotlin for Java Developers
JetBrains Academy: free adaptive track Kotlin Basics
Algorithms and data structures in Kotlin
Kotlin Academy
Песочница: На сайтах https://play.kotlinlang.org/
 и http://try.kotlinlang.org/
 есть набор ознакомительных задач и можно запускать решения на Kotlin прямо в браузере.
Большой набор набор ссылок по продвинутому использованию Kotlin: http://kotlin.link/
.
https://developer.android.com/kotlin/resources.html
Вот отчёт о первом Kotlin Challenge с Геной и примером решения: https://habrahabr.ru/company/JetBrains/blog/222693/
.
Больше идеоматических примеров решения задач можно найти в Codeforces Surprise Language Round #8
 и http://rosettacode.org/wiki/Category:Kotlin
.
Как писать в файл
.
Примеры обращения с коллекциями
.
Функциональное программирование на Kotlin
.
Kotlin Coding Conventions
.
Ещё тренироваться в решении задач на Kotlin можно на http://codeforces.com
, https://www.hackerrank.com
, https://www.codechef.com
, https://codingame.com
, Advent of Code
 и в курсе Программирование \ Программирование на Java на DL
.
Для корректного тестирования на DL в тексте решения на Kotlin должна быть определена функция верхнего уровня main:
fun main() {
  println("Hello world!")
}
  
Примеры
 A+B
fun main() {
  val (a, b) = readLine()!!.split(' ')
  println(a.toInt() + b.toInt())
}
  
или
fun main() {
  val (a, b) = readLine()!!.split(' ').map { it.toInt() }
  println(a + b)
}
  
или (из https://kotlinlang.org/docs/tutorials/competitive-programming.html
)
fun readLn() = readLine()!!                       fun readInt() = readLn().toInt()                  fun readStrings() = readLn().split(" ")           fun readInts() = readStrings().map { it.toInt() } 
fun main(vararg args: String) {
  val (a, b) = readInts()
  println(a + b)
}
  
или
import java.util.Scanner
fun main() {
  val input = Scanner(System.`in`)
  val a = input.nextInt()
  val b = input.nextInt()
  println(a + b)
}
  
или
import java.util.Scanner
fun main() {
    with(Scanner(System.`in`)) {
        val a = nextInt()
        val b = nextInt()
        println(a + b)
    }
}
  
Чтение/запись в файл:
fun <T : Closeable, R> T.useWith(block: T.() -> R): R = use { with(it, block) }
    File("a.in").bufferedReader().useWith {
        File("a.out").printWriter().useWith {
            val (a, b) = readLine()!!.split(' ').map(String::toInt)
            println(a + b)
        }
    }
    Scanner(File("b.in")).useWith {
        PrintWriter("b.out").useWith {
            val a = nextInt()
            val b = nextInt()
            println(a + b)
        }
    }