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)
}
}