Рабочий стол > DL Руководство пользователя > ... > Programming Languages > Kotlin > Просмотр
Kotlin Войти | Зарегистрироваться   Просмотр версии для печати текущей страницы.

Добавлено Вадим Копиченко, последний раз изменено Вадим Копиченко Feb 13, 2022  (просмотр изменений)
Метки: 
(нет)

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.

Официальная справка по языку (по-русски)
Краткое описание по русски
Хабрахабр: Почему следует полностью переходить на 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()!!                       // string line
fun readInt() = readLn().toInt()                  // single int
fun readStrings() = readLn().split(" ")           // list of strings
fun readInts() = readStrings().map { it.toInt() } // list of ints

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

Сегодня Роман Елизаров объявил вместе с JetBrains открытый конкурс по спортивному программированию Kotlin Heroes на платформе Codeforces и заодно написал шпаргалку по использованию Kotlin для этой цели: https://kotlinlang.org/docs/tutorials/competitive-programming.html

Гена Короткевич демонстрирует решения для Kotlin Heroes: Episode 8 practice на открытии финала ICPC 2021 в Москве: https://youtu.be/MQV0lAM2I5A?t=1950

Powered by Atlassian Confluence, the Enterprise Wiki. (Version: http://www.atlassian.com/software/confluence Build:#2.6.1 916) - Ошибка/новая особенность - Свяжитесь с Администраторами