Introdução ao Kotlin: história, características, aplicação em Kotlin
Что это и зачем?
Представь, что ты учишься готовить. Сначала ты можешь просто смешивать продукты (как в Python — всё просто и понятно). Но когда ты захочешь приготовить сложное блюдо для ресторана, тебе понадобятся специальные инструменты: точные весы, таймер, хорошие ножи. Kotlin — это такой «профессиональный набор инструментов» для программирования. Он создан, чтобы писать большие и сложные программы, но при этом не запутаться в коде.
Kotlin придумала компания JetBrains в 2011 году. Эти ребята создают инструменты для программистов, поэтому они знают, чего нам не хватает. Kotlin работает везде, где есть Java (а это миллиарды устройств!), но пишется проще и понятнее. Его используют для создания приложений на Android, веб-сайтов, игр и даже программ для серверов.
Почему это важно? Представь, что ты строишь дом из конструктора LEGO. Python — это когда у тебя есть только базовые кубики. Kotlin — это когда у тебя есть специальные детали для окон, дверей и крыши. Ты можешь построить дом быстрее и он будет крепче. Если хочешь создавать настоящие приложения для телефонов или работать в IT-компании — Kotlin отличный выбор.
Синтаксис и примеры кода
Давай посмотрим, как выглядит код на Kotlin. Не пугайся — всё логично!
Пример 1: Привет, мир!
// Это комментарий — компьютер его игнорирует
fun main() {
// println — команда "напечатай строку"
println("Привет, мир!")
// Вывод: Привет, мир!
}
Объяснение: fun main() — это главная функция, с которой начинается любая программа. Внутри фигурных скобок {} пишем команды. println выводит текст на экран. Точка с запятой в конце не нужна (в отличие от Java).
Пример 2: Переменные и типы данных
fun main() {
// val — неизменяемая переменная (как константа)
val имя: String = "Анна"
// var — изменяемая переменная
var возраст: Int = 12
println("Меня зовут $имя") // Вывод: Меня зовут Анна
println("Мне $возраст лет") // Вывод: Мне 12 лет
возраст = 13 // Можно изменить, потому что var
// имя = "Оля" — Ошибка! val нельзя менять
}
Объяснение: val и var — это ключевые слова для создания переменных. После двоеточия пишем тип: String (текст), Int (целое число). Знак доллара $ вставляет значение переменной прямо в текст. Это удобнее, чем склеивать строки.
Пример 3: Условный оператор if
fun main() {
val оценка = 85
if (оценка >= 90) {
println("Отлично!")
} else if (оценка >= 75) {
println("Хорошо")
} else {
println("Нужно подтянуть")
}
// Вывод: Хорошо
// Можно записать короче (как выражение):
val результат = if (оценка >= 90) "Отлично" else "Нормально"
println(результат) // Вывод: Нормально
}
Объяснение: if проверяет условие в скобках. Если оно истинно — выполняется первый блок, иначе — следующий. В Kotlin if может возвращать значение (как в последнем примере). Это удобно — не нужно писать отдельную переменную.
Пример 4: Цикл for
fun main() {
// Цикл по диапазону чисел от 1 до 5
for (i in 1..5) {
println("Счёт: $i")
}
// Вывод:
// Счёт: 1
// Счёт: 2
// Счёт: 3
// Счёт: 4
// Счёт: 5
// Цикл по списку
val фрукты = listOf("яблоко", "банан", "апельсин")
for (фрукт in фрукты) {
println("Я люблю $фрукт")
}
// Вывод:
// Я люблю яблоко
// Я люблю банан
// Я люблю апельсин
}
Объяснение: for повторяет действия для каждого элемента. 1..5 — это диапазон чисел. listOf создаёт список. Переменная i (или фрукт) по очереди принимает значения из диапазона или списка.
Пример 5: Функции
// Функция, которая складывает два числа
fun сложить(a: Int, b: Int): Int {
return a + b
}
// Функция с короткой записью
fun умножить(a: Int, b: Int) = a * b
fun main() {
val сумма = сложить(5, 3)
println("5 + 3 = $сумма") // Вывод: 5 + 3 = 8
val произведение = умножить(4, 2)
println("4 * 2 = $произведение") // Вывод: 4 * 2 = 8
}
Объяснение: Функции — это маленькие «кирпичики» программы. fun создаёт функцию. В скобках — параметры (входные данные). После двоеточия — тип результата. return возвращает значение. Если функция короткая, можно использовать = вместо фигурных скобок.
Сравнение с Python
Python — отличный язык для начала. Но давай посмотрим, чем Kotlin отличается:
| Идея | Python | Kotlin |
|---|---|---|
| Вывод текста | print("Привет") |
println("Привет") |
| Переменная (неизменяемая) | имя = "Анна" (все переменные можно менять) |
val имя = "Анна" (нельзя изменить) |
| Переменная (изменяемая) | возраст = 12 |
var возраст = 12 |
| Тип данных | Определяется автоматически, можно менять | Строгий: val имя: String = "Анна" |
| Условие if | if оценка >= 90: print("Отлично") |
if (оценка >= 90) { println("Отлично") } |
| Цикл for | for i in range(5): print(i) |
for (i in 1..5) { println(i) } |
| Функция | def сложить(a, b): return a + b |
fun сложить(a: Int, b: Int): Int { return a + b } |
| Вставка в строку | f"Меня зовут {имя}" |
"Меня зовут $имя" |
Главные отличия:
- Типы данных: В Python ты можешь написать
x = 5, а потомx = "текст". В Kotlin так нельзя — тип фиксируется раз и навсегда. Это защищает от ошибок. - Фигурные скобки: В Python важны отступы (пробелы). В Kotlin используются
{}— ты всегда видишь, где начинается и заканчивается блок. - Безопасность: Kotlin не даст тебе использовать переменную, которая может быть
null(пустой). В Python таких проверок нет. - Скорость: Kotlin работает быстрее Python, потому что компилируется в байт-код Java.
Типичные ошибки новичков
Вот что чаще всего путают те, кто начинает учить Kotlin:
- Забывают тип переменной
// Ошибка: нужно указать тип или использовать val/var val имя = "Анна" // Правильно: Kotlin сам догадается var возраст: Int = 12 // Правильно: явно указали тип - Путают val и var
val константа = 5 константа = 10 // Ошибка! val нельзя менять var переменная = 5 переменная = 10 // Правильно: var можно менять - Забывают скобки в if
// Ошибка: в Kotlin if всегда с круглыми скобками if возраст > 18 { // Неправильно println("Взрослый") } if (возраст > 18) { // Правильно println("Взрослый") } - Путают == и =
val a = 5 if (a = 5) { // Ошибка! = это присваивание println("Равно") } if (a == 5) { // Правильно: == это сравнение println("Равно") } - Забывают про null
var имя: String = null // Ошибка! String не может быть null var имя: String? = null // Правильно: ? означает "может быть null" // Чтобы использовать, нужно проверить: if (имя != null) { println(им